@rjsf/daisyui 6.0.0-beta.9 → 6.0.1
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 +9 -16
- package/dist/chakra-ui.esm.js +382 -472
- package/dist/chakra-ui.esm.js.map +4 -4
- package/dist/chakra-ui.umd.js +194 -287
- package/dist/{index.js → index.cjs} +404 -496
- package/dist/index.cjs.map +7 -0
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.d.ts +2 -2
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js +2 -7
- package/lib/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.js.map +1 -1
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.d.ts +3 -3
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +1 -1
- package/lib/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -1
- package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js +3 -4
- package/lib/templates/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -1
- package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js +7 -3
- package/lib/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.js.map +1 -1
- package/lib/templates/BaseInputTemplate/BaseInputTemplate.js +8 -2
- package/lib/templates/BaseInputTemplate/BaseInputTemplate.js.map +1 -1
- package/lib/templates/ButtonTemplates/AddButton.js +1 -1
- package/lib/templates/ButtonTemplates/AddButton.js.map +1 -1
- package/lib/templates/ButtonTemplates/IconButton.js +4 -4
- package/lib/templates/ButtonTemplates/IconButton.js.map +1 -1
- package/lib/templates/FieldTemplate/FieldTemplate.js +6 -3
- package/lib/templates/FieldTemplate/FieldTemplate.js.map +1 -1
- package/lib/templates/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.d.ts +2 -0
- package/lib/templates/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.js +6 -0
- package/lib/templates/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.js.map +1 -0
- package/lib/templates/MultiSchemaFieldTemplate/index.d.ts +2 -0
- package/lib/templates/MultiSchemaFieldTemplate/index.js +3 -0
- package/lib/templates/MultiSchemaFieldTemplate/index.js.map +1 -0
- package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js +4 -3
- package/lib/templates/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -1
- package/lib/templates/OptionalDataControlsTemplate/OptionalDataControlsTemplate.d.ts +10 -0
- package/lib/templates/OptionalDataControlsTemplate/OptionalDataControlsTemplate.js +23 -0
- package/lib/templates/OptionalDataControlsTemplate/OptionalDataControlsTemplate.js.map +1 -0
- package/lib/templates/OptionalDataControlsTemplate/index.d.ts +2 -0
- package/lib/templates/OptionalDataControlsTemplate/index.js +3 -0
- package/lib/templates/OptionalDataControlsTemplate/index.js.map +1 -0
- package/lib/templates/Templates.js +4 -0
- package/lib/templates/Templates.js.map +1 -1
- package/lib/templates/TitleField/TitleField.js +6 -2
- package/lib/templates/TitleField/TitleField.js.map +1 -1
- package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +11 -11
- package/lib/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/widgets/AltDateWidget/AltDateWidget.d.ts +1 -1
- package/lib/widgets/AltDateWidget/AltDateWidget.js +5 -121
- package/lib/widgets/AltDateWidget/AltDateWidget.js.map +1 -1
- package/lib/widgets/CheckboxWidget/CheckboxWidget.js +2 -2
- package/lib/widgets/CheckboxWidget/CheckboxWidget.js.map +1 -1
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.d.ts +1 -1
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js +2 -2
- package/lib/widgets/CheckboxesWidget/CheckboxesWidget.js.map +1 -1
- package/lib/widgets/DateTimeWidget/DateTimeWidget.js +2 -2
- package/lib/widgets/DateTimeWidget/DateTimeWidget.js.map +1 -1
- package/lib/widgets/DateWidget/DateWidget.js +2 -2
- package/lib/widgets/DateWidget/DateWidget.js.map +1 -1
- package/lib/widgets/RadioWidget/RadioWidget.d.ts +1 -1
- package/lib/widgets/RadioWidget/RadioWidget.js +2 -2
- package/lib/widgets/RadioWidget/RadioWidget.js.map +1 -1
- package/lib/widgets/TextareaWidget/TextareaWidget.js +2 -2
- package/lib/widgets/TextareaWidget/TextareaWidget.js.map +1 -1
- package/lib/widgets/Widgets.d.ts +1 -2
- package/lib/widgets/Widgets.js +1 -3
- package/lib/widgets/Widgets.js.map +1 -1
- package/package.json +24 -22
- package/src/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.tsx +15 -20
- package/src/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +3 -3
- package/src/templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx +9 -13
- package/src/templates/ArrayFieldTitleTemplate/ArrayFieldTitleTemplate.tsx +12 -2
- package/src/templates/BaseInputTemplate/BaseInputTemplate.tsx +14 -6
- package/src/templates/ButtonTemplates/AddButton.tsx +1 -1
- package/src/templates/ButtonTemplates/IconButton.tsx +4 -4
- package/src/templates/FieldTemplate/FieldTemplate.tsx +48 -19
- package/src/templates/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx +15 -0
- package/src/templates/MultiSchemaFieldTemplate/index.ts +2 -0
- package/src/templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx +13 -9
- package/src/templates/OptionalDataControlsTemplate/OptionalDataControlsTemplate.tsx +46 -0
- package/src/templates/OptionalDataControlsTemplate/index.ts +2 -0
- package/src/templates/Templates.tsx +4 -0
- package/src/templates/TitleField/TitleField.tsx +12 -3
- package/src/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +38 -34
- package/src/widgets/AltDateWidget/AltDateWidget.tsx +18 -253
- package/src/widgets/CheckboxWidget/CheckboxWidget.tsx +5 -3
- package/src/widgets/CheckboxesWidget/CheckboxesWidget.tsx +2 -1
- package/src/widgets/DateTimeWidget/DateTimeWidget.tsx +2 -2
- package/src/widgets/DateWidget/DateWidget.tsx +2 -2
- package/src/widgets/RadioWidget/RadioWidget.tsx +2 -1
- package/src/widgets/TextareaWidget/TextareaWidget.tsx +2 -1
- package/src/widgets/Widgets.tsx +0 -3
- package/dist/index.js.map +0 -7
- package/lib/widgets/FileWidget/FileWidget.d.ts +0 -12
- package/lib/widgets/FileWidget/FileWidget.js +0 -57
- package/lib/widgets/FileWidget/FileWidget.js.map +0 -1
- package/lib/widgets/FileWidget/index.d.ts +0 -2
- package/lib/widgets/FileWidget/index.js +0 -3
- package/lib/widgets/FileWidget/index.js.map +0 -1
- package/src/widgets/FileWidget/FileWidget.tsx +0 -86
- package/src/widgets/FileWidget/index.ts +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/index.ts", "../src/theme/Theme.tsx", "../src/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.tsx", "../src/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx", "../src/templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx", "../src/templates/BaseInputTemplate/BaseInputTemplate.tsx", "../src/templates/ButtonTemplates/AddButton.tsx", "../src/templates/ButtonTemplates/DaisyUIButton.tsx", "../src/templates/ButtonTemplates/SubmitButton.tsx", "../src/templates/ButtonTemplates/IconButton.tsx", "../src/templates/DescriptionField/DescriptionField.tsx", "../src/templates/ErrorList/ErrorList.tsx", "../src/templates/FieldErrorTemplate/FieldErrorTemplate.tsx", "../src/templates/FieldHelpTemplate/FieldHelpTemplate.tsx", "../src/templates/FieldTemplate/FieldTemplate.tsx", "../src/templates/GridTemplate/GridTemplate.tsx", "../src/templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx", "../src/templates/TitleField/TitleField.tsx", "../src/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx", "../src/templates/Templates.tsx", "../src/widgets/AltDateTimeWidget/AltDateTimeWidget.tsx", "../src/widgets/AltDateWidget/AltDateWidget.tsx", "../src/widgets/CheckboxWidget/CheckboxWidget.tsx", "../src/widgets/CheckboxesWidget/CheckboxesWidget.tsx", "../src/widgets/DateTimeWidget/DateTimeWidget.tsx", "../src/widgets/DateWidget/DateWidget.tsx", "../src/widgets/
|
|
4
|
-
"sourcesContent": ["import { withTheme } from '@rjsf/core';\n\nimport Theme, { ThemeProvider, useTheme } from './theme';\n\nexport { default as Form } from './DaisyUIForm';\nexport { __createDaisyUIFrameProvider } from './DaisyUIFrameProvider';\nexport { default as GridTemplate } from './templates/GridTemplate/GridTemplate';\nexport { default as Templates } from './templates/Templates';\nexport { default as Theme } from './theme';\nexport { default as Widgets } from './widgets/Widgets';\nexport { ThemeProvider, useTheme };\n\nexport default withTheme(Theme);\n", "import { createContext, ReactNode, useCallback, useContext, useState } from 'react';\nimport { getDefaultRegistry, ThemeProps } from '@rjsf/core';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport { generateTemplates } from '../templates/Templates';\nimport { generateWidgets } from '../widgets/Widgets';\n\n/** Generates a complete theme configuration for RJSF with DaisyUI styling\n *\n * Combines templates and widgets with default fields to create a complete theme\n * that can be used with react-jsonschema-form.\n *\n * @returns A ThemeProps object containing all necessary components for the theme\n */\nexport function generateTheme<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): ThemeProps<T, S, F> {\n const { fields } = getDefaultRegistry<T, S, F>();\n const generatedWidgets = generateWidgets<T, S, F>();\n const templates = generateTemplates<T, S, F>();\n\n return {\n templates,\n widgets: {\n ...generatedWidgets,\n boolean: generatedWidgets.toggle,\n },\n fields,\n };\n}\n\n/** Default theme export with pre-generated theme components */\nconst Theme = generateTheme();\n\nexport default Theme;\n\n/** Interface for the theme context that manages and provides the current DaisyUI theme */\ninterface ThemeContextType {\n /** Current DaisyUI theme name */\n theme: string;\n /** Function to update the current theme */\n setTheme: (theme: string) => void;\n}\n\n/** React context for sharing theme information throughout the application */\nexport const ThemeContext = createContext<ThemeContextType>({\n theme: 'night',\n setTheme: () => {},\n});\n\n/** Props for the ThemeProvider component */\ninterface ThemeProviderProps {\n /** React components to be wrapped by the provider */\n children: ReactNode;\n}\n\n/** ThemeProvider component that manages DaisyUI theme state and persistence\n *\n * This provider:\n * - Loads the theme from localStorage\n * - Provides theme state via context\n * - Persists theme changes to localStorage\n *\n * @param props - The props for the component\n */\nexport function ThemeProvider({ children }: ThemeProviderProps) {\n const [theme, setTheme] = useState(() => {\n try {\n return localStorage.getItem('daisyui-theme') || 'cupcake';\n } catch {\n return 'cupcake';\n }\n });\n\n const handleSetTheme = useCallback((newTheme: string) => {\n try {\n localStorage.setItem('daisyui-theme', newTheme);\n setTheme(newTheme);\n } catch {\n // Ignore localStorage errors\n }\n }, []);\n\n return <ThemeContext.Provider value={{ theme, setTheme: handleSetTheme }}>{children}</ThemeContext.Provider>;\n}\n\n/** Custom hook for accessing the current theme and theme setter function\n *\n * @returns The current theme context with theme name and setter function\n */\nexport const useTheme = () => useContext(ThemeContext);\n", "import { useMemo } from 'react';\nimport {\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n ArrayFieldItemButtonsTemplateType,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemButtonsTemplate` component renders the action buttons for an array field item\n * using DaisyUI's join component when multiple buttons are present.\n */\nexport default function ArrayFieldItemButtonsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemButtonsTemplateType<T, S, F>) {\n const {\n disabled,\n hasCopy,\n hasMoveDown,\n hasMoveUp,\n hasRemove,\n idSchema,\n index,\n onCopyIndexClick,\n onDropIndexClick,\n onReorderClick,\n readonly,\n registry,\n uiSchema,\n } = props;\n const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;\n const onCopyClick = useMemo(() => onCopyIndexClick(index), [index, onCopyIndexClick]);\n const onRemoveClick = useMemo(() => onDropIndexClick(index), [index, onDropIndexClick]);\n const onArrowUpClick = useMemo(() => onReorderClick(index, index - 1), [index, onReorderClick]);\n const onArrowDownClick = useMemo(() => onReorderClick(index, index + 1), [index, onReorderClick]);\n\n const renderMany = [hasMoveUp || hasMoveDown, hasCopy, hasRemove].filter(Boolean).length > 1;\n const btnClass = renderMany ? 'join-item btn btn-sm px-2' : 'btn btn-sm px-2 rounded-sm';\n const removeBtnClass = renderMany ? 'join-item btn btn-sm btn-error px-2' : 'btn btn-sm btn-error px-2 rounded-sm';\n\n const buttons = (\n <>\n {(hasMoveUp || hasMoveDown) && (\n <>\n <MoveUpButton\n id={buttonId<T>(idSchema, 'moveUp')}\n className={`rjsf-array-item-move-up ${btnClass}`}\n disabled={disabled || readonly || !hasMoveUp}\n onClick={onArrowUpClick}\n uiSchema={uiSchema}\n registry={registry}\n />\n <MoveDownButton\n id={buttonId<T>(idSchema, 'moveDown')}\n className={`rjsf-array-item-move-down ${btnClass}`}\n disabled={disabled || readonly || !hasMoveDown}\n onClick={onArrowDownClick}\n uiSchema={uiSchema}\n registry={registry}\n />\n </>\n )}\n {hasCopy && (\n <CopyButton\n id={buttonId<T>(idSchema, 'copy')}\n className={`rjsf-array-item-copy ${btnClass}`}\n disabled={disabled || readonly}\n onClick={onCopyClick}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasRemove && (\n <RemoveButton\n id={buttonId<T>(idSchema, 'remove')}\n className={`rjsf-array-item-remove ${removeBtnClass}`}\n disabled={disabled || readonly}\n onClick={onRemoveClick}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </>\n );\n\n return renderMany ? <div className='join'>{buttons}</div> : buttons;\n}\n", "import {\n ArrayFieldItemTemplateType,\n FormContextType,\n getTemplate,\n getUiOptions,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemTemplate` component is the template used to render an item of an array.\n *\n * This DaisyUI implementation:\n * - Uses the fieldset component for proper form grouping\n * - Maintains connected appearance for multiple items\n * - Positions items with z-index to create a stacked effect\n * - Places action buttons in an easily accessible location\n *\n * @param props - The `ArrayFieldItemTemplateType` props for the component with additional properties:\n * @param props.index - The position of this item in the array (optional)\n * @param props.totalItems - The total number of items in the array (optional)\n */\nexport default function ArrayFieldItemTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemTemplateType<T, S, F>) {\n const { children, buttonsProps, hasToolbar, registry, uiSchema, index, totalItems } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n\n // Different styling for first, middle, and last items to create connected feel\n const isFirstItem = index === 0;\n const isLastItem = index === totalItems - 1;\n const borderRadius = isFirstItem ? 'rounded-t-lg' : isLastItem ? 'rounded-b-lg' : '';\n const marginBottom = isLastItem ? '' : 'mb-[-1px]';\n const zIndex = index === undefined ? '' : 'z-' + (10 - Math.min(index, 9));\n\n return (\n <fieldset className={`fieldset bg-base-100 border border-base-300 p-4 ${borderRadius} ${marginBottom} ${zIndex}`}>\n {/* Main content area */}\n {children}\n\n {/* Action buttons */}\n {hasToolbar && (\n <div className='flex justify-end mt-2'>\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </div>\n )}\n </fieldset>\n );\n}\n", "import React, { useCallback } from 'react';\nimport {\n ArrayFieldTemplateProps,\n getTemplate,\n getUiOptions,\n Registry,\n RJSFSchema,\n FormContextType,\n TranslatableString,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * This DaisyUI implementation:\n * - Renders the entire array in a rounded container with base-200 background\n * - Uses custom ArrayFieldTitleTemplate and ArrayFieldDescriptionTemplate\n * - Displays an info alert when the array is empty\n * - Renders each array item using ArrayFieldItemTemplate with additional props\n * - Positions the add button at the bottom right using flexbox\n * - Uses DaisyUI's button styling for the add button\n * - Maintains proper spacing with margin and padding utilities\n *\n * @param props - The `ArrayFieldTemplateProps` for the component\n */\nexport default function ArrayFieldTemplate<T = any, S extends RJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayFieldTemplateProps<T, S, F>,\n) {\n const {\n canAdd,\n className,\n disabled,\n idSchema,\n items,\n onAddClick,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props;\n\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(\n 'ArrayFieldDescriptionTemplate',\n registry as Registry<T, S, F>,\n uiOptions,\n );\n const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T, S, F>(\n 'ArrayFieldItemTemplate',\n registry as Registry<T, S, F>,\n uiOptions,\n );\n const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(\n 'ArrayFieldTitleTemplate',\n registry as Registry<T, S, F>,\n uiOptions,\n );\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n /** Handle the add button click\n *\n * @param e - The click event\n */\n const handleAddClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n onAddClick(e);\n },\n [onAddClick],\n );\n\n return (\n <div className={`array-field-template ${className}`}>\n <ArrayFieldTitleTemplate\n idSchema={idSchema}\n title={uiOptions.title || title}\n schema={schema}\n uiSchema={uiSchema}\n required={required}\n registry={registry}\n />\n <ArrayFieldDescriptionTemplate\n idSchema={idSchema}\n description={uiOptions.description || schema.description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n <div className='flex flex-col gap-4'>\n <div className='rjsf-array-item-list'>\n {items &&\n items.map(({ key, ...itemProps }, index) => (\n <ArrayFieldItemTemplate key={key} {...itemProps} index={index} totalItems={items.length} />\n ))}\n {items && items.length === 0 && canAdd && (\n <div className='text-center italic text-base-content/70'>{TranslatableString.EmptyArray}</div>\n )}\n </div>\n {canAdd && (\n <div className='flex justify-end'>\n <AddButton\n id={buttonId<T>(idSchema, 'add')}\n className='rjsf-array-item-add btn btn-primary btn-sm'\n onClick={handleAddClick}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n WidgetProps,\n StrictRJSFSchema,\n RJSFSchema,\n FormContextType,\n getInputProps,\n ariaDescribedByIds,\n examplesId,\n} from '@rjsf/utils';\n\n/** The `BaseInputTemplate` component is a template for rendering basic input elements\n * with DaisyUI styling. It's used as the foundation for various input types in forms.\n *\n * Features:\n * - Wraps input in DaisyUI's form-control for proper spacing\n * - Uses DaisyUI's input and input-bordered classes for styling\n * - Includes a hidden label for accessibility\n * - Handles common input properties like disabled and readonly states\n * - Processes input props based on schema type and options\n * - Supports schema examples with datalist\n * - Handles onChange, onBlur, and onFocus events\n *\n * @param props - The `WidgetProps` for the component\n */\nexport default function BaseInputTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n id,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n onChangeOverride,\n options,\n schema,\n type,\n label,\n placeholder,\n } = props;\n\n const inputProps = getInputProps<T, S, F>(schema, type, options);\n\n // Extract step, min, max, accept from inputProps\n const { step, min, max, accept, ...rest } = inputProps;\n const htmlInputProps = { step, min, max, accept, ...(schema.examples ? { list: examplesId<T>(id) } : undefined) };\n\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options],\n );\n\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onBlur && onBlur(id, target.value),\n [onBlur, id],\n );\n\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onFocus && onFocus(id, target.value),\n [onFocus, id],\n );\n\n return (\n <>\n <div className='form-control'>\n <label htmlFor={id} className='label hidden' style={{ display: 'none' }}>\n <span className='label-text'>{label}</span>\n </label>\n <input\n id={id}\n name={id}\n value={value || value === 0 ? value : ''}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n className='input input-bordered'\n {...rest}\n {...htmlInputProps}\n onChange={onChangeOverride || _onChange}\n onBlur={_onBlur}\n onFocus={_onFocus}\n aria-describedby={ariaDescribedByIds<T>(id, !!schema.examples)}\n />\n </div>\n {Array.isArray(schema.examples) && (\n <datalist id={examplesId<T>(id)}>\n {(schema.examples as string[])\n .concat(schema.default && !schema.examples.includes(schema.default) ? ([schema.default] as string[]) : [])\n .map((example: any) => {\n return <option key={example} value={example} />;\n })}\n </datalist>\n )}\n </>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faArrowDown, faArrowUp, faCopy, faTrash, faPlus } from '@fortawesome/free-solid-svg-icons';\nimport type { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\nimport DaisyUIButton from './DaisyUIButton';\n\nlibrary.add(faPlus, faCopy, faArrowDown, faArrowUp, faTrash);\n\n/** The `AddButton` renders a button that represent the `Add` action on a form\n *\n * @param props - The props for the component\n */\nexport default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n className,\n onClick,\n disabled,\n registry,\n ...otherProps\n}: IconButtonProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='row'>\n <p className={`col-xs-3 col-xs-offset-9 text-right ${className}`}>\n <DaisyUIButton\n {...otherProps}\n iconType='info'\n icon={faPlus as IconDefinition}\n className='btn-add col-xs-12 btn-primary btn-primary-content'\n title={translateString(TranslatableString.AddButton)}\n onClick={onClick}\n disabled={disabled}\n registry={registry}\n />\n </p>\n </div>\n );\n}\n", "import { memo } from 'react';\nimport { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\n/** Interface for props specific to DaisyUIButton, extending IconButtonProps but with stricter icon typing */\ninterface DaisyUIButtonProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Omit<IconButtonProps<T, S, F>, 'icon'> {\n /** The FontAwesome icon to display in the button */\n icon: IconDefinition;\n}\n\n/** The `DaisyUIButton` component renders a button with an icon using DaisyUI styling.\n * It's used as the base for various button components like add, remove, copy, move up/down.\n *\n * @param props - The component props\n */\nfunction DaisyUIButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: DaisyUIButtonProps<T, S, F>,\n) {\n const { icon, iconType, uiSchema, registry, className, ...otherProps } = props;\n return (\n <button type='button' className={className} aria-label={props.title!} {...otherProps}>\n <FontAwesomeIcon icon={icon} className='h-5 w-5' />\n </button>\n );\n}\n\nDaisyUIButton.displayName = 'DaisyUIButton';\n\nexport default memo(DaisyUIButton) as typeof DaisyUIButton;\n", "import { getSubmitButtonOptions, FormContextType, RJSFSchema, StrictRJSFSchema, SubmitButtonProps } from '@rjsf/utils';\n\n/** The `SubmitButton` renders a button that represent the `Submit` action on a form\n */\nexport default function SubmitButton<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ uiSchema }: SubmitButtonProps<T, S, F>) {\n const { submitText, norender, props: submitButtonProps = {} } = getSubmitButtonOptions<T, S, F>(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div>\n <button\n type='submit'\n {...submitButtonProps}\n className={`btn btn-primary btn-primary-content ${submitButtonProps.className || ''}`}\n >\n {submitText}\n </button>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\nimport { faCopy, faArrowDown, faArrowUp, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport type { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\nimport DaisyUIButton from './DaisyUIButton';\n\nexport function CopyButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton {...props} title={translateString(TranslatableString.CopyButton)} icon={faCopy as IconDefinition} />\n );\n}\n\nexport function MoveDownButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n {...props}\n title={translateString(TranslatableString.MoveDownButton)}\n icon={faArrowDown as IconDefinition}\n />\n );\n}\n\nexport function MoveUpButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n {...props}\n title={translateString(TranslatableString.MoveUpButton)}\n icon={faArrowUp as IconDefinition}\n />\n );\n}\n\nexport function RemoveButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n {...props}\n title={translateString(TranslatableString.RemoveButton)}\n iconType='danger'\n icon={faTrash as IconDefinition}\n />\n );\n}\n", "import { DescriptionFieldProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\nimport { RichDescription } from '@rjsf/core';\n\n/** The `DescriptionField` component renders descriptive text for a form field\n * with DaisyUI styling. It displays the description in a subtle text color\n * with proper spacing.\n *\n * @param props - The `DescriptionFieldProps` for the component\n */\nexport default function DescriptionField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: DescriptionFieldProps<T, S, F>) {\n const { id, description, registry, uiSchema } = props;\n if (!description) {\n return null;\n }\n return (\n <div id={id} className='description-field my-4'>\n <div className='text-sm text-base-content/80'>\n <RichDescription description={description} registry={registry} uiSchema={uiSchema} />\n </div>\n </div>\n );\n}\n", "import { ErrorListProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `ErrorList` component renders a list of form-level validation errors\n * with DaisyUI styling. It displays errors as a bulleted list in red text.\n *\n * @param props - The `ErrorListProps` for the component\n */\nexport default function ErrorList<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ErrorListProps<T, S, F>,\n) {\n const { errors } = props;\n return (\n <div className='error-list'>\n <ul className='list-disc list-inside text-red-600'>\n {errors.map((error, index) => (\n <li key={index}>{error.stack}</li>\n ))}\n </ul>\n </div>\n );\n}\n", "import { FieldErrorProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `FieldErrorTemplate` component renders validation errors for a specific field\n * with DaisyUI styling. It displays field-level errors as a bulleted list in red text.\n *\n * Unlike ErrorList which shows form-level errors, this component displays errors\n * specific to a particular field in the form.\n *\n * @param props - The `FieldErrorProps` for the component\n */\nexport default function FieldErrorTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldErrorProps<T, S, F>) {\n const { errors } = props;\n return (\n <div className='rjsf-field-error-template text-red-600'>\n <ul className='list-disc list-inside'>{errors?.map((error, index) => <li key={index}>{error}</li>) ?? []}</ul>\n </div>\n );\n}\n", "import { FieldHelpProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `FieldHelpTemplate` component renders help text for a specific form field\n * with DaisyUI styling. It displays the help text in a subtle gray color and smaller size\n * to distinguish it from the main field content.\n *\n * Help text provides additional guidance to users about how to complete a field\n * or explains the expected input format.\n *\n * @param props - The `FieldHelpProps` for the component\n */\nexport default function FieldHelpTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldHelpProps<T, S, F>) {\n const { help } = props;\n return (\n <div className='rjsf-field-help-template text-gray-500 text-sm'>\n <div>{help}</div>\n </div>\n );\n}\n", "import { FieldTemplateProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `FieldTemplate` component provides the main layout for each form field\n * with DaisyUI styling. It handles:\n *\n * - Displaying field labels with required indicators\n * - Special layout for checkbox fields (label positioned after the input)\n * - Proper spacing between form fields\n * - Rendering error messages and help text\n * - Maintaining accessibility with proper label associations\n *\n * This template uses DaisyUI's label and form-control components for consistent styling.\n *\n * @param props - The `FieldTemplateProps` for the component\n */\nexport default function FieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldTemplateProps<T, S, F>) {\n const {\n id,\n label,\n children,\n errors,\n formContext,\n formData,\n help,\n hideError,\n displayLabel,\n classNames,\n // Destructure props we don't want to pass to div\n onKeyChange,\n onDropPropertyClick,\n uiSchema,\n schema,\n readonly,\n required,\n rawErrors,\n rawHelp,\n rawDescription,\n hidden,\n onChange,\n registry,\n ...divProps\n } = props;\n\n // Special handling for checkboxes - they should have the label after the input\n const isCheckbox = schema.type === 'boolean';\n\n return (\n <div className={`field-template mb-3 ${classNames || ''}`} {...divProps}>\n {displayLabel && !isCheckbox && (\n <label htmlFor={id} className='label'>\n <span className='label-text font-medium'>\n {label}\n {required && <span className='text-error ml-1'>*</span>}\n </span>\n </label>\n )}\n {children}\n {errors}\n {help}\n </div>\n );\n}\n", "import { GridTemplateProps } from '@rjsf/utils';\n\n/** Renders a `GridTemplate` for DaisyUI, which follows the same pattern as other RJSF themes.\n * This uses DaisyUI's grid system with flexbox for responsive layouts.\n *\n * @param props - The GridTemplateProps, including children and column flag\n */\nexport default function GridTemplate(props: GridTemplateProps) {\n const { children, column, ...rest } = props;\n\n if (column) {\n // For columns, use DaisyUI's flex classes\n return (\n <div className='flex-grow' {...rest}>\n {children}\n </div>\n );\n }\n\n // For rows, use DaisyUI's flex container with wrap\n return (\n <div className='flex flex-wrap gap-4' {...rest}>\n {children}\n </div>\n );\n}\n", "import {\n canExpand,\n descriptionId,\n FormContextType,\n getTemplate,\n getUiOptions,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n titleId,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ObjectFieldTemplate` component renders a layout for object fields in the form\n * with DaisyUI styling. It handles:\n *\n * - Special styling for the root object with extra padding and shadows\n * - Rendering of title and description using appropriate templates\n * - Grid layout for object properties with consistent spacing\n * - Conditionally rendering an add button for expandable objects\n * - Support for hidden properties\n *\n * @param props - The `ObjectFieldTemplateProps` for the component\n */\nexport default function ObjectFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n description,\n title,\n properties,\n required,\n disabled,\n readonly,\n uiSchema,\n idSchema,\n schema,\n formData,\n onAddClick,\n registry,\n } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, uiOptions);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n uiOptions,\n );\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n // Check if this is the root object\n const isRoot = idSchema.$id === 'root';\n\n return (\n <div className={`form-control ${isRoot ? 'bg-base-100 p-6 rounded-xl shadow-lg' : ''}`}>\n {title && (\n <TitleFieldTemplate\n id={titleId<T>(idSchema)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {description && (\n <DescriptionFieldTemplate\n id={descriptionId<T>(idSchema)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n <div className={`grid grid-cols-1 gap-${description ? 3 : 4} ${isRoot ? '' : 'mb-4'}`}>\n {properties.map((element, index) =>\n element.hidden ? (\n element.content\n ) : (\n <div\n key={`${idSchema.$id}-${element.name}-${index}`}\n className={idSchema.$id === 'root' && element.name === 'tasks' ? 'mt-2' : ''}\n >\n {element.content}\n </div>\n ),\n )}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <div className='flex justify-end'>\n <AddButton\n id={buttonId<T>(idSchema, 'add')}\n className='rjsf-object-property-expand btn btn-primary btn-sm'\n onClick={onAddClick(schema)}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { TitleFieldProps, StrictRJSFSchema, RJSFSchema, FormContextType, getUiOptions } from '@rjsf/utils';\n\n/** The `TitleField` component renders the title for a form section or field\n * with DaisyUI styling. It displays:\n *\n * - Large heading with primary color\n * - Divider element below the title for visual separation\n * - Support for title override from UI options\n *\n * This component is typically used at the top of form sections to provide clear visual hierarchy.\n *\n * @param props - The `TitleFieldProps` for the component\n */\nexport default function TitleField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: TitleFieldProps<T, S, F>,\n) {\n const { id, title, uiSchema } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n\n return (\n <div id={id} className='title-field mb-6'>\n <h2 className='text-3xl font-bold text-primary mb-2'>{uiOptions.title || title}</h2>\n <div className='divider divider-primary'></div>\n </div>\n );\n}\n", "import { useCallback } from 'react';\nimport {\n WrapIfAdditionalTemplateProps,\n StrictRJSFSchema,\n RJSFSchema,\n FormContextType,\n TranslatableString,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function WrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n children,\n classNames,\n disabled,\n id,\n label,\n readonly,\n required,\n schema,\n onKeyChange,\n onDropPropertyClick,\n registry,\n ...rest\n } = props;\n\n const { translateString } = registry;\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onKeyChange(event.target.value);\n },\n [onKeyChange],\n );\n\n const handleRemove = useCallback(() => {\n onDropPropertyClick(label)();\n }, [onDropPropertyClick, label]);\n\n return (\n <div className={`wrap-if-additional-template ${classNames}`} {...rest}>\n <div className='flex items-center'>\n <input\n type='text'\n className='input input-bordered'\n id={`${id}-key`}\n onBlur={handleBlur}\n defaultValue={label}\n disabled={disabled || readonly}\n />\n {schema.additionalProperties && (\n <button\n id={buttonId<T>(id, 'remove')}\n className='rjsf-array-item-remove btn btn-danger ml-2'\n onClick={handleRemove}\n disabled={disabled || readonly}\n >\n {translateString(TranslatableString.RemoveButton)}\n </button>\n )}\n </div>\n {children}\n </div>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport ArrayFieldItemButtonsTemplate from './ArrayFieldItemButtonsTemplate';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate';\nimport ArrayFieldTemplate from './ArrayFieldTemplate/ArrayFieldTemplate';\nimport BaseInputTemplate from './BaseInputTemplate/BaseInputTemplate';\nimport { AddButton, CopyButton, MoveDownButton, MoveUpButton, RemoveButton, SubmitButton } from './ButtonTemplates';\nimport DescriptionField from './DescriptionField';\nimport ErrorList from './ErrorList';\nimport FieldErrorTemplate from './FieldErrorTemplate';\nimport FieldHelpTemplate from './FieldHelpTemplate';\nimport FieldTemplate from './FieldTemplate';\nimport GridTemplate from './GridTemplate/GridTemplate';\nimport ObjectFieldTemplate from './ObjectFieldTemplate';\nimport TitleFieldTemplate from './TitleField/TitleField';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate';\n\n/** Function that generates all the template components required for the DaisyUI theme.\n *\n * This provides a complete set of styled components that implement the DaisyUI design system\n * for use with react-jsonschema-form.\n *\n * The templates include:\n * - Array field templates (for rendering array items and controls)\n * - Button templates (for add, submit, copy, move, remove actions)\n * - Input templates (for rendering form controls)\n * - Layout templates (for fields, objects, additional properties)\n * - Helper templates (for titles, descriptions, errors, help text)\n *\n * @returns A partial `TemplatesType` object with all required template components\n */\nexport function generateTemplates<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): Partial<TemplatesType<T, S, F>> {\n return {\n ArrayFieldItemTemplate,\n ArrayFieldTemplate,\n ArrayFieldItemButtonsTemplate,\n BaseInputTemplate,\n ButtonTemplates: {\n AddButton,\n SubmitButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n },\n DescriptionFieldTemplate: DescriptionField,\n ErrorListTemplate: ErrorList,\n FieldErrorTemplate,\n FieldHelpTemplate,\n FieldTemplate,\n GridTemplate,\n ObjectFieldTemplate,\n TitleFieldTemplate,\n WrapIfAdditionalTemplate,\n };\n}\n\n/** Default export of all generated templates for the DaisyUI theme */\nexport default generateTemplates();\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.\n * It uses the AltDateWidget for rendering, with the `time` prop set to true by default.\n */\nfunction AltDateTimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n time = true,\n ...props\n}: WidgetProps<T, S, F>) {\n const { AltDateWidget } = props.registry.widgets;\n return <AltDateWidget time={time} {...props} />;\n}\n\nexport default AltDateTimeWidget;\n", "import { MouseEvent, useCallback, useEffect, useReducer, useState } from 'react';\nimport {\n ariaDescribedByIds,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n TranslatableString,\n parseDateString,\n toDateString,\n dateRangeOptions,\n DateObject as RJSFDateObject,\n Registry,\n} from '@rjsf/utils';\n\n/** Interface for date object with optional string fields for each date/time component */\ninterface DateObject {\n year?: string;\n month?: string;\n day?: string;\n hour?: string;\n minute?: string;\n second?: string;\n}\n\n/** Determines if the date object has all required fields to form a valid date\n *\n * @param state - The date object to check\n * @param time - Whether to check time fields as well\n * @returns True if all required fields are present\n */\nfunction readyForChange(state: DateObject, time = false) {\n return state.year && state.month && state.day && (!time || (state.hour && state.minute && state.second));\n}\n\n/** Supported date element display formats */\ntype DateElementFormat = 'YMD' | 'MDY' | 'DMY';\n\n/** Gets configuration for date elements based on format and ranges\n *\n * @param state - The current date object state\n * @param time - Whether to include time elements\n * @param yearsRange - Optional range of years to display\n * @param format - Format for ordering date elements (year, month, day)\n * @returns Array of element properties for rendering\n */\nfunction getDateElementProps(\n state: DateObject,\n time: boolean,\n yearsRange?: [number, number],\n format: DateElementFormat = 'YMD',\n) {\n const rangeOptions = yearsRange ?? [1900, new Date().getFullYear() + 2];\n // Define the order based on the format\n const formats: Record<DateElementFormat, Array<keyof DateObject>> = {\n YMD: ['year', 'month', 'day'],\n MDY: ['month', 'day', 'year'],\n DMY: ['day', 'month', 'year'],\n };\n\n // Get the elements in the specified order\n const dateElements = formats[format].map((key) => ({\n type: key,\n value: state[key],\n range:\n key === 'year'\n ? (rangeOptions as [number, number])\n : key === 'month'\n ? ([1, 12] as [number, number])\n : key === 'day'\n ? ([1, 31] as [number, number])\n : ([0, 59] as [number, number]),\n }));\n\n // Add time elements if needed\n if (time) {\n dateElements.push(\n { type: 'hour', value: state.hour, range: [0, 23] as [number, number] },\n { type: 'minute', value: state.minute, range: [0, 59] as [number, number] },\n { type: 'second', value: state.second, range: [0, 59] as [number, number] },\n );\n }\n\n return dateElements;\n}\n\n/** Props for the DateElement component */\ninterface DateElementProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any> {\n /** Type of date element (year, month, day, etc.) */\n type: string;\n /** Min/max range for the element values */\n range: [number, number];\n /** Current value */\n value?: string;\n /** Function to call when value is selected */\n select: (property: keyof DateObject, value: any) => void;\n /** Base ID for the form element */\n rootId: string;\n /** Name attribute for the form element */\n name: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Whether the input is readonly */\n readonly?: boolean;\n /** Whether the input should autofocus */\n autofocus?: boolean;\n /** Registry containing widgets and templates */\n registry: Registry<T, S, F>;\n /** Function called when input loses focus */\n onBlur: (id: string, value: string) => void;\n /** Function called when input gains focus */\n onFocus: (id: string, value: string) => void;\n}\n\n/** Component for rendering individual date/time elements (year, month, day, etc.)\n *\n * Renders a select input for each date component with appropriate options.\n *\n * @param props - The props for the component\n */\nfunction DateElement<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n type,\n range,\n value,\n select,\n rootId,\n name,\n disabled,\n readonly,\n autofocus,\n registry,\n onBlur,\n onFocus,\n}: DateElementProps<T, S, F>) {\n const id = `${rootId}_${type}`;\n const { SelectWidget } = registry.widgets as Registry<T, S, F>['widgets'];\n\n // Memoize the onChange handler\n const handleChange = useCallback(\n (value: any) => {\n select(type as keyof DateObject, value);\n },\n [select, type],\n );\n\n return (\n <SelectWidget\n schema={{ type: 'integer' } as S}\n id={id}\n name={name}\n className='select select-bordered select-sm w-full'\n options={{ enumOptions: dateRangeOptions<S>(range[0], range[1]) }}\n placeholder={type}\n value={value}\n disabled={disabled}\n readonly={readonly}\n autofocus={autofocus}\n onChange={handleChange}\n onBlur={onBlur}\n onFocus={onFocus}\n registry={registry}\n label=''\n aria-describedby={ariaDescribedByIds<T>(rootId)}\n required={false}\n />\n );\n}\n\n/** Converts our DateObject to the expected format for toDateString\n *\n * @param dateObj - The internal DateObject\n * @returns A properly formatted object for the utils toDateString function\n */\nfunction convertToRJSFDateObject(dateObj: DateObject): RJSFDateObject {\n return {\n year: dateObj.year ? parseInt(dateObj.year) : 0,\n month: dateObj.month ? parseInt(dateObj.month) : 0,\n day: dateObj.day ? parseInt(dateObj.day) : 0,\n hour: dateObj.hour ? parseInt(dateObj.hour) : 0,\n minute: dateObj.minute ? parseInt(dateObj.minute) : 0,\n second: dateObj.second ? parseInt(dateObj.second) : 0,\n };\n}\n\n/** The `AltDateWidget` component provides an alternative date/time input\n * with individual fields for year, month, day, and optionally time components.\n *\n * Features:\n * - Supports different date formats (YMD, MDY, DMY)\n * - Optional time selection (hours, minutes, seconds)\n * - \"Set to now\" and \"Clear\" buttons\n * - Configurable year ranges\n * - Accessible controls with proper labeling\n * - DaisyUI styling for all elements\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function AltDateWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n time = false,\n disabled = false,\n readonly = false,\n autofocus = false,\n options = {},\n id,\n name,\n registry,\n onBlur,\n onFocus,\n onChange,\n value,\n}: WidgetProps<T, S, F>) {\n const { translateString } = registry;\n const [lastValue, setLastValue] = useState(value);\n\n // Use a type-safe version of parseDateString result\n const initialState = parseDateString(value, time) as unknown as DateObject;\n\n // Create a reducer for date objects\n const dateReducer = (state: DateObject, action: Partial<DateObject>): DateObject => {\n return { ...state, ...action };\n };\n\n const [state, setState] = useReducer(dateReducer, initialState);\n\n // Handle changes in props or state\n useEffect(() => {\n const rjsfDateObj = convertToRJSFDateObject(state);\n const stateValue = toDateString(rjsfDateObj, time);\n if (readyForChange(state, time) && stateValue !== value) {\n // Valid date changed via the selects\n onChange(stateValue);\n } else if (lastValue !== value) {\n // New value from props\n setLastValue(value);\n setState(parseDateString(value, time) as unknown as DateObject);\n }\n }, [time, value, onChange, state, lastValue]);\n\n // Handle individual field changes\n const handleChange = useCallback((property: keyof DateObject, value: string) => {\n setState({ [property]: value });\n }, []);\n\n // Set current date\n const handleSetNow = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (disabled || readonly) {\n return;\n }\n const nextState = parseDateString(new Date().toJSON(), time) as unknown as DateObject;\n const rjsfDateObj = convertToRJSFDateObject(nextState);\n onChange(toDateString(rjsfDateObj, time));\n },\n [disabled, readonly, time, onChange],\n );\n\n // Clear the date\n const handleClear = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (disabled || readonly) {\n return;\n }\n onChange(undefined);\n },\n [disabled, readonly, onChange],\n );\n\n return (\n <div className='space-y-3'>\n <div className='grid grid-cols-3 gap-2'>\n {getDateElementProps(\n state,\n time,\n options.yearsRange as [number, number] | undefined,\n options.format as DateElementFormat | undefined,\n ).map((elemProps, i) => (\n <div key={i} className='form-control'>\n <label className='label'>\n <span className='label-text capitalize'>{elemProps.type}</span>\n </label>\n <DateElement\n rootId={id}\n name={name}\n select={handleChange}\n type={elemProps.type}\n range={elemProps.range}\n value={elemProps.value}\n disabled={disabled}\n readonly={readonly}\n registry={registry}\n onBlur={onBlur}\n onFocus={onFocus}\n autofocus={autofocus && i === 0}\n />\n </div>\n ))}\n </div>\n <div className='flex justify-start space-x-2'>\n {(options.hideNowButton !== undefined ? !options.hideNowButton : true) && (\n <button\n type='button'\n className='btn btn-sm btn-primary'\n onClick={handleSetNow}\n disabled={disabled || readonly}\n >\n {translateString(TranslatableString.NowLabel)}\n </button>\n )}\n {(options.hideClearButton !== undefined ? !options.hideClearButton : true) && (\n <button\n type='button'\n className='btn btn-sm btn-secondary'\n onClick={handleClear}\n disabled={disabled || readonly}\n >\n {translateString(TranslatableString.ClearLabel)}\n </button>\n )}\n </div>\n </div>\n );\n}\n", "import { useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType, getTemplate, descriptionId } from '@rjsf/utils';\n\n/** The `CheckboxWidget` component renders a single checkbox input with DaisyUI styling.\n *\n * Features:\n * - Simple boolean input with DaisyUI checkbox styling\n * - Handles required, disabled, and readonly states\n * - No label rendering (handled by the parent FieldTemplate)\n * - Proper onChange handling for boolean values\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function CheckboxWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n id,\n value,\n required,\n disabled,\n hideLabel,\n label,\n readonly,\n registry,\n options,\n schema,\n uiSchema,\n onChange,\n onFocus,\n onBlur,\n } = props;\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n const description = options.description || schema.description;\n\n /** Handle focus events\n */\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [onFocus, id, value]);\n\n /** Handle blur events\n */\n const handleBlur = useCallback(() => {\n if (onBlur) {\n onBlur(id, value);\n }\n }, [onBlur, id, value]);\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.checked);\n },\n [onChange],\n );\n\n const input = (\n <input\n type='checkbox'\n id={id}\n checked={value}\n required={required}\n disabled={disabled || readonly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className='checkbox'\n />\n );\n\n return (\n <div className='form-control'>\n {!hideLabel && description && (\n <DescriptionFieldTemplate\n id={descriptionId<T>(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hideLabel || !label ? (\n input\n ) : (\n <label className='label cursor-pointer justify-start'>\n <div className='mr-2'>{input}</div>\n <span className='label-text'>\n {label}\n {required && <span className='text-error ml-1'>*</span>}\n </span>\n </label>\n )}\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `CheckboxesWidget` component renders a set of checkboxes for multiple choice selection\n * with DaisyUI styling.\n *\n * Features:\n * - Supports both primitive values and objects in enum options\n * - Handles array values with proper state management\n * - Uses DaisyUI checkbox styling with accessible labels\n * - Supports disabled and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses vertical layout for better spacing and readability\n * - Uses memoized handlers for optimal performance\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function CheckboxesWidget<T, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n disabled,\n options,\n value,\n readonly,\n required,\n onChange,\n onFocus,\n onBlur,\n}: WidgetProps<T, S, F>) {\n const { enumOptions } = options;\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n /** Determines if a checkbox option should be checked based on the current value\n *\n * @param option - The option to check\n * @returns Whether the option should be checked\n */\n const isChecked = useCallback(\n (option: any) => {\n if (!Array.isArray(value)) {\n return false;\n }\n if (isEnumeratedObject) {\n return value.some((v) => v.name === option.value.name);\n }\n return value.includes(option.value);\n },\n [value, isEnumeratedObject],\n );\n\n /** Handles changes to a checkbox's checked state */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (!option) {\n return;\n }\n\n const newValue = Array.isArray(value) ? [...value] : [];\n const optionValue = isEnumeratedObject ? option.value : option.value;\n\n if (isChecked(option)) {\n onChange(newValue.filter((v) => (isEnumeratedObject ? v.name !== optionValue.name : v !== optionValue)));\n } else {\n onChange([...newValue, optionValue]);\n }\n },\n [onChange, value, isChecked, isEnumeratedObject, enumOptions],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onFocus(id, option.value);\n }\n }\n },\n [onFocus, id, enumOptions],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onBlur(id, option.value);\n }\n }\n },\n [onBlur, id, enumOptions],\n );\n\n return (\n <div className='form-control'>\n {/* Use a vertical layout with proper spacing */}\n <div className='flex flex-col gap-2 mt-1'>\n {enumOptions?.map((option, index) => (\n <label key={option.value} className='flex items-center cursor-pointer gap-2'>\n <input\n type='checkbox'\n id={`${id}-${option.value}`}\n className='checkbox'\n name={id}\n checked={isChecked(option)}\n required={required}\n disabled={disabled || readonly}\n data-index={index}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text'>{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, memo, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\nimport { format, isSameDay, isToday, isValid } from 'date-fns';\nimport { ClassNames, DayPicker, ModifiersClassNames, UI } from 'react-day-picker';\nimport 'react-day-picker/dist/style.css';\n\n/**\n * Props for the DateTimePicker popup component\n */\ninterface DateTimePickerProps {\n /** Currently selected date */\n selectedDate?: Date;\n /** Currently displayed month */\n month: Date;\n /** Handler for month changes */\n onMonthChange: (date: Date) => void;\n /** Handler for date selection */\n onSelect: (date: Date | undefined) => void;\n /** Handler for time input changes */\n onTimeChange: (e: ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Custom hook to manage the picker's popup state and displayed month\n *\n * @param initialDate - Initial date to display, defaults to today\n * @returns State and handlers for the date picker\n */\nfunction useDatePickerState(initialDate?: Date) {\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(initialDate ?? new Date());\n return { isOpen, setIsOpen, month, setMonth };\n}\n\n/**\n * Custom hook to detect clicks outside an element and run a callback\n *\n * @param ref - React ref to the element to monitor\n * @param callback - Function to call when a click outside is detected\n */\nfunction useClickOutside(ref: RefObject<HTMLDivElement>, callback: () => void) {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [ref, callback]);\n}\n\n/**\n * Predefined DayPicker styles using DaisyUI classes\n */\nconst dayPickerStyles: { classNames: Partial<ClassNames>; modifiers: Partial<ModifiersClassNames> } = {\n classNames: {\n [UI.Root]: 'relative',\n [UI.Nav]: 'hidden',\n [UI.Chevron]: 'hidden',\n [UI.CaptionLabel]: 'hidden',\n [UI.Dropdowns]: 'flex justify-between gap-4 px-4 pb-4',\n [UI.Dropdown]: 'select select-bordered select-sm w-32',\n [UI.MonthsDropdown]: 'select select-bordered select-sm',\n [UI.YearsDropdown]: 'select select-bordered select-sm',\n [UI.Months]: 'flex justify-center',\n [UI.Month]: 'w-full',\n [UI.MonthCaption]: 'flex justify-center',\n [UI.MonthGrid]: 'w-full',\n [UI.Weekdays]: 'grid grid-cols-7 text-center border-b mb-2 pb-1 text-base-content/60 uppercase',\n [UI.Weekday]: 'p-1 font-medium text-base-content/60 text-sm',\n [UI.Week]: 'grid grid-cols-7',\n [UI.Day]: 'w-10 h-8 p-0 relative rounded-md',\n [UI.DayButton]:\n 'btn btn-ghost absolute inset-0 flex items-center justify-center w-full h-full cursor-pointer rounded-md hover:btn-primary',\n },\n modifiers: {\n selected: 'btn btn-accent min-h-0 h-full',\n outside: 'text-base-content/30 hover:btn-ghost',\n disabled: 'opacity-50 cursor-not-allowed hover:btn-disabled',\n },\n};\n\n/**\n * Popup component for the calendar and time input\n *\n * Renders a DayPicker calendar with time input for selecting date and time\n *\n * @param props - The DateTimePickerProps for this component\n */\nfunction DateTimePickerPopup({ selectedDate, month, onMonthChange, onSelect, onTimeChange }: DateTimePickerProps) {\n const customDayModifiers = {\n selected: selectedDate,\n 'custom-today': (date: Date) => isToday(date) && !(selectedDate && isSameDay(date, selectedDate)),\n };\n\n const customModifiersClassNames: ModifiersClassNames = {\n ...dayPickerStyles.modifiers,\n 'custom-today': 'btn btn-outline btn-info min-h-0 h-full',\n };\n\n // Memoize click handler to stop event propagation\n const handleClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n return (\n <div className='p-3'>\n <DayPicker\n mode='single'\n selected={selectedDate}\n month={month}\n onMonthChange={onMonthChange}\n onSelect={onSelect}\n captionLayout='dropdown'\n fromYear={1900}\n toYear={new Date().getFullYear() + 10}\n showOutsideDays\n classNames={dayPickerStyles.classNames}\n modifiers={customDayModifiers}\n modifiersClassNames={customModifiersClassNames}\n />\n\n <div className='mt-3 border-t border-base-300 pt-3'>\n <div className='form-control w-full'>\n <label className='label'>\n <span className='label-text'>Time</span>\n </label>\n <input\n type='time'\n className='input input-bordered w-full'\n value={selectedDate ? format(selectedDate, 'HH:mm') : ''}\n onChange={onTimeChange}\n onClick={handleClick}\n />\n </div>\n </div>\n </div>\n );\n}\n\n// Use memo to optimize re-renders\nconst MemoizedDateTimePickerPopup = memo(DateTimePickerPopup);\n\n/** The `DateTimeWidget` component provides a date and time picker with DaisyUI styling.\n *\n * Features:\n * - Calendar popup with month/year navigation\n * - Time input field\n * - Accessible keyboard navigation\n * - Date formatting using date-fns\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateTimeWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { id, value, onChange, onFocus, onBlur, schema } = props;\n // Initialize the local date from the parent's value.\n const initialDate = useMemo(() => (value ? new Date(value) : undefined), [value]);\n const [localDate, setLocalDate] = useState<Date | undefined>(initialDate);\n\n // When the parent's value changes externally, update local state.\n useEffect(() => {\n setLocalDate(initialDate);\n }, [initialDate]);\n\n const { isOpen, setIsOpen, month, setMonth } = useDatePickerState(initialDate);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n\n // Close the popup when clicking outside and commit changes.\n useClickOutside(containerRef, () => {\n if (isOpen) {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n // Manually invoke the blur handler to ensure blur event is triggered\n if (onBlur) {\n onBlur(id, value);\n }\n }\n });\n\n // When the local date changes, update the displayed month.\n useEffect(() => {\n if (localDate) {\n setMonth(localDate);\n }\n }, [localDate, setMonth]);\n\n // Update the month when the user navigates the calendar.\n const handleMonthChange = useCallback((date: Date) => setMonth(date), [setMonth]);\n\n // Update local state on day selection (but do not commit immediately).\n const handleSelect = useCallback(\n (date: Date | undefined) => {\n if (date) {\n if (localDate) {\n date.setHours(localDate.getHours(), localDate.getMinutes());\n }\n setLocalDate(date);\n }\n },\n [localDate],\n );\n\n // Update local state on time change.\n const handleTimeChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (localDate) {\n const [hours, minutes] = e.target.value.split(':');\n const newDate = new Date(localDate);\n newDate.setHours(parseInt(hours, 10), parseInt(minutes, 10));\n setLocalDate(newDate);\n }\n },\n [localDate],\n );\n\n // Toggle popup visibility.\n const togglePicker = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsOpen((prev) => !prev);\n if (!isOpen && onFocus) {\n onFocus(id, value);\n }\n },\n [isOpen, id, onFocus, setIsOpen, value],\n );\n\n // Handle focus event\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [id, onFocus, value]);\n\n // Handle blur event\n const handleBlur = useCallback(() => {\n if (!isOpen && onBlur) {\n onBlur(id, value);\n }\n }, [id, onBlur, value, isOpen]);\n\n // Handle keydown events for accessibility\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n togglePicker(e as unknown as React.MouseEvent);\n }\n },\n [togglePicker],\n );\n\n // Prevent event propagation for popup container\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n // Close popup on escape key\n useEffect(() => {\n const handleEscape = (e: React.KeyboardEvent | KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n setIsOpen(false);\n if (onBlur) {\n onBlur(id, value);\n }\n }\n };\n\n // Need to use native DOM events since we're attaching to document\n document.addEventListener('keydown', handleEscape as (e: KeyboardEvent) => void);\n return () => document.removeEventListener('keydown', handleEscape as (e: KeyboardEvent) => void);\n }, [id, isOpen, onBlur, value]);\n\n // Add the handleDoneClick callback near the top of the component, with the other event handlers\n /** Handle clicking the \"Done\" button\n */\n const handleDoneClick = useCallback(() => {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n if (onBlur) {\n onBlur(id, value);\n }\n inputRef.current?.focus();\n }, [localDate, onChange, onBlur, id, value]);\n\n return (\n <div className='form-control my-4 w-full relative'>\n <div\n className='w-full'\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n ref={inputRef}\n >\n <div\n id={id}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${\n isOpen ? 'ring-2 ring-primary/50' : ''\n }`}\n onClick={togglePicker}\n role='button'\n aria-haspopup='true'\n aria-expanded={isOpen}\n tabIndex={-1}\n >\n <span className={localDate && isValid(localDate) ? '' : 'text-base-content/50'}>\n {localDate && isValid(localDate) ? format(localDate, 'PP p') : schema.title}\n </span>\n <FontAwesomeIcon icon={faCalendar} className='ml-2 h-4 w-4 text-primary' />\n </div>\n {isOpen && (\n <div\n ref={containerRef}\n className='absolute z-[100] mt-2 w-full max-w-xs bg-base-100 border border-base-300 shadow-lg rounded-box'\n onClick={handleContainerClick}\n >\n <MemoizedDateTimePickerPopup\n selectedDate={localDate}\n month={month}\n onMonthChange={handleMonthChange}\n onSelect={handleSelect}\n onTimeChange={handleTimeChange}\n />\n <div className='p-3 flex justify-end border-t border-base-300'>\n <button type='button' className='btn btn-sm btn-primary' onClick={handleDoneClick}>\n Done\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { memo, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\nimport { format, isSameDay, isToday, isValid } from 'date-fns';\nimport { ClassNames, DayPicker, ModifiersClassNames, UI } from 'react-day-picker';\nimport 'react-day-picker/dist/style.css';\n\n/**\n * Props for the DatePicker popup component\n */\ninterface DatePickerProps {\n /** Currently selected date */\n selectedDate?: Date;\n /** Currently displayed month */\n month: Date;\n /** Handler for month changes */\n onMonthChange: (date: Date) => void;\n /** Handler for date selection */\n onSelect: (date: Date | undefined) => void;\n}\n\n/**\n * Custom hook to manage the picker's popup state and displayed month\n *\n * @param initialDate - Initial date to display, defaults to today\n * @returns State and handlers for the date picker\n */\nfunction useDatePickerState(initialDate?: Date) {\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(initialDate ?? new Date());\n return { isOpen, setIsOpen, month, setMonth };\n}\n\n/**\n * Custom hook to detect clicks outside an element and run a callback\n *\n * @param ref - React ref to the element to monitor\n * @param callback - Function to call when a click outside is detected\n */\nfunction useClickOutside(ref: RefObject<HTMLDivElement>, callback: () => void) {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [ref, callback]);\n}\n\n/**\n * Predefined DayPicker styles using DaisyUI classes\n */\nconst dayPickerStyles: { classNames: Partial<ClassNames>; modifiers: Partial<ModifiersClassNames> } = {\n classNames: {\n [UI.Root]: 'relative',\n [UI.Nav]: 'hidden',\n [UI.Chevron]: 'hidden',\n [UI.CaptionLabel]: 'hidden',\n [UI.Dropdowns]: 'flex justify-between gap-4 px-4 pb-4',\n [UI.Dropdown]: 'select select-bordered select-sm w-32',\n [UI.MonthsDropdown]: 'select select-bordered select-sm',\n [UI.YearsDropdown]: 'select select-bordered select-sm',\n [UI.Months]: 'flex justify-center',\n [UI.Month]: 'w-full',\n [UI.MonthCaption]: 'flex justify-center',\n [UI.MonthGrid]: 'w-full',\n [UI.Weekdays]: 'grid grid-cols-7 text-center border-b mb-2 pb-1 text-base-content/60 uppercase',\n [UI.Weekday]: 'p-1 font-medium text-base-content/60 text-sm',\n [UI.Week]: 'grid grid-cols-7',\n [UI.Day]: 'w-10 h-8 p-0 relative rounded-md',\n [UI.DayButton]:\n 'btn btn-ghost absolute inset-0 flex items-center justify-center w-full h-full cursor-pointer rounded-md hover:btn-primary',\n },\n modifiers: {\n selected: 'btn btn-accent min-h-0 h-full',\n outside: 'text-base-content/30 hover:btn-ghost',\n disabled: 'opacity-50 cursor-not-allowed hover:btn-disabled',\n },\n};\n\n/**\n * Popup component for the calendar\n *\n * Renders a DayPicker calendar for selecting dates\n *\n * @param props - The DatePickerProps for this component\n */\nfunction DatePickerPopup({ selectedDate, month, onMonthChange, onSelect }: DatePickerProps) {\n const customDayModifiers = {\n selected: selectedDate,\n 'custom-today': (date: Date) => isToday(date) && !(selectedDate && isSameDay(date, selectedDate)),\n };\n\n const customModifiersClassNames: ModifiersClassNames = {\n ...dayPickerStyles.modifiers,\n 'custom-today': 'btn btn-outline btn-info min-h-0 h-full',\n };\n\n return (\n <div className='p-3' style={{ minWidth: '320px', minHeight: '350px' }}>\n <DayPicker\n mode='single'\n selected={selectedDate}\n month={month}\n onMonthChange={onMonthChange}\n onSelect={onSelect}\n captionLayout='dropdown'\n fromYear={1900}\n toYear={new Date().getFullYear() + 10}\n showOutsideDays\n classNames={dayPickerStyles.classNames}\n modifiers={customDayModifiers}\n modifiersClassNames={customModifiersClassNames}\n />\n </div>\n );\n}\n\n// Use React.memo to optimize re-renders\nconst MemoizedDatePickerPopup = memo(DatePickerPopup);\n\n/** The `DateWidget` component provides a date picker with DaisyUI styling.\n *\n * Features:\n * - Calendar popup with month/year dropdown navigation\n * - Accessible keyboard navigation\n * - Date formatting using date-fns\n * - Date-only selection (time component set to 00:00:00)\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { id, value, onChange, onFocus, onBlur, schema } = props;\n // Initialize the local date from the parent's value.\n const initialDate = useMemo(() => (value ? new Date(value) : undefined), [value]);\n const [localDate, setLocalDate] = useState<Date | undefined>(initialDate);\n\n // When the parent's value changes externally, update local state.\n useEffect(() => {\n setLocalDate(initialDate);\n }, [initialDate]);\n\n const { isOpen, setIsOpen, month, setMonth } = useDatePickerState(initialDate);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n\n // Close the popup when clicking outside and commit changes.\n useClickOutside(containerRef, () => {\n if (isOpen) {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n // Manually invoke the blur handler to ensure blur event is triggered\n if (onBlur) {\n onBlur(id, value);\n }\n }\n });\n\n // When the local date changes, update the displayed month.\n useEffect(() => {\n if (localDate) {\n setMonth(localDate);\n }\n }, [localDate, setMonth]);\n\n // Update the month when the user navigates the calendar.\n const handleMonthChange = useCallback((date: Date) => setMonth(date), [setMonth]);\n\n // Update local state on day selection (but do not commit immediately).\n const handleSelect = useCallback((date: Date | undefined) => {\n if (date) {\n // Remove any time component by setting hours, minutes, seconds, and milliseconds to zero.\n date.setHours(0, 0, 0, 0);\n setLocalDate(date);\n }\n }, []);\n\n // Add a portal container to the document body if it doesn't exist\n useEffect(() => {\n // Check if the portal container exists, create it if not\n let portalContainer = document.getElementById('date-picker-portal');\n if (!portalContainer) {\n portalContainer = document.createElement('div');\n portalContainer.id = 'date-picker-portal';\n document.body.appendChild(portalContainer);\n }\n\n // Clean up on unmount\n return () => {\n // Only remove if no other date pickers are using it and if portalContainer exists\n const container = document.getElementById('date-picker-portal');\n if (container && document.querySelectorAll('.date-picker-popup').length === 0) {\n container.remove();\n }\n };\n }, []);\n\n // Get the document and window objects (will work in iframes too)\n const getDocumentAndWindow = () => {\n // Try to get the iframe's document and window if we're in one\n let doc = document;\n let win = window;\n\n try {\n // If we're in an iframe, try to access the parent\n if (window.frameElement) {\n // We're in an iframe\n const iframe = window.frameElement as HTMLIFrameElement;\n // Get the iframe's contentDocument and contentWindow\n if (iframe.contentDocument) {\n doc = iframe.contentDocument;\n }\n if (iframe.contentWindow) {\n win = iframe.contentWindow as typeof window;\n }\n }\n } catch (e) {\n // Security error, we're in a cross-origin iframe\n console.log('Unable to access parent frame:', e);\n }\n\n return { doc, win };\n };\n\n // Render the calendar at a specific position\n const renderCalendar = useCallback(() => {\n if (!containerRef.current || !inputRef.current) {\n return;\n }\n\n // Get the proper document and window\n const { win } = getDocumentAndWindow();\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const containerWidth = 320; // Minimum width we've set\n\n // Position the calendar relative to the input but with fixed positioning\n containerRef.current.style.position = 'fixed';\n containerRef.current.style.top = `${inputRect.bottom + 5}px`;\n\n // Prevent it from going off-screen on the right\n const rightEdge = inputRect.left + containerWidth;\n const windowWidth = win.innerWidth;\n\n if (rightEdge > windowWidth - 20) {\n // Align to the right edge if it would overflow\n containerRef.current.style.left = `${Math.max(20, windowWidth - 20 - containerWidth)}px`;\n } else {\n // Otherwise align to the left edge of the input\n containerRef.current.style.left = `${inputRect.left}px`;\n }\n\n // Ensure the calendar is visible\n containerRef.current.style.zIndex = '99999';\n }, [containerRef, inputRef]);\n\n // Handle window resize to reposition the calendar\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n // Position initially\n renderCalendar();\n\n // Update position on resize\n window.addEventListener('resize', renderCalendar);\n window.addEventListener('scroll', renderCalendar);\n\n return () => {\n window.removeEventListener('resize', renderCalendar);\n window.removeEventListener('scroll', renderCalendar);\n };\n }, [isOpen, renderCalendar]);\n\n // Toggle popup visibility.\n const togglePicker = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsOpen((prev) => !prev);\n if (!isOpen && onFocus) {\n onFocus(id, value);\n }\n\n // Position calculation will happen in the effect hook\n },\n [isOpen, id, onFocus, setIsOpen, value],\n );\n\n // Handle focus event\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [id, onFocus, value]);\n\n // Handle blur event\n const handleBlur = useCallback(() => {\n if (!isOpen && onBlur) {\n onBlur(id, value);\n }\n }, [id, onBlur, value, isOpen]);\n\n // Close popup on escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n setIsOpen(false);\n if (onBlur) {\n onBlur(id, value);\n }\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [id, isOpen, onBlur, value]);\n\n // Add the handleDoneClick callback near the top of the component, with the other event handlers\n /** Handle clicking the \"Done\" button\n */\n const handleDoneClick = useCallback(() => {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n if (onBlur) {\n onBlur(id, value);\n }\n inputRef.current?.focus();\n }, [localDate, onChange, onBlur, id, value]);\n\n return (\n <div className='form-control my-4 w-full relative'>\n <div\n className='w-full'\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n togglePicker(e as unknown as React.MouseEvent);\n }\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n ref={inputRef}\n >\n <div\n id={id}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${\n isOpen ? 'ring-2 ring-primary/50' : ''\n }`}\n onClick={togglePicker}\n role='button'\n aria-haspopup='true'\n aria-expanded={isOpen}\n tabIndex={-1}\n >\n <span className={localDate && isValid(localDate) ? '' : 'text-base-content/50'}>\n {localDate && isValid(localDate) ? format(localDate, 'PP') : schema.title}\n </span>\n <FontAwesomeIcon icon={faCalendar} className='ml-2 h-4 w-4 text-primary' />\n </div>\n {isOpen && (\n <div\n ref={containerRef}\n className='date-picker-popup fixed z-[99999] w-full max-w-xs bg-base-100 border border-base-300 shadow-lg rounded-box'\n style={{\n maxHeight: 'none',\n overflow: 'visible',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <MemoizedDatePickerPopup\n selectedDate={localDate}\n month={month}\n onMonthChange={handleMonthChange}\n onSelect={handleSelect}\n />\n <div className='p-3 flex justify-end border-t border-base-300'>\n <button type='button' className='btn btn-sm btn-primary' onClick={handleDoneClick}>\n Done\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `FileWidget` component provides a file input with DaisyUI styling\n *\n * Features:\n * - Handles both single and multiple file uploads\n * - Supports file type filtering via accept attribute\n * - Properly manages disabled and readonly states\n * - Handles focus and blur events\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function FileWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { id, required, disabled, readonly, schema, onChange, onFocus, onBlur, options = {} } = props;\n\n // Ensure isMulti is explicitly a boolean.\n const isMulti: boolean = schema.type === 'array' || Boolean(options.multiple);\n\n // Accept attribute for restricting file types (e.g., \"image/*\"), if defined in options.\n const accept: string | undefined = typeof options.accept === 'string' ? options.accept : undefined;\n\n /** Handle file selection changes\n *\n * @param event - The change event from the file input\n */\n const handleChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n if (!event.target.files) {\n return;\n }\n // Convert FileList to array for multiple upload handling.\n const fileList = Array.from(event.target.files);\n if (isMulti) {\n onChange(fileList);\n } else {\n // For single file, send the first file (or null if none chosen)\n onChange(fileList[0] || null);\n }\n },\n [onChange, isMulti],\n );\n\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n onFocus(id, event.target.files ? Array.from(event.target.files) : null);\n }\n },\n [onFocus, id],\n );\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(id, event.target.files ? Array.from(event.target.files) : null);\n }\n },\n [onBlur, id],\n );\n\n return (\n <input\n id={id}\n type='file'\n className='file-input w-full'\n required={required}\n disabled={disabled || readonly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n multiple={isMulti}\n accept={accept}\n />\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, FormContextType, RJSFSchema } from '@rjsf/utils';\n\n/** The `RadioWidget` component renders a group of radio buttons with DaisyUI styling\n *\n * Features:\n * - Supports both primitive values and objects in enum options\n * - Handles selection state for various data types\n * - Uses DaisyUI radio styling with accessible labels\n * - Supports disabled and readonly states\n * - Provides focus and blur event handling\n * - Renders radio buttons in a vertical layout for better spacing\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RadioWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n options,\n value,\n required,\n disabled,\n readonly,\n onChange,\n onFocus,\n onBlur,\n}: WidgetProps<T, S, F>) {\n const { enumOptions } = options;\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n /** Gets the actual value from an option\n *\n * @param option - The option object to get value from\n * @returns The option's value\n */\n const getValue = (option: any) => {\n return option.value;\n };\n\n /** Determines if an option is checked based on the current value\n *\n * @param option - The option to check\n * @returns Whether the option should be checked\n */\n const isChecked = (option: any) => {\n if (isEnumeratedObject) {\n return value && value.name === option.value.name;\n }\n return value === option.value;\n };\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const index = Number(event.target.dataset.index);\n const optionValue = enumOptions?.[index]?.value;\n onFocus(id, optionValue);\n }\n },\n [onFocus, id, enumOptions],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const index = Number(event.target.dataset.index);\n const optionValue = enumOptions?.[index]?.value;\n onBlur(id, optionValue);\n }\n },\n [onBlur, id, enumOptions],\n );\n\n /** Handles change events for radio options */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onChange(isEnumeratedObject ? option.value : option.value);\n event.target.blur();\n }\n },\n [onChange, isEnumeratedObject, enumOptions],\n );\n\n return (\n <div className='form-control'>\n {/* Display the options in a vertical flex layout for better spacing */}\n <div className='flex flex-col gap-2 mt-1'>\n {enumOptions?.map((option, index) => (\n <label key={option.value} className='flex items-center cursor-pointer gap-2'>\n <input\n type='radio'\n id={`${id}-${option.value}`}\n className='radio'\n name={id}\n value={getValue(option)}\n checked={isChecked(option)}\n required={required}\n disabled={disabled || readonly}\n data-index={index}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text'>{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `RangeWidget` component renders a range slider input with DaisyUI styling\n *\n * Features:\n * - Visual slider control for numerical values\n * - Displays current value next to the slider\n * - Supports min, max, and step attributes from schema\n * - Handles required, disabled, and readonly states\n * - Supports focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RangeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n value,\n required,\n disabled,\n readonly,\n onChange,\n onFocus,\n onBlur,\n schema,\n}: WidgetProps<T, S, F>) {\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n };\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n };\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n return (\n <div className='form-control'>\n <div className='flex items-center'>\n <input\n type='range'\n id={id}\n className='range'\n value={value || schema.default}\n required={required}\n disabled={disabled || readonly}\n min={schema.minimum}\n max={schema.maximum}\n step={schema.multipleOf || 1}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text ml-4'>{value}</span>\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RatingWidget` component renders a star or heart rating input with DaisyUI styling\n *\n * Features:\n * - Configurable number of stars/hearts (1-5) with default of 5\n * - Supports different shapes (star, heart)\n * - Supports different colors (red, orange, yellow, lime, green, blue, purple, pink)\n * - Supports different sizes (xs, sm, md, lg, xl)\n * - Uses DaisyUI's mask and star/heart styling\n * - Supports minimum and maximum values from schema\n * - Handles required, disabled, and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses radio inputs for a11y compatibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RatingWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onFocus,\n onBlur,\n schema,\n options,\n}: WidgetProps<T, S, F>) {\n const { stars = 5, shape = 'star', color = 'orange', size = 'md', colorGradient = false } = options;\n\n // Use schema.maximum if provided, otherwise use stars option (limited to 1-5)\n const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);\n const min = schema.minimum || 0;\n\n // Generate shape class\n const maskClass = shape === 'heart' ? 'mask-heart' : 'mask-star-2';\n\n // Generate size class\n const sizeClass = size === 'md' ? '' : `rating-${size}`;\n\n /** Handles change events from radio inputs */\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n onChange(parseInt(value));\n },\n [onChange],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const starValue = Number(event.target.value);\n onFocus(id, starValue);\n }\n },\n [onFocus, id],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const starValue = Number(event.target.value);\n onBlur(id, starValue);\n }\n },\n [onBlur, id],\n );\n\n /** Get color class for a specific star/heart\n *\n * @param index - The index of the star/heart (0-based)\n * @returns The appropriate color class\n */\n const getColorClass = (index: number): string => {\n if (!colorGradient) {\n return `bg-${color}-400`;\n }\n\n // For gradient effect, use different colors based on position\n const colors = ['red', 'orange', 'yellow', 'lime', 'green'];\n const colorIdx = Math.min(index, colors.length - 1);\n return `bg-${colors[colorIdx]}-400`;\n };\n\n return (\n <div className='form-control w-full'>\n <div className={`rating gap-1 ${sizeClass}`}>\n {[...Array(numStars)].map((_, index) => {\n const starValue = min + index;\n return (\n <input\n key={index}\n type='radio'\n name={id}\n value={starValue}\n checked={value === starValue}\n onChange={_onChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`mask ${maskClass} ${getColorClass(index)}`}\n disabled={disabled || readonly}\n required={required}\n autoFocus={autofocus && index === 0}\n aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}\n />\n );\n })}\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport {\n enumOptionsIndexForValue,\n enumOptionsValueForIndex,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `SelectWidget` component renders a select input with DaisyUI styling\n *\n * Features:\n * - Supports both single and multiple selection\n * - Handles enumerated objects and primitive values\n * - Uses DaisyUI select styling with proper width\n * - Supports required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Provides placeholder option when needed\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function SelectWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n schema,\n id,\n options,\n label,\n disabled,\n placeholder,\n readonly,\n value,\n multiple,\n onChange,\n onBlur,\n onFocus,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, emptyValue: optEmptyVal } = options;\n multiple = typeof multiple === 'undefined' ? false : !!multiple;\n\n const getDisplayValue = (val: any) => {\n if (!val) {\n return '';\n }\n if (typeof val === 'object') {\n if (val.name) {\n return val.name;\n }\n return val.label || JSON.stringify(val);\n }\n return String(val);\n };\n\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n const handleOptionClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n const index = Number(event.currentTarget.dataset.value);\n if (isNaN(index)) {\n return;\n }\n\n if (multiple) {\n const currentValue = Array.isArray(value) ? value : [];\n const optionValue = isEnumeratedObject\n ? enumOptions[index].value\n : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal);\n const newValue = currentValue.includes(optionValue)\n ? currentValue.filter((v) => v !== optionValue)\n : [...currentValue, optionValue];\n onChange(newValue);\n } else {\n onChange(\n isEnumeratedObject\n ? enumOptions[index].value\n : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal),\n );\n }\n },\n [value, multiple, isEnumeratedObject, enumOptions, optEmptyVal, onChange],\n );\n\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLDivElement>) => {\n const dataValue = target?.getAttribute('data-value');\n if (dataValue !== null) {\n onBlur(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));\n }\n },\n [onBlur, id, enumOptions, optEmptyVal],\n );\n\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLDivElement>) => {\n const dataValue = target?.getAttribute('data-value');\n if (dataValue !== null) {\n onFocus(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));\n }\n },\n [onFocus, id, enumOptions, optEmptyVal],\n );\n\n const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);\n const selectedValues = Array.isArray(selectedIndexes) ? selectedIndexes : [selectedIndexes];\n\n const optionsList =\n enumOptions ||\n (Array.isArray(schema.examples) ? schema.examples.map((example) => ({ value: example, label: example })) : []);\n\n return (\n <div className='form-control w-full'>\n <div className='dropdown w-full'>\n <div\n tabIndex={0}\n role='button'\n className={`btn btn-outline w-full text-left flex justify-between items-center ${\n disabled || readonly ? 'btn-disabled' : ''\n }`}\n onBlur={_onBlur}\n onFocus={_onFocus}\n >\n <span className='truncate'>\n {selectedValues.length > 0\n ? selectedValues.map((index) => optionsList[Number(index)]?.label).join(', ')\n : placeholder || label || 'Select...'}\n </span>\n <span className='ml-2'>\u25BC</span>\n </div>\n <ul className='dropdown-content z-[1] bg-base-100 w-full max-h-60 overflow-auto rounded-box shadow-lg'>\n {optionsList.map(({ label }, i) => (\n <li\n key={i}\n role='button'\n tabIndex={0}\n className={`px-4 py-2 hover:bg-base-200 cursor-pointer ${\n selectedValues.includes(String(i)) ? 'bg-primary/10' : ''\n }`}\n onClick={handleOptionClick}\n data-value={i}\n >\n <div className='flex items-center gap-2'>\n {multiple && (\n <input\n type='checkbox'\n className='checkbox checkbox-sm'\n checked={selectedValues.includes(String(i))}\n readOnly\n />\n )}\n <span>{isEnumeratedObject ? label : getDisplayValue(label)}</span>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `TextareaWidget` component renders a multi-line text input with DaisyUI styling\n *\n * Features:\n * - Handles multi-line text input with proper styling\n * - Supports required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Uses DaisyUI's textarea component for consistent styling\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TextareaWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { id, value, required, disabled, readonly, onChange, onFocus, onBlur, options } = props;\n\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLTextAreaElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n },\n [onFocus, id],\n );\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLTextAreaElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n },\n [onBlur, id],\n );\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n // Extract rows and other textarea-specific props from options\n const rows = options?.rows || 5;\n\n return (\n <div className='form-control'>\n <textarea\n id={id}\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n readOnly={readonly}\n rows={rows}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className='textarea textarea-bordered w-full'\n />\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `TimeWidget` component renders a time input with DaisyUI styling\n *\n * Features:\n * - Provides a time picker with hours and minutes\n * - Handles required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Uses DaisyUI's input styling with proper width\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { id, value, onChange, onFocus, onBlur, required, disabled, readonly } = props;\n\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n },\n [onFocus, id],\n );\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n },\n [onBlur, id],\n );\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n return (\n <div className='form-control'>\n <input\n type='time'\n id={id}\n className='input input-bordered w-full'\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n readOnly={readonly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </div>\n );\n}\n", "import { ChangeEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `ToggleWidget` component renders a toggle switch input with DaisyUI styling\n *\n * Features:\n * - Provides a visual toggle switch rather than a standard checkbox\n * - Supports different sizes through options (sm, md, lg)\n * - Handles required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Includes an optional label from options\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function ToggleWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ id, value, required, disabled, readonly, autofocus, onChange, onFocus, onBlur, options }: WidgetProps<T, S, F>) {\n /** Handle change events from the toggle input\n *\n * @param event - The change event\n */\n const _onChange = useCallback(\n ({ target: { checked } }: ChangeEvent<HTMLInputElement>) => onChange(checked),\n [onChange],\n );\n\n /** Handle focus events\n */\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [onFocus, id, value]);\n\n /** Handle blur events\n */\n const handleBlur = useCallback(() => {\n if (onBlur) {\n onBlur(id, value);\n }\n }, [onBlur, id, value]);\n\n // Get size from options or use default \"md\"\n const { size = 'md' } = options;\n\n // Only add size class if it's not the default size\n const sizeClass = size !== 'md' ? `toggle-${size}` : '';\n\n return (\n <div className='form-control'>\n <label className='cursor-pointer label my-auto'>\n <input\n type='checkbox'\n id={id}\n checked={value}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onChange={_onChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`toggle ${sizeClass}`}\n />\n <span className='label-text'>{options.label}</span>\n </label>\n </div>\n );\n}\n", "import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport AltDateTimeWidget from './AltDateTimeWidget/AltDateTimeWidget';\nimport AltDateWidget from './AltDateWidget/AltDateWidget';\nimport CheckboxWidget from './CheckboxWidget/CheckboxWidget';\nimport CheckboxesWidget from './CheckboxesWidget/CheckboxesWidget';\nimport DateTimeWidget from './DateTimeWidget/DateTimeWidget';\nimport DateWidget from './DateWidget/DateWidget';\nimport FileWidget from './FileWidget/FileWidget';\nimport RadioWidget from './RadioWidget/RadioWidget';\nimport RangeWidget from './RangeWidget/RangeWidget';\nimport RatingWidget from './RatingWidget/RatingWidget';\nimport SelectWidget from './SelectWidget/SelectWidget';\nimport TextareaWidget from './TextareaWidget/TextareaWidget';\nimport TimeWidget from './TimeWidget/TimeWidget';\nimport ToggleWidget from './ToggleWidget/ToggleWidget';\n\nexport {\n AltDateTimeWidget,\n AltDateWidget,\n CheckboxesWidget,\n CheckboxWidget,\n DateTimeWidget,\n DateWidget,\n FileWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextareaWidget,\n TimeWidget,\n ToggleWidget,\n};\n\nexport function generateWidgets<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryWidgetsType<T, S, F> {\n return {\n AltDateTimeWidget,\n AltDateWidget,\n CheckboxesWidget,\n CheckboxWidget,\n DateTimeWidget,\n DateWidget,\n FileWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextareaWidget,\n TimeWidget,\n toggle: ToggleWidget,\n };\n}\n\nexport default generateWidgets;\n", "import { withTheme } from '@rjsf/core';\nimport Theme from './theme';\n\n/**\n * Form component pre-configured with the DaisyUI theme\n */\nconst DaisyUIForm = withTheme(Theme);\n\nexport default DaisyUIForm;\n", "/**\n * __createDaisyUIFrameProvider is used to ensure that DaisyUI styles\n * can be rendered within an iframe without affecting the parent page.\n * Required for using DaisyUI in the playground.\n *\n * We have to define DaisyUIFrameProvider in this library, as opposed to the playground,\n * to ensure consistent styling and proper theme management across frames.\n *\n * This provider:\n * - Injects Tailwind CSS and DaisyUI stylesheets into the iframe\n * - Configures Tailwind with DaisyUI themes\n * - Manages theme persistence through localStorage\n * - Wraps content in a themed container\n *\n * NOTE: This is an internal component only used by @rjsf/playground (no\n * backwards compatibility guarantees!)\n */\n\nimport { useEffect, ReactNode } from 'react';\n\ninterface DaisyUIFrameProviderProps {\n children: ReactNode;\n subtheme?: { dataTheme?: string } | null;\n}\n\n/** This component has a useEffect with a cleanup function to remove the tailwind stylesheets loads upon unmount so\n * that the styles are removed when the theme in the playground is switched to something else\n *\n * @param props - The component props\n */\nfunction DaisyUIFrameComponent(props: DaisyUIFrameProviderProps & { document?: Document }) {\n const { children, subtheme = {}, document } = props;\n const theme = (() => {\n try {\n if (subtheme?.dataTheme) {\n localStorage.setItem('daisyui-theme', subtheme.dataTheme);\n return subtheme.dataTheme;\n }\n return localStorage.getItem('daisyui-theme') || 'cupcake';\n } catch {\n return 'cupcake';\n }\n })();\n\n useEffect(() => {\n if (document) {\n // Configure Tailwind first to ensure config is available before script loads\n const configScript = document.createElement('script');\n configScript.textContent = `\n window.tailwind = window.tailwind || {};\n window.tailwind.config = {\n daisyui: {\n themes: true,\n },\n future: {\n disableProductionWarning: true\n }\n }\n `;\n document.head.appendChild(configScript);\n\n // Add Tailwind\n const tailwindScript = document.createElement('script');\n tailwindScript.src = 'https://unpkg.com/@tailwindcss/browser@4.1.3';\n document.head.appendChild(tailwindScript);\n\n // Add DaisyUI CSS\n const daisyLink = document.createElement('link');\n daisyLink.rel = 'stylesheet';\n daisyLink.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20';\n document.head.appendChild(daisyLink);\n\n // Add all themes\n const daisyLinkAllThemes = document.createElement('link');\n daisyLinkAllThemes.rel = 'stylesheet';\n daisyLinkAllThemes.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20/themes.css';\n document.head.appendChild(daisyLinkAllThemes);\n return () => {\n configScript.remove();\n tailwindScript.remove();\n daisyLink.remove();\n daisyLinkAllThemes.remove();\n };\n }\n return undefined;\n }, [document]);\n\n return (\n <div data-theme={theme} className='daisy-ui-theme'>\n {children}\n </div>\n );\n}\n\n/**\n * Creates a DaisyUI frame provider component that can be used within an iframe\n * to properly render DaisyUI styles without affecting the parent document.\n *\n * @param props - The component props\n * @returns A component that sets up DaisyUI within an iframe context\n */\nexport const __createDaisyUIFrameProvider = (props: DaisyUIFrameProviderProps) => {\n return function DaisyUIFrame({ document }: { document?: Document }) {\n // Get theme from localStorage or use default\n return <DaisyUIFrameComponent document={document} {...props} />;\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["withTheme", "useCallback", "useState", "CopyButton", "MoveDownButton", "MoveUpButton", "RemoveButton", "jsx", "jsxs", "ArrayFieldItemButtonsTemplate", "getTemplate", "getUiOptions", "buttonId", "jsx", "jsxs", "
|
|
3
|
+
"sources": ["../src/index.ts", "../src/theme/Theme.tsx", "../src/templates/ArrayFieldItemButtonsTemplate/ArrayFieldItemButtonsTemplate.tsx", "../src/templates/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx", "../src/templates/ArrayFieldTemplate/ArrayFieldTemplate.tsx", "../src/templates/BaseInputTemplate/BaseInputTemplate.tsx", "../src/templates/ButtonTemplates/AddButton.tsx", "../src/templates/ButtonTemplates/DaisyUIButton.tsx", "../src/templates/ButtonTemplates/SubmitButton.tsx", "../src/templates/ButtonTemplates/IconButton.tsx", "../src/templates/DescriptionField/DescriptionField.tsx", "../src/templates/ErrorList/ErrorList.tsx", "../src/templates/FieldErrorTemplate/FieldErrorTemplate.tsx", "../src/templates/FieldHelpTemplate/FieldHelpTemplate.tsx", "../src/templates/FieldTemplate/FieldTemplate.tsx", "../src/templates/GridTemplate/GridTemplate.tsx", "../src/templates/MultiSchemaFieldTemplate/MultiSchemaFieldTemplate.tsx", "../src/templates/ObjectFieldTemplate/ObjectFieldTemplate.tsx", "../src/templates/OptionalDataControlsTemplate/OptionalDataControlsTemplate.tsx", "../src/templates/TitleField/TitleField.tsx", "../src/templates/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx", "../src/templates/Templates.tsx", "../src/widgets/AltDateTimeWidget/AltDateTimeWidget.tsx", "../src/widgets/AltDateWidget/AltDateWidget.tsx", "../src/widgets/CheckboxWidget/CheckboxWidget.tsx", "../src/widgets/CheckboxesWidget/CheckboxesWidget.tsx", "../src/widgets/DateTimeWidget/DateTimeWidget.tsx", "../src/widgets/DateWidget/DateWidget.tsx", "../src/widgets/RadioWidget/RadioWidget.tsx", "../src/widgets/RangeWidget/RangeWidget.tsx", "../src/widgets/RatingWidget/RatingWidget.tsx", "../src/widgets/SelectWidget/SelectWidget.tsx", "../src/widgets/TextareaWidget/TextareaWidget.tsx", "../src/widgets/TimeWidget/TimeWidget.tsx", "../src/widgets/ToggleWidget/ToggleWidget.tsx", "../src/widgets/Widgets.tsx", "../src/DaisyUIForm.tsx", "../src/DaisyUIFrameProvider.tsx"],
|
|
4
|
+
"sourcesContent": ["import { withTheme } from '@rjsf/core';\n\nimport Theme, { ThemeProvider, useTheme } from './theme';\n\nexport { default as Form } from './DaisyUIForm';\nexport { __createDaisyUIFrameProvider } from './DaisyUIFrameProvider';\nexport { default as GridTemplate } from './templates/GridTemplate/GridTemplate';\nexport { default as Templates } from './templates/Templates';\nexport { default as Theme } from './theme';\nexport { default as Widgets } from './widgets/Widgets';\nexport { ThemeProvider, useTheme };\n\nexport default withTheme(Theme);\n", "import { createContext, ReactNode, useCallback, useContext, useState } from 'react';\nimport { getDefaultRegistry, ThemeProps } from '@rjsf/core';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport { generateTemplates } from '../templates/Templates';\nimport { generateWidgets } from '../widgets/Widgets';\n\n/** Generates a complete theme configuration for RJSF with DaisyUI styling\n *\n * Combines templates and widgets with default fields to create a complete theme\n * that can be used with react-jsonschema-form.\n *\n * @returns A ThemeProps object containing all necessary components for the theme\n */\nexport function generateTheme<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): ThemeProps<T, S, F> {\n const { fields } = getDefaultRegistry<T, S, F>();\n const generatedWidgets = generateWidgets<T, S, F>();\n const templates = generateTemplates<T, S, F>();\n\n return {\n templates,\n widgets: {\n ...generatedWidgets,\n boolean: generatedWidgets.toggle,\n },\n fields,\n };\n}\n\n/** Default theme export with pre-generated theme components */\nconst Theme = generateTheme();\n\nexport default Theme;\n\n/** Interface for the theme context that manages and provides the current DaisyUI theme */\ninterface ThemeContextType {\n /** Current DaisyUI theme name */\n theme: string;\n /** Function to update the current theme */\n setTheme: (theme: string) => void;\n}\n\n/** React context for sharing theme information throughout the application */\nexport const ThemeContext = createContext<ThemeContextType>({\n theme: 'night',\n setTheme: () => {},\n});\n\n/** Props for the ThemeProvider component */\ninterface ThemeProviderProps {\n /** React components to be wrapped by the provider */\n children: ReactNode;\n}\n\n/** ThemeProvider component that manages DaisyUI theme state and persistence\n *\n * This provider:\n * - Loads the theme from localStorage\n * - Provides theme state via context\n * - Persists theme changes to localStorage\n *\n * @param props - The props for the component\n */\nexport function ThemeProvider({ children }: ThemeProviderProps) {\n const [theme, setTheme] = useState(() => {\n try {\n return localStorage.getItem('daisyui-theme') || 'cupcake';\n } catch {\n return 'cupcake';\n }\n });\n\n const handleSetTheme = useCallback((newTheme: string) => {\n try {\n localStorage.setItem('daisyui-theme', newTheme);\n setTheme(newTheme);\n } catch {\n // Ignore localStorage errors\n }\n }, []);\n\n return <ThemeContext.Provider value={{ theme, setTheme: handleSetTheme }}>{children}</ThemeContext.Provider>;\n}\n\n/** Custom hook for accessing the current theme and theme setter function\n *\n * @returns The current theme context with theme name and setter function\n */\nexport const useTheme = () => useContext(ThemeContext);\n", "import {\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n ArrayFieldItemButtonsTemplateProps,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemButtonsTemplate` component renders the action buttons for an array field item\n * using DaisyUI's join component when multiple buttons are present.\n */\nexport default function ArrayFieldItemButtonsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemButtonsTemplateProps<T, S, F>) {\n const {\n disabled,\n hasCopy,\n hasMoveDown,\n hasMoveUp,\n hasRemove,\n fieldPathId,\n onCopyItem,\n onRemoveItem,\n onMoveDownItem,\n onMoveUpItem,\n readonly,\n registry,\n uiSchema,\n } = props;\n const { CopyButton, MoveDownButton, MoveUpButton, RemoveButton } = registry.templates.ButtonTemplates;\n\n const renderMany = [hasMoveUp || hasMoveDown, hasCopy, hasRemove].filter(Boolean).length > 1;\n const btnClass = renderMany ? 'join-item btn btn-sm px-2' : 'btn btn-sm px-2 rounded-sm';\n const removeBtnClass = renderMany ? 'join-item btn btn-sm btn-error px-2' : 'btn btn-sm btn-error px-2 rounded-sm';\n\n const buttons = (\n <>\n {(hasMoveUp || hasMoveDown) && (\n <>\n <MoveUpButton\n id={buttonId(fieldPathId, 'moveUp')}\n className={`rjsf-array-item-move-up ${btnClass}`}\n disabled={disabled || readonly || !hasMoveUp}\n onClick={onMoveUpItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n <MoveDownButton\n id={buttonId(fieldPathId, 'moveDown')}\n className={`rjsf-array-item-move-down ${btnClass}`}\n disabled={disabled || readonly || !hasMoveDown}\n onClick={onMoveDownItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n </>\n )}\n {hasCopy && (\n <CopyButton\n id={buttonId(fieldPathId, 'copy')}\n className={`rjsf-array-item-copy ${btnClass}`}\n disabled={disabled || readonly}\n onClick={onCopyItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hasRemove && (\n <RemoveButton\n id={buttonId(fieldPathId, 'remove')}\n className={`rjsf-array-item-remove ${removeBtnClass}`}\n disabled={disabled || readonly}\n onClick={onRemoveItem}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n </>\n );\n\n return renderMany ? <div className='join'>{buttons}</div> : buttons;\n}\n", "import {\n ArrayFieldItemTemplateProps,\n FormContextType,\n getTemplate,\n getUiOptions,\n RJSFSchema,\n StrictRJSFSchema,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldItemTemplate` component is the template used to render an item of an array.\n *\n * This DaisyUI implementation:\n * - Uses the fieldset component for proper form grouping\n * - Maintains connected appearance for multiple items\n * - Positions items with z-index to create a stacked effect\n * - Places action buttons in an easily accessible location\n *\n * @param props - The `ArrayFieldItemTemplateProps` props for the component with additional properties:\n * @param props.index - The position of this item in the array (optional)\n * @param props.totalItems - The total number of items in the array (optional)\n */\nexport default function ArrayFieldItemTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ArrayFieldItemTemplateProps<T, S, F>) {\n const { children, buttonsProps, hasToolbar, registry, uiSchema, index, totalItems } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(\n 'ArrayFieldItemButtonsTemplate',\n registry,\n uiOptions,\n );\n\n // Different styling for first, middle, and last items to create connected feel\n const isFirstItem = index === 0;\n const isLastItem = index === totalItems - 1;\n const borderRadius = isFirstItem ? 'rounded-t-lg' : isLastItem ? 'rounded-b-lg' : '';\n const marginBottom = isLastItem ? '' : 'mb-[-1px]';\n const zIndex = index === undefined ? '' : 'z-' + (10 - Math.min(index, 9));\n\n return (\n <fieldset className={`fieldset bg-base-100 border border-base-300 p-4 ${borderRadius} ${marginBottom} ${zIndex}`}>\n {/* Main content area */}\n {children}\n\n {/* Action buttons */}\n {hasToolbar && (\n <div className='flex justify-end mt-2'>\n <ArrayFieldItemButtonsTemplate {...buttonsProps} />\n </div>\n )}\n </fieldset>\n );\n}\n", "import React, { useCallback } from 'react';\nimport {\n ArrayFieldTemplateProps,\n getTemplate,\n getUiOptions,\n Registry,\n RJSFSchema,\n FormContextType,\n TranslatableString,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ArrayFieldTemplate` component is the template used to render all items in an array.\n *\n * This DaisyUI implementation:\n * - Renders the entire array in a rounded container with base-200 background\n * - Uses custom ArrayFieldTitleTemplate and ArrayFieldDescriptionTemplate\n * - Displays an info alert when the array is empty\n * - Renders each array item using ArrayFieldItemTemplate with additional props\n * - Positions the add button at the bottom right using flexbox\n * - Uses DaisyUI's button styling for the add button\n * - Maintains proper spacing with margin and padding utilities\n *\n * @param props - The `ArrayFieldTemplateProps` for the component\n */\nexport default function ArrayFieldTemplate<T = any, S extends RJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ArrayFieldTemplateProps<T, S, F>,\n) {\n const {\n canAdd,\n className,\n disabled,\n fieldPathId,\n items,\n optionalDataControl,\n onAddClick,\n readonly,\n registry,\n required,\n schema,\n title,\n uiSchema,\n } = props;\n\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>(\n 'ArrayFieldDescriptionTemplate',\n registry as Registry<T, S, F>,\n uiOptions,\n );\n const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>(\n 'ArrayFieldTitleTemplate',\n registry as Registry<T, S, F>,\n uiOptions,\n );\n const showOptionalDataControlInTitle = !readonly && !disabled;\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n /** Handle the add button click\n *\n * @param e - The click event\n */\n const handleAddClick = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n onAddClick(e);\n },\n [onAddClick],\n );\n\n return (\n <div className={`array-field-template ${className}`}>\n <ArrayFieldTitleTemplate\n fieldPathId={fieldPathId}\n title={uiOptions.title || title}\n schema={schema}\n uiSchema={uiSchema}\n required={required}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n <ArrayFieldDescriptionTemplate\n fieldPathId={fieldPathId}\n description={uiOptions.description || schema.description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n <div className='flex flex-col gap-4'>\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n <div className='rjsf-array-item-list'>\n {items}\n {items && items.length === 0 && canAdd && (\n <div className='text-center italic text-base-content/70'>{TranslatableString.EmptyArray}</div>\n )}\n </div>\n {canAdd && (\n <div className='flex justify-end'>\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-array-item-add btn btn-primary btn-sm'\n onClick={handleAddClick}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport {\n WidgetProps,\n StrictRJSFSchema,\n RJSFSchema,\n FormContextType,\n getInputProps,\n ariaDescribedByIds,\n examplesId,\n} from '@rjsf/utils';\n\n/** The `BaseInputTemplate` component is a template for rendering basic input elements\n * with DaisyUI styling. It's used as the foundation for various input types in forms.\n *\n * Features:\n * - Wraps input in DaisyUI's form-control for proper spacing\n * - Uses DaisyUI's input and input-bordered classes for styling\n * - Includes a hidden label for accessibility\n * - Handles common input properties like disabled and readonly states\n * - Processes input props based on schema type and options\n * - Supports schema examples with datalist\n * - Handles onChange, onBlur, and onFocus events\n *\n * @param props - The `WidgetProps` for the component\n */\nexport default function BaseInputTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n id,\n htmlName,\n multiple,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onBlur,\n onFocus,\n onChangeOverride,\n options,\n schema,\n type,\n label,\n placeholder,\n } = props;\n\n const inputProps = getInputProps<T, S, F>(schema, type, options);\n let className = 'input input-bordered';\n let isMulti = multiple;\n if (type === 'file') {\n isMulti = schema.type === 'array' || Boolean(options.multiple);\n className = 'file-input w-full';\n }\n // Extract step, min, max, accept from inputProps\n const { step, min, max, accept, ...rest } = inputProps;\n const htmlInputProps = { step, min, max, accept, ...(schema.examples ? { list: examplesId(id) } : undefined) };\n\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onChange(value === '' ? options.emptyValue : value),\n [onChange, options],\n );\n\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onBlur && onBlur(id, target.value),\n [onBlur, id],\n );\n\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLInputElement>) => onFocus && onFocus(id, target.value),\n [onFocus, id],\n );\n\n return (\n <>\n <div className='form-control'>\n <label htmlFor={id} className='label hidden' style={{ display: 'none' }}>\n <span className='label-text'>{label}</span>\n </label>\n <input\n id={id}\n name={htmlName || id}\n value={value || value === 0 ? value : ''}\n placeholder={placeholder}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n className={className}\n multiple={isMulti}\n {...rest}\n {...htmlInputProps}\n onChange={onChangeOverride || _onChange}\n onBlur={_onBlur}\n onFocus={_onFocus}\n aria-describedby={ariaDescribedByIds(id, !!schema.examples)}\n />\n </div>\n {Array.isArray(schema.examples) && (\n <datalist id={examplesId(id)}>\n {(schema.examples as string[])\n .concat(schema.default && !schema.examples.includes(schema.default) ? ([schema.default] as string[]) : [])\n .map((example: any) => {\n return <option key={example} value={example} />;\n })}\n </datalist>\n )}\n </>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faArrowDown, faArrowUp, faCopy, faTrash, faPlus } from '@fortawesome/free-solid-svg-icons';\nimport type { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\nimport DaisyUIButton from './DaisyUIButton';\n\nlibrary.add(faPlus, faCopy, faArrowDown, faArrowUp, faTrash);\n\n/** The `AddButton` renders a button that represent the `Add` action on a form\n *\n * @param props - The props for the component\n */\nexport default function AddButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n className,\n onClick,\n disabled,\n registry,\n ...otherProps\n}: IconButtonProps<T, S, F>) {\n const { translateString } = registry;\n return (\n <div className='row'>\n <p className={`col-xs-3 col-xs-offset-9 text-right ${className}`}>\n <DaisyUIButton\n title={translateString(TranslatableString.AddButton)}\n {...otherProps}\n iconType='info'\n icon={faPlus as IconDefinition}\n className='btn-add col-xs-12 btn-primary btn-primary-content'\n onClick={onClick}\n disabled={disabled}\n registry={registry}\n />\n </p>\n </div>\n );\n}\n", "import { memo } from 'react';\nimport { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\n/** Interface for props specific to DaisyUIButton, extending IconButtonProps but with stricter icon typing */\ninterface DaisyUIButtonProps<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>\n extends Omit<IconButtonProps<T, S, F>, 'icon'> {\n /** The FontAwesome icon to display in the button */\n icon: IconDefinition;\n}\n\n/** The `DaisyUIButton` component renders a button with an icon using DaisyUI styling.\n * It's used as the base for various button components like add, remove, copy, move up/down.\n *\n * @param props - The component props\n */\nfunction DaisyUIButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: DaisyUIButtonProps<T, S, F>,\n) {\n const { icon, iconType, uiSchema, registry, className, ...otherProps } = props;\n return (\n <button type='button' className={className} aria-label={props.title!} {...otherProps}>\n <FontAwesomeIcon icon={icon} className='h-5 w-5' />\n </button>\n );\n}\n\nDaisyUIButton.displayName = 'DaisyUIButton';\n\nexport default memo(DaisyUIButton) as typeof DaisyUIButton;\n", "import { getSubmitButtonOptions, FormContextType, RJSFSchema, StrictRJSFSchema, SubmitButtonProps } from '@rjsf/utils';\n\n/** The `SubmitButton` renders a button that represent the `Submit` action on a form\n */\nexport default function SubmitButton<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ uiSchema }: SubmitButtonProps<T, S, F>) {\n const { submitText, norender, props: submitButtonProps = {} } = getSubmitButtonOptions<T, S, F>(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div>\n <button\n type='submit'\n {...submitButtonProps}\n className={`btn btn-primary btn-primary-content ${submitButtonProps.className || ''}`}\n >\n {submitText}\n </button>\n </div>\n );\n}\n", "import { FormContextType, IconButtonProps, RJSFSchema, StrictRJSFSchema, TranslatableString } from '@rjsf/utils';\nimport { faCopy, faArrowDown, faArrowUp, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport type { IconDefinition } from '@fortawesome/fontawesome-svg-core';\n\nimport DaisyUIButton from './DaisyUIButton';\n\nexport function CopyButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton title={translateString(TranslatableString.CopyButton)} {...props} icon={faCopy as IconDefinition} />\n );\n}\n\nexport function MoveDownButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n title={translateString(TranslatableString.MoveDownButton)}\n {...props}\n icon={faArrowDown as IconDefinition}\n />\n );\n}\n\nexport function MoveUpButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n title={translateString(TranslatableString.MoveUpButton)}\n {...props}\n icon={faArrowUp as IconDefinition}\n />\n );\n}\n\nexport function RemoveButton<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: IconButtonProps<T, S, F>,\n) {\n const {\n registry: { translateString },\n } = props;\n return (\n <DaisyUIButton\n title={translateString(TranslatableString.RemoveButton)}\n {...props}\n iconType='danger'\n icon={faTrash as IconDefinition}\n />\n );\n}\n", "import { DescriptionFieldProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\nimport { RichDescription } from '@rjsf/core';\n\n/** The `DescriptionField` component renders descriptive text for a form field\n * with DaisyUI styling. It displays the description in a subtle text color\n * with proper spacing.\n *\n * @param props - The `DescriptionFieldProps` for the component\n */\nexport default function DescriptionField<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: DescriptionFieldProps<T, S, F>) {\n const { id, description, registry, uiSchema } = props;\n if (!description) {\n return null;\n }\n return (\n <div id={id} className='description-field my-4'>\n <div className='text-sm text-base-content/80'>\n <RichDescription description={description} registry={registry} uiSchema={uiSchema} />\n </div>\n </div>\n );\n}\n", "import { ErrorListProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `ErrorList` component renders a list of form-level validation errors\n * with DaisyUI styling. It displays errors as a bulleted list in red text.\n *\n * @param props - The `ErrorListProps` for the component\n */\nexport default function ErrorList<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: ErrorListProps<T, S, F>,\n) {\n const { errors } = props;\n return (\n <div className='error-list'>\n <ul className='list-disc list-inside text-red-600'>\n {errors.map((error, index) => (\n <li key={index}>{error.stack}</li>\n ))}\n </ul>\n </div>\n );\n}\n", "import { FieldErrorProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `FieldErrorTemplate` component renders validation errors for a specific field\n * with DaisyUI styling. It displays field-level errors as a bulleted list in red text.\n *\n * Unlike ErrorList which shows form-level errors, this component displays errors\n * specific to a particular field in the form.\n *\n * @param props - The `FieldErrorProps` for the component\n */\nexport default function FieldErrorTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldErrorProps<T, S, F>) {\n const { errors } = props;\n return (\n <div className='rjsf-field-error-template text-red-600'>\n <ul className='list-disc list-inside'>{errors?.map((error, index) => <li key={index}>{error}</li>) ?? []}</ul>\n </div>\n );\n}\n", "import { FieldHelpProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `FieldHelpTemplate` component renders help text for a specific form field\n * with DaisyUI styling. It displays the help text in a subtle gray color and smaller size\n * to distinguish it from the main field content.\n *\n * Help text provides additional guidance to users about how to complete a field\n * or explains the expected input format.\n *\n * @param props - The `FieldHelpProps` for the component\n */\nexport default function FieldHelpTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldHelpProps<T, S, F>) {\n const { help } = props;\n return (\n <div className='rjsf-field-help-template text-gray-500 text-sm'>\n <div>{help}</div>\n </div>\n );\n}\n", "import {\n FieldTemplateProps,\n StrictRJSFSchema,\n RJSFSchema,\n FormContextType,\n getTemplate,\n getUiOptions,\n} from '@rjsf/utils';\n\n/** The `FieldTemplate` component provides the main layout for each form field\n * with DaisyUI styling. It handles:\n *\n * - Displaying field labels with required indicators\n * - Special layout for checkbox fields (label positioned after the input)\n * - Proper spacing between form fields\n * - Rendering error messages and help text\n * - Maintaining accessibility with proper label associations\n *\n * This template uses DaisyUI's label and form-control components for consistent styling.\n *\n * @param props - The `FieldTemplateProps` for the component\n */\nexport default function FieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: FieldTemplateProps<T, S, F>) {\n const {\n id,\n label,\n children,\n errors,\n formData,\n help,\n hideError,\n displayLabel,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n classNames,\n uiSchema,\n schema,\n readonly,\n required,\n registry,\n // Destructure props we don't want to pass to div\n description,\n rawErrors,\n rawHelp,\n rawDescription,\n hidden,\n onChange,\n ...divProps\n } = props;\n\n // Special handling for checkboxes - they should have the label after the input\n const isCheckbox = schema.type === 'boolean';\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const WrapIfAdditionalTemplate = getTemplate<'WrapIfAdditionalTemplate', T, S, F>(\n 'WrapIfAdditionalTemplate',\n registry,\n uiOptions,\n );\n\n return (\n <WrapIfAdditionalTemplate\n classNames={classNames}\n disabled={divProps.disabled}\n id={id}\n label={label}\n onKeyRename={onKeyRename}\n onKeyRenameBlur={onKeyRenameBlur}\n onRemoveProperty={onRemoveProperty}\n readonly={readonly}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n >\n <div className={`field-template mb-3 ${classNames || ''}`} {...divProps}>\n {displayLabel && !isCheckbox && (\n <label htmlFor={id} className='label'>\n <span className='label-text font-medium'>\n {label}\n {required && <span className='text-error ml-1'>*</span>}\n </span>\n </label>\n )}\n {children}\n {errors}\n {help}\n </div>\n </WrapIfAdditionalTemplate>\n );\n}\n", "import { GridTemplateProps } from '@rjsf/utils';\n\n/** Renders a `GridTemplate` for DaisyUI, which follows the same pattern as other RJSF themes.\n * This uses DaisyUI's grid system with flexbox for responsive layouts.\n *\n * @param props - The GridTemplateProps, including children and column flag\n */\nexport default function GridTemplate(props: GridTemplateProps) {\n const { children, column, ...rest } = props;\n\n if (column) {\n // For columns, use DaisyUI's flex classes\n return (\n <div className='flex-grow' {...rest}>\n {children}\n </div>\n );\n }\n\n // For rows, use DaisyUI's flex container with wrap\n return (\n <div className='flex flex-wrap gap-4' {...rest}>\n {children}\n </div>\n );\n}\n", "import { FormContextType, MultiSchemaFieldTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nexport default function MultiSchemaFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: MultiSchemaFieldTemplateProps<T, S, F>) {\n const { optionSchemaField, selector } = props;\n return (\n <div className='p-4 border rounded-sm shadow-sm'>\n <div className='mb-4'>{selector}</div>\n {optionSchemaField}\n </div>\n );\n}\n", "import {\n canExpand,\n descriptionId,\n FormContextType,\n getTemplate,\n getUiOptions,\n ObjectFieldTemplateProps,\n RJSFSchema,\n StrictRJSFSchema,\n titleId,\n buttonId,\n} from '@rjsf/utils';\n\n/** The `ObjectFieldTemplate` component renders a layout for object fields in the form\n * with DaisyUI styling. It handles:\n *\n * - Special styling for the root object with extra padding and shadows\n * - Rendering of title and description using appropriate templates\n * - Grid layout for object properties with consistent spacing\n * - Conditionally rendering an add button for expandable objects\n * - Support for hidden properties\n *\n * @param props - The `ObjectFieldTemplateProps` for the component\n */\nexport default function ObjectFieldTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: ObjectFieldTemplateProps<T, S, F>) {\n const {\n description,\n title,\n properties,\n required,\n disabled,\n readonly,\n uiSchema,\n fieldPathId,\n schema,\n formData,\n optionalDataControl,\n onAddProperty,\n registry,\n } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, uiOptions);\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n uiOptions,\n );\n const showOptionalDataControlInTitle = !readonly && !disabled;\n // Button templates are not overridden in the uiSchema\n const {\n ButtonTemplates: { AddButton },\n } = registry.templates;\n\n // Check if this is the root object\n const isRoot = fieldPathId.$id === 'root';\n\n return (\n <div className={`form-control ${isRoot ? 'bg-base-100 p-6 rounded-xl shadow-lg' : ''}`}>\n {title && (\n <TitleFieldTemplate\n id={titleId(fieldPathId)}\n title={title}\n required={required}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n optionalDataControl={showOptionalDataControlInTitle ? optionalDataControl : undefined}\n />\n )}\n {description && (\n <DescriptionFieldTemplate\n id={descriptionId(fieldPathId)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n <div className={`grid grid-cols-1 gap-${description ? 3 : 4} ${isRoot ? '' : 'mb-4'}`}>\n {!showOptionalDataControlInTitle ? optionalDataControl : undefined}\n {properties.map((element, index) =>\n element.hidden ? (\n element.content\n ) : (\n <div\n key={`${fieldPathId.$id}-${element.name}-${index}`}\n className={fieldPathId.$id === 'root' && element.name === 'tasks' ? 'mt-2' : ''}\n >\n {element.content}\n </div>\n ),\n )}\n {canExpand<T, S, F>(schema, uiSchema, formData) && (\n <div className='flex justify-end'>\n <AddButton\n id={buttonId(fieldPathId, 'add')}\n className='rjsf-object-property-expand btn btn-primary btn-sm'\n onClick={onAddProperty}\n disabled={disabled || readonly}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport type { IconDefinition } from '@fortawesome/fontawesome-svg-core';\nimport { FormContextType, OptionalDataControlsTemplateProps, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport { RemoveButton } from '../ButtonTemplates';\nimport DaisyUIButton from '../ButtonTemplates/DaisyUIButton';\n\n/** The OptionalDataControlsTemplate renders one of three different states. If\n * there is an `onAddClick()` function, it renders the \"Add\" button. If there is\n * an `onRemoveClick()` function, it renders the \"Remove\" button. Otherwise it\n * renders the \"No data found\" section. All of them use the `label` as either\n * the `title` of buttons or simply outputting it.\n *\n * @param props - The `OptionalDataControlsTemplateProps` for the template\n */\nexport default function OptionalDataControlsTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: OptionalDataControlsTemplateProps<T, S, F>) {\n const { id, registry, label, onAddClick, onRemoveClick } = props;\n if (onAddClick) {\n return (\n <DaisyUIButton\n id={id}\n registry={registry}\n iconType='info'\n icon={faPlus as IconDefinition}\n className='rjsf-add-optional-data'\n onClick={onAddClick}\n title={label}\n />\n );\n } else if (onRemoveClick) {\n return (\n <RemoveButton\n id={id}\n registry={registry}\n className='rjsf-remove-optional-data'\n onClick={onRemoveClick}\n title={label}\n />\n );\n }\n return <em id={id}>{label}</em>;\n}\n", "import { TitleFieldProps, StrictRJSFSchema, RJSFSchema, FormContextType, getUiOptions } from '@rjsf/utils';\n\n/** The `TitleField` component renders the title for a form section or field\n * with DaisyUI styling. It displays:\n *\n * - Large heading with primary color\n * - Divider element below the title for visual separation\n * - Support for title override from UI options\n *\n * This component is typically used at the top of form sections to provide clear visual hierarchy.\n *\n * @param props - The `TitleFieldProps` for the component\n */\nexport default function TitleField<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: TitleFieldProps<T, S, F>,\n) {\n const { id, title, uiSchema, optionalDataControl } = props;\n const uiOptions = getUiOptions<T, S, F>(uiSchema);\n\n let heading = <h2 className='text-3xl font-bold text-primary mb-2'>{uiOptions.title || title}</h2>;\n if (optionalDataControl) {\n heading = (\n <div className='flex'>\n <div className='flex flex-auto'>{heading}</div>\n <div className='flex justify-end'>{optionalDataControl}</div>\n </div>\n );\n }\n return (\n <div id={id} className='title-field mb-6'>\n {heading}\n <div className='divider divider-primary my-0'></div>\n </div>\n );\n}\n", "import {\n WrapIfAdditionalTemplateProps,\n StrictRJSFSchema,\n RJSFSchema,\n FormContextType,\n buttonId,\n ADDITIONAL_PROPERTY_FLAG,\n TranslatableString,\n} from '@rjsf/utils';\n\n/** The `WrapIfAdditional` component is used by the `FieldTemplate` to rename, or remove properties that are\n * part of an `additionalProperties` part of a schema.\n *\n * @param props - The `WrapIfAdditionalProps` for this component\n */\nexport default function WrapIfAdditionalTemplate<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WrapIfAdditionalTemplateProps<T, S, F>) {\n const {\n children,\n classNames,\n disabled,\n id,\n label,\n readonly,\n required,\n schema,\n uiSchema,\n onKeyRename,\n onKeyRenameBlur,\n onRemoveProperty,\n registry,\n ...rest\n } = props;\n\n const additional = ADDITIONAL_PROPERTY_FLAG in schema;\n const { templates, translateString } = registry;\n // Button templates are not overridden in the uiSchema\n const { RemoveButton } = templates.ButtonTemplates;\n const keyLabel = translateString(TranslatableString.KeyLabel, [label]);\n\n if (!additional) {\n return <div className={classNames}>{children}</div>;\n }\n\n return (\n <div className={`wrap-if-additional-template ${classNames}`} {...rest}>\n <div className='flex items-baseline' style={{ justifyContent: 'space-between' }}>\n <div>\n <label htmlFor={`${id}-key`} className='label'>\n <span className='label-text'>{keyLabel}</span>\n </label>\n <input\n type='text'\n className='input input-bordered'\n id={`${id}-key`}\n onBlur={onKeyRenameBlur}\n defaultValue={label}\n disabled={disabled || readonly}\n />\n </div>\n {children}\n <div className='flex self-center'>\n <RemoveButton\n id={buttonId(id, 'remove')}\n className='rjsf-object-property-remove'\n disabled={disabled || readonly}\n onClick={onRemoveProperty}\n uiSchema={uiSchema}\n registry={registry}\n />\n </div>\n </div>\n </div>\n );\n}\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, TemplatesType } from '@rjsf/utils';\n\nimport ArrayFieldItemButtonsTemplate from './ArrayFieldItemButtonsTemplate';\nimport ArrayFieldItemTemplate from './ArrayFieldItemTemplate';\nimport ArrayFieldTemplate from './ArrayFieldTemplate/ArrayFieldTemplate';\nimport BaseInputTemplate from './BaseInputTemplate/BaseInputTemplate';\nimport { AddButton, CopyButton, MoveDownButton, MoveUpButton, RemoveButton, SubmitButton } from './ButtonTemplates';\nimport DescriptionField from './DescriptionField';\nimport ErrorList from './ErrorList';\nimport FieldErrorTemplate from './FieldErrorTemplate';\nimport FieldHelpTemplate from './FieldHelpTemplate';\nimport FieldTemplate from './FieldTemplate';\nimport GridTemplate from './GridTemplate/GridTemplate';\nimport MultiSchemaFieldTemplate from './MultiSchemaFieldTemplate';\nimport ObjectFieldTemplate from './ObjectFieldTemplate';\nimport OptionalDataControlsTemplate from './OptionalDataControlsTemplate';\nimport TitleFieldTemplate from './TitleField/TitleField';\nimport WrapIfAdditionalTemplate from './WrapIfAdditionalTemplate';\n\n/** Function that generates all the template components required for the DaisyUI theme.\n *\n * This provides a complete set of styled components that implement the DaisyUI design system\n * for use with react-jsonschema-form.\n *\n * The templates include:\n * - Array field templates (for rendering array items and controls)\n * - Button templates (for add, submit, copy, move, remove actions)\n * - Input templates (for rendering form controls)\n * - Layout templates (for fields, objects, additional properties)\n * - Helper templates (for titles, descriptions, errors, help text)\n *\n * @returns A partial `TemplatesType` object with all required template components\n */\nexport function generateTemplates<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): Partial<TemplatesType<T, S, F>> {\n return {\n ArrayFieldItemTemplate,\n ArrayFieldTemplate,\n ArrayFieldItemButtonsTemplate,\n BaseInputTemplate,\n ButtonTemplates: {\n AddButton,\n SubmitButton,\n CopyButton,\n MoveDownButton,\n MoveUpButton,\n RemoveButton,\n },\n DescriptionFieldTemplate: DescriptionField,\n ErrorListTemplate: ErrorList,\n FieldErrorTemplate,\n FieldHelpTemplate,\n FieldTemplate,\n GridTemplate,\n MultiSchemaFieldTemplate,\n ObjectFieldTemplate,\n OptionalDataControlsTemplate,\n TitleFieldTemplate,\n WrapIfAdditionalTemplate,\n };\n}\n\n/** Default export of all generated templates for the DaisyUI theme */\nexport default generateTemplates();\n", "import { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `AltDateTimeWidget` is an alternative widget for rendering datetime properties.\n * It uses the AltDateWidget for rendering, with the `time` prop set to true by default.\n */\nfunction AltDateTimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n time = true,\n ...props\n}: WidgetProps<T, S, F>) {\n const { AltDateWidget } = props.registry.widgets;\n return <AltDateWidget time={time} {...props} />;\n}\n\nexport default AltDateTimeWidget;\n", "import {\n DateElement,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n TranslatableString,\n useAltDateWidgetProps,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `AltDateWidget` component provides an alternative date/time input\n * with individual fields for year, month, day, and optionally time components.\n *\n * Features:\n * - Supports different date formats (YMD, MDY, DMY)\n * - Optional time selection (hours, minutes, seconds)\n * - \"Set to now\" and \"Clear\" buttons\n * - Configurable year ranges\n * - Accessible controls with proper labeling\n * - DaisyUI styling for all elements\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function AltDateWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n disabled = false,\n readonly = false,\n autofocus = false,\n options = {},\n id,\n name,\n registry,\n onBlur,\n onFocus,\n } = props;\n const { translateString } = registry;\n const { elements, handleChange, handleClear, handleSetNow } = useAltDateWidgetProps(props);\n\n return (\n <div className='space-y-3'>\n <div className='grid grid-cols-3 gap-2'>\n {elements.map((elemProps, i) => (\n <div key={i} className='form-control'>\n <label className='label'>\n <span className='label-text capitalize'>{elemProps.type}</span>\n </label>\n <DateElement\n rootId={id}\n name={name}\n className='select select-bordered select-sm'\n select={handleChange}\n type={elemProps.type}\n range={elemProps.range}\n value={elemProps.value}\n disabled={disabled}\n readonly={readonly}\n registry={registry}\n onBlur={onBlur}\n onFocus={onFocus}\n autofocus={autofocus && i === 0}\n />\n </div>\n ))}\n </div>\n <div className='flex justify-start space-x-2'>\n {(options.hideNowButton !== undefined ? !options.hideNowButton : true) && (\n <button\n type='button'\n className='btn btn-sm btn-primary'\n onClick={handleSetNow}\n disabled={disabled || readonly}\n >\n {translateString(TranslatableString.NowLabel)}\n </button>\n )}\n {(options.hideClearButton !== undefined ? !options.hideClearButton : true) && (\n <button\n type='button'\n className='btn btn-sm btn-secondary'\n onClick={handleClear}\n disabled={disabled || readonly}\n >\n {translateString(TranslatableString.ClearLabel)}\n </button>\n )}\n </div>\n </div>\n );\n}\n", "import { useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType, getTemplate, descriptionId } from '@rjsf/utils';\n\n/** The `CheckboxWidget` component renders a single checkbox input with DaisyUI styling.\n *\n * Features:\n * - Simple boolean input with DaisyUI checkbox styling\n * - Handles required, disabled, and readonly states\n * - No label rendering (handled by the parent FieldTemplate)\n * - Proper onChange handling for boolean values\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function CheckboxWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const {\n id,\n htmlName,\n value,\n required,\n disabled,\n hideLabel,\n label,\n readonly,\n registry,\n options,\n schema,\n uiSchema,\n onChange,\n onFocus,\n onBlur,\n } = props;\n const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>(\n 'DescriptionFieldTemplate',\n registry,\n options,\n );\n const description = options.description || schema.description;\n\n /** Handle focus events\n */\n const handleFocus: React.FocusEventHandler<HTMLInputElement> = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [onFocus, id, value]);\n\n /** Handle blur events\n */\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = useCallback(() => {\n if (onBlur) {\n onBlur(id, value);\n }\n }, [onBlur, id, value]);\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.checked);\n },\n [onChange],\n );\n\n const input = (\n <input\n type='checkbox'\n id={id}\n name={htmlName || id}\n checked={value}\n required={required}\n disabled={disabled || readonly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className='checkbox'\n />\n );\n\n return (\n <div className='form-control'>\n {!hideLabel && description && (\n <DescriptionFieldTemplate\n id={descriptionId(id)}\n description={description}\n schema={schema}\n uiSchema={uiSchema}\n registry={registry}\n />\n )}\n {hideLabel || !label ? (\n input\n ) : (\n <label className='label cursor-pointer justify-start'>\n <div className='mr-2'>{input}</div>\n <span className='label-text'>\n {label}\n {required && <span className='text-error ml-1'>*</span>}\n </span>\n </label>\n )}\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `CheckboxesWidget` component renders a set of checkboxes for multiple choice selection\n * with DaisyUI styling.\n *\n * Features:\n * - Supports both primitive values and objects in enum options\n * - Handles array values with proper state management\n * - Uses DaisyUI checkbox styling with accessible labels\n * - Supports disabled and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses vertical layout for better spacing and readability\n * - Uses memoized handlers for optimal performance\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function CheckboxesWidget<T, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n htmlName,\n disabled,\n options,\n value,\n readonly,\n required,\n onChange,\n onFocus,\n onBlur,\n}: WidgetProps<T, S, F>) {\n const { enumOptions } = options;\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n /** Determines if a checkbox option should be checked based on the current value\n *\n * @param option - The option to check\n * @returns Whether the option should be checked\n */\n const isChecked = useCallback(\n (option: any) => {\n if (!Array.isArray(value)) {\n return false;\n }\n if (isEnumeratedObject) {\n return value.some((v) => v.name === option.value.name);\n }\n return value.includes(option.value);\n },\n [value, isEnumeratedObject],\n );\n\n /** Handles changes to a checkbox's checked state */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (!option) {\n return;\n }\n\n const newValue = Array.isArray(value) ? [...value] : [];\n const optionValue = isEnumeratedObject ? option.value : option.value;\n\n if (isChecked(option)) {\n onChange(newValue.filter((v) => (isEnumeratedObject ? v.name !== optionValue.name : v !== optionValue)));\n } else {\n onChange([...newValue, optionValue]);\n }\n },\n [onChange, value, isChecked, isEnumeratedObject, enumOptions],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onFocus(id, option.value);\n }\n }\n },\n [onFocus, id, enumOptions],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onBlur(id, option.value);\n }\n }\n },\n [onBlur, id, enumOptions],\n );\n\n return (\n <div className='form-control'>\n {/* Use a vertical layout with proper spacing */}\n <div className='flex flex-col gap-2 mt-1'>\n {enumOptions?.map((option, index) => (\n <label key={option.value} className='flex items-center cursor-pointer gap-2'>\n <input\n type='checkbox'\n id={`${id}-${option.value}`}\n className='checkbox'\n name={htmlName || id}\n checked={isChecked(option)}\n required={required}\n disabled={disabled || readonly}\n data-index={index}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text'>{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, memo, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\nimport { format, isSameDay, isToday, isValid } from 'date-fns';\nimport { ClassNames, DayPicker, ModifiersClassNames, UI } from 'react-day-picker';\nimport 'react-day-picker/dist/style.css';\n\n/**\n * Props for the DateTimePicker popup component\n */\ninterface DateTimePickerProps {\n /** Currently selected date */\n selectedDate?: Date;\n /** Currently displayed month */\n month: Date;\n /** Handler for month changes */\n onMonthChange: (date: Date) => void;\n /** Handler for date selection */\n onSelect: (date: Date | undefined) => void;\n /** Handler for time input changes */\n onTimeChange: (e: ChangeEvent<HTMLInputElement>) => void;\n}\n\n/**\n * Custom hook to manage the picker's popup state and displayed month\n *\n * @param initialDate - Initial date to display, defaults to today\n * @returns State and handlers for the date picker\n */\nfunction useDatePickerState(initialDate?: Date) {\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(initialDate ?? new Date());\n return { isOpen, setIsOpen, month, setMonth };\n}\n\n/**\n * Custom hook to detect clicks outside an element and run a callback\n *\n * @param ref - React ref to the element to monitor\n * @param callback - Function to call when a click outside is detected\n */\nfunction useClickOutside(ref: RefObject<HTMLDivElement>, callback: () => void) {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [ref, callback]);\n}\n\n/**\n * Predefined DayPicker styles using DaisyUI classes\n */\nconst dayPickerStyles: { classNames: Partial<ClassNames>; modifiers: Partial<ModifiersClassNames> } = {\n classNames: {\n [UI.Root]: 'relative',\n [UI.Nav]: 'hidden',\n [UI.Chevron]: 'hidden',\n [UI.CaptionLabel]: 'hidden',\n [UI.Dropdowns]: 'flex justify-between gap-4 px-4 pb-4',\n [UI.Dropdown]: 'select select-bordered select-sm w-32',\n [UI.MonthsDropdown]: 'select select-bordered select-sm',\n [UI.YearsDropdown]: 'select select-bordered select-sm',\n [UI.Months]: 'flex justify-center',\n [UI.Month]: 'w-full',\n [UI.MonthCaption]: 'flex justify-center',\n [UI.MonthGrid]: 'w-full',\n [UI.Weekdays]: 'grid grid-cols-7 text-center border-b mb-2 pb-1 text-base-content/60 uppercase',\n [UI.Weekday]: 'p-1 font-medium text-base-content/60 text-sm',\n [UI.Week]: 'grid grid-cols-7',\n [UI.Day]: 'w-10 h-8 p-0 relative rounded-md',\n [UI.DayButton]:\n 'btn btn-ghost absolute inset-0 flex items-center justify-center w-full h-full cursor-pointer rounded-md hover:btn-primary',\n },\n modifiers: {\n selected: 'btn btn-accent min-h-0 h-full',\n outside: 'text-base-content/30 hover:btn-ghost',\n disabled: 'opacity-50 cursor-not-allowed hover:btn-disabled',\n },\n};\n\n/**\n * Popup component for the calendar and time input\n *\n * Renders a DayPicker calendar with time input for selecting date and time\n *\n * @param props - The DateTimePickerProps for this component\n */\nfunction DateTimePickerPopup({ selectedDate, month, onMonthChange, onSelect, onTimeChange }: DateTimePickerProps) {\n const customDayModifiers = {\n selected: selectedDate,\n 'custom-today': (date: Date) => isToday(date) && !(selectedDate && isSameDay(date, selectedDate)),\n };\n\n const customModifiersClassNames: ModifiersClassNames = {\n ...dayPickerStyles.modifiers,\n 'custom-today': 'btn btn-outline btn-info min-h-0 h-full',\n };\n\n // Memoize click handler to stop event propagation\n const handleClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n return (\n <div className='p-3'>\n <DayPicker\n mode='single'\n selected={selectedDate}\n month={month}\n onMonthChange={onMonthChange}\n onSelect={onSelect}\n captionLayout='dropdown'\n fromYear={1900}\n toYear={new Date().getFullYear() + 10}\n showOutsideDays\n classNames={dayPickerStyles.classNames}\n modifiers={customDayModifiers}\n modifiersClassNames={customModifiersClassNames}\n />\n\n <div className='mt-3 border-t border-base-300 pt-3'>\n <div className='form-control w-full'>\n <label className='label'>\n <span className='label-text'>Time</span>\n </label>\n <input\n type='time'\n className='input input-bordered w-full'\n value={selectedDate ? format(selectedDate, 'HH:mm') : ''}\n onChange={onTimeChange}\n onClick={handleClick}\n />\n </div>\n </div>\n </div>\n );\n}\n\n// Use memo to optimize re-renders\nconst MemoizedDateTimePickerPopup = memo(DateTimePickerPopup);\n\n/** The `DateTimeWidget` component provides a date and time picker with DaisyUI styling.\n *\n * Features:\n * - Calendar popup with month/year navigation\n * - Time input field\n * - Accessible keyboard navigation\n * - Date formatting using date-fns\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateTimeWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { id, value, onChange, onFocus, onBlur, schema } = props;\n // Initialize the local date from the parent's value.\n const initialDate = useMemo(() => (value ? new Date(value) : undefined), [value]);\n const [localDate, setLocalDate] = useState<Date | undefined>(initialDate);\n\n // When the parent's value changes externally, update local state.\n useEffect(() => {\n setLocalDate(initialDate);\n }, [initialDate]);\n\n const { isOpen, setIsOpen, month, setMonth } = useDatePickerState(initialDate);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n\n // Close the popup when clicking outside and commit changes.\n useClickOutside(containerRef, () => {\n if (isOpen) {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n // Manually invoke the blur handler to ensure blur event is triggered\n if (onBlur) {\n onBlur(id, value);\n }\n }\n });\n\n // When the local date changes, update the displayed month.\n useEffect(() => {\n if (localDate) {\n setMonth(localDate);\n }\n }, [localDate, setMonth]);\n\n // Update the month when the user navigates the calendar.\n const handleMonthChange = useCallback((date: Date) => setMonth(date), [setMonth]);\n\n // Update local state on day selection (but do not commit immediately).\n const handleSelect = useCallback(\n (date: Date | undefined) => {\n if (date) {\n if (localDate) {\n date.setHours(localDate.getHours(), localDate.getMinutes());\n }\n setLocalDate(date);\n }\n },\n [localDate],\n );\n\n // Update local state on time change.\n const handleTimeChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (localDate) {\n const [hours, minutes] = e.target.value.split(':');\n const newDate = new Date(localDate);\n newDate.setHours(parseInt(hours, 10), parseInt(minutes, 10));\n setLocalDate(newDate);\n }\n },\n [localDate],\n );\n\n // Toggle popup visibility.\n const togglePicker = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsOpen((prev) => !prev);\n if (!isOpen && onFocus) {\n onFocus(id, value);\n }\n },\n [isOpen, id, onFocus, setIsOpen, value],\n );\n\n // Handle focus event\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [id, onFocus, value]);\n\n // Handle blur event\n const handleBlur = useCallback(() => {\n if (!isOpen && onBlur) {\n onBlur(id, value);\n }\n }, [id, onBlur, value, isOpen]);\n\n // Handle keydown events for accessibility\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n togglePicker(e as unknown as React.MouseEvent);\n }\n },\n [togglePicker],\n );\n\n // Prevent event propagation for popup container\n const handleContainerClick = useCallback((e: React.MouseEvent) => {\n e.stopPropagation();\n }, []);\n\n // Close popup on escape key\n useEffect(() => {\n const handleEscape = (e: React.KeyboardEvent | KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n setIsOpen(false);\n if (onBlur) {\n onBlur(id, value);\n }\n }\n };\n\n // Need to use native DOM events since we're attaching to document\n document.addEventListener('keydown', handleEscape as (e: KeyboardEvent) => void);\n return () => document.removeEventListener('keydown', handleEscape as (e: KeyboardEvent) => void);\n }, [id, isOpen, setIsOpen, onBlur, value]);\n\n // Add the handleDoneClick callback near the top of the component, with the other event handlers\n /** Handle clicking the \"Done\" button\n */\n const handleDoneClick = useCallback(() => {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n if (onBlur) {\n onBlur(id, value);\n }\n inputRef.current?.focus();\n }, [localDate, onChange, onBlur, id, value, setIsOpen]);\n\n return (\n <div className='form-control my-4 w-full relative'>\n <div\n className='w-full'\n tabIndex={0}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n ref={inputRef}\n >\n <div\n id={id}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${\n isOpen ? 'ring-2 ring-primary/50' : ''\n }`}\n onClick={togglePicker}\n role='button'\n aria-haspopup='true'\n aria-expanded={isOpen}\n tabIndex={-1}\n >\n <span className={localDate && isValid(localDate) ? '' : 'text-base-content/50'}>\n {localDate && isValid(localDate) ? format(localDate, 'PP p') : schema.title}\n </span>\n <FontAwesomeIcon icon={faCalendar} className='ml-2 h-4 w-4 text-primary' />\n </div>\n {isOpen && (\n <div\n ref={containerRef}\n className='absolute z-[100] mt-2 w-full max-w-xs bg-base-100 border border-base-300 shadow-lg rounded-box'\n onClick={handleContainerClick}\n >\n <MemoizedDateTimePickerPopup\n selectedDate={localDate}\n month={month}\n onMonthChange={handleMonthChange}\n onSelect={handleSelect}\n onTimeChange={handleTimeChange}\n />\n <div className='p-3 flex justify-end border-t border-base-300'>\n <button type='button' className='btn btn-sm btn-primary' onClick={handleDoneClick}>\n Done\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { memo, RefObject, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { faCalendar } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\nimport { format, isSameDay, isToday, isValid } from 'date-fns';\nimport { ClassNames, DayPicker, ModifiersClassNames, UI } from 'react-day-picker';\nimport 'react-day-picker/dist/style.css';\n\n/**\n * Props for the DatePicker popup component\n */\ninterface DatePickerProps {\n /** Currently selected date */\n selectedDate?: Date;\n /** Currently displayed month */\n month: Date;\n /** Handler for month changes */\n onMonthChange: (date: Date) => void;\n /** Handler for date selection */\n onSelect: (date: Date | undefined) => void;\n}\n\n/**\n * Custom hook to manage the picker's popup state and displayed month\n *\n * @param initialDate - Initial date to display, defaults to today\n * @returns State and handlers for the date picker\n */\nfunction useDatePickerState(initialDate?: Date) {\n const [isOpen, setIsOpen] = useState(false);\n const [month, setMonth] = useState<Date>(initialDate ?? new Date());\n return { isOpen, setIsOpen, month, setMonth };\n}\n\n/**\n * Custom hook to detect clicks outside an element and run a callback\n *\n * @param ref - React ref to the element to monitor\n * @param callback - Function to call when a click outside is detected\n */\nfunction useClickOutside(ref: RefObject<HTMLDivElement>, callback: () => void) {\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (ref.current && !ref.current.contains(event.target as Node)) {\n callback();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [ref, callback]);\n}\n\n/**\n * Predefined DayPicker styles using DaisyUI classes\n */\nconst dayPickerStyles: { classNames: Partial<ClassNames>; modifiers: Partial<ModifiersClassNames> } = {\n classNames: {\n [UI.Root]: 'relative',\n [UI.Nav]: 'hidden',\n [UI.Chevron]: 'hidden',\n [UI.CaptionLabel]: 'hidden',\n [UI.Dropdowns]: 'flex justify-between gap-4 px-4 pb-4',\n [UI.Dropdown]: 'select select-bordered select-sm w-32',\n [UI.MonthsDropdown]: 'select select-bordered select-sm',\n [UI.YearsDropdown]: 'select select-bordered select-sm',\n [UI.Months]: 'flex justify-center',\n [UI.Month]: 'w-full',\n [UI.MonthCaption]: 'flex justify-center',\n [UI.MonthGrid]: 'w-full',\n [UI.Weekdays]: 'grid grid-cols-7 text-center border-b mb-2 pb-1 text-base-content/60 uppercase',\n [UI.Weekday]: 'p-1 font-medium text-base-content/60 text-sm',\n [UI.Week]: 'grid grid-cols-7',\n [UI.Day]: 'w-10 h-8 p-0 relative rounded-md',\n [UI.DayButton]:\n 'btn btn-ghost absolute inset-0 flex items-center justify-center w-full h-full cursor-pointer rounded-md hover:btn-primary',\n },\n modifiers: {\n selected: 'btn btn-accent min-h-0 h-full',\n outside: 'text-base-content/30 hover:btn-ghost',\n disabled: 'opacity-50 cursor-not-allowed hover:btn-disabled',\n },\n};\n\n/**\n * Popup component for the calendar\n *\n * Renders a DayPicker calendar for selecting dates\n *\n * @param props - The DatePickerProps for this component\n */\nfunction DatePickerPopup({ selectedDate, month, onMonthChange, onSelect }: DatePickerProps) {\n const customDayModifiers = {\n selected: selectedDate,\n 'custom-today': (date: Date) => isToday(date) && !(selectedDate && isSameDay(date, selectedDate)),\n };\n\n const customModifiersClassNames: ModifiersClassNames = {\n ...dayPickerStyles.modifiers,\n 'custom-today': 'btn btn-outline btn-info min-h-0 h-full',\n };\n\n return (\n <div className='p-3' style={{ minWidth: '320px', minHeight: '350px' }}>\n <DayPicker\n mode='single'\n selected={selectedDate}\n month={month}\n onMonthChange={onMonthChange}\n onSelect={onSelect}\n captionLayout='dropdown'\n fromYear={1900}\n toYear={new Date().getFullYear() + 10}\n showOutsideDays\n classNames={dayPickerStyles.classNames}\n modifiers={customDayModifiers}\n modifiersClassNames={customModifiersClassNames}\n />\n </div>\n );\n}\n\n// Use React.memo to optimize re-renders\nconst MemoizedDatePickerPopup = memo(DatePickerPopup);\n\n/** The `DateWidget` component provides a date picker with DaisyUI styling.\n *\n * Features:\n * - Calendar popup with month/year dropdown navigation\n * - Accessible keyboard navigation\n * - Date formatting using date-fns\n * - Date-only selection (time component set to 00:00:00)\n * - Manages focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function DateWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { id, value, onChange, onFocus, onBlur, schema } = props;\n // Initialize the local date from the parent's value.\n const initialDate = useMemo(() => (value ? new Date(value) : undefined), [value]);\n const [localDate, setLocalDate] = useState<Date | undefined>(initialDate);\n\n // When the parent's value changes externally, update local state.\n useEffect(() => {\n setLocalDate(initialDate);\n }, [initialDate]);\n\n const { isOpen, setIsOpen, month, setMonth } = useDatePickerState(initialDate);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n\n // Close the popup when clicking outside and commit changes.\n useClickOutside(containerRef, () => {\n if (isOpen) {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n // Manually invoke the blur handler to ensure blur event is triggered\n if (onBlur) {\n onBlur(id, value);\n }\n }\n });\n\n // When the local date changes, update the displayed month.\n useEffect(() => {\n if (localDate) {\n setMonth(localDate);\n }\n }, [localDate, setMonth]);\n\n // Update the month when the user navigates the calendar.\n const handleMonthChange = useCallback((date: Date) => setMonth(date), [setMonth]);\n\n // Update local state on day selection (but do not commit immediately).\n const handleSelect = useCallback((date: Date | undefined) => {\n if (date) {\n // Remove any time component by setting hours, minutes, seconds, and milliseconds to zero.\n date.setHours(0, 0, 0, 0);\n setLocalDate(date);\n }\n }, []);\n\n // Add a portal container to the document body if it doesn't exist\n useEffect(() => {\n // Check if the portal container exists, create it if not\n let portalContainer = document.getElementById('date-picker-portal');\n if (!portalContainer) {\n portalContainer = document.createElement('div');\n portalContainer.id = 'date-picker-portal';\n document.body.appendChild(portalContainer);\n }\n\n // Clean up on unmount\n return () => {\n // Only remove if no other date pickers are using it and if portalContainer exists\n const container = document.getElementById('date-picker-portal');\n if (container && document.querySelectorAll('.date-picker-popup').length === 0) {\n container.remove();\n }\n };\n }, []);\n\n // Get the document and window objects (will work in iframes too)\n const getDocumentAndWindow = () => {\n // Try to get the iframe's document and window if we're in one\n let doc = document;\n let win = window;\n\n try {\n // If we're in an iframe, try to access the parent\n if (window.frameElement) {\n // We're in an iframe\n const iframe = window.frameElement as HTMLIFrameElement;\n // Get the iframe's contentDocument and contentWindow\n if (iframe.contentDocument) {\n doc = iframe.contentDocument;\n }\n if (iframe.contentWindow) {\n win = iframe.contentWindow as typeof window;\n }\n }\n } catch (e) {\n // Security error, we're in a cross-origin iframe\n console.log('Unable to access parent frame:', e);\n }\n\n return { doc, win };\n };\n\n // Render the calendar at a specific position\n const renderCalendar = useCallback(() => {\n if (!containerRef.current || !inputRef.current) {\n return;\n }\n\n // Get the proper document and window\n const { win } = getDocumentAndWindow();\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const containerWidth = 320; // Minimum width we've set\n\n // Position the calendar relative to the input but with fixed positioning\n containerRef.current.style.position = 'fixed';\n containerRef.current.style.top = `${inputRect.bottom + 5}px`;\n\n // Prevent it from going off-screen on the right\n const rightEdge = inputRect.left + containerWidth;\n const windowWidth = win.innerWidth;\n\n if (rightEdge > windowWidth - 20) {\n // Align to the right edge if it would overflow\n containerRef.current.style.left = `${Math.max(20, windowWidth - 20 - containerWidth)}px`;\n } else {\n // Otherwise align to the left edge of the input\n containerRef.current.style.left = `${inputRect.left}px`;\n }\n\n // Ensure the calendar is visible\n containerRef.current.style.zIndex = '99999';\n }, [containerRef, inputRef]);\n\n // Handle window resize to reposition the calendar\n useEffect(() => {\n if (!isOpen) {\n return;\n }\n\n // Position initially\n renderCalendar();\n\n // Update position on resize\n window.addEventListener('resize', renderCalendar);\n window.addEventListener('scroll', renderCalendar);\n\n return () => {\n window.removeEventListener('resize', renderCalendar);\n window.removeEventListener('scroll', renderCalendar);\n };\n }, [isOpen, renderCalendar]);\n\n // Toggle popup visibility.\n const togglePicker = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n setIsOpen((prev) => !prev);\n if (!isOpen && onFocus) {\n onFocus(id, value);\n }\n\n // Position calculation will happen in the effect hook\n },\n [isOpen, id, onFocus, setIsOpen, value],\n );\n\n // Handle focus event\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [id, onFocus, value]);\n\n // Handle blur event\n const handleBlur = useCallback(() => {\n if (!isOpen && onBlur) {\n onBlur(id, value);\n }\n }, [id, onBlur, value, isOpen]);\n\n // Close popup on escape key\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n setIsOpen(false);\n if (onBlur) {\n onBlur(id, value);\n }\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [id, isOpen, setIsOpen, onBlur, value]);\n\n // Add the handleDoneClick callback near the top of the component, with the other event handlers\n /** Handle clicking the \"Done\" button\n */\n const handleDoneClick = useCallback(() => {\n setIsOpen(false);\n onChange(localDate ? localDate.toISOString() : '');\n if (onBlur) {\n onBlur(id, value);\n }\n inputRef.current?.focus();\n }, [localDate, onChange, onBlur, id, value, setIsOpen]);\n\n return (\n <div className='form-control my-4 w-full relative'>\n <div\n className='w-full'\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n togglePicker(e as unknown as React.MouseEvent);\n }\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n ref={inputRef}\n >\n <div\n id={id}\n className={`input input-bordered w-full flex items-center justify-between cursor-pointer ${\n isOpen ? 'ring-2 ring-primary/50' : ''\n }`}\n onClick={togglePicker}\n role='button'\n aria-haspopup='true'\n aria-expanded={isOpen}\n tabIndex={-1}\n >\n <span className={localDate && isValid(localDate) ? '' : 'text-base-content/50'}>\n {localDate && isValid(localDate) ? format(localDate, 'PP') : schema.title}\n </span>\n <FontAwesomeIcon icon={faCalendar} className='ml-2 h-4 w-4 text-primary' />\n </div>\n {isOpen && (\n <div\n ref={containerRef}\n className='date-picker-popup fixed z-[99999] w-full max-w-xs bg-base-100 border border-base-300 shadow-lg rounded-box'\n style={{\n maxHeight: 'none',\n overflow: 'visible',\n }}\n onClick={(e) => e.stopPropagation()}\n >\n <MemoizedDatePickerPopup\n selectedDate={localDate}\n month={month}\n onMonthChange={handleMonthChange}\n onSelect={handleSelect}\n />\n <div className='p-3 flex justify-end border-t border-base-300'>\n <button type='button' className='btn btn-sm btn-primary' onClick={handleDoneClick}>\n Done\n </button>\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, FormContextType, RJSFSchema } from '@rjsf/utils';\n\n/** The `RadioWidget` component renders a group of radio buttons with DaisyUI styling\n *\n * Features:\n * - Supports both primitive values and objects in enum options\n * - Handles selection state for various data types\n * - Uses DaisyUI radio styling with accessible labels\n * - Supports disabled and readonly states\n * - Provides focus and blur event handling\n * - Renders radio buttons in a vertical layout for better spacing\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RadioWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n htmlName,\n options,\n value,\n required,\n disabled,\n readonly,\n onChange,\n onFocus,\n onBlur,\n}: WidgetProps<T, S, F>) {\n const { enumOptions } = options;\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n /** Gets the actual value from an option\n *\n * @param option - The option object to get value from\n * @returns The option's value\n */\n const getValue = (option: any) => {\n return option.value;\n };\n\n /** Determines if an option is checked based on the current value\n *\n * @param option - The option to check\n * @returns Whether the option should be checked\n */\n const isChecked = (option: any) => {\n if (isEnumeratedObject) {\n return value && value.name === option.value.name;\n }\n return value === option.value;\n };\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const index = Number(event.target.dataset.index);\n const optionValue = enumOptions?.[index]?.value;\n onFocus(id, optionValue);\n }\n },\n [onFocus, id, enumOptions],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const index = Number(event.target.dataset.index);\n const optionValue = enumOptions?.[index]?.value;\n onBlur(id, optionValue);\n }\n },\n [onBlur, id, enumOptions],\n );\n\n /** Handles change events for radio options */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const index = Number(event.target.dataset.index);\n const option = enumOptions?.[index];\n if (option) {\n onChange(isEnumeratedObject ? option.value : option.value);\n event.target.blur();\n }\n },\n [onChange, isEnumeratedObject, enumOptions],\n );\n\n return (\n <div className='form-control'>\n {/* Display the options in a vertical flex layout for better spacing */}\n <div className='flex flex-col gap-2 mt-1'>\n {enumOptions?.map((option, index) => (\n <label key={option.value} className='flex items-center cursor-pointer gap-2'>\n <input\n type='radio'\n id={`${id}-${option.value}`}\n className='radio'\n name={htmlName || id}\n value={getValue(option)}\n checked={isChecked(option)}\n required={required}\n disabled={disabled || readonly}\n data-index={index}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text'>{option.label}</span>\n </label>\n ))}\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `RangeWidget` component renders a range slider input with DaisyUI styling\n *\n * Features:\n * - Visual slider control for numerical values\n * - Displays current value next to the slider\n * - Supports min, max, and step attributes from schema\n * - Handles required, disabled, and readonly states\n * - Supports focus and blur events for accessibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RangeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>({\n id,\n value,\n required,\n disabled,\n readonly,\n onChange,\n onFocus,\n onBlur,\n schema,\n}: WidgetProps<T, S, F>) {\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n };\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n };\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n return (\n <div className='form-control'>\n <div className='flex items-center'>\n <input\n type='range'\n id={id}\n className='range'\n value={value || schema.default}\n required={required}\n disabled={disabled || readonly}\n min={schema.minimum}\n max={schema.maximum}\n step={schema.multipleOf || 1}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n <span className='label-text ml-4'>{value}</span>\n </div>\n </div>\n );\n}\n", "import { ChangeEvent, FocusEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `RatingWidget` component renders a star or heart rating input with DaisyUI styling\n *\n * Features:\n * - Configurable number of stars/hearts (1-5) with default of 5\n * - Supports different shapes (star, heart)\n * - Supports different colors (red, orange, yellow, lime, green, blue, purple, pink)\n * - Supports different sizes (xs, sm, md, lg, xl)\n * - Uses DaisyUI's mask and star/heart styling\n * - Supports minimum and maximum values from schema\n * - Handles required, disabled, and readonly states\n * - Provides focus and blur event handling for accessibility\n * - Uses radio inputs for a11y compatibility\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function RatingWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n id,\n value,\n required,\n disabled,\n readonly,\n autofocus,\n onChange,\n onFocus,\n onBlur,\n schema,\n options,\n}: WidgetProps<T, S, F>) {\n const { stars = 5, shape = 'star', color = 'orange', size = 'md', colorGradient = false } = options;\n\n // Use schema.maximum if provided, otherwise use stars option (limited to 1-5)\n const numStars = schema.maximum ? Math.min(schema.maximum, 5) : Math.min(Math.max(stars as number, 1), 5);\n const min = schema.minimum || 0;\n\n // Generate shape class\n const maskClass = shape === 'heart' ? 'mask-heart' : 'mask-star-2';\n\n // Generate size class\n const sizeClass = size === 'md' ? '' : `rating-${size}`;\n\n /** Handles change events from radio inputs */\n const _onChange = useCallback(\n ({ target: { value } }: ChangeEvent<HTMLInputElement>) => {\n onChange(parseInt(value));\n },\n [onChange],\n );\n\n /** Handles focus events for accessibility */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n const starValue = Number(event.target.value);\n onFocus(id, starValue);\n }\n },\n [onFocus, id],\n );\n\n /** Handles blur events for accessibility */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n const starValue = Number(event.target.value);\n onBlur(id, starValue);\n }\n },\n [onBlur, id],\n );\n\n /** Get color class for a specific star/heart\n *\n * @param index - The index of the star/heart (0-based)\n * @returns The appropriate color class\n */\n const getColorClass = (index: number): string => {\n if (!colorGradient) {\n return `bg-${color}-400`;\n }\n\n // For gradient effect, use different colors based on position\n const colors = ['red', 'orange', 'yellow', 'lime', 'green'];\n const colorIdx = Math.min(index, colors.length - 1);\n return `bg-${colors[colorIdx]}-400`;\n };\n\n return (\n <div className='form-control w-full'>\n <div className={`rating gap-1 ${sizeClass}`}>\n {[...Array(numStars)].map((_, index) => {\n const starValue = min + index;\n return (\n <input\n key={index}\n type='radio'\n name={id}\n value={starValue}\n checked={value === starValue}\n onChange={_onChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`mask ${maskClass} ${getColorClass(index)}`}\n disabled={disabled || readonly}\n required={required}\n autoFocus={autofocus && index === 0}\n aria-label={`${starValue} ${shape === 'heart' ? 'heart' : 'star'}${starValue === 1 ? '' : 's'}`}\n />\n );\n })}\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport {\n enumOptionsIndexForValue,\n enumOptionsValueForIndex,\n FormContextType,\n RJSFSchema,\n StrictRJSFSchema,\n WidgetProps,\n} from '@rjsf/utils';\n\n/** The `SelectWidget` component renders a select input with DaisyUI styling\n *\n * Features:\n * - Supports both single and multiple selection\n * - Handles enumerated objects and primitive values\n * - Uses DaisyUI select styling with proper width\n * - Supports required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Provides placeholder option when needed\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function SelectWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({\n schema,\n id,\n options,\n label,\n disabled,\n placeholder,\n readonly,\n value,\n multiple,\n onChange,\n onBlur,\n onFocus,\n}: WidgetProps<T, S, F>) {\n const { enumOptions, emptyValue: optEmptyVal } = options;\n multiple = typeof multiple === 'undefined' ? false : !!multiple;\n\n const getDisplayValue = (val: any) => {\n if (!val) {\n return '';\n }\n if (typeof val === 'object') {\n if (val.name) {\n return val.name;\n }\n return val.label || JSON.stringify(val);\n }\n return String(val);\n };\n\n const isEnumeratedObject = enumOptions && enumOptions[0]?.value && typeof enumOptions[0].value === 'object';\n\n const handleOptionClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n const index = Number(event.currentTarget.dataset.value);\n if (isNaN(index)) {\n return;\n }\n\n if (multiple) {\n const currentValue = Array.isArray(value) ? value : [];\n const optionValue = isEnumeratedObject\n ? enumOptions[index].value\n : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal);\n const newValue = currentValue.includes(optionValue)\n ? currentValue.filter((v) => v !== optionValue)\n : [...currentValue, optionValue];\n onChange(newValue);\n } else {\n onChange(\n isEnumeratedObject\n ? enumOptions[index].value\n : enumOptionsValueForIndex<S>(String(index), enumOptions, optEmptyVal),\n );\n }\n },\n [value, multiple, isEnumeratedObject, enumOptions, optEmptyVal, onChange],\n );\n\n const _onBlur = useCallback(\n ({ target }: FocusEvent<HTMLDivElement>) => {\n const dataValue = target?.getAttribute('data-value');\n if (dataValue !== null) {\n onBlur(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));\n }\n },\n [onBlur, id, enumOptions, optEmptyVal],\n );\n\n const _onFocus = useCallback(\n ({ target }: FocusEvent<HTMLDivElement>) => {\n const dataValue = target?.getAttribute('data-value');\n if (dataValue !== null) {\n onFocus(id, enumOptionsValueForIndex<S>(dataValue, enumOptions, optEmptyVal));\n }\n },\n [onFocus, id, enumOptions, optEmptyVal],\n );\n\n const selectedIndexes = enumOptionsIndexForValue<S>(value, enumOptions, multiple);\n const selectedValues = Array.isArray(selectedIndexes) ? selectedIndexes : [selectedIndexes];\n\n const optionsList =\n enumOptions ||\n (Array.isArray(schema.examples) ? schema.examples.map((example) => ({ value: example, label: example })) : []);\n\n return (\n <div className='form-control w-full'>\n <div className='dropdown w-full'>\n <div\n tabIndex={0}\n role='button'\n className={`btn btn-outline w-full text-left flex justify-between items-center ${\n disabled || readonly ? 'btn-disabled' : ''\n }`}\n onBlur={_onBlur}\n onFocus={_onFocus}\n >\n <span className='truncate'>\n {selectedValues.length > 0\n ? selectedValues.map((index) => optionsList[Number(index)]?.label).join(', ')\n : placeholder || label || 'Select...'}\n </span>\n <span className='ml-2'>\u25BC</span>\n </div>\n <ul className='dropdown-content z-[1] bg-base-100 w-full max-h-60 overflow-auto rounded-box shadow-lg'>\n {optionsList.map(({ label }, i) => (\n <li\n key={i}\n role='button'\n tabIndex={0}\n className={`px-4 py-2 hover:bg-base-200 cursor-pointer ${\n selectedValues.includes(String(i)) ? 'bg-primary/10' : ''\n }`}\n onClick={handleOptionClick}\n data-value={i}\n >\n <div className='flex items-center gap-2'>\n {multiple && (\n <input\n type='checkbox'\n className='checkbox checkbox-sm'\n checked={selectedValues.includes(String(i))}\n readOnly\n />\n )}\n <span>{isEnumeratedObject ? label : getDisplayValue(label)}</span>\n </div>\n </li>\n ))}\n </ul>\n </div>\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `TextareaWidget` component renders a multi-line text input with DaisyUI styling\n *\n * Features:\n * - Handles multi-line text input with proper styling\n * - Supports required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Uses DaisyUI's textarea component for consistent styling\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TextareaWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(props: WidgetProps<T, S, F>) {\n const { id, htmlName, value, required, disabled, readonly, onChange, onFocus, onBlur, options } = props;\n\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLTextAreaElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n },\n [onFocus, id],\n );\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLTextAreaElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n },\n [onBlur, id],\n );\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n // Extract rows and other textarea-specific props from options\n const rows = options?.rows || 5;\n\n return (\n <div className='form-control'>\n <textarea\n id={id}\n name={htmlName || id}\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n readOnly={readonly}\n rows={rows}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className='textarea textarea-bordered w-full'\n />\n </div>\n );\n}\n", "import { FocusEvent, useCallback } from 'react';\nimport { WidgetProps, StrictRJSFSchema, RJSFSchema, FormContextType } from '@rjsf/utils';\n\n/** The `TimeWidget` component renders a time input with DaisyUI styling\n *\n * Features:\n * - Provides a time picker with hours and minutes\n * - Handles required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Uses DaisyUI's input styling with proper width\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function TimeWidget<T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any>(\n props: WidgetProps<T, S, F>,\n) {\n const { id, value, onChange, onFocus, onBlur, required, disabled, readonly } = props;\n\n /** Handle focus events\n *\n * @param event - The focus event\n */\n const handleFocus = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onFocus) {\n onFocus(id, event.target.value);\n }\n },\n [onFocus, id],\n );\n\n /** Handle blur events\n *\n * @param event - The blur event\n */\n const handleBlur = useCallback(\n (event: FocusEvent<HTMLInputElement>) => {\n if (onBlur) {\n onBlur(id, event.target.value);\n }\n },\n [onBlur, id],\n );\n\n /** Handle change events\n *\n * @param event - The change event\n */\n const handleChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChange(event.target.value);\n },\n [onChange],\n );\n\n return (\n <div className='form-control'>\n <input\n type='time'\n id={id}\n className='input input-bordered w-full'\n value={value || ''}\n required={required}\n disabled={disabled || readonly}\n readOnly={readonly}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n />\n </div>\n );\n}\n", "import { ChangeEvent, useCallback } from 'react';\nimport { FormContextType, RJSFSchema, StrictRJSFSchema, WidgetProps } from '@rjsf/utils';\n\n/** The `ToggleWidget` component renders a toggle switch input with DaisyUI styling\n *\n * Features:\n * - Provides a visual toggle switch rather than a standard checkbox\n * - Supports different sizes through options (sm, md, lg)\n * - Handles required, disabled, and readonly states\n * - Manages focus and blur events for accessibility\n * - Includes an optional label from options\n *\n * @param props - The `WidgetProps` for this component\n */\nexport default function ToggleWidget<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>({ id, value, required, disabled, readonly, autofocus, onChange, onFocus, onBlur, options }: WidgetProps<T, S, F>) {\n /** Handle change events from the toggle input\n *\n * @param event - The change event\n */\n const _onChange = useCallback(\n ({ target: { checked } }: ChangeEvent<HTMLInputElement>) => onChange(checked),\n [onChange],\n );\n\n /** Handle focus events\n */\n const handleFocus = useCallback(() => {\n if (onFocus) {\n onFocus(id, value);\n }\n }, [onFocus, id, value]);\n\n /** Handle blur events\n */\n const handleBlur = useCallback(() => {\n if (onBlur) {\n onBlur(id, value);\n }\n }, [onBlur, id, value]);\n\n // Get size from options or use default \"md\"\n const { size = 'md' } = options;\n\n // Only add size class if it's not the default size\n const sizeClass = size !== 'md' ? `toggle-${size}` : '';\n\n return (\n <div className='form-control'>\n <label className='cursor-pointer label my-auto'>\n <input\n type='checkbox'\n id={id}\n checked={value}\n required={required}\n disabled={disabled || readonly}\n autoFocus={autofocus}\n onChange={_onChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={`toggle ${sizeClass}`}\n />\n <span className='label-text'>{options.label}</span>\n </label>\n </div>\n );\n}\n", "import { FormContextType, RegistryWidgetsType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils';\n\nimport AltDateTimeWidget from './AltDateTimeWidget/AltDateTimeWidget';\nimport AltDateWidget from './AltDateWidget/AltDateWidget';\nimport CheckboxWidget from './CheckboxWidget/CheckboxWidget';\nimport CheckboxesWidget from './CheckboxesWidget/CheckboxesWidget';\nimport DateTimeWidget from './DateTimeWidget/DateTimeWidget';\nimport DateWidget from './DateWidget/DateWidget';\nimport RadioWidget from './RadioWidget/RadioWidget';\nimport RangeWidget from './RangeWidget/RangeWidget';\nimport RatingWidget from './RatingWidget/RatingWidget';\nimport SelectWidget from './SelectWidget/SelectWidget';\nimport TextareaWidget from './TextareaWidget/TextareaWidget';\nimport TimeWidget from './TimeWidget/TimeWidget';\nimport ToggleWidget from './ToggleWidget/ToggleWidget';\n\nexport {\n AltDateTimeWidget,\n AltDateWidget,\n CheckboxesWidget,\n CheckboxWidget,\n DateTimeWidget,\n DateWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextareaWidget,\n TimeWidget,\n ToggleWidget,\n};\n\nexport function generateWidgets<\n T = any,\n S extends StrictRJSFSchema = RJSFSchema,\n F extends FormContextType = any,\n>(): RegistryWidgetsType<T, S, F> {\n return {\n AltDateTimeWidget,\n AltDateWidget,\n CheckboxesWidget,\n CheckboxWidget,\n DateTimeWidget,\n DateWidget,\n RadioWidget,\n RangeWidget,\n RatingWidget,\n SelectWidget,\n TextareaWidget,\n TimeWidget,\n toggle: ToggleWidget,\n };\n}\n\nexport default generateWidgets;\n", "import { withTheme } from '@rjsf/core';\nimport Theme from './theme';\n\n/**\n * Form component pre-configured with the DaisyUI theme\n */\nconst DaisyUIForm = withTheme(Theme);\n\nexport default DaisyUIForm;\n", "/**\n * __createDaisyUIFrameProvider is used to ensure that DaisyUI styles\n * can be rendered within an iframe without affecting the parent page.\n * Required for using DaisyUI in the playground.\n *\n * We have to define DaisyUIFrameProvider in this library, as opposed to the playground,\n * to ensure consistent styling and proper theme management across frames.\n *\n * This provider:\n * - Injects Tailwind CSS and DaisyUI stylesheets into the iframe\n * - Configures Tailwind with DaisyUI themes\n * - Manages theme persistence through localStorage\n * - Wraps content in a themed container\n *\n * NOTE: This is an internal component only used by @rjsf/playground (no\n * backwards compatibility guarantees!)\n */\n\nimport { useEffect, ReactNode } from 'react';\n\ninterface DaisyUIFrameProviderProps {\n children: ReactNode;\n subtheme?: { dataTheme?: string } | null;\n}\n\n/** This component has a useEffect with a cleanup function to remove the tailwind stylesheets loads upon unmount so\n * that the styles are removed when the theme in the playground is switched to something else\n *\n * @param props - The component props\n */\nfunction DaisyUIFrameComponent(props: DaisyUIFrameProviderProps & { document?: Document }) {\n const { children, subtheme = {}, document } = props;\n const theme = (() => {\n try {\n if (subtheme?.dataTheme) {\n localStorage.setItem('daisyui-theme', subtheme.dataTheme);\n return subtheme.dataTheme;\n }\n return localStorage.getItem('daisyui-theme') || 'cupcake';\n } catch {\n return 'cupcake';\n }\n })();\n\n useEffect(() => {\n if (document) {\n // Configure Tailwind first to ensure config is available before script loads\n const configScript = document.createElement('script');\n configScript.textContent = `\n window.tailwind = window.tailwind || {};\n window.tailwind.config = {\n daisyui: {\n themes: true,\n },\n future: {\n disableProductionWarning: true\n }\n }\n `;\n document.head.appendChild(configScript);\n\n // Add Tailwind\n const tailwindScript = document.createElement('script');\n tailwindScript.src = 'https://unpkg.com/@tailwindcss/browser@4.1.3';\n document.head.appendChild(tailwindScript);\n\n // Add DaisyUI CSS\n const daisyLink = document.createElement('link');\n daisyLink.rel = 'stylesheet';\n daisyLink.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20';\n document.head.appendChild(daisyLink);\n\n // Add all themes\n const daisyLinkAllThemes = document.createElement('link');\n daisyLinkAllThemes.rel = 'stylesheet';\n daisyLinkAllThemes.href = 'https://cdn.jsdelivr.net/npm/daisyui@5.0.20/themes.css';\n document.head.appendChild(daisyLinkAllThemes);\n return () => {\n configScript.remove();\n tailwindScript.remove();\n daisyLink.remove();\n daisyLinkAllThemes.remove();\n };\n }\n return undefined;\n }, [document]);\n\n return (\n <div data-theme={theme} className='daisy-ui-theme'>\n {children}\n </div>\n );\n}\n\n/**\n * Creates a DaisyUI frame provider component that can be used within an iframe\n * to properly render DaisyUI styles without affecting the parent document.\n *\n * @param props - The component props\n * @returns A component that sets up DaisyUI within an iframe context\n */\nexport const __createDaisyUIFrameProvider = (props: DaisyUIFrameProviderProps) => {\n return function DaisyUIFrame({ document }: { document?: Document }) {\n // Get theme from localStorage or use default\n return <DaisyUIFrameComponent document={document} {...props} />;\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["withTheme", "useCallback", "useState", "CopyButton", "MoveDownButton", "MoveUpButton", "RemoveButton", "jsx", "jsxs", "ArrayFieldItemButtonsTemplate", "getTemplate", "getUiOptions", "buttonId", "jsx", "jsxs", "AddButton", "useCallback", "Fragment", "jsx", "jsxs", "value", "TranslatableString", "jsx", "jsx", "TranslatableString", "jsx", "TranslatableString", "faCopy", "faArrowDown", "faArrowUp", "faTrash", "jsx", "TranslatableString", "faCopy", "faArrowDown", "faArrowUp", "faTrash", "jsx", "jsx", "jsx", "jsx", "getTemplate", "getUiOptions", "jsx", "jsxs", "WrapIfAdditionalTemplate", "jsx", "jsx", "jsxs", "getTemplate", "getUiOptions", "buttonId", "jsx", "jsxs", "AddButton", "faPlus", "jsx", "faPlus", "getUiOptions", "jsx", "jsxs", "buttonId", "TranslatableString", "jsx", "jsxs", "RemoveButton", "jsx", "AltDateWidget", "TranslatableString", "jsx", "jsxs", "useCallback", "getTemplate", "descriptionId", "jsx", "jsxs", "useCallback", "jsx", "jsxs", "memo", "useCallback", "FontAwesomeIcon", "jsx", "jsxs", "memo", "useCallback", "useEffect", "useMemo", "useRef", "useState", "faCalendar", "FontAwesomeIcon", "format", "isSameDay", "isToday", "isValid", "DayPicker", "UI", "jsx", "jsxs", "useDatePickerState", "useClickOutside", "dayPickerStyles", "useCallback", "jsx", "jsxs", "useCallback", "jsx", "jsxs", "useCallback", "jsx", "value", "useCallback", "jsx", "jsxs", "label", "useCallback", "jsx", "useCallback", "jsx", "useCallback", "jsx", "jsxs", "jsx", "useState", "useCallback", "useEffect", "jsx", "document", "withTheme"]
|
|
7
7
|
}
|