@formitiva/react 0.9.0
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/LICENSE +21 -0
- package/README.full.md +456 -0
- package/README.md +114 -0
- package/dist/components/fields/advanced/ColorInput.d.ts +5 -0
- package/dist/components/fields/advanced/EmailInput.d.ts +6 -0
- package/dist/components/fields/advanced/FileInput.d.ts +5 -0
- package/dist/components/fields/advanced/PasswordInput.d.ts +6 -0
- package/dist/components/fields/advanced/PhoneInput.d.ts +7 -0
- package/dist/components/fields/advanced/RatingInput.d.ts +9 -0
- package/dist/components/fields/advanced/SliderInput.d.ts +5 -0
- package/dist/components/fields/advanced/UnitValueInput.d.ts +5 -0
- package/dist/components/fields/advanced/UrlInput.d.ts +9 -0
- package/dist/components/fields/base/PopupOptionMenu.d.ts +16 -0
- package/dist/components/fields/base/Tooltip.d.ts +8 -0
- package/dist/components/fields/choices/CheckboxInput.d.ts +5 -0
- package/dist/components/fields/choices/DropdownInput.d.ts +8 -0
- package/dist/components/fields/choices/MultiSelection.d.ts +9 -0
- package/dist/components/fields/choices/RadioInput.d.ts +8 -0
- package/dist/components/fields/choices/SwitchInput.d.ts +5 -0
- package/dist/components/fields/date-time/DateInput.d.ts +6 -0
- package/dist/components/fields/date-time/TimeInput.d.ts +6 -0
- package/dist/components/fields/text-numeric/FloatArrayInput.d.ts +5 -0
- package/dist/components/fields/text-numeric/FloatInput.d.ts +9 -0
- package/dist/components/fields/text-numeric/IntegerArrayInput.d.ts +6 -0
- package/dist/components/fields/text-numeric/IntegerInput.d.ts +6 -0
- package/dist/components/fields/text-numeric/MultilineTextInput.d.ts +6 -0
- package/dist/components/fields/text-numeric/NumericStepperInput.d.ts +6 -0
- package/dist/components/fields/text-numeric/TextInput.d.ts +8 -0
- package/dist/components/fields/ui-elements/Button.d.ts +14 -0
- package/dist/components/fields/ui-elements/Description.d.ts +10 -0
- package/dist/components/fields/ui-elements/ImageDisplay.d.ts +5 -0
- package/dist/components/fields/ui-elements/Separator.d.ts +21 -0
- package/dist/components/form/Formitiva.d.ts +16 -0
- package/dist/components/form/FormitivaProvider.d.ts +18 -0
- package/dist/components/form/FormitivaRenderer.d.ts +20 -0
- package/dist/components/form/SubmissionButton.d.ts +8 -0
- package/dist/components/form/SubmissionMessage.d.ts +7 -0
- package/dist/components/layout/FieldGroup.d.ts +16 -0
- package/dist/components/layout/FieldRenderer.d.ts +14 -0
- package/dist/components/layout/LayoutComponents.d.ts +77 -0
- package/dist/core/env.d.ts +1 -0
- package/dist/core/fieldVisibility.d.ts +13 -0
- package/dist/core/formitivaModel.d.ts +31 -0
- package/dist/core/formitivaTypes.d.ts +128 -0
- package/dist/core/registries/baseRegistry.d.ts +15 -0
- package/dist/core/registries/buttonHandlerRegistry.d.ts +44 -0
- package/dist/core/registries/componentRegistry.d.ts +15 -0
- package/dist/core/registries/pluginRegistry.d.ts +45 -0
- package/dist/core/registries/submissionHandlerRegistry.d.ts +7 -0
- package/dist/core/registries/validationHandlerRegistry.d.ts +20 -0
- package/dist/core/submitForm.d.ts +9 -0
- package/dist/formitiva.cjs.js +404 -0
- package/dist/formitiva.es.js +5626 -0
- package/dist/hooks/useDebouncedCallback.d.ts +27 -0
- package/dist/hooks/useDropdownPosition.d.ts +6 -0
- package/dist/hooks/useFieldValidator.d.ts +3 -0
- package/dist/hooks/useFormitivaContext.d.ts +4 -0
- package/dist/hooks/useUncontrolledValidatedInput.d.ts +21 -0
- package/dist/hooks/useUnitValueField.d.ts +13 -0
- package/dist/index.d.ts +27 -0
- package/dist/react.css +1 -0
- package/dist/styles/cssClasses.d.ts +15 -0
- package/dist/styles/themeUtils.d.ts +31 -0
- package/dist/themes/ant-design-dark.css +31 -0
- package/dist/themes/ant-design.css +42 -0
- package/dist/themes/blueprint-dark.css +31 -0
- package/dist/themes/blueprint.css +43 -0
- package/dist/themes/compact-variant.css +8 -0
- package/dist/themes/fluent.css +40 -0
- package/dist/themes/glass-morphism.css +25 -0
- package/dist/themes/high-contrast-accessible.css +22 -0
- package/dist/themes/ios-mobile.css +32 -0
- package/dist/themes/macos-native.css +32 -0
- package/dist/themes/material-dark.css +27 -0
- package/dist/themes/material.css +46 -0
- package/dist/themes/midnight-dark.css +24 -0
- package/dist/themes/modern-light.css +23 -0
- package/dist/themes/neon-cyber-dark.css +24 -0
- package/dist/themes/shadcn.css +40 -0
- package/dist/themes/soft-pastel.css +24 -0
- package/dist/themes/spacious-variant.css +9 -0
- package/dist/themes/tailwind-dark.css +30 -0
- package/dist/themes/tailwind.css +50 -0
- package/dist/utils/definitionSerializers.d.ts +62 -0
- package/dist/utils/groupingHelpers.d.ts +24 -0
- package/dist/utils/translationUtils.d.ts +52 -0
- package/dist/utils/unitValueMapper.d.ts +14 -0
- package/dist/validation/registerBuiltinTypeValidators.d.ts +11 -0
- package/dist/validation/validation.d.ts +12 -0
- package/dist/validation/validators/validateColorField.d.ts +2 -0
- package/dist/validation/validators/validateDateField.d.ts +2 -0
- package/dist/validation/validators/validateEmailField.d.ts +2 -0
- package/dist/validation/validators/validateFieldPattern.d.ts +3 -0
- package/dist/validation/validators/validateFileField.d.ts +2 -0
- package/dist/validation/validators/validateFloatField.d.ts +3 -0
- package/dist/validation/validators/validateIntegerField.d.ts +3 -0
- package/dist/validation/validators/validatePhoneField.d.ts +2 -0
- package/dist/validation/validators/validateRatingField.d.ts +2 -0
- package/dist/validation/validators/validateSelectionFields.d.ts +3 -0
- package/dist/validation/validators/validateSliderField.d.ts +2 -0
- package/dist/validation/validators/validateTextField.d.ts +2 -0
- package/dist/validation/validators/validateTimeField.d.ts +2 -0
- package/dist/validation/validators/validateUnitValueField.d.ts +2 -0
- package/dist/validation/validators/validateUrlField.d.ts +2 -0
- package/package.json +92 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type DebouncedCallback = {
|
|
2
|
+
callback: (...args: unknown[]) => void;
|
|
3
|
+
cancel: () => void;
|
|
4
|
+
flush: () => void;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* useDebouncedCallback
|
|
8
|
+
* - callback: function to call
|
|
9
|
+
* - wait: debounce delay in ms
|
|
10
|
+
* - options.leading: if true, call on leading edge (optional)
|
|
11
|
+
*
|
|
12
|
+
* Returns { callback, cancel, flush } where callback is debounced.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useDebouncedCallback(callback: (...args: unknown[]) => unknown, wait?: number, options?: {
|
|
15
|
+
leading?: boolean;
|
|
16
|
+
trailing?: boolean;
|
|
17
|
+
}): DebouncedCallback;
|
|
18
|
+
/**
|
|
19
|
+
* createDebouncedCallback - non-hook variant that returns the same API but
|
|
20
|
+
* doesn't use React hooks. Useful for creating many debounced callbacks
|
|
21
|
+
* programmatically (e.g., driven from a static schema) while handling
|
|
22
|
+
* lifecycle cleanup manually.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createDebouncedCallback(callback: (...args: unknown[]) => unknown, wait?: number, options?: {
|
|
25
|
+
leading?: boolean;
|
|
26
|
+
trailing?: boolean;
|
|
27
|
+
}): DebouncedCallback;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DefinitionPropertyField, FieldValueType } from '../core/formitivaTypes';
|
|
2
|
+
export type ValidationTrigger = 'change' | 'blur' | 'sync';
|
|
3
|
+
export declare function useFieldValidator(field: DefinitionPropertyField, externalError?: string | null): (value: FieldValueType, trigger?: ValidationTrigger) => string | null;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { ValidationTrigger } from "./useFieldValidator";
|
|
3
|
+
export type UseUncontrolledValidatedInputProps = {
|
|
4
|
+
value?: string | number;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
onChange?: (value: string) => void;
|
|
7
|
+
onError?: (error: string | null) => void;
|
|
8
|
+
validate: (value: string, trigger?: ValidationTrigger) => string | null;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Handles:
|
|
12
|
+
* - Uncontrolled input
|
|
13
|
+
* - Validation
|
|
14
|
+
* - Error sync
|
|
15
|
+
*/
|
|
16
|
+
export declare function useUncontrolledValidatedInput<T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>({ value, disabled, onChange, onError, validate, }: UseUncontrolledValidatedInputProps): {
|
|
17
|
+
inputRef: React.MutableRefObject<T | null>;
|
|
18
|
+
error: string | null;
|
|
19
|
+
handleChange: (e: React.ChangeEvent<T>) => void;
|
|
20
|
+
handleBlur: () => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DefinitionPropertyField } from "../core/formitivaTypes";
|
|
2
|
+
export declare function useUnitValueField(definitionName: string, field: DefinitionPropertyField, value: [string | number, string], unitFactors: {
|
|
3
|
+
default: string;
|
|
4
|
+
labels: Record<string, string>;
|
|
5
|
+
reverseLabels?: Record<string, string>;
|
|
6
|
+
}, t: (key: string) => string, onChange?: (v: [string, string], err: string | null) => void, onError?: (err: string | null) => void): {
|
|
7
|
+
value: string;
|
|
8
|
+
unit: string;
|
|
9
|
+
error: string | null;
|
|
10
|
+
setValue: (v: string) => void;
|
|
11
|
+
setUnit: (u: string) => void;
|
|
12
|
+
setBoth: (v: string, u: string) => void;
|
|
13
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare function injectFormitivaStyles(): void;
|
|
2
|
+
export { default as Formitiva } from './components/form/Formitiva';
|
|
3
|
+
export { default as FormitivaRenderer } from './components/form/FormitivaRenderer';
|
|
4
|
+
export type { FormitivaRendererProps } from './components/form/FormitivaRenderer';
|
|
5
|
+
export { FormitivaProvider } from './components/form/FormitivaProvider';
|
|
6
|
+
export { default as useFormitivaContext } from './hooks/useFormitivaContext';
|
|
7
|
+
export { StandardFieldLayout } from './components/layout/LayoutComponents';
|
|
8
|
+
export { CSS_CLASSES, combineClasses } from './styles/cssClasses';
|
|
9
|
+
export type { FormitivaContextType, FormitivaProviderProps, DefinitionPropertyField, FormitivaDefinition, FormitivaInstance, FormitivaProps, FieldValueType, ErrorType, FieldCustomValidationHandler, FieldTypeValidationHandler, FormValidationHandler, FormSubmissionHandler, InputOnChange, BaseInputProps, TranslationFunction, FieldValidationMode } from './core/formitivaTypes';
|
|
10
|
+
export { registerComponent, getComponent, } from './core/registries/componentRegistry';
|
|
11
|
+
export { validateFieldValue, // Deprecated, use validateFieldWithHandler instead
|
|
12
|
+
validateFieldWithCustomHandler } from './validation/validation';
|
|
13
|
+
export { type FormitivaPlugin, type ConflictResolution, type PluginRegistrationOptions, type PluginConflict, registerPlugin, unregisterPlugin, getPlugin, getAllPlugins, hasPlugin, registerComponents, } from './core/registries/pluginRegistry';
|
|
14
|
+
export type { LoadDefinitionOptions, DefinitionLoadResult, InstanceLoadResult, } from './core/formitivaModel';
|
|
15
|
+
export { loadJsonDefinition, createInstanceFromDefinition, // Create new instance with default values
|
|
16
|
+
loadInstance, // Load existing instance (valuesMap)
|
|
17
|
+
upgradeInstanceToLatestDefinition } from './core/formitivaModel';
|
|
18
|
+
export { registerSubmissionHandler, } from './core/registries/submissionHandlerRegistry';
|
|
19
|
+
export { registerFieldCustomValidationHandler, registerFieldTypeValidationHandler, registerFormValidationHandler, } from './core/registries/validationHandlerRegistry';
|
|
20
|
+
export { registerButtonHandler, getButtonHandler, hasButtonHandler, unregisterButtonHandler, listButtonHandlers, type ButtonHandler, } from './core/registries/buttonHandlerRegistry';
|
|
21
|
+
export { type DebouncedCallback, useDebouncedCallback } from './hooks/useDebouncedCallback';
|
|
22
|
+
export { useFieldValidator } from './hooks/useFieldValidator';
|
|
23
|
+
export { useUncontrolledValidatedInput, type UseUncontrolledValidatedInputProps } from './hooks/useUncontrolledValidatedInput';
|
|
24
|
+
export * as Units from './utils/unitValueMapper';
|
|
25
|
+
export { isDarkTheme } from './styles/themeUtils';
|
|
26
|
+
export { serializeInstance, deserializeInstance, serializeDefinition, deserializeDefinition } from './utils/definitionSerializers';
|
|
27
|
+
export { getSupportedLanguages } from './utils/translationUtils';
|
package/dist/react.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--formitiva-primary-bg: #f9f9f9;--formitiva-secondary-bg: #fff;--formitiva-text-color: #000;--formitiva-text-muted: #666;--formitiva-label-text-color: #000000;--formitiva-form-border-color: #000000;--formitiva-border-color: #ccc;--formitiva-border-hover: #999;--formitiva-border-focus: #4CAF50;--formitiva-error-color: #e11d48;--formitiva-success-color: #4CAF50;--formitiva-space: 8px;--formitiva-space-lg: 12px;--formitiva-option-menu-hover-bg: #80FFFF;--formitiva-column-gap: var(--formitiva-space);--formitiva-inline-gap: var(--formitiva-space);--formitiva-label-gap: 0px;--formitiva-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--formitiva-font-size: 14px;--formitiva-font-weight: 500;--formitiva-label-font-family: var(--formitiva-font-family);--formitiva-label-font-size: 14px;--formitiva-label-font-weight: 600;--formitiva-border-radius: 0px;--formitiva-border-width: 1px;--formitiva-border-style: solid;--formitiva-form-border-radius: 0px;--formitiva-form-border-style: solid;--formitiva-form-border-width: 0px;--formitiva-group-border-radius: var(--formitiva-border-radius);--formitiva-group-border-style: var(--formitiva-border-style);--formitiva-group-border-width: var(--formitiva-border-width);--formitiva-form-shadow: 0 2px 4px rgba(0, 0, 0, .1);--formitiva-button-bg: var(--formitiva-success-color);--formitiva-button-text: #ffffff;--formitiva-button-padding: var(--formitiva-space) 12px;--formitiva-button-border-radius: 6px;--formitiva-button-font-size: 14px;--formitiva-button-font-weight: var(--formitiva-font-weight);--formitiva-button-hover-opacity: .9;--formitiva-button-disabled-opacity: .6;--formitiva-button-disabled-bg: #cccccc;--formitiva-button-disabled-cursor: not-allowed;--formitiva-button-margin-top: .5em;--formitiva-button-shadow: none;--formitiva-input-padding: var(--formitiva-space);--formitiva-container-padding: var(--formitiva-space-lg);--formitiva-field-gap: var(--formitiva-space);--formitiva-input-bg: var(--formitiva-secondary-bg);--formitiva-field-text-color: #0000ff;--formitiva-tooltip-color-bg: rgba(60,60,60,.92);--formitiva-tooltip-color: #ffffff;--formitiva-field-grid-columns: 1fr 2fr}[data-formitiva-theme=dark]{--formitiva-primary-bg: #121212;--formitiva-secondary-bg: #1A1A1A;--formitiva-input-bg: #262626;--formitiva-text-color: #EDEDED;--formitiva-text-muted: #A5A5A5;--formitiva-field-text-color: #C8C8E5;--formitiva-border-color: #3A3A3A;--formitiva-border-hover: #4A4A4A;--formitiva-border-focus: #4DA6FF;--formitiva-form-border-color: #333333;--formitiva-error-color: #FF6B6B;--formitiva-success-color: #4CAF6A;--formitiva-option-menu-hover-bg: rgba(255, 255, 255, .06);--formitiva-form-shadow: 0 2px 8px rgba(0, 0, 0, .45);--formitiva-tooltip-color-bg: rgba(40, 40, 40, .95);--formitiva-tooltip-color: #F5F5F5}.formitiva-container{font-family:var(--formitiva-font-family, sans-serif);font-size:var(--formitiva-font-size, 14px);background:var(--formitiva-primary-bg, #f9f9f9);color:var(--formitiva-text-color, #000000);padding:var(--formitiva-container-padding, 12px);border-radius:var(--formitiva-form-border-radius, 0px);border-color:var(--formitiva-form-border-color, #000000);border-style:var(--formitiva-form-border-style, solid);border-width:var(--formitiva-form-border-width, 0px);box-shadow:var(--formitiva-form-shadow, none);gap:var(--formitiva-space-lg, 12px);max-width:100%;margin:0 auto}.formitiva-field{display:grid;grid-template-columns:var(--formitiva-field-grid-columns, 1fr 2fr);align-items:start;padding:0;gap:var(--formitiva-column-gap, 8px);margin-bottom:var(--formitiva-field-gap, 8px)}.formitiva-group{border:1px solid var(--formitiva-border-color, #bbb);padding:var(--formitiva-fieldset-padding, .5em);border-radius:var(--formitiva-group-border-radius, var(--formitiva-border-radius, 4px));border-style:var(--formitiva-group-border-style, var(--formitiva-border-style, solid));border-width:var(--formitiva-group-border-width, var(--formitiva-border-width, 1px));margin-bottom:var(--formitiva-space, 8px)}.formitiva-group_legend{font-weight:700;cursor:pointer;display:flex;justify-content:space-between;align-items:center;padding:0 var(--formitiva-space, 8px);color:var(--formitiva-text-color, inherit);margin-left:.4em}.formitiva-group_legend_arrow{margin-left:.4em}.formitiva-label{justify-self:start;align-self:center;white-space:normal;line-height:1.4;min-width:100px;color:var(--formitiva-label-text-color, var(--formitiva-text-color, #000000));font-family:var(--formitiva-label-font-family, var(--formitiva-font-family, sans-serif));font-weight:var(--formitiva-label-font-weight, var(--formitiva-font-weight, 600));font-size:var(--formitiva-label-font-size, var(--formitiva-font-size, 14px));-webkit-user-select:none;user-select:none}.formitiva-description{font-size:var(--formitiva-font-size, 14px);font-weight:var(--formitiva-font-weight, 500);margin:var(--formitiva-space, 8px) 0;color:var(--formitiva-text-color, #000000);-webkit-user-select:none;user-select:none}.formitiva-input{width:100%;color:var(--formitiva-text-color, #000000);border:1px solid var(--formitiva-border-color, #ccc);border-radius:var(--formitiva-border-radius, 0px);border-style:var(--formitiva-border-style, solid);border-width:var(--formitiva-border-width, 1px);padding:var(--formitiva-input-padding, 8px);box-sizing:border-box;background-color:var(--formitiva-input-bg, #ffffff);font-size:var(--formitiva-font-size, 14px);font-weight:var(--formitiva-font-weight, 400);transition:border-color .2s ease;box-shadow:inset 0 1px #ffffff08}.formitiva-input:hover{border-color:var(--formitiva-border-hover, #4A4A4A)}.formitiva-input:focus{outline:none;border-color:var(--formitiva-border-focus, #4DA6FF);box-shadow:0 0 0 3px #22d3ee66,0 0 16px #22d3ee40,inset 0 1px #ffffff0d}.formitiva-input--text{text-align:left}.formitiva-input--number{text-align:right}.formitiva-input--select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--formitiva-space) center;background-size:20px;padding-right:32px}.formitiva-select{text-align:left;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg fill='%23666' height='8' viewBox='0 0 24 24' width='8' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/></svg>");background-repeat:no-repeat;background-position:right var(--formitiva-space) center;background-size:2.5em;padding-right:32px;background-color:var(--formitiva-input-bg)}.formitiva-textarea{width:100%;background-color:var(--formitiva-input-bg);color:var(--formitiva-text-color);border:1px solid var(--formitiva-border-color);border-radius:var(--formitiva-border-radius);padding:var(--formitiva-input-padding);box-sizing:border-box}.formitiva-chip{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background-color:var(--formitiva-input-bg);border:1px solid var(--formitiva-border-color);border-radius:var(--formitiva-border-radius);color:var(--formitiva-text-color);font-size:.875rem;gap:8px}.formitiva-button{background-color:var(--formitiva-button-bg, var(--formitiva-success-color, #4CAF50));color:var(--formitiva-button-text, var(--formitiva-text-color, #000000));padding:var(--formitiva-button-padding);border-radius:var(--formitiva-button-border-radius, 6px);font-size:var(--formitiva-button-font-size);font-weight:var(--formitiva-button-font-weight);box-shadow:var(--formitiva-button-shadow);margin-top:var(--formitiva-button-margin-top);border:none;cursor:pointer;transition:opacity .2s ease;width:100%;display:flex;justify-content:center;align-items:center}.formitiva-button:hover:not(:disabled){opacity:var(--formitiva-button-hover-opacity);background-color:var(--formitiva-button-bg-hover, #0056b3)}.formitiva-button:disabled{opacity:var(--formitiva-button-disabled-opacity);background-color:var(--formitiva-button-disabled-bg);cursor:var(--formitiva-button-disabled-cursor)}@media(max-width:1024px){.formitiva-container{padding:calc(var(--formitiva-space) * .8)}.formitiva-field{gap:calc(var(--formitiva-column-gap) * .8)}}@media(max-width:768px){.formitiva-field{grid-template-columns:1fr;gap:6px}.formitiva-label{justify-self:start;margin-bottom:4px;font-size:.9rem}.formitiva-container{padding:var(--formitiva-space)}.formitiva-input,.formitiva-textarea,.formitiva-select{font-size:16px;padding:var(--formitiva-input-padding)}.formitiva-checkbox-wrapper,.formitiva-radio-wrapper{padding:8px 0;min-height:44px;align-items:center}.formitiva-group{margin-bottom:calc(var(--formitiva-space) * 1.5)}}@media(max-width:480px){.formitiva-container{padding:calc(var(--formitiva-space) * .7)}.formitiva-field{gap:8px}.formitiva-label{font-size:.85rem;line-height:1.3}.formitiva-input,.formitiva-textarea,.formitiva-select{padding:14px}}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS class constants and helpers
|
|
3
|
+
*/
|
|
4
|
+
export declare const CSS_CLASSES: {
|
|
5
|
+
readonly field: "formitiva-field";
|
|
6
|
+
readonly label: "formitiva-label";
|
|
7
|
+
readonly input: "formitiva-input";
|
|
8
|
+
readonly textInput: "formitiva-input--text";
|
|
9
|
+
readonly inputNumber: "formitiva-input--number";
|
|
10
|
+
readonly inputSelect: "formitiva-select";
|
|
11
|
+
readonly rangeInput: "formitiva-input--range";
|
|
12
|
+
readonly button: "formitiva-button";
|
|
13
|
+
readonly description: "formitiva-description";
|
|
14
|
+
};
|
|
15
|
+
export declare const combineClasses: (...classes: (string | undefined | null | false | Record<string, boolean>)[]) => string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for theme detection and management
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Determines if a theme is dark-themed based on naming convention.
|
|
6
|
+
*
|
|
7
|
+
* Convention: Theme names containing "dark" are considered dark themes.
|
|
8
|
+
*
|
|
9
|
+
* When creating custom themes:
|
|
10
|
+
* - Include "dark" in the theme name for dark themes (e.g., "my-theme-dark")
|
|
11
|
+
* - Or rely on CSS variables only and avoid theme-specific logic
|
|
12
|
+
*
|
|
13
|
+
* @param themeName - The theme name from the `theme` prop
|
|
14
|
+
* @returns true if the theme is dark-themed
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* isDarkTheme('material-dark') // true
|
|
18
|
+
* isDarkTheme('dark') // true
|
|
19
|
+
* isDarkTheme('midnight-dark') // true
|
|
20
|
+
* isDarkTheme('my-custom-dark') // true
|
|
21
|
+
* isDarkTheme('material') // false
|
|
22
|
+
*/
|
|
23
|
+
export declare function isDarkTheme(themeName: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Determines if a color string represents a dark color.
|
|
26
|
+
* Supports hex (3, 4, 6, 8 digits) and rgb/rgba formats.
|
|
27
|
+
*
|
|
28
|
+
* @param color - The color string to check
|
|
29
|
+
* @returns true if the color is considered dark (luminance < 128)
|
|
30
|
+
*/
|
|
31
|
+
export declare function isDarkColor(color: string): boolean;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[data-formitiva-theme="antd-dark"] {
|
|
2
|
+
--formitiva-primary-bg: #141414;
|
|
3
|
+
--formitiva-secondary-bg: #1f1f1f;
|
|
4
|
+
--formitiva-input-bg: #1f1f1f;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #e8e8e8;
|
|
7
|
+
--formitiva-text-muted: #9ca3af;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #303030;
|
|
10
|
+
--formitiva-border-hover: #434343;
|
|
11
|
+
--formitiva-border-focus: #1677ff;
|
|
12
|
+
|
|
13
|
+
--formitiva-option-menu-hover-bg: #1a1a1a;
|
|
14
|
+
|
|
15
|
+
--formitiva-error-color: #ff4d4f;
|
|
16
|
+
--formitiva-success-color: #52c41a;
|
|
17
|
+
|
|
18
|
+
--formitiva-border-radius: 6px;
|
|
19
|
+
|
|
20
|
+
--formitiva-shadow:
|
|
21
|
+
0 6px 20px #000000;
|
|
22
|
+
|
|
23
|
+
--formitiva-button-bg: #1677ff;
|
|
24
|
+
--formitiva-button-text: white;
|
|
25
|
+
|
|
26
|
+
--formitiva-input-padding: 10px 12px;
|
|
27
|
+
|
|
28
|
+
/* Tooltip */
|
|
29
|
+
--formitiva-tooltip-color-bg: #282828;
|
|
30
|
+
--formitiva-tooltip-color: #F5F5F5;
|
|
31
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[data-formitiva-theme="antd"] {
|
|
2
|
+
/* Surfaces */
|
|
3
|
+
--formitiva-primary-bg: #ffffff;
|
|
4
|
+
--formitiva-secondary-bg: #ffffff;
|
|
5
|
+
--formitiva-input-bg: #ffffff;
|
|
6
|
+
|
|
7
|
+
/* Text */
|
|
8
|
+
--formitiva-text-color: #1f1f1f;
|
|
9
|
+
--formitiva-text-muted: #8c8c8c;
|
|
10
|
+
|
|
11
|
+
/* Borders */
|
|
12
|
+
--formitiva-border-color: #d9d9d9;
|
|
13
|
+
--formitiva-border-hover: #bfbfbf;
|
|
14
|
+
--formitiva-border-focus: #1677ff; /* Ant Primary */
|
|
15
|
+
|
|
16
|
+
/* States */
|
|
17
|
+
--formitiva-error-color: #ff4d4f;
|
|
18
|
+
--formitiva-success-color: #52c41a;
|
|
19
|
+
|
|
20
|
+
/* Interaction */
|
|
21
|
+
--formitiva-option-menu-hover-bg: #fafafa;
|
|
22
|
+
|
|
23
|
+
/* Shape ??AntD slightly rounded */
|
|
24
|
+
--formitiva-border-radius: 6px;
|
|
25
|
+
|
|
26
|
+
/* Elevation */
|
|
27
|
+
--formitiva-shadow:
|
|
28
|
+
0 2px 8px #000000;
|
|
29
|
+
|
|
30
|
+
/* Buttons */
|
|
31
|
+
--formitiva-button-bg: #1677ff;
|
|
32
|
+
--formitiva-button-text: #ffffff;
|
|
33
|
+
--formitiva-button-border-radius: 6px;
|
|
34
|
+
|
|
35
|
+
/* Comfortable spacing */
|
|
36
|
+
--formitiva-input-padding: 10px 12px;
|
|
37
|
+
--formitiva-font-size: 14px;
|
|
38
|
+
|
|
39
|
+
/* Tooltip */
|
|
40
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
41
|
+
--formitiva-tooltip-color: #ffffff;
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
[data-formitiva-theme="blueprint-dark"] {
|
|
2
|
+
--formitiva-primary-bg: #202b33;
|
|
3
|
+
--formitiva-secondary-bg: #293742;
|
|
4
|
+
--formitiva-input-bg: #30404d;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #f5f8fa;
|
|
7
|
+
--formitiva-text-muted: #c0cbd3;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #394b59;
|
|
10
|
+
--formitiva-border-hover: #738694;
|
|
11
|
+
--formitiva-border-focus: #2b95d6;
|
|
12
|
+
|
|
13
|
+
--formitiva-option-menu-hover-bg: #ffffff;
|
|
14
|
+
|
|
15
|
+
--formitiva-error-color: #ff7373;
|
|
16
|
+
--formitiva-success-color: #3dcc91;
|
|
17
|
+
|
|
18
|
+
--formitiva-border-radius: 4px;
|
|
19
|
+
|
|
20
|
+
--formitiva-shadow:
|
|
21
|
+
0 4px 20px #10161a;
|
|
22
|
+
|
|
23
|
+
--formitiva-button-bg: #2b95d6;
|
|
24
|
+
--formitiva-button-text: white;
|
|
25
|
+
|
|
26
|
+
--formitiva-input-padding: 8px 10px;
|
|
27
|
+
|
|
28
|
+
/* Tooltip */
|
|
29
|
+
--formitiva-tooltip-color-bg: #282828;
|
|
30
|
+
--formitiva-tooltip-color: #F5F5F5;
|
|
31
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
[data-formitiva-theme="blueprint"] {
|
|
2
|
+
/* Surfaces */
|
|
3
|
+
--formitiva-primary-bg: #f5f8fa;
|
|
4
|
+
--formitiva-secondary-bg: #ffffff;
|
|
5
|
+
--formitiva-input-bg: #ffffff;
|
|
6
|
+
|
|
7
|
+
/* Text */
|
|
8
|
+
--formitiva-text-color: #182026;
|
|
9
|
+
--formitiva-text-muted: #5c7080;
|
|
10
|
+
|
|
11
|
+
/* Borders */
|
|
12
|
+
--formitiva-border-color: #d8e1e8;
|
|
13
|
+
--formitiva-border-hover: #8a9ba8;
|
|
14
|
+
--formitiva-border-focus: #137cbd; /* Blueprint Primary Blue */
|
|
15
|
+
|
|
16
|
+
/* Status */
|
|
17
|
+
--formitiva-error-color: #c23030;
|
|
18
|
+
--formitiva-success-color: #0f9960;
|
|
19
|
+
|
|
20
|
+
/* Interaction */
|
|
21
|
+
--formitiva-option-menu-hover-bg: #ebf1f5;
|
|
22
|
+
|
|
23
|
+
/* Shape */
|
|
24
|
+
--formitiva-border-radius: 4px;
|
|
25
|
+
|
|
26
|
+
/* Elevation */
|
|
27
|
+
--formitiva-shadow:
|
|
28
|
+
0 1px 3px #10161a,
|
|
29
|
+
0 0 0 1px #10161a;
|
|
30
|
+
|
|
31
|
+
/* Buttons */
|
|
32
|
+
--formitiva-button-bg: #137cbd;
|
|
33
|
+
--formitiva-button-text: #ffffff;
|
|
34
|
+
--formitiva-button-border-radius: 4px;
|
|
35
|
+
|
|
36
|
+
/* Density */
|
|
37
|
+
--formitiva-input-padding: 8px 10px;
|
|
38
|
+
--formitiva-font-size: 13px;
|
|
39
|
+
|
|
40
|
+
/* Tooltip */
|
|
41
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
42
|
+
--formitiva-tooltip-color: #ffffff;
|
|
43
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
[data-formitiva-theme="fluent"] {
|
|
2
|
+
/* Surfaces */
|
|
3
|
+
--formitiva-primary-bg: #ffffff;
|
|
4
|
+
--formitiva-secondary-bg: #ffffff;
|
|
5
|
+
--formitiva-input-bg: #f5f6f8;
|
|
6
|
+
|
|
7
|
+
/* Text */
|
|
8
|
+
--formitiva-text-color: #242424;
|
|
9
|
+
--formitiva-text-muted: #616161;
|
|
10
|
+
|
|
11
|
+
/* Borders */
|
|
12
|
+
--formitiva-border-color: #d1d1d6;
|
|
13
|
+
--formitiva-border-hover: #bdbdbd;
|
|
14
|
+
--formitiva-border-focus: #0078d4;
|
|
15
|
+
|
|
16
|
+
/* Accent */
|
|
17
|
+
--formitiva-success-color: #107c10;
|
|
18
|
+
--formitiva-error-color: #d13438;
|
|
19
|
+
|
|
20
|
+
/* Interaction */
|
|
21
|
+
--formitiva-option-menu-hover-bg: #000000;
|
|
22
|
+
|
|
23
|
+
/* Shape */
|
|
24
|
+
--formitiva-border-radius: 6px;
|
|
25
|
+
|
|
26
|
+
/* Shadow */
|
|
27
|
+
--formitiva-shadow:
|
|
28
|
+
0 4px 12px #000000;
|
|
29
|
+
|
|
30
|
+
/* Buttons */
|
|
31
|
+
--formitiva-button-bg: #0078d4;
|
|
32
|
+
--formitiva-button-text: white;
|
|
33
|
+
--formitiva-button-border-radius: 6px;
|
|
34
|
+
|
|
35
|
+
--formitiva-input-padding: 10px 12px;
|
|
36
|
+
|
|
37
|
+
/* Tooltip */
|
|
38
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
39
|
+
--formitiva-tooltip-color: #ffffff;
|
|
40
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
[data-formitiva-theme="glass"] {
|
|
2
|
+
--formitiva-primary-bg: #ffffff40;
|
|
3
|
+
--formitiva-secondary-bg: #ffffff59;
|
|
4
|
+
--formitiva-input-bg: #ffffff59;
|
|
5
|
+
|
|
6
|
+
backdrop-filter: blur(14px);
|
|
7
|
+
-webkit-backdrop-filter: blur(14px);
|
|
8
|
+
|
|
9
|
+
--formitiva-text-color: #111827;
|
|
10
|
+
--formitiva-text-muted: #4b5563;
|
|
11
|
+
|
|
12
|
+
--formitiva-border-color: #ffffff66;
|
|
13
|
+
--formitiva-border-hover: #ffffffb3;
|
|
14
|
+
--formitiva-border-focus: #38bdf8;
|
|
15
|
+
|
|
16
|
+
--formitiva-error-color: #e11d48;
|
|
17
|
+
--formitiva-success-color: #059669;
|
|
18
|
+
|
|
19
|
+
--formitiva-border-radius: 12px;
|
|
20
|
+
--formitiva-shadow: 0 12px 40px #000000;
|
|
21
|
+
|
|
22
|
+
/* Tooltip */
|
|
23
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
24
|
+
--formitiva-tooltip-color: #ffffff;
|
|
25
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
[data-formitiva-theme="accessible"] {
|
|
2
|
+
--formitiva-primary-bg: #ffffff;
|
|
3
|
+
--formitiva-secondary-bg: #ffffff;
|
|
4
|
+
--formitiva-input-bg: #ffffff;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #000000;
|
|
7
|
+
--formitiva-text-muted: #333333;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #000000;
|
|
10
|
+
--formitiva-border-hover: #000000;
|
|
11
|
+
--formitiva-border-focus: #1d4ed8;
|
|
12
|
+
|
|
13
|
+
--formitiva-error-color: #b91c1c;
|
|
14
|
+
--formitiva-success-color: #166534;
|
|
15
|
+
|
|
16
|
+
--formitiva-border-radius: 0;
|
|
17
|
+
--formitiva-shadow: none;
|
|
18
|
+
|
|
19
|
+
/* Tooltip */
|
|
20
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
21
|
+
--formitiva-tooltip-color: #ffffff;
|
|
22
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[data-formitiva-theme="ios"] {
|
|
2
|
+
--formitiva-primary-bg: #f2f2f7;
|
|
3
|
+
--formitiva-secondary-bg: #ffffff;
|
|
4
|
+
--formitiva-input-bg: #ffffff;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #000000;
|
|
7
|
+
--formitiva-text-muted: #8e8e93;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #d1d1d6;
|
|
10
|
+
--formitiva-border-hover: #b3b3b9;
|
|
11
|
+
--formitiva-border-focus: #0a84ff;
|
|
12
|
+
|
|
13
|
+
--formitiva-error-color: #ff3b30;
|
|
14
|
+
--formitiva-success-color: #34c759;
|
|
15
|
+
|
|
16
|
+
--formitiva-option-menu-hover-bg: #000000;
|
|
17
|
+
|
|
18
|
+
--formitiva-border-radius: 14px;
|
|
19
|
+
|
|
20
|
+
--formitiva-shadow:
|
|
21
|
+
0 10px 30px #000000;
|
|
22
|
+
|
|
23
|
+
--formitiva-button-bg: #0a84ff;
|
|
24
|
+
--formitiva-button-text: white;
|
|
25
|
+
--formitiva-button-border-radius: 14px;
|
|
26
|
+
|
|
27
|
+
--formitiva-input-padding: 14px 16px;
|
|
28
|
+
|
|
29
|
+
/* Tooltip */
|
|
30
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
31
|
+
--formitiva-tooltip-color: #ffffff;
|
|
32
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[data-formitiva-theme="macos"] {
|
|
2
|
+
--formitiva-primary-bg: #f5f5f7;
|
|
3
|
+
--formitiva-secondary-bg: #ffffff;
|
|
4
|
+
--formitiva-input-bg: #ffffff;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #111111;
|
|
7
|
+
--formitiva-text-muted: #6e6e73;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #d2d2d7;
|
|
10
|
+
--formitiva-border-hover: #9e9ea2;
|
|
11
|
+
--formitiva-border-focus: #0a84ff;
|
|
12
|
+
|
|
13
|
+
--formitiva-success-color: #34c759;
|
|
14
|
+
--formitiva-error-color: #ff3b30;
|
|
15
|
+
|
|
16
|
+
--formitiva-option-menu-hover-bg: #000000;
|
|
17
|
+
|
|
18
|
+
--formitiva-border-radius: 999px;
|
|
19
|
+
|
|
20
|
+
--formitiva-shadow:
|
|
21
|
+
0 8px 30px #000000;
|
|
22
|
+
|
|
23
|
+
--formitiva-button-bg: #0a84ff;
|
|
24
|
+
--formitiva-button-text: white;
|
|
25
|
+
--formitiva-button-border-radius: 999px;
|
|
26
|
+
|
|
27
|
+
--formitiva-input-padding: 10px 14px;
|
|
28
|
+
|
|
29
|
+
/* Tooltip */
|
|
30
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
31
|
+
--formitiva-tooltip-color: #ffffff;
|
|
32
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[data-formitiva-theme="material-dark"] {
|
|
2
|
+
--formitiva-primary-bg: #121212;
|
|
3
|
+
--formitiva-secondary-bg: #1D1B20;
|
|
4
|
+
--formitiva-input-bg: #2B2830;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #EDE7F6;
|
|
7
|
+
--formitiva-text-muted: #BDB5D7;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #3A3346;
|
|
10
|
+
--formitiva-border-hover: #524364;
|
|
11
|
+
--formitiva-border-focus: #D0BCFF;
|
|
12
|
+
|
|
13
|
+
--formitiva-option-menu-hover-bg: #ffffff;
|
|
14
|
+
|
|
15
|
+
--formitiva-error-color: #F2B8B5;
|
|
16
|
+
--formitiva-success-color: #81C995;
|
|
17
|
+
|
|
18
|
+
--formitiva-border-radius: 12px;
|
|
19
|
+
--formitiva-shadow: 0 8px 30px #000000;
|
|
20
|
+
|
|
21
|
+
--formitiva-button-bg: #D0BCFF;
|
|
22
|
+
--formitiva-button-text: #381E72;
|
|
23
|
+
|
|
24
|
+
/* Tooltip */
|
|
25
|
+
--formitiva-tooltip-color-bg: #282828;
|
|
26
|
+
--formitiva-tooltip-color: #F5F5F5;
|
|
27
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* Material Design 3 Inspired Light Theme */
|
|
2
|
+
[data-formitiva-theme="material"] {
|
|
3
|
+
|
|
4
|
+
/* Surfaces */
|
|
5
|
+
--formitiva-primary-bg: #ffffff;
|
|
6
|
+
--formitiva-secondary-bg: #ffffff;
|
|
7
|
+
--formitiva-input-bg: #f9fafb;
|
|
8
|
+
|
|
9
|
+
/* Text */
|
|
10
|
+
--formitiva-text-color: #1f2937;
|
|
11
|
+
--formitiva-text-muted: #6b7280;
|
|
12
|
+
|
|
13
|
+
/* Material Border System */
|
|
14
|
+
--formitiva-border-color: #e5e7eb;
|
|
15
|
+
--formitiva-border-hover: #cbd5e1;
|
|
16
|
+
--formitiva-border-focus: #6750A4; /* Material Purple Primary */
|
|
17
|
+
|
|
18
|
+
/* State Colors */
|
|
19
|
+
--formitiva-error-color: #B3261E;
|
|
20
|
+
--formitiva-success-color: #1E8E3E;
|
|
21
|
+
|
|
22
|
+
/* Interaction */
|
|
23
|
+
--formitiva-option-menu-hover-bg: #000000;
|
|
24
|
+
|
|
25
|
+
/* Shape */
|
|
26
|
+
--formitiva-border-radius: 12px;
|
|
27
|
+
|
|
28
|
+
/* Elevation */
|
|
29
|
+
--formitiva-shadow:
|
|
30
|
+
0 1px 2px #000000,
|
|
31
|
+
0 2px 6px #000000;
|
|
32
|
+
|
|
33
|
+
/* Buttons */
|
|
34
|
+
--formitiva-button-bg: #6750A4;
|
|
35
|
+
--formitiva-button-text: #ffffff;
|
|
36
|
+
--formitiva-button-border-radius: 999px; /* pill */
|
|
37
|
+
--formitiva-button-shadow:
|
|
38
|
+
0 2px 6px #000000;
|
|
39
|
+
|
|
40
|
+
/* Inputs */
|
|
41
|
+
--formitiva-input-padding: 12px 14px;
|
|
42
|
+
|
|
43
|
+
/* Tooltip */
|
|
44
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
45
|
+
--formitiva-tooltip-color: #ffffff;
|
|
46
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[data-formitiva-theme="midnight-dark"] {
|
|
2
|
+
--formitiva-primary-bg: #0b1120;
|
|
3
|
+
--formitiva-secondary-bg: #111c2d;
|
|
4
|
+
--formitiva-input-bg: #14223a;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #e5f0ff;
|
|
7
|
+
--formitiva-text-muted: #9db2d4;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #1f2b44;
|
|
10
|
+
--formitiva-border-hover: #2c3d5e;
|
|
11
|
+
--formitiva-border-focus: #60a5fa;
|
|
12
|
+
|
|
13
|
+
--formitiva-error-color: #fb7185;
|
|
14
|
+
--formitiva-success-color: #4ade80;
|
|
15
|
+
|
|
16
|
+
--formitiva-option-menu-hover-bg: #ffffff;
|
|
17
|
+
--formitiva-border-radius: 6px;
|
|
18
|
+
|
|
19
|
+
--formitiva-shadow: 0 12px 28px #000000;
|
|
20
|
+
|
|
21
|
+
/* Tooltip */
|
|
22
|
+
--formitiva-tooltip-color-bg: #282828;
|
|
23
|
+
--formitiva-tooltip-color: #F5F5F5;
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[data-formitiva-theme="modern-light"] {
|
|
2
|
+
--formitiva-primary-bg: #ffffff;
|
|
3
|
+
--formitiva-secondary-bg: #fafafa;
|
|
4
|
+
--formitiva-input-bg: #ffffff;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #1f2937;
|
|
7
|
+
--formitiva-text-muted: #6b7280;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #e5e7eb;
|
|
10
|
+
--formitiva-border-hover: #d1d5db;
|
|
11
|
+
--formitiva-border-focus: #2563eb;
|
|
12
|
+
|
|
13
|
+
--formitiva-error-color: #dc2626;
|
|
14
|
+
--formitiva-success-color: #16a34a;
|
|
15
|
+
|
|
16
|
+
--formitiva-option-menu-hover-bg: #f3f4f6;
|
|
17
|
+
--formitiva-border-radius: 6px;
|
|
18
|
+
--formitiva-shadow: 0 8px 24px #000000;
|
|
19
|
+
|
|
20
|
+
/* Tooltip */
|
|
21
|
+
--formitiva-tooltip-color-bg: #3c3c3c;
|
|
22
|
+
--formitiva-tooltip-color: #ffffff;
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
[data-formitiva-theme="neon-cyber-dark"] {
|
|
2
|
+
--formitiva-primary-bg: #0c0f1a;
|
|
3
|
+
--formitiva-secondary-bg: #11172b;
|
|
4
|
+
--formitiva-input-bg: #141c33;
|
|
5
|
+
|
|
6
|
+
--formitiva-text-color: #e0e7ff;
|
|
7
|
+
--formitiva-text-muted: #9ca3af;
|
|
8
|
+
|
|
9
|
+
--formitiva-border-color: #303b63;
|
|
10
|
+
--formitiva-border-hover: #6366f1;
|
|
11
|
+
--formitiva-border-focus: #22d3ee;
|
|
12
|
+
|
|
13
|
+
--formitiva-error-color: #fb7185;
|
|
14
|
+
--formitiva-success-color: #34d399;
|
|
15
|
+
|
|
16
|
+
--formitiva-option-menu-hover-bg: #636cf1;
|
|
17
|
+
--formitiva-border-radius: 10px;
|
|
18
|
+
|
|
19
|
+
--formitiva-shadow: 0 0 20px #636cf1;
|
|
20
|
+
|
|
21
|
+
/* Tooltip */
|
|
22
|
+
--formitiva-tooltip-color-bg: #282828;
|
|
23
|
+
--formitiva-tooltip-color: #F5F5F5;
|
|
24
|
+
}
|