feat: Update ingredient units and improve layout responsiveness across various components

This commit is contained in:
Nils-Johan Gynther
2026-04-12 11:08:15 +02:00
parent 3d4994f24d
commit b795bbfc71
12 changed files with 39 additions and 9 deletions
@@ -48,7 +48,7 @@ export abstract class RecipeParser {
const knownUnits = [ const knownUnits = [
'g', 'kg', 'hg', 'mg', 'ml', 'dl', 'l', 'tl', 'g', 'kg', 'hg', 'mg', 'ml', 'dl', 'l', 'tl',
'st', 'tsk', 'msk', 'krm', 'matsked', 'tesked', 'st', 'tsk', 'msk', 'krm', 'matsked', 'tesked',
'pris', 'portion', 'burk', 'förp', 'paket', 'pris', 'portion', 'port', 'burk', 'förp', 'paket', 'efter smak', 'klyfta',
]; ];
// Extrahera parentetisk info // Extrahera parentetisk info
+1 -1
View File
@@ -582,7 +582,7 @@ function parseIngredientLine(text: string): ParsedIngredient {
const knownUnits = [ const knownUnits = [
'g', 'kg', 'hg', 'mg', 'ml', 'dl', 'l', 'tl', 'g', 'kg', 'hg', 'mg', 'ml', 'dl', 'l', 'tl',
'st', 'tsk', 'msk', 'krm', 'matsled', 'tesled', 'st', 'tsk', 'msk', 'krm', 'matsled', 'tesled',
'pris', 'portion', 'burk', 'förp', 'paket', 'pris', 'portion', 'port', 'burk', 'förp', 'paket', 'efter smak', 'klyfta',
]; ];
// Extrahera eventuell parentes-not i slutet // Extrahera eventuell parentes-not i slutet
@@ -229,7 +229,7 @@ export default function MergePreviewForm({ products }: Props) {
style={{ style={{
display: 'grid', display: 'grid',
gap: '1rem', gap: '1rem',
gridTemplateColumns: '1fr 1fr', gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
}} }}
> >
<article style={{ border: '1px solid #ddd', borderRadius: '8px', padding: '1rem' }}> <article style={{ border: '1px solid #ddd', borderRadius: '8px', padding: '1rem' }}>
@@ -46,6 +46,10 @@ const UNIT_OPTIONS = [
{ value: 'st', label: 'st (styck)' }, { value: 'st', label: 'st (styck)' },
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
const LOCATION_OPTIONS = [ const LOCATION_OPTIONS = [
+4
View File
@@ -24,6 +24,10 @@ export default function InventoryForm({ products }: Props) {
{ value: 'st', label: 'st (styck)' }, { value: 'st', label: 'st (styck)' },
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
const LOCATION_OPTIONS = [ const LOCATION_OPTIONS = [
+1 -1
View File
@@ -117,7 +117,7 @@ export default async function InventoryPage({ searchParams }: InventoryPageProps
style={{ style={{
display: 'grid', display: 'grid',
gap: '1rem', gap: '1rem',
gridTemplateColumns: '1fr 1fr', gridTemplateColumns: 'repeat(auto-fit, minmax(280px, 1fr))',
alignItems: 'start', alignItems: 'start',
}} }}
> >
+4
View File
@@ -162,6 +162,10 @@ export default function EditRecipePage() {
{ value: 'st', label: 'st (styck)' }, { value: 'st', label: 'st (styck)' },
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
const LOCATION_OPTIONS = [ const LOCATION_OPTIONS = [
@@ -127,6 +127,10 @@ export default function CreateRecipePage() {
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'krm', label: 'krm (kryddmått)' }, { value: 'krm', label: 'krm (kryddmått)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
const LOCATION_OPTIONS = [ const LOCATION_OPTIONS = [
+1 -1
View File
@@ -156,7 +156,7 @@ export default function CreateRecipePage() {
<div <div
style={{ style={{
display: 'grid', display: 'grid',
gridTemplateColumns: '1fr 1fr', gridTemplateColumns: 'repeat(auto-fit, minmax(350px, 1fr))',
gap: '1.5rem', gap: '1.5rem',
}} }}
> >
@@ -67,7 +67,7 @@ export default function ImportFilePage() {
<div <div
style={{ style={{
display: 'grid', display: 'grid',
gridTemplateColumns: '1fr 1fr', gridTemplateColumns: 'repeat(auto-fit, minmax(350px, 1fr))',
gap: '1.5rem', gap: '1.5rem',
marginBottom: '2rem', marginBottom: '2rem',
}} }}
@@ -45,6 +45,10 @@ const UNIT_OPTIONS = [
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'krm', label: 'krm (kryddmått)' }, { value: 'krm', label: 'krm (kryddmått)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
type Step = 'input' | 'review' | 'saving'; type Step = 'input' | 'review' | 'saving';
+13 -3
View File
@@ -44,6 +44,10 @@ const UNIT_OPTIONS = [
{ value: 'tsk', label: 'tsk (tesked)' }, { value: 'tsk', label: 'tsk (tesked)' },
{ value: 'msk', label: 'msk (matsked)' }, { value: 'msk', label: 'msk (matsked)' },
{ value: 'krm', label: 'krm (kryddmått)' }, { value: 'krm', label: 'krm (kryddmått)' },
{ value: 'port', label: 'port (portioner)' },
{ value: 'efter smak', label: 'Efter smak' },
{ value: 'förp', label: 'förp (förpackning)' },
{ value: 'klyfta', label: 'klyfta' },
]; ];
type Step = 'input' | 'review' | 'saving'; type Step = 'input' | 'review' | 'saving';
@@ -311,7 +315,7 @@ Stek löken i lite smör. Tillsätt köttfärsen...`}</pre>
{/* STEG 2: Granskning */} {/* STEG 2: Granskning */}
{step === 'review' && parsed && ( {step === 'review' && parsed && (
<section style={{ display: 'grid', gridTemplateColumns: '2fr 1fr', gap: '1.5rem' }}> <section style={{ display: 'grid', gridTemplateColumns: showDebugPanel ? '7fr 3fr' : '1fr', gap: '1.5rem' }}>
{/* Vänster: Receptdetaljer + Ingredienser */} {/* Vänster: Receptdetaljer + Ingredienser */}
<div style={{ display: 'grid', gap: '1.5rem' }}> <div style={{ display: 'grid', gap: '1.5rem' }}>
{/* Receptdetaljer */} {/* Receptdetaljer */}
@@ -529,10 +533,13 @@ Stek löken i lite smör. Tillsätt köttfärsen...`}</pre>
padding: '0.5rem', padding: '0.5rem',
fontSize: '0.7rem', fontSize: '0.7rem',
overflow: 'auto', overflow: 'auto',
maxHeight: '200px', maxHeight: '250px',
margin: '0.5rem 0 0', margin: '0.5rem 0 0',
fontFamily: 'monospace', fontFamily: 'monospace',
color: '#333', color: '#333',
wordBreak: 'break-word',
whiteSpace: 'pre-wrap',
overflowWrap: 'break-word',
}} }}
> >
{markdown} {markdown}
@@ -558,10 +565,13 @@ Stek löken i lite smör. Tillsätt köttfärsen...`}</pre>
padding: '0.5rem', padding: '0.5rem',
fontSize: '0.65rem', fontSize: '0.65rem',
overflow: 'auto', overflow: 'auto',
maxHeight: '200px', maxHeight: '250px',
margin: '0.5rem 0 0', margin: '0.5rem 0 0',
fontFamily: 'monospace', fontFamily: 'monospace',
color: '#333', color: '#333',
wordBreak: 'break-word',
whiteSpace: 'pre-wrap',
overflowWrap: 'break-word',
}} }}
> >
{JSON.stringify(parsed, null, 2)} {JSON.stringify(parsed, null, 2)}