import { CharacterHints } from "@/utils/PasswordGenerator"; import { ExtensionOptions, GeneratorOptions, useStorage } from "@/utils/storage"; import * as fui from "@fluentui/react-components"; import { ArrowUndoRegular, SettingsRegular } from "@fluentui/react-icons"; import { useStyles } from "./SettingsSection.styles"; // FIXME: Remove ts-ignore comments once slots override fix is released // Tracker: https://github.com/microsoft/fluentui/issues/27090 const infoLabel = (content: string, hint: string) => ({ children: (_: unknown, slotProps: fui.LabelProps) => ( { content } ) }); const defaultOptions = { generator: new GeneratorOptions(), extension: new ExtensionOptions() }; const SettingsSection: React.FC = () => { const { extOptions, generatorOptions, updateStorage } = useStorage(); const cls = useStyles(); const resetRange = useCallback(() => { updateStorage({ MinLength: defaultOptions.extension.MinLength, MaxLength: defaultOptions.extension.MaxLength }); }, []); const setOption = (option: keyof (GeneratorOptions & ExtensionOptions)) => (_: unknown, args: fui.CheckboxOnChangeData) => updateStorage({ [option]: args.checked }); const updateNumberField = (key: keyof (ExtensionOptions & GeneratorOptions), defaultValue: number) => (_: unknown, e: fui.InputOnChangeData): void => { if (e.value.length >= 1) { const value = parseInt(e.value); if (!isNaN(value) && value >= 0) updateStorage({ [key]: value }); } else updateStorage({ [key]: defaultValue }); }; return ( }>{ i18n.t("settings.title") } } onClick={ resetRange } /> { i18n.t("settings.include.title") } { i18n.t("settings.exclude.title") } ); }; export default SettingsSection;