Move UI to BoardUI with slate + salmon theme; add PDF plan export
- Adopt BoardUI (Pro init): theme tokens, Inter, .dark mode, Button, SegmentedControl, Meter, Skeleton and ThemeToggle; remap the app's color aliases onto BoardUI tokens and swap lucide for Remix icons - Retint BoardUI's neutral ramp to cool slate with a salmon accent; drop the dotted background; raise muted text contrast - Simplify the landing page and remove the overlap explorer - Planner: explicit "I have this" toggle on grocery lines, pantry panel above the menu with the staples list spelled out, sticky aisle header fix, and a "Download PDF" plan export (jsPDF, lazy-loaded) - Recipes: replace the family cabbage soup with Cade's Cabbage Soup (adds Bone-In Ham Steak to the catalog); remove Ham, Bean & Cabbage Soup - Remove unused BoardUI components, dependencies and exports Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
b02c7a024b
commit
df5dd3a70e
56 changed files with 4749 additions and 788 deletions
|
|
@ -20,7 +20,7 @@ const FRACTIONS: [number, string][] = [
|
|||
];
|
||||
|
||||
/** 0.75 → "¾", 1.5 → "1½", 2.33 → "2⅓", 13.2 → "13". */
|
||||
export function formatQuantity(value: number): string {
|
||||
function formatQuantity(value: number): string {
|
||||
if (value >= 10) return String(Math.round(value));
|
||||
const whole = Math.floor(value);
|
||||
const fraction = value - whole;
|
||||
|
|
@ -30,7 +30,7 @@ export function formatQuantity(value: number): string {
|
|||
return `${total > 0 ? total : ""}${glyph}` || "0";
|
||||
}
|
||||
|
||||
export interface IngredientLine {
|
||||
interface IngredientLine {
|
||||
quantity: string;
|
||||
/** e.g. "cup", "lb", or "×" for counted items. */
|
||||
unit: string;
|
||||
|
|
@ -39,7 +39,7 @@ export interface IngredientLine {
|
|||
detail?: string;
|
||||
}
|
||||
|
||||
export function ingredientLine(ingredient: RecipeIngredient, scale: number): IngredientLine {
|
||||
function ingredientLine(ingredient: RecipeIngredient, scale: number): IngredientLine {
|
||||
const item = CATALOG_BY_ID.get(ingredient.itemId);
|
||||
const name = item?.name ?? ingredient.itemId;
|
||||
const quantity = formatQuantity(ingredient.amount * scale);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue