Files
maternal-app/maternal-web/public/sw.js
Andrei 4e5f1c849e
Some checks failed
CI/CD Pipeline / Lint and Test (push) Has been cancelled
CI/CD Pipeline / E2E Tests (push) Has been cancelled
CI/CD Pipeline / Build Application (push) Has been cancelled
feat: Complete form accessibility enhancement (WCAG 2.1 AA)
Implemented comprehensive form accessibility improvements across all critical forms:

**Accessibility Attributes Added:**
- aria-required="true" on all required form fields
- aria-invalid on fields with validation errors
- aria-describedby linking error messages to inputs
- Unique id attributes on FormHelperText for error association
- role="alert" on error messages for screen reader announcements
- labelId on Select components for proper label association
- noValidate on forms to use custom validation

**Forms Updated:**
1. Login Form (app/(auth)/login/page.tsx)
   - Email and password fields with full ARIA support
   - Error message association with aria-describedby

2. Registration Form (app/(auth)/register/page.tsx)
   - All text fields: name, email, password, DOB, parental email
   - Checkbox fields: Terms, Privacy, COPPA consent
   - Conditional required fields for minors

3. Child Dialog (components/children/ChildDialog.tsx)
   - Name, birthdate, gender fields
   - Dynamic aria-invalid based on validation state

4. Tracking Forms:
   - Feeding form (app/track/feeding/page.tsx)
     - Child selector, side selector, bottle type
     - Food description with required validation
   - Sleep form (app/track/sleep/page.tsx)
     - Child selector, start/end time fields
     - Quality and location selectors

**WCAG 2.1 Compliance:**
-  3.3.2 Labels or Instructions (AA)
-  4.1.3 Status Messages (AA)
-  1.3.1 Info and Relationships (A)
-  3.3.1 Error Identification (A)

**Documentation:**
- Updated REMAINING_FEATURES.md
- Marked Form Accessibility Enhancement as complete
- Status: 79 features completed (57%)

🎉 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-04 13:24:40 +00:00

