initial commit

This commit is contained in:
2026-03-16 19:54:53 -04:00
commit bfe0e01254
3341 changed files with 483939 additions and 0 deletions

View File

@@ -0,0 +1,44 @@
---
epic: 9
story: 9.5
title: "Embeddable Widget"
status: draft
---
## Epic 9 — Web App (React + WASM)
**Goal:** Zero-install web experience with real-time collaboration.
### Story 9.5: Embeddable Widget
As a content creator or developer,
I want to embed a CalcPad sheet in my website via an iframe,
So that my readers can view or interact with calculations in context.
**Acceptance Criteria:**
**Given** a user has a shared CalcPad sheet
**When** they select "Embed" from the share options
**Then** an `<iframe>` embed code is generated with a copyable snippet
**And** the snippet includes the sheet URL with embed-specific query parameters
**Given** an embed code is placed on a third-party webpage
**When** the `mode=readonly` parameter is set
**Then** the widget displays the sheet with answers but disallows editing
**And** no cursor or text input is active in the iframe
**Given** an embed code is placed on a third-party webpage
**When** the `mode=interactive` parameter is set
**Then** users can edit expressions and see live-updated answers within the iframe
**Given** an embed is configured with a theme override parameter (e.g., `theme=dark`)
**When** the widget renders
**Then** it uses the specified theme regardless of the host page's styling
**Given** an embed is configured with `answers=hidden`
**When** the widget renders
**Then** the answer column is not displayed
**And** only the input expressions are visible
**Given** the iframe is placed in a responsive container
**When** the container width changes (e.g., mobile vs. desktop)
**Then** the widget resizes fluidly without horizontal scrolling or clipping