+
Interactive Example
+
Click the button to toggle between orange (regular) and gray (bold) states:
+
{
+ setIsClicked(true);
+ // Reset after 3 seconds to show the transition
+ setTimeout(() => setIsClicked(false), 3000);
+ }}
+ />
+ {isClicked && (
+
+ ✓ Button clicked! State will reset in 3 seconds...
+
+ )}
+
+ );
+};
+
+Interactive.play = async ({ canvasElement }) => {
+ const canvas = within(canvasElement);
+ const button = canvas.getByRole("button", { name: /submit/i });
+
+ // Initially button should not have clicked class
+ expect(button).not.toBeDisabled();
+ expect(button).not.toHaveClass("var-submit-button--clicked");
+
+ // Click the button
+ await userEvent.click(button);
+
+ // After click, button should show clicked state (gray, bold)
+ await waitFor(() => {
+ expect(button).toHaveClass("var-submit-button--clicked");
+ });
+
+ // Success message should appear
+ await waitFor(() => {
+ expect(canvas.getByTestId("success-message")).toBeInTheDocument();
+ });
+};
+
+export const InFormContext = () => {
+ const [isClicked, setIsClicked] = useState(false);
+
+ const handleSubmit = (e) => {
+ e.preventDefault();
+ setIsClicked(true);
+ // Reset after 3 seconds
+ setTimeout(() => setIsClicked(false), 3000);
+ };
+
+ return (
+