Introduce a settings modal (opened from the kebab menu) with a rules edition selector for condition tooltip descriptions and a theme picker replacing the inline cycle button. About half the conditions have meaningful mechanical differences between editions. - Add description5e field to ConditionDefinition with 5e (2014) text - Add RulesEditionProvider context with localStorage persistence - Create SettingsModal with Conditions and Theme sections - Wire condition tooltips to edition-aware descriptions - Fix 6 inaccurate 5.5e condition descriptions - Update spec 003 with stories CC-3, CC-8 and FR-095–FR-102 Closes #12 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
25 lines
729 B
TypeScript
25 lines
729 B
TypeScript
import { createContext, type ReactNode, useContext } from "react";
|
|
import { useRulesEdition } from "../hooks/use-rules-edition.js";
|
|
|
|
type RulesEditionContextValue = ReturnType<typeof useRulesEdition>;
|
|
|
|
const RulesEditionContext = createContext<RulesEditionContextValue | null>(
|
|
null,
|
|
);
|
|
|
|
export function RulesEditionProvider({ children }: { children: ReactNode }) {
|
|
const value = useRulesEdition();
|
|
return (
|
|
<RulesEditionContext.Provider value={value}>
|
|
{children}
|
|
</RulesEditionContext.Provider>
|
|
);
|
|
}
|
|
|
|
export function useRulesEditionContext(): RulesEditionContextValue {
|
|
const ctx = useContext(RulesEditionContext);
|
|
if (!ctx)
|
|
throw new Error("useRulesEditionContext requires RulesEditionProvider");
|
|
return ctx;
|
|
}
|