2 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didnt register its module`);return e}));self.define=(c,i)=>{const n=e||("document"in self?document.currentScript.src:"")||location.href;if(a[n])return;let t={};const r=e=>s(e,n),f={module:{uri:n},exports:t,require:r};a[n]=Promise.all(c.map(e=>f[e]||r(e))).then(e=>(i(...e),t))}}define(["./workbox-4d767a27"],function(e){"use strict";importScripts(),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"/_next/app-build-manifest.json",revision:"080df4e78e9d4c11bdc7cc6ddfb9b530"},{url:"/_next/static/chunks/101-3dd0627909cd6c22.js",revision:"3dd0627909cd6c22"},{url:"/_next/static/chunks/1213-7820689c8a23df1d.js",revision:"7820689c8a23df1d"},{url:"/_next/static/chunks/1233-aa8672e107c5a9d6.js",revision:"aa8672e107c5a9d6"},{url:"/_next/static/chunks/1255-b2f7fd83e387a9e1.js",revision:"b2f7fd83e387a9e1"},{url:"/_next/static/chunks/1280-6ed1b9adf09ef408.js",revision:"6ed1b9adf09ef408"},{url:"/_next/static/chunks/1543-530e0f57f7af68aa.js",revision:"530e0f57f7af68aa"},{url:"/_next/static/chunks/1863-7231108310f72246.js",revision:"7231108310f72246"},{url:"/_next/static/chunks/2262-26293d6453fcc927.js",revision:"26293d6453fcc927"},{url:"/_next/static/chunks/2349-f488a1827d114358.js",revision:"f488a1827d114358"},{url:"/_next/static/chunks/2449-b8a41aa6a7d2d3a4.js",revision:"b8a41aa6a7d2d3a4"},{url:"/_next/static/chunks/2619-04bc32f026a0d946.js",revision:"04bc32f026a0d946"},{url:"/_next/static/chunks/2693-b5dbccaf1ce00a0b.js",revision:"b5dbccaf1ce00a0b"},{url:"/_next/static/chunks/3039-0e9bf08230c8ee7b.js",revision:"0e9bf08230c8ee7b"},{url:"/_next/static/chunks/3505-dc772ce29ac0b276.js",revision:"dc772ce29ac0b276"},{url:"/_next/static/chunks/3762-9e7418e6773035f2.js",revision:"9e7418e6773035f2"},{url:"/_next/static/chunks/3782-ec9e7e72c6eacec1.js",revision:"ec9e7e72c6eacec1"},{url:"/_next/static/chunks/3823-7d22f3a064856b06.js",revision:"7d22f3a064856b06"},{url:"/_next/static/chunks/4546-3be482382b443121.js",revision:"3be482382b443121"},{url:"/_next/static/chunks/4bd1b696-100b9d70ed4e49c1.js",revision:"100b9d70ed4e49c1"},{url:"/_next/static/chunks/5125-c990fc036d2a6ce4.js",revision:"c990fc036d2a6ce4"},{url:"/_next/static/chunks/5380-9004e1ac3565daca.js",revision:"9004e1ac3565daca"},{url:"/_next/static/chunks/5385-7ecda8e4ba984edc.js",revision:"7ecda8e4ba984edc"},{url:"/_next/static/chunks/5482-7535aa0aab02d518.js",revision:"7535aa0aab02d518"},{url:"/_next/static/chunks/5491-75a34ac5f4b1bc71.js",revision:"75a34ac5f4b1bc71"},{url:"/_next/static/chunks/5786-300f6f4e5c444b8e.js",revision:"300f6f4e5c444b8e"},{url:"/_next/static/chunks/6088-c165c565edce02be.js",revision:"c165c565edce02be"},{url:"/_next/static/chunks/6107-8fb7b82c50ce5ddd.js",revision:"8fb7b82c50ce5ddd"},{url:"/_next/static/chunks/6191.e178f0fbe1b1be57.js",revision:"e178f0fbe1b1be57"},{url:"/_next/static/chunks/670-a4ca0f366ee779f5.js",revision:"a4ca0f366ee779f5"},{url:"/_next/static/chunks/6847-ce99bc721adda9c4.js",revision:"ce99bc721adda9c4"},{url:"/_next/static/chunks/6873-ff265086321345c8.js",revision:"ff265086321345c8"},{url:"/_next/static/chunks/6886-40f1779ffff00d58.js",revision:"40f1779ffff00d58"},{url:"/_next/static/chunks/6937.f8d44316fed7bc8e.js",revision:"f8d44316fed7bc8e"},{url:"/_next/static/chunks/710-7e96cbf5d461482a.js",revision:"7e96cbf5d461482a"},{url:"/_next/static/chunks/7359-1abfb9f346309354.js",revision:"1abfb9f346309354"},{url:"/_next/static/chunks/7741-0af8b5a61d8e63d3.js",revision:"0af8b5a61d8e63d3"},{url:"/_next/static/chunks/7855-72c79224370eff7b.js",revision:"72c79224370eff7b"},{url:"/_next/static/chunks/787-032067ae978e62a8.js",revision:"032067ae978e62a8"},{url:"/_next/static/chunks/8126-48064e6c5d5794c7.js",revision:"48064e6c5d5794c7"},{url:"/_next/static/chunks/8241-eaf1b9c6054e9ad8.js",revision:"eaf1b9c6054e9ad8"},{url:"/_next/static/chunks/8466-ffa71cea7998f777.js",revision:"ffa71cea7998f777"},{url:"/_next/static/chunks/8544.74f59dd908783038.js",revision:"74f59dd908783038"},{url:"/_next/static/chunks/8746-92ff3ad56eb06d6e.js",revision:"92ff3ad56eb06d6e"},{url:"/_next/static/chunks/8876-26dea77829b2c9a0.js",revision:"26dea77829b2c9a0"},{url:"/_next/static/chunks/9205-f540995b767df00b.js",revision:"f540995b767df00b"},{url:"/_next/static/chunks/9241-01664d98236f70ec.js",revision:"01664d98236f70ec"},{url:"/_next/static/chunks/9333-17f3dbe8f3dcc2d0.js",revision:"17f3dbe8f3dcc2d0"},{url:"/_next/static/chunks/9378-4fb7500ab3ba2b2b.js",revision:"4fb7500ab3ba2b2b"},{url:"/_next/static/chunks/9392-2887c5e5703ed90a.js",revision:"2887c5e5703ed90a"},{url:"/_next/static/chunks/9397-40b8ac68e22a4d87.js",revision:"40b8ac68e22a4d87"},{url:"/_next/static/chunks/9515-53e74005e71810bd.js",revision:"53e74005e71810bd"},{url:"/_next/static/chunks/9958.804e47ffb4b9facb.js",revision:"804e47ffb4b9facb"},{url:"/_next/static/chunks/app/(auth)/forgot-password/page-f3956296e0f418de.js",revision:"f3956296e0f418de"},{url:"/_next/static/chunks/app/(auth)/login/page-c290f009a57a0d9a.js",revision:"c290f009a57a0d9a"},{url:"/_next/static/chunks/app/(auth)/onboarding/page-066f1de6cbae435f.js",revision:"066f1de6cbae435f"},{url:"/_next/static/chunks/app/(auth)/register/page-99d79df8d3fb5906.js",revision:"99d79df8d3fb5906"},{url:"/_next/static/chunks/app/(auth)/reset-password/page-f08b56ee59c00023.js",revision:"f08b56ee59c00023"},{url:"/_next/static/chunks/app/_not-found/page-95f11f5fe94340f1.js",revision:"95f11f5fe94340f1"},{url:"/_next/static/chunks/app/activities/page-803c6342f86652cb.js",revision:"803c6342f86652cb"},{url:"/_next/static/chunks/app/ai-assistant/page-68138d98581888d6.js",revision:"68138d98581888d6"},{url:"/_next/static/chunks/app/analytics/page-c0af55b402b087ec.js",revision:"c0af55b402b087ec"},{url:"/_next/static/chunks/app/api/ai/chat/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/login/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/password-reset/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/auth/register/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/health/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/tracking/feeding/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/api/voice/transcribe/route-a631d97a33877f8a.js",revision:"a631d97a33877f8a"},{url:"/_next/static/chunks/app/children/page-020e78a4f2f2ffb8.js",revision:"020e78a4f2f2ffb8"},{url:"/_next/static/chunks/app/family/page-f4ebe7393d633cd9.js",revision:"f4ebe7393d633cd9"},{url:"/_next/static/chunks/app/history/page-3804344afe3c11c5.js",revision:"3804344afe3c11c5"},{url:"/_next/static/chunks/app/insights/page-0c0a35f2e3783634.js",revision:"0c0a35f2e3783634"},{url:"/_next/static/chunks/app/layout-ede8015f6caf4558.js",revision:"ede8015f6caf4558"},{url:"/_next/static/chunks/app/legal/cookies/page-eb53496343544f2e.js",revision:"eb53496343544f2e"},{url:"/_next/static/chunks/app/legal/eula/page-97415bf431bee7dc.js",revision:"97415bf431bee7dc"},{url:"/_next/static/chunks/app/legal/page-f6328e2d2b85b2a8.js",revision:"f6328e2d2b85b2a8"},{url:"/_next/static/chunks/app/legal/privacy/page-d17db303fddc4ac3.js",revision:"d17db303fddc4ac3"},{url:"/_next/static/chunks/app/legal/terms/page-b7329caf039d4c12.js",revision:"b7329caf039d4c12"},{url:"/_next/static/chunks/app/logout/page-359b0e371fd55c32.js",revision:"359b0e371fd55c32"},{url:"/_next/static/chunks/app/offline/page-28c005360c2b2736.js",revision:"28c005360c2b2736"},{url:"/_next/static/chunks/app/page-40940db6e91ca4fc.js",revision:"40940db6e91ca4fc"},{url:"/_next/static/chunks/app/settings/page-c00e39af42268336.js",revision:"c00e39af42268336"},{url:"/_next/static/chunks/app/track/activity/page-a7558ac4c5058a89.js",revision:"a7558ac4c5058a89"},{url:"/_next/static/chunks/app/track/diaper/page-d898f94d26805f4a.js",revision:"d898f94d26805f4a"},{url:"/_next/static/chunks/app/track/feeding/page-ddb28427a1d63569.js",revision:"ddb28427a1d63569"},{url:"/_next/static/chunks/app/track/growth/page-198bad49c39628aa.js",revision:"198bad49c39628aa"},{url:"/_next/static/chunks/app/track/medicine/page-50ade42baa820200.js",revision:"50ade42baa820200"},{url:"/_next/static/chunks/app/track/page-5d4eae67640e93ba.js",revision:"5d4eae67640e93ba"},{url:"/_next/static/chunks/app/track/sleep/page-f7424c13bb66a1aa.js",revision:"f7424c13bb66a1aa"},{url:"/_next/static/chunks/framework-bd61ec64032c2de7.js",revision:"bd61ec64032c2de7"},{url:"/_next/static/chunks/main-520e5ec2d671abe7.js",revision:"520e5ec2d671abe7"},{url:"/_next/static/chunks/main-app-02fc3649960ba6c7.js",revision:"02fc3649960ba6c7"},{url:"/_next/static/chunks/pages/_app-4b3fb5e477a0267f.js",revision:"4b3fb5e477a0267f"},{url:"/_next/static/chunks/pages/_error-c970d8b55ace1b48.js",revision:"c970d8b55ace1b48"},{url:"/_next/static/chunks/polyfills-42372ed130431b0a.js",revision:"846118c33b2c0e922d7b3a7676f81f6f"},{url:"/_next/static/chunks/webpack-d8fa80da6c978ac2.js",revision:"d8fa80da6c978ac2"},{url:"/_next/static/css/0e32a1f7dc037ce2.css",revision:"0e32a1f7dc037ce2"},{url:"/_next/static/media/19cfc7226ec3afaa-s.woff2",revision:"9dda5cfc9a46f256d0e131bb535e46f8"},{url:"/_next/static/media/21350d82a1f187e9-s.woff2",revision:"4e2553027f1d60eff32898367dd4d541"},{url:"/_next/static/media/8e9860b6e62d6359-s.woff2",revision:"01ba6c2a184b8cba08b0d57167664d75"},{url:"/_next/static/media/ba9851c3c22cd980-s.woff2",revision:"9e494903d6b0ffec1a1e14d34427d44d"},{url:"/_next/static/media/c5fe6dc8356a8c31-s.woff2",revision:"027a89e9ab733a145db70f09b8a18b42"},{url:"/_next/static/media/df0a9ae256c0569c-s.woff2",revision:"d54db44de5ccb18886ece2fda72bdfe0"},{url:"/_next/static/media/e4af272ccee01ff0-s.p.woff2",revision:"65850a373e258f1c897a2b3d75eb74de"},{url:"/_next/static/tSoPTYkImL66AB7xWD3Xg/_buildManifest.js",revision:"eed673ddfae39d41b2286ad066c2e53c"},{url:"/_next/static/tSoPTYkImL66AB7xWD3Xg/_ssgManifest.js",revision:"b6652df95db52feb4daf4eca35380933"},{url:"/apple-touch-icon.png",revision:"fa2d4d791b90148a18d49bc3bfd7a43a"},{url:"/favicon-16x16.png",revision:"db2da3355c89a6149f6d9ee35ebe6bf3"},{url:"/favicon-32x32.png",revision:"0fd88d56aa584bd0546d05ffc63ef777"},{url:"/icon-192x192.png",revision:"b8ef7f117472c4399cceffea644eb8bd"},{url:"/icons/icon-128x128.png",revision:"96cff3b189d9c1daa1edf470290a90cd"},{url:"/icons/icon-144x144.png",revision:"b627c346c431d7e306005aec5f51baff"},{url:"/icons/icon-152x152.png",revision:"012071830c13d310e51f833baed531af"},{url:"/icons/icon-192x192.png",revision:"dfb20132ddb628237eccd4b0e2ee4aaa"},{url:"/icons/icon-384x384.png",revision:"d032b25376232878a2a29b5688992a8d"},{url:"/icons/icon-512x512.png",revision:"ffda0043571d60956f4e321cba706670"},{url:"/icons/icon-72x72.png",revision:"cc89e74126e7e1109f0186774b3c0d77"},{url:"/icons/icon-96x96.png",revision:"32813cdad5b636fc09eec01c7d705936"},{url:"/manifest.json",revision:"5cbf1ecd33b05c4772688ce7d00c2c23"},{url:"/next.svg",revision:"8e061864f388b47f33a1c3780831193e"},{url:"/vercel.svg",revision:"61c6b19abff40ea7acd577be818f3976"}],{ignoreURLParametersMatching:[]}),e.cleanupOutdatedCaches(),e.registerRoute("/",new e.NetworkFirst({cacheName:"start-url",plugins:[{cacheWillUpdate:async({request:e,response:a,event:s,state:c})=>a&&"opaqueredirect"===a.type?new Response(a.body,{status:200,statusText:"OK",headers:a.headers}):a}]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:gstatic)\.com\/.*/i,new e.CacheFirst({cacheName:"google-fonts-webfonts",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:31536e3})]}),"GET"),e.registerRoute(/^https:\/\/fonts\.(?:googleapis)\.com\/.*/i,new e.StaleWhileRevalidate({cacheName:"google-fonts-stylesheets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:eot|otf|ttc|ttf|woff|woff2|font.css)$/i,new e.StaleWhileRevalidate({cacheName:"static-font-assets",plugins:[new e.ExpirationPlugin({maxEntries:4,maxAgeSeconds:604800})]}),"GET"),e.registerRoute(/\.(?:jpg|jpeg|gif|png|svg|ico|webp)$/i,new e.StaleWhileRevalidate({cacheName:"static-image-assets",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/image\?url=.+$/i,new e.StaleWhileRevalidate({cacheName:"next-image",plugins:[new e.ExpirationPlugin({maxEntries:64,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp3|wav|ogg)$/i,new e.CacheFirst({cacheName:"static-audio-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:mp4)$/i,new e.CacheFirst({cacheName:"static-video-assets",plugins:[new e.RangeRequestsPlugin,new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:js)$/i,new e.StaleWhileRevalidate({cacheName:"static-js-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\.(?:css|less)$/i,new e.StaleWhileRevalidate({cacheName:"static-style-assets",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/_next\/data\/.+\/.+\.json$/i,new e.StaleWhileRevalidate({cacheName:"next-data",plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/\/api\/.*$/i,new e.NetworkFirst({cacheName:"apis",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:16,maxAgeSeconds:86400})]}),"GET"),e.registerRoute(/.*/i,new e.NetworkFirst({cacheName:"others",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:32,maxAgeSeconds:86400})]}),"GET")});