super-time-tracker-ui 0.1.21 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/standalone/next-output/BUILD_ID +1 -1
- package/dist/standalone/next-output/build-manifest.json +3 -3
- package/dist/standalone/next-output/server/app/_global-error.html +1 -1
- package/dist/standalone/next-output/server/app/_global-error.rsc +1 -1
- package/dist/standalone/next-output/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/standalone/next-output/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/standalone/next-output/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/standalone/next-output/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/standalone/next-output/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/standalone/next-output/server/app/_not-found/page.js +1 -1
- package/dist/standalone/next-output/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/login/page.js +1 -1
- package/dist/standalone/next-output/server/app/login/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/login/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/offline/page.js +1 -1
- package/dist/standalone/next-output/server/app/offline/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/offline/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/page.js +1 -1
- package/dist/standalone/next-output/server/app/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/pomodoro/page.js +1 -1
- package/dist/standalone/next-output/server/app/pomodoro/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/pomodoro/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/register/page.js +1 -1
- package/dist/standalone/next-output/server/app/register/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/register/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/reporting/page.js +1 -1
- package/dist/standalone/next-output/server/app/reporting/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/reporting/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/ai-suggestions/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/ai-suggestions/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/ai-suggestions/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/cloud-sync/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/cloud-sync/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/cloud-sync/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/data/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/data/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/data/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/display/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/display/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/display/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/goals/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/goals/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/goals/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/pomodoro/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/pomodoro/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/pomodoro/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/settings/tags/page.js +1 -1
- package/dist/standalone/next-output/server/app/settings/tags/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/settings/tags/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/sheets/page.js +1 -1
- package/dist/standalone/next-output/server/app/sheets/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/sheets/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/app/today/page.js +1 -1
- package/dist/standalone/next-output/server/app/today/page.js.nft.json +1 -1
- package/dist/standalone/next-output/server/app/today/page_client-reference-manifest.js +1 -1
- package/dist/standalone/next-output/server/chunks/[root-of-the-server]__0.ztg_g._.js +1 -1
- package/dist/standalone/next-output/server/chunks/[root-of-the-server]__0a7wn1j._.js +1 -1
- package/dist/standalone/next-output/server/chunks/ssr/[root-of-the-server]__0bowsf1._.js +3 -0
- package/dist/standalone/next-output/server/chunks/ssr/[root-of-the-server]__0xenuid._.js +3 -0
- package/dist/standalone/next-output/server/chunks/ssr/_0a899fn._.js +1 -1
- package/dist/standalone/next-output/server/chunks/ssr/_0r_7~d.._.js +1 -1
- package/dist/standalone/next-output/server/chunks/ssr/_138a8mc._.js +1 -1
- package/dist/standalone/next-output/server/middleware-build-manifest.js +3 -3
- package/dist/standalone/next-output/server/middleware-manifest.json +1 -1
- package/dist/standalone/next-output/server/pages/500.html +1 -1
- package/dist/standalone/next-output/static/chunks/{0jf22qg9qg-gc.js → 0d_y_tcdl.atr.js} +1 -1
- package/dist/standalone/next-output/static/chunks/{0yl69md~v-u0j.js → 0lik.lmxlumgs.js} +1 -1
- package/dist/standalone/next-output/static/chunks/{04zgidsnwp2rr.js → 0nkl588xh~5.i.js} +4 -4
- package/dist/standalone/next-output/static/chunks/170g.yxigj5~6.js +1 -0
- package/dist/standalone/package.json +1 -1
- package/dist/standalone/public/icons/android-chrome-192x192.png +0 -0
- package/dist/standalone/public/icons/android-chrome-512x512.png +0 -0
- package/dist/standalone/public/icons/apple-touch-icon.png +0 -0
- package/dist/standalone/public/icons/favicon-16x16.png +0 -0
- package/dist/standalone/public/icons/favicon-32x32.png +0 -0
- package/dist/standalone/public/icons/favicon.ico +0 -0
- package/dist/standalone/public/icons/site.webmanifest +1 -0
- package/dist/standalone/public/manifest.webmanifest +6 -6
- package/dist/standalone/public/sw.js +7 -4
- package/package.json +1 -1
- package/dist/standalone/next-output/server/chunks/ssr/[root-of-the-server]__0t-0r_3._.js +0 -3
- package/dist/standalone/next-output/server/chunks/ssr/[root-of-the-server]__12y1a.s._.js +0 -3
- package/dist/standalone/next-output/static/chunks/0d7jhm_3u1qc8.js +0 -1
- package/dist/standalone/public/icons/pwa-icon-192.svg +0 -6
- package/dist/standalone/public/icons/pwa-icon-512.svg +0 -6
- /package/dist/standalone/next-output/static/{uDCGSwlW4NbB5dHgt5rHB → wZOpAni2OS7_9AC_2kAVd}/_buildManifest.js +0 -0
- /package/dist/standalone/next-output/static/{uDCGSwlW4NbB5dHgt5rHB → wZOpAni2OS7_9AC_2kAVd}/_clientMiddlewareManifest.js +0 -0
- /package/dist/standalone/next-output/static/{uDCGSwlW4NbB5dHgt5rHB → wZOpAni2OS7_9AC_2kAVd}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,90503,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},31047,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={DecodeError:function(){return h},MiddlewareNotFoundError:function(){return v},MissingStaticPage:function(){return w},NormalizeError:function(){return b},PageNotFoundError:function(){return y},SP:function(){return p},ST:function(){return g},WEB_VITALS:function(){return o},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return f},loadGetInitialProps:function(){return m},normalizeRepeatedSlashes:function(){return _},stringifyError:function(){return x}};for(var s in n)Object.defineProperty(t,s,{enumerable:!0,get:n[s]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let r,t=!1;return(...n)=>(t||(t=!0,r=e(...n)),r)}let a=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>a.test(e);function u(){let{protocol:e,hostname:r,port:t}=window.location;return`${e}//${r}${t?":"+t:""}`}function c(){let{href:e}=window.location,r=u();return e.substring(r.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function _(e){let r=e.split("?");return r[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(r[1]?`?${r.slice(1).join("?")}`:"")}async function m(e,r){let t=r.res||r.ctx&&r.ctx.res;if(!e.getInitialProps)return r.ctx&&r.Component?{pageProps:await m(r.Component,r.ctx)}:{};let n=await e.getInitialProps(r);if(t&&f(t))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let p="u">typeof performance,g=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class b extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class w extends Error{constructor(e,r){super(),this.message=`Failed to load static file for page: ${e} ${r}`}}class v extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function x(e){return JSON.stringify({message:e.message,stack:e.stack})}},78677,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return a}};for(var s in n)Object.defineProperty(t,s,{enumerable:!0,get:n[s]});function o(e){let r={};for(let[t,n]of e.entries()){let e=r[t];void 0===e?r[t]=n:Array.isArray(e)?e.push(n):r[t]=[e,n]}return r}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let r=new URLSearchParams;for(let[t,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)r.append(t,i(e));else r.set(t,i(n));return r}function l(e,...r){for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}},52663,e=>{"use strict";e.s(["get_button_class_name",0,function(e="ghost",r="default"){return`cursor-pointer appearance-none rounded-[0.65rem] border border-transparent font-inherit font-semibold disabled:cursor-not-allowed disabled:opacity-55 ${({default:"px-3.5 py-2.5",small:"px-2.5 py-1.5 text-xs"})[r]} ${({primary:"border-accent-border bg-[var(--accent)] text-[var(--accent-text-on)]",ghost:"border-panel-border bg-ghost-bg text-inherit",danger:"border-danger-border bg-danger-soft text-danger","danger-solid":"border-danger-border bg-[var(--danger-solid)] text-[var(--danger-text-on)]"})[e]}`}])},14974,e=>{"use strict";var r=e.i(54710),t=e.i(29158),n=e.i(52663);function s({options:e,on_confirm:o,on_cancel:i}){let a=(0,t.useId)(),l=(0,t.useRef)(null),{cancelLabel:u="Cancel",confirmLabel:c="Confirm",message:d,title:f,variant:_="default"}=e;return(0,t.useEffect)(()=>{l.current?.focus();let e=e=>{"Escape"===e.key&&i()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[i]),(0,r.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,r.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:i}),(0,r.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":a,className:"relative z-1 w-full max-w-md rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,r.jsx)("h2",{id:a,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:f}),(0,r.jsx)("p",{className:"m-0 mt-2 text-[0.9rem] leading-relaxed text-muted",children:d}),(0,r.jsxs)("div",{className:"mt-5 flex flex-wrap justify-end gap-2",children:[(0,r.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("ghost"),onClick:i,children:u}),(0,r.jsx)("button",{ref:l,type:"button",className:(0,n.get_button_class_name)("danger"===_?"danger":"primary"),onClick:o,children:c})]})]})]})}let o=(0,t.createContext)(null);e.s(["ConfirmDialogProvider",0,function({children:e}){let[n,i]=(0,t.useState)(null),a=(0,t.useCallback)(e=>new Promise(r=>{i({options:e,resolve:r})}),[]),l=e=>{n?.resolve(e),i(null)};return(0,r.jsxs)(o.Provider,{value:{confirm:a},children:[e,null!==n?(0,r.jsx)(s,{options:n.options,on_confirm:()=>l(!0),on_cancel:()=>l(!1)}):null]})},"use_confirm_dialog",0,function(){let e=(0,t.useContext)(o);if(null===e)throw Error("use_confirm_dialog must be used within ConfirmDialogProvider");return e}],14974)},13349,e=>{"use strict";var r=e.i(410);e.s(["is_greedy_cloud_sync_enabled",0,function(){return"true"===r.greedy_cloud_sync_preference.read()}])},56996,8654,76900,e=>{"use strict";var r=e.i(34869),t=e.i(92629);let n=(0,r.create_ui_preference_store)({storage_key:t.FOCUS_NUDGES_ENABLED_STORAGE_KEY,default_value:t.FOCUS_NUDGES_ENABLED_DEFAULT,is_valid:e=>"true"===e||"false"===e});e.s(["focus_nudges_enabled_preference",0,n],56996);let s=(0,r.create_ui_preference_store)({storage_key:t.NO_LOG_REMINDER_MINUTES_STORAGE_KEY,default_value:t.NO_LOG_REMINDER_MINUTES_DEFAULT,is_valid:e=>{if(!/^\d+$/.test(e))return!1;let r=Number.parseInt(e,10);return r>=5&&r<=240}});e.s(["no_log_reminder_minutes_preference",0,s],8654);let o=(0,r.create_ui_preference_store)({storage_key:t.OVERWORK_ALERT_HOURS_STORAGE_KEY,default_value:t.OVERWORK_ALERT_HOURS_DEFAULT,is_valid:e=>{if(!/^\d+$/.test(e))return!1;let r=Number.parseInt(e,10);return r>=1&&r<=16}});e.s(["overwork_alert_hours_preference",0,o],76900)},80808,71122,e=>{"use strict";var r=e.i(34869),t=e.i(92629);let n=/^([01]\d|2[0-3]):[0-5]\d$/,s=(0,r.create_ui_preference_store)({storage_key:t.WORK_HOURS_END_STORAGE_KEY,default_value:t.WORK_HOURS_END_DEFAULT,is_valid:e=>n.test(e)});e.s(["work_hours_end_preference",0,s],80808);let o=/^([01]\d|2[0-3]):[0-5]\d$/,i=(0,r.create_ui_preference_store)({storage_key:t.WORK_HOURS_START_STORAGE_KEY,default_value:t.WORK_HOURS_START_DEFAULT,is_valid:e=>o.test(e)});e.s(["work_hours_start_preference",0,i],71122)},83391,34995,99211,e=>{"use strict";var r=e.i(54710),t=e.i(29158);function n({label:e,description:t,compact:s}){return(0,r.jsxs)("div",{className:"contents",children:[(0,r.jsx)("dt",{className:"m-0",children:(0,r.jsx)("kbd",{className:`inline-block min-w-7 rounded border border-panel-border bg-surface text-center font-mono font-semibold text-foreground ${s?"px-1 py-0.5 text-[0.7rem]":"px-1.5 py-0.5 text-[0.78rem]"}`,children:e})}),(0,r.jsx)("dd",{className:`m-0 self-center leading-snug text-muted ${s?"text-[0.8rem]":"text-[0.9rem]"}`,children:t})]})}function s({sections:e,compact:t=!1}){return(0,r.jsx)("div",{className:`flex flex-col ${t?"gap-2.5":"gap-4"}`,children:e.map(e=>(0,r.jsxs)("section",{children:[(0,r.jsx)("h3",{className:`m-0 font-semibold uppercase tracking-[0.04em] text-muted ${t?"text-[0.65rem]":"text-[0.72rem]"}`,children:e.title}),(0,r.jsx)("dl",{className:`m-0 grid grid-cols-[auto_minmax(0,1fr)] ${t?"mt-1.5 gap-x-3 gap-y-1.5":"mt-2 gap-x-4 gap-y-2"}`,children:e.entries.map(s=>(0,r.jsx)(n,{label:s.label,description:s.description,compact:t},`${e.title}-${s.label}-${s.description}`))})]},e.title))})}var o=e.i(52663);e.s(["KeyboardShortcutsDialog",0,function({sections:e,on_close:n}){let i=(0,t.useId)(),a=(0,t.useRef)(null);return(0,t.useEffect)(()=>{a.current?.focus();let e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[n]),(0,r.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,r.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:n}),(0,r.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":i,className:"relative z-1 w-full max-w-lg rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,r.jsx)("h2",{id:i,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:"Keyboard shortcuts"}),(0,r.jsx)("div",{className:"mt-4 max-h-[min(28rem,70vh)] overflow-y-auto pr-1",children:(0,r.jsx)(s,{sections:e})}),(0,r.jsx)("div",{className:"mt-5 flex justify-end",children:(0,r.jsx)("button",{ref:a,type:"button",className:(0,o.get_button_class_name)("primary"),onClick:n,children:"Close"})})]})]})}],83391),e.s(["get_app_keyboard_shortcut_sections",0,function(){return[{title:"General",entries:[{label:"?",description:"Show keyboard shortcuts"}]}]}],34995);var i=e.i(72074);e.s(["use_document_keyboard_shortcuts",0,function(e){let r=(0,t.useRef)(e);r.current=e,(0,t.useEffect)(()=>{let e=e=>{if(!function(e){let r=e.target;if(!(r instanceof HTMLElement))return!1;if(r.isContentEditable)return!0;let t=r.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t}(e)&&!(0,i.is_modal_dialog_open)()){for(let t of r.current)if(t.is_available?.()!==!1&&function(e,r){let t=r.modifiers??[],n=t.includes("alt"),s=t.includes("ctrl"),o=t.includes("meta"),i=t.includes("shift");return e.altKey===n&&e.ctrlKey===s&&e.metaKey===o&&e.shiftKey===i&&(1===e.key.length?e.key.toLowerCase():e.key)===(1===r.key.length?r.key.toLowerCase():r.key)}(e,t)){e.preventDefault(),t.action();return}}};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[])}],99211)},45452,e=>{"use strict";var r=e.i(54710),t=e.i(71060),n=e.i(29158),s=e.i(83391),o=e.i(34995),i=e.i(99211);e.s(["AppKeyboardShortcuts",0,function(){let e=(0,t.usePathname)(),[a,l]=(0,n.useState)(!1),u="/"===e,c=(0,n.useMemo)(()=>u?[]:[{id:"help",label:"?",description:"Show keyboard shortcuts",key:"?",modifiers:["shift"],action:()=>{l(e=>!e)}}],[u]);return((0,i.use_document_keyboard_shortcuts)(c),!a||u)?null:(0,r.jsx)(s.KeyboardShortcutsDialog,{sections:(0,o.get_app_keyboard_shortcut_sections)(),on_close:()=>l(!1)})}])},28302,e=>{"use strict";var r=e.i(54710),t=e.i(71060),n=e.i(29158),s=e.i(83105),o=e.i(18324),i=e.i(89497),a=e.i(13582);async function l(){await (0,a.with_ui_preferences_merge_guard)(async()=>{let e=(0,i.collect_ui_preferences_from_window)(),r=await fetch("/api/ui-preferences/merge-on-load",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({preferences:e})});if(!r.ok)throw Error((await r.json()).error??"UI preferences merge on load failed");let t=await r.json();(0,o.apply_ui_preferences_from_record)(t.preferences??{})})}var u=e.i(76670),c=e.i(44171),d=e.i(32417),f=e.i(28274),_=e.i(13349);function m(){return(0,_.is_greedy_cloud_sync_enabled)()}e.s(["CloudSyncProvider",0,function({children:e}){let o=(0,t.useRouter)(),i=(0,t.usePathname)(),a=(0,n.useRef)(null),_=(0,n.useRef)(!0);return(0,n.useEffect)(()=>{if(!(0,d.is_supabase_configured)()||!(0,c.is_cloud_sync_enabled)())return;let e=(0,s.create_browser_supabase_client)(),r=e=>{!m()&&(0,u.has_tracker_db_merged_this_browser_session)()?l().catch(()=>{}):(0,f.run_tracker_db_cloud_sync)({merge_on_load:!0,on_complete:e?()=>{o.refresh()}:void 0}).catch(()=>{})};e.auth.getSession().then(({data:{session:e}})=>{null!==e&&r(!1)});let{data:{subscription:t}}=e.auth.onAuthStateChange(e=>{if("SIGNED_IN"===e){(0,u.clear_tracker_db_merged_this_browser_session)(),a.current=null,_.current=!0,r(!0);return}"SIGNED_OUT"===e&&((0,u.clear_tracker_db_merged_this_browser_session)(),a.current=null,_.current=!0,o.refresh())});return()=>{t.unsubscribe()}},[o]),(0,n.useEffect)(()=>{if((0,d.is_supabase_configured)()&&(0,c.is_cloud_sync_enabled)()&&m()){if(_.current){_.current=!1,a.current=i;return}a.current!==i&&(a.current=i,(0,f.run_tracker_db_cloud_sync)({merge_on_load:!0}).catch(()=>{}))}},[i]),(0,r.jsx)(r.Fragment,{children:e})}],28302)},79957,e=>{"use strict";var r=e.i(54710),t=e.i(29158),n=e.i(47149);function s(){let[e,s]=(0,t.useState)(null);if((0,t.useEffect)(()=>{let e=null,r=(0,n.subscribe_cloud_db_sync)(r=>{s(r),null!==e&&(clearTimeout(e),e=null),(r?.phase==="success"||r?.phase==="error")&&(e=setTimeout(()=>{s(null),e=null},2800))});return()=>{r(),null!==e&&clearTimeout(e)}},[]),null===e)return null;let o="syncing"===e.phase,i="error"===e.phase,a="success"===e.phase?100:"error"===e.phase?0:null;return(0,r.jsxs)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-3 text-[0.88rem] font-medium text-foreground shadow-md",children:[(0,r.jsx)("p",{className:"m-0 mb-2.5 leading-snug",children:e.message}),(0,r.jsx)("div",{className:"h-1 overflow-hidden rounded-full bg-[color-mix(in_srgb,var(--accent)_22%,var(--panel-border))]","aria-hidden":"true",children:o?(0,r.jsx)("div",{className:"cloud-db-sync-progress-indeterminate h-full w-1/3 rounded-full bg-accent"}):(0,r.jsx)("div",{className:`h-full rounded-full transition-[width] duration-300 ease-out ${i?"bg-danger":"bg-accent"}`,style:{width:`${a??0}%`}})})]})}var o=e.i(46549);function i(){let[e,n]=(0,t.useState)(null);return((0,t.useEffect)(()=>{let e=null,r=(0,o.subscribe_settings_saved)(r=>{n(r),null!==e&&clearTimeout(e),e=setTimeout(()=>{n(null),e=null},2800)});return()=>{r(),null!==e&&clearTimeout(e)}},[]),null===e)?null:(0,r.jsx)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-2.5 text-[0.88rem] font-medium text-foreground shadow-md transition-[opacity,transform] duration-200",children:e||o.SETTINGS_SAVED_DEFAULT_MESSAGE})}e.s(["ToastNotifications",0,function(){return(0,r.jsxs)("div",{className:"pointer-events-none fixed z-50 flex w-[min(22rem,calc(100vw-2rem))] flex-col items-end gap-2 right-[max(1rem,env(safe-area-inset-right,0px))] bottom-[max(1rem,env(safe-area-inset-bottom,0px))]",children:[(0,r.jsx)(s,{}),(0,r.jsx)(i,{})]})}],79957)},19943,e=>{"use strict";var r=e.i(29158),t=e.i(53602);e.s(["DocumentPreferencesInit",0,function(){return(0,r.useLayoutEffect)(()=>{(0,t.apply_ui_preferences_dom_from_window)()},[]),null}])},93626,e=>{"use strict";var r=e.i(29158),t=e.i(56996),n=e.i(8654),s=e.i(76900),o=e.i(80808),i=e.i(71122);let a=e=>{let r=/^([01]\d|2[0-3]):([0-5]\d)$/.exec(e);return null===r?null:60*Number.parseInt(r[1],10)+Number.parseInt(r[2],10)};e.s(["NotificationRulesRunner",0,function(){let e=(0,r.useSyncExternalStore)(t.focus_nudges_enabled_preference.subscribe,t.focus_nudges_enabled_preference.get_snapshot,t.focus_nudges_enabled_preference.get_server_snapshot),l=(0,r.useSyncExternalStore)(n.no_log_reminder_minutes_preference.subscribe,n.no_log_reminder_minutes_preference.get_snapshot,n.no_log_reminder_minutes_preference.get_server_snapshot),u=(0,r.useSyncExternalStore)(s.overwork_alert_hours_preference.subscribe,s.overwork_alert_hours_preference.get_snapshot,s.overwork_alert_hours_preference.get_server_snapshot),c=(0,r.useSyncExternalStore)(i.work_hours_start_preference.subscribe,i.work_hours_start_preference.get_snapshot,i.work_hours_start_preference.get_server_snapshot),d=(0,r.useSyncExternalStore)(o.work_hours_end_preference.subscribe,o.work_hours_end_preference.get_snapshot,o.work_hours_end_preference.get_server_snapshot),f=(0,r.useRef)(0),_=(0,r.useRef)(null);return(0,r.useEffect)(()=>{"Notification"in window&&"true"===e&&"default"===window.Notification.permission&&window.Notification.requestPermission()},[e]),(0,r.useEffect)(()=>{if(!("Notification"in window)||"true"!==e)return;let r=60*Math.max(1,Number.parseInt(u,10)||1)*6e4,t=60*Math.max(1,Number.parseInt(l,10)||1)*1e3,n=(e,r)=>{"granted"===window.Notification.permission&&new window.Notification(e,{body:r})},s=async()=>{try{let e=await fetch("/api/state",{cache:"no-store"});if(!e.ok)return;let s=(await e.json()).runningEntry,o=new Date,i=o.getTime();if(null===s&&((e,r,t)=>{let n=a(r),s=a(t);if(null===n||null===s)return!1;let o=e.getDay();if(0===o||6===o)return!1;let i=60*e.getHours()+e.getMinutes();return n<=s?i>=n&&i<s:i>=n||i<s})(o,c,d)&&i-f.current>=t&&(n("No active timer during work hours","Start tracking or check in to keep your work log current."),f.current=i),null!=s){let e=Date.parse(s.start);if(Number.isFinite(e)){let t=`${s.sheetName}-${s.id}`;i-e>=r&&_.current!==t&&(n("Long-running timer detected",`Timer has been running for over ${u}h. Consider splitting: ${s.description}`),_.current=t)}}else _.current=null}catch{}};s();let o=window.setInterval(()=>{s()},6e4);return()=>{window.clearInterval(o)}},[e,l,u,d,c]),null}])},8091,e=>{"use strict";var r=e.i(54710),t=e.i(29158),n=e.i(52663);let s="super-time-tracker-pwa-install-notice-dismissed";e.s(["PwaInstallNotice",0,function(){let[e,o]=(0,t.useState)(null),[i,a]=(0,t.useState)(!0),[l,u]=(0,t.useState)(!1);return((0,t.useEffect)(()=>{let e=window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone,r="true"===window.localStorage.getItem(s);if(e||r)return void a(!0);a(!1);let t=e=>{e.preventDefault(),o(e)},n=()=>{window.localStorage.setItem(s,"true"),a(!0),o(null)};return window.addEventListener("beforeinstallprompt",t),window.addEventListener("appinstalled",n),()=>{window.removeEventListener("beforeinstallprompt",t),window.removeEventListener("appinstalled",n)}},[]),i)?null:(0,r.jsxs)("aside",{className:"fixed right-4 bottom-4 z-50 w-[min(22rem,calc(100vw-2rem))] rounded-md border border-accent-border bg-panel p-3.5 shadow-md",children:[(0,r.jsx)("p",{className:"m-0 text-[0.9rem] font-semibold",children:"Install app"}),(0,r.jsx)("p",{className:"m-0 mt-1 text-[0.82rem] leading-snug text-muted",children:null!==e?"Install Super Time Tracker for offline use and a faster startup.":"Install from your browser menu to enable app-style launch and offline support."}),(0,r.jsxs)("div",{className:"mt-3 flex gap-2",children:[null!==e?(0,r.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("primary","small"),disabled:l,onClick:()=>{u(!0),e.prompt().then(async()=>{"accepted"===(await e.userChoice).outcome&&(window.localStorage.setItem(s,"true"),a(!0))}).finally(()=>{u(!1),o(null)})},children:l?"Opening…":"Install"}):null,(0,r.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("ghost","small"),onClick:()=>{window.localStorage.setItem(s,"true"),a(!0)},children:"Dismiss"})]})]})}])},33334,e=>{"use strict";var r=e.i(29158);e.s(["PwaRegister",0,function(){return(0,r.useEffect)(()=>{"serviceWorker"in navigator&&"caches"in window&&navigator.serviceWorker.register("/sw.js").then(()=>{let e;0!==(e="u"<typeof document?[]:[...new Set([...Array.from(document.querySelectorAll("script[src]")).map(e=>e.src).filter(e=>e.length>0),...Array.from(document.querySelectorAll('link[rel="stylesheet"],link[rel="modulepreload"],link[rel="preload"][as="script"],link[rel="preload"][as="style"]')).map(e=>e.href).filter(e=>e.length>0)])].filter(e=>{try{return new URL(e).origin===window.location.origin}catch{return!1}})).length&&caches.open("super-time-tracker-shell-v1").then(r=>Promise.all(e.map(e=>fetch(e,{cache:"no-store"}).then(t=>t.ok?r.put(e,t.clone()):Promise.resolve()).catch(()=>Promise.resolve()))))})},[]),null}])},89391,e=>{"use strict";var r=e.i(29158),t=e.i(17798),n=e.i(35434),s=e.i(70223),o=e.i(10464),i=e.i(61834),a=e.i(81553);e.s(["ThemeModeSystemListener",0,function(){return(0,r.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: light)"),r=()=>{if("system"!==o.theme_mode_preference.read())return;let e=(0,s.resolve_theme_mode_to_theme)("system");(0,t.apply_theme)(e),(0,a.write_stored_theme)(e),(0,i.write_document_preference_cookies)({theme_mode:"system",theme:e}),(0,n.notify_theme_subscribers)()};return e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}},[]),null}])},10289,e=>{"use strict";var r=e.i(29158),t=e.i(53602),n=e.i(60609);e.s(["UiPreferencesDocumentSync",0,function(){return(0,r.useEffect)(()=>{let e=()=>{(0,t.apply_ui_preferences_dom_from_window)()};return window.addEventListener(n.UI_PREFERENCES_APPLIED_EVENT,e),()=>{window.removeEventListener(n.UI_PREFERENCES_APPLIED_EVENT,e)}},[]),null}])}]);
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
|
@@ -9,21 +9,21 @@
|
|
|
9
9
|
"theme_color": "#14b8a6",
|
|
10
10
|
"icons": [
|
|
11
11
|
{
|
|
12
|
-
"src": "/icons/
|
|
12
|
+
"src": "/icons/android-chrome-192x192.png",
|
|
13
13
|
"sizes": "192x192",
|
|
14
|
-
"type": "image/
|
|
14
|
+
"type": "image/png",
|
|
15
15
|
"purpose": "any"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
|
-
"src": "/icons/
|
|
18
|
+
"src": "/icons/android-chrome-512x512.png",
|
|
19
19
|
"sizes": "512x512",
|
|
20
|
-
"type": "image/
|
|
20
|
+
"type": "image/png",
|
|
21
21
|
"purpose": "any"
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
|
-
"src": "/icons/
|
|
24
|
+
"src": "/icons/android-chrome-512x512.png",
|
|
25
25
|
"sizes": "512x512",
|
|
26
|
-
"type": "image/
|
|
26
|
+
"type": "image/png",
|
|
27
27
|
"purpose": "maskable"
|
|
28
28
|
}
|
|
29
29
|
]
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
const CACHE_NAME = 'super-time-tracker-cache-
|
|
1
|
+
const CACHE_NAME = 'super-time-tracker-cache-v3'
|
|
2
2
|
const OFFLINE_URL = '/offline'
|
|
3
3
|
const PRECACHE_URLS = [
|
|
4
4
|
'/',
|
|
5
5
|
OFFLINE_URL,
|
|
6
6
|
'/manifest.webmanifest',
|
|
7
|
-
'/favicon.ico',
|
|
8
|
-
'/icons/
|
|
9
|
-
'/icons/
|
|
7
|
+
'/icons/favicon.ico',
|
|
8
|
+
'/icons/favicon-16x16.png',
|
|
9
|
+
'/icons/favicon-32x32.png',
|
|
10
|
+
'/icons/apple-touch-icon.png',
|
|
11
|
+
'/icons/android-chrome-192x192.png',
|
|
12
|
+
'/icons/android-chrome-512x512.png',
|
|
10
13
|
]
|
|
11
14
|
const APP_ROUTES = [
|
|
12
15
|
'/',
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},94877,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored.contexts.HooksClientContext},12273,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored.contexts.ServerInsertedHtml},85058,(a,b,c)=>{"use strict";b.exports=a.r(18622)},39752,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored["react-ssr"].ReactJsxRuntime},34542,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored["react-ssr"].React},72034,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored.contexts.AppRouterContext},71535,(a,b,c)=>{"use strict";b.exports=a.r(85058).vendored["react-ssr"].ReactServerDOMTurbopackClient},3988,(a,b,c)=>{"use strict";function d(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(d=function(a){return a?c:b})(a)}c._=function(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=d(b);if(c&&c.has(a))return c.get(a);var e={__proto__:null},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a)if("default"!==g&&Object.prototype.hasOwnProperty.call(a,g)){var h=f?Object.getOwnPropertyDescriptor(a,g):null;h&&(h.get||h.set)?Object.defineProperty(e,g,h):e[g]=a[g]}return e.default=a,c&&c.set(a,e),e}},38371,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},21154,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},40959,(a,b,c)=>{"use strict";function d(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createPromiseWithResolvers",{enumerable:!0,get:function(){return d}})},89969,a=>{"use strict";a.s(["get_button_class_name",0,function(a="ghost",b="default"){return`cursor-pointer appearance-none rounded-[0.65rem] border border-transparent font-inherit font-semibold disabled:cursor-not-allowed disabled:opacity-55 ${({default:"px-3.5 py-2.5",small:"px-2.5 py-1.5 text-xs"})[b]} ${({primary:"border-accent-border bg-[var(--accent)] text-[var(--accent-text-on)]",ghost:"border-panel-border bg-ghost-bg text-inherit",danger:"border-danger-border bg-danger-soft text-danger","danger-solid":"border-danger-border bg-[var(--danger-solid)] text-[var(--danger-text-on)]"})[a]}`}])},53030,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(89969);function e({options:a,on_confirm:f,on_cancel:g}){let h=(0,c.useId)(),i=(0,c.useRef)(null),{cancelLabel:j="Cancel",confirmLabel:k="Confirm",message:l,title:m,variant:n="default"}=a;return(0,c.useEffect)(()=>{i.current?.focus();let a=a=>{"Escape"===a.key&&g()};return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)}},[g]),(0,b.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,b.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:g}),(0,b.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":h,className:"relative z-1 w-full max-w-md rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,b.jsx)("h2",{id:h,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:m}),(0,b.jsx)("p",{className:"m-0 mt-2 text-[0.9rem] leading-relaxed text-muted",children:l}),(0,b.jsxs)("div",{className:"mt-5 flex flex-wrap justify-end gap-2",children:[(0,b.jsx)("button",{type:"button",className:(0,d.get_button_class_name)("ghost"),onClick:g,children:j}),(0,b.jsx)("button",{ref:i,type:"button",className:(0,d.get_button_class_name)("danger"===n?"danger":"primary"),onClick:f,children:k})]})]})]})}let f=(0,c.createContext)(null);a.s(["ConfirmDialogProvider",0,function({children:a}){let[d,g]=(0,c.useState)(null),h=(0,c.useCallback)(a=>new Promise(b=>{g({options:a,resolve:b})}),[]),i=a=>{d?.resolve(a),g(null)};return(0,b.jsxs)(f.Provider,{value:{confirm:h},children:[a,null!==d?(0,b.jsx)(e,{options:d.options,on_confirm:()=>i(!0),on_cancel:()=>i(!1)}):null]})},"use_confirm_dialog",0,function(){let a=(0,c.useContext)(f);if(null===a)throw Error("use_confirm_dialog must be used within ConfirmDialogProvider");return a}],53030)},87281,a=>{"use strict";var b=a.i(49170);a.s(["is_greedy_cloud_sync_enabled",0,function(){return"true"===b.greedy_cloud_sync_preference.read()}])},7386,89711,89184,a=>{"use strict";var b=a.i(39752),c=a.i(34542);function d({label:a,description:c,compact:e}){return(0,b.jsxs)("div",{className:"contents",children:[(0,b.jsx)("dt",{className:"m-0",children:(0,b.jsx)("kbd",{className:`inline-block min-w-7 rounded border border-panel-border bg-surface text-center font-mono font-semibold text-foreground ${e?"px-1 py-0.5 text-[0.7rem]":"px-1.5 py-0.5 text-[0.78rem]"}`,children:a})}),(0,b.jsx)("dd",{className:`m-0 self-center leading-snug text-muted ${e?"text-[0.8rem]":"text-[0.9rem]"}`,children:c})]})}function e({sections:a,compact:c=!1}){return(0,b.jsx)("div",{className:`flex flex-col ${c?"gap-2.5":"gap-4"}`,children:a.map(a=>(0,b.jsxs)("section",{children:[(0,b.jsx)("h3",{className:`m-0 font-semibold uppercase tracking-[0.04em] text-muted ${c?"text-[0.65rem]":"text-[0.72rem]"}`,children:a.title}),(0,b.jsx)("dl",{className:`m-0 grid grid-cols-[auto_minmax(0,1fr)] ${c?"mt-1.5 gap-x-3 gap-y-1.5":"mt-2 gap-x-4 gap-y-2"}`,children:a.entries.map(e=>(0,b.jsx)(d,{label:e.label,description:e.description,compact:c},`${a.title}-${e.label}-${e.description}`))})]},a.title))})}var f=a.i(89969);a.s(["KeyboardShortcutsDialog",0,function({sections:a,on_close:d}){let g=(0,c.useId)(),h=(0,c.useRef)(null);return(0,c.useEffect)(()=>{h.current?.focus();let a=a=>{"Escape"===a.key&&d()};return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)}},[d]),(0,b.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,b.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:d}),(0,b.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":g,className:"relative z-1 w-full max-w-lg rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,b.jsx)("h2",{id:g,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:"Keyboard shortcuts"}),(0,b.jsx)("div",{className:"mt-4 max-h-[min(28rem,70vh)] overflow-y-auto pr-1",children:(0,b.jsx)(e,{sections:a})}),(0,b.jsx)("div",{className:"mt-5 flex justify-end",children:(0,b.jsx)("button",{ref:h,type:"button",className:(0,f.get_button_class_name)("primary"),onClick:d,children:"Close"})})]})]})}],7386),a.s(["get_app_keyboard_shortcut_sections",0,function(){return[{title:"General",entries:[{label:"?",description:"Show keyboard shortcuts"}]}]}],89711);var g=a.i(46299);a.s(["use_document_keyboard_shortcuts",0,function(a){let b=(0,c.useRef)(a);b.current=a,(0,c.useEffect)(()=>{let a=a=>{if(!function(a){let b=a.target;if(!(b instanceof HTMLElement))return!1;if(b.isContentEditable)return!0;let c=b.tagName;return"INPUT"===c||"TEXTAREA"===c||"SELECT"===c}(a)&&!(0,g.is_modal_dialog_open)()){for(let c of b.current)if(c.is_available?.()!==!1&&function(a,b){let c=b.modifiers??[],d=c.includes("alt"),e=c.includes("ctrl"),f=c.includes("meta"),g=c.includes("shift");return a.altKey===d&&a.ctrlKey===e&&a.metaKey===f&&a.shiftKey===g&&(1===a.key.length?a.key.toLowerCase():a.key)===(1===b.key.length?b.key.toLowerCase():b.key)}(a,c)){a.preventDefault(),c.action();return}}};return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)}},[])}],89184)},17037,a=>{"use strict";var b=a.i(39752),c=a.i(82508),d=a.i(34542),e=a.i(7386),f=a.i(89711),g=a.i(89184);a.s(["AppKeyboardShortcuts",0,function(){let a=(0,c.usePathname)(),[h,i]=(0,d.useState)(!1),j="/"===a,k=(0,d.useMemo)(()=>j?[]:[{id:"help",label:"?",description:"Show keyboard shortcuts",key:"?",modifiers:["shift"],action:()=>{i(a=>!a)}}],[j]);return((0,g.use_document_keyboard_shortcuts)(k),!h||j)?null:(0,b.jsx)(e.KeyboardShortcutsDialog,{sections:(0,f.get_app_keyboard_shortcut_sections)(),on_close:()=>i(!1)})}])},24480,a=>{"use strict";var b=a.i(39752),c=a.i(82508),d=a.i(34542),e=a.i(9301),f=a.i(19519),g=a.i(64169),h=a.i(17465);async function i(){await (0,h.with_ui_preferences_merge_guard)(async()=>{let a=(0,g.collect_ui_preferences_from_window)(),b=await fetch("/api/ui-preferences/merge-on-load",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({preferences:a})});if(!b.ok)throw Error((await b.json()).error??"UI preferences merge on load failed");let c=await b.json();(0,f.apply_ui_preferences_from_record)(c.preferences??{})})}var j=a.i(80097),k=a.i(51652),l=a.i(63577),m=a.i(74365),n=a.i(87281);function o(){return(0,n.is_greedy_cloud_sync_enabled)()}a.s(["CloudSyncProvider",0,function({children:a}){let f=(0,c.useRouter)(),g=(0,c.usePathname)(),h=(0,d.useRef)(null),n=(0,d.useRef)(!0);return(0,d.useEffect)(()=>{if(!(0,l.is_supabase_configured)()||!(0,k.is_cloud_sync_enabled)())return;let a=(0,e.create_browser_supabase_client)(),b=a=>{!o()&&(0,j.has_tracker_db_merged_this_browser_session)()?i().catch(()=>{}):(0,m.run_tracker_db_cloud_sync)({merge_on_load:!0,on_complete:a?()=>{f.refresh()}:void 0}).catch(()=>{})};a.auth.getSession().then(({data:{session:a}})=>{null!==a&&b(!1)});let{data:{subscription:c}}=a.auth.onAuthStateChange(a=>{if("SIGNED_IN"===a){(0,j.clear_tracker_db_merged_this_browser_session)(),h.current=null,n.current=!0,b(!0);return}"SIGNED_OUT"===a&&((0,j.clear_tracker_db_merged_this_browser_session)(),h.current=null,n.current=!0,f.refresh())});return()=>{c.unsubscribe()}},[f]),(0,d.useEffect)(()=>{if((0,l.is_supabase_configured)()&&(0,k.is_cloud_sync_enabled)()&&o()){if(n.current){n.current=!1,h.current=g;return}h.current!==g&&(h.current=g,(0,m.run_tracker_db_cloud_sync)({merge_on_load:!0}).catch(()=>{}))}},[g]),(0,b.jsx)(b.Fragment,{children:a})}],24480)},48889,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(14676);function e(){let[a,e]=(0,c.useState)(null);if((0,c.useEffect)(()=>{let a=null,b=(0,d.subscribe_cloud_db_sync)(b=>{e(b),null!==a&&(clearTimeout(a),a=null),(b?.phase==="success"||b?.phase==="error")&&(a=setTimeout(()=>{e(null),a=null},2800))});return()=>{b(),null!==a&&clearTimeout(a)}},[]),null===a)return null;let f="syncing"===a.phase,g="error"===a.phase,h="success"===a.phase?100:"error"===a.phase?0:null;return(0,b.jsxs)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-3 text-[0.88rem] font-medium text-foreground shadow-md",children:[(0,b.jsx)("p",{className:"m-0 mb-2.5 leading-snug",children:a.message}),(0,b.jsx)("div",{className:"h-1 overflow-hidden rounded-full bg-[color-mix(in_srgb,var(--accent)_22%,var(--panel-border))]","aria-hidden":"true",children:f?(0,b.jsx)("div",{className:"cloud-db-sync-progress-indeterminate h-full w-1/3 rounded-full bg-accent"}):(0,b.jsx)("div",{className:`h-full rounded-full transition-[width] duration-300 ease-out ${g?"bg-danger":"bg-accent"}`,style:{width:`${h??0}%`}})})]})}var f=a.i(7048);function g(){let[a,d]=(0,c.useState)(null);return((0,c.useEffect)(()=>{let a=null,b=(0,f.subscribe_settings_saved)(b=>{d(b),null!==a&&clearTimeout(a),a=setTimeout(()=>{d(null),a=null},2800)});return()=>{b(),null!==a&&clearTimeout(a)}},[]),null===a)?null:(0,b.jsx)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-2.5 text-[0.88rem] font-medium text-foreground shadow-md transition-[opacity,transform] duration-200",children:a||f.SETTINGS_SAVED_DEFAULT_MESSAGE})}a.s(["ToastNotifications",0,function(){return(0,b.jsxs)("div",{className:"pointer-events-none fixed z-50 flex w-[min(22rem,calc(100vw-2rem))] flex-col items-end gap-2 right-[max(1rem,env(safe-area-inset-right,0px))] bottom-[max(1rem,env(safe-area-inset-bottom,0px))]",children:[(0,b.jsx)(e,{}),(0,b.jsx)(g,{})]})}],48889)},70648,a=>{"use strict";var b=a.i(34542),c=a.i(37183);a.s(["DocumentPreferencesInit",0,function(){return(0,b.useLayoutEffect)(()=>{(0,c.apply_ui_preferences_dom_from_window)()},[]),null}])},19494,a=>{"use strict";var b=a.i(39752),c=a.i(34542),d=a.i(89969);let e="super-time-tracker-pwa-install-notice-dismissed";a.s(["PwaInstallNotice",0,function(){let[a,f]=(0,c.useState)(null),[g,h]=(0,c.useState)(!0),[i,j]=(0,c.useState)(!1);return((0,c.useEffect)(()=>{},[]),g)?null:(0,b.jsxs)("aside",{className:"fixed right-4 bottom-4 z-50 w-[min(22rem,calc(100vw-2rem))] rounded-md border border-accent-border bg-panel p-3.5 shadow-md",children:[(0,b.jsx)("p",{className:"m-0 text-[0.9rem] font-semibold",children:"Install app"}),(0,b.jsx)("p",{className:"m-0 mt-1 text-[0.82rem] leading-snug text-muted",children:null!==a?"Install Super Time Tracker for offline use and a faster startup.":"Install from your browser menu to enable app-style launch and offline support."}),(0,b.jsxs)("div",{className:"mt-3 flex gap-2",children:[null!==a?(0,b.jsx)("button",{type:"button",className:(0,d.get_button_class_name)("primary","small"),disabled:i,onClick:()=>{j(!0),a.prompt().then(async()=>{"accepted"===(await a.userChoice).outcome&&(window.localStorage.setItem(e,"true"),h(!0))}).finally(()=>{j(!1),f(null)})},children:i?"Opening…":"Install"}):null,(0,b.jsx)("button",{type:"button",className:(0,d.get_button_class_name)("ghost","small"),onClick:()=>{window.localStorage.setItem(e,"true"),h(!0)},children:"Dismiss"})]})]})}])},82429,a=>{"use strict";var b=a.i(34542);a.s(["PwaRegister",0,function(){return(0,b.useEffect)(()=>{},[]),null}])},97658,a=>{"use strict";var b=a.i(34542);a.i(29698),a.s(["ThemeModeSystemListener",0,function(){return(0,b.useEffect)(()=>{},[]),null}])},16081,a=>{"use strict";var b=a.i(34542),c=a.i(37183),d=a.i(17310);a.s(["UiPreferencesDocumentSync",0,function(){return(0,b.useEffect)(()=>{let a=()=>{(0,c.apply_ui_preferences_dom_from_window)()};return window.addEventListener(d.UI_PREFERENCES_APPLIED_EVENT,a),()=>{window.removeEventListener(d.UI_PREFERENCES_APPLIED_EVENT,a)}},[]),null}])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0t-0r_3._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[55120,a=>{a.v({className:"geist_f53a3a98-module__E6rLHq__className",variable:"geist_f53a3a98-module__E6rLHq__variable"})},91129,a=>{a.v({className:"geist_mono_a0a08e0-module__UZhpWW__className",variable:"geist_mono_a0a08e0-module__UZhpWW__variable"})},1798,a=>{"use strict";a.s(["AppKeyboardShortcuts",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call AppKeyboardShortcuts() from the server but AppKeyboardShortcuts is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/app-keyboard-shortcuts.tsx <module evaluation>","AppKeyboardShortcuts")},69726,a=>{"use strict";a.s(["AppKeyboardShortcuts",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call AppKeyboardShortcuts() from the server but AppKeyboardShortcuts is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/app-keyboard-shortcuts.tsx","AppKeyboardShortcuts")},67636,a=>{"use strict";a.i(1798);var b=a.i(69726);a.n(b)},74035,a=>{"use strict";a.s(["CloudSyncProvider",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call CloudSyncProvider() from the server but CloudSyncProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/cloud-sync-provider.tsx <module evaluation>","CloudSyncProvider")},21912,a=>{"use strict";a.s(["CloudSyncProvider",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call CloudSyncProvider() from the server but CloudSyncProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/cloud-sync-provider.tsx","CloudSyncProvider")},69669,a=>{"use strict";a.i(74035);var b=a.i(21912);a.n(b)},22990,a=>{"use strict";a.s(["ToastNotifications",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call ToastNotifications() from the server but ToastNotifications is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/toast-notifications.tsx <module evaluation>","ToastNotifications")},10467,a=>{"use strict";a.s(["ToastNotifications",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call ToastNotifications() from the server but ToastNotifications is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/toast-notifications.tsx","ToastNotifications")},88936,a=>{"use strict";a.i(22990);var b=a.i(10467);a.n(b)},95670,a=>{"use strict";a.s(["ConfirmDialogProvider",()=>c,"use_confirm_dialog",()=>d]);var b=a.i(41445);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call ConfirmDialogProvider() from the server but ConfirmDialogProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/confirm-dialog-provider.tsx <module evaluation>","ConfirmDialogProvider"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call use_confirm_dialog() from the server but use_confirm_dialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/confirm-dialog-provider.tsx <module evaluation>","use_confirm_dialog")},37424,a=>{"use strict";a.s(["ConfirmDialogProvider",()=>c,"use_confirm_dialog",()=>d]);var b=a.i(41445);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call ConfirmDialogProvider() from the server but ConfirmDialogProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/confirm-dialog-provider.tsx","ConfirmDialogProvider"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call use_confirm_dialog() from the server but use_confirm_dialog is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/confirm-dialog-provider.tsx","use_confirm_dialog")},64762,a=>{"use strict";a.i(95670);var b=a.i(37424);a.n(b)},4684,a=>{"use strict";a.s(["DocumentPreferencesInit",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call DocumentPreferencesInit() from the server but DocumentPreferencesInit is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/document-preferences-init.tsx <module evaluation>","DocumentPreferencesInit")},8602,a=>{"use strict";a.s(["DocumentPreferencesInit",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call DocumentPreferencesInit() from the server but DocumentPreferencesInit is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/document-preferences-init.tsx","DocumentPreferencesInit")},41505,a=>{"use strict";a.i(4684);var b=a.i(8602);a.n(b)},85048,a=>{"use strict";a.s(["PwaInstallNotice",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call PwaInstallNotice() from the server but PwaInstallNotice is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/pwa-install-notice.tsx <module evaluation>","PwaInstallNotice")},2370,a=>{"use strict";a.s(["PwaInstallNotice",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call PwaInstallNotice() from the server but PwaInstallNotice is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/pwa-install-notice.tsx","PwaInstallNotice")},16364,a=>{"use strict";a.i(85048);var b=a.i(2370);a.n(b)},93359,a=>{"use strict";a.s(["PwaRegister",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call PwaRegister() from the server but PwaRegister is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/pwa-register.tsx <module evaluation>","PwaRegister")},33610,a=>{"use strict";a.s(["PwaRegister",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call PwaRegister() from the server but PwaRegister is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/pwa-register.tsx","PwaRegister")},22650,a=>{"use strict";a.i(93359);var b=a.i(33610);a.n(b)},80351,a=>{"use strict";a.s(["ThemeModeSystemListener",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call ThemeModeSystemListener() from the server but ThemeModeSystemListener is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/theme-mode-system-listener.tsx <module evaluation>","ThemeModeSystemListener")},68139,a=>{"use strict";a.s(["ThemeModeSystemListener",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call ThemeModeSystemListener() from the server but ThemeModeSystemListener is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/theme-mode-system-listener.tsx","ThemeModeSystemListener")},3905,a=>{"use strict";a.i(80351);var b=a.i(68139);a.n(b)},18073,a=>{"use strict";a.s(["UiPreferencesDocumentSync",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call UiPreferencesDocumentSync() from the server but UiPreferencesDocumentSync is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui-preferences-document-sync.tsx <module evaluation>","UiPreferencesDocumentSync")},45471,a=>{"use strict";a.s(["UiPreferencesDocumentSync",()=>b]);let b=(0,a.i(41445).registerClientReference)(function(){throw Error("Attempted to call UiPreferencesDocumentSync() from the server but UiPreferencesDocumentSync is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/components/ui-preferences-document-sync.tsx","UiPreferencesDocumentSync")},90689,a=>{"use strict";a.i(18073);var b=a.i(45471);a.n(b)},33290,a=>{"use strict";var b=a.i(46193),c=a.i(55120);let d={className:c.default.className,style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"}};null!=c.default.variable&&(d.variable=c.default.variable);var e=a.i(91129);let f={className:e.default.className,style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"}};null!=e.default.variable&&(f.variable=e.default.variable);var g=a.i(67636),h=a.i(69669),i=a.i(88936),j=a.i(64762),k=a.i(41505),l=a.i(16364),m=a.i(22650),n=a.i(3905),o=a.i(90689),p=a.i(40035);let q="default",r=["default","midnight","warm","ocean","forest","contrast","sunset","lavender","rose","slate","nord","dracula"],s={teal:"default",blue:"ocean",violet:"midnight",rose:"warm",amber:"warm",emerald:"forest"};a.i(35394);let t=function(a){let{default_value:b,is_valid:c,storage_key:d}=a,e=new Set,f=()=>b;return{storage_key:d,default_value:b,is_valid:c,read:f,write:a=>{try{window.localStorage.setItem(d,a)}catch{}},subscribe:a=>(e.add(a),()=>{e.delete(a)}),notify:()=>{e.forEach(a=>{a()})},get_snapshot:f,get_server_snapshot:()=>b}}({storage_key:"super-time-tracker-theme-mode",default_value:"system",is_valid:a=>"light"===a||"dark"===a||"system"===a});async function u(){var a;let b=await (0,p.cookies)(),c="light"===(await (0,p.headers)()).get("sec-ch-prefers-color-scheme"),d=b.get("stt-palette")?.value,e=function(a,b){if(void 0!==a&&r.includes(a))return a;if(void 0!==b){let a=s[b];if(void 0!==a)return a}return q}(d,void 0),f=b.get("stt-compact-lists")?.value==="true",g=void 0===(a=b.get("stt-theme-mode")?.value)?null:t.is_valid(a)?a:null;if(null!==g)return{theme:function(a,b){return"system"===a?b?"light":"dark":"light"===a||"dark"===a?a:"dark"}(g,c),palette:e,compact_lists:f};let h=b.get("stt-theme")?.value;return"light"===h||"dark"===h?{theme:h,palette:e,compact_lists:f}:{theme:c?"light":"dark",palette:void 0===d?q:e,compact_lists:f}}async function v({children:a}){let{theme:c,palette:e,compact_lists:p}=await u();return(0,b.jsx)("html",{lang:"en",className:`${d.variable} ${f.variable} h-full antialiased`,"data-theme":c,"data-palette":e,"data-compact-lists":p?"true":"false",suppressHydrationWarning:!0,children:(0,b.jsxs)("body",{className:"min-h-full font-sans transition-[background-color,color] duration-200",children:[(0,b.jsx)(k.DocumentPreferencesInit,{}),(0,b.jsx)(m.PwaRegister,{}),(0,b.jsx)(n.ThemeModeSystemListener,{}),(0,b.jsx)(o.UiPreferencesDocumentSync,{}),(0,b.jsx)(j.ConfirmDialogProvider,{children:(0,b.jsxs)(h.CloudSyncProvider,{children:[(0,b.jsx)(g.AppKeyboardShortcuts,{}),a,(0,b.jsx)(i.ToastNotifications,{}),(0,b.jsx)(l.PwaInstallNotice,{})]})})]})})}a.s(["default",0,v,"metadata",0,{title:"super-time-tracker",description:"Web UI for the super-time-tracker CLI time sheets",manifest:"/manifest.webmanifest",themeColor:"#14b8a6",icons:{icon:[{url:"/icons/pwa-icon-192.svg",type:"image/svg+xml",sizes:"192x192"},{url:"/icons/pwa-icon-512.svg",type:"image/svg+xml",sizes:"512x512"}],apple:[{url:"/icons/pwa-icon-192.svg",type:"image/svg+xml"}]},appleWebApp:{capable:!0,title:"super-time-tracker",statusBarStyle:"default"}}],33290)},70864,a=>{a.n(a.i(33290))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__12y1a.s._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,90503,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},31047,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DecodeError:function(){return h},MiddlewareNotFoundError:function(){return v},MissingStaticPage:function(){return x},NormalizeError:function(){return b},PageNotFoundError:function(){return y},SP:function(){return g},ST:function(){return _},WEB_VITALS:function(){return o},execOnce:function(){return i},getDisplayName:function(){return d},getLocationOrigin:function(){return u},getURL:function(){return c},isAbsoluteUrl:function(){return l},isResSent:function(){return m},loadGetInitialProps:function(){return p},normalizeRepeatedSlashes:function(){return f},stringifyError:function(){return w}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});let o=["CLS","FCP","FID","INP","LCP","TTFB"];function i(e){let t,r=!1;return(...n)=>(r||(r=!0,t=e(...n)),t)}let a=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,l=e=>a.test(e);function u(){let{protocol:e,hostname:t,port:r}=window.location;return`${e}//${t}${r?":"+r:""}`}function c(){let{href:e}=window.location,t=u();return e.substring(t.length)}function d(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function m(e){return e.finished||e.headersSent}function f(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?`?${t.slice(1).join("?")}`:"")}async function p(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await p(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&m(r))return n;if(!n)throw Object.defineProperty(Error(`"${d(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let g="u">typeof performance,_=g&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class b extends Error{}class y extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class x extends Error{constructor(e,t){super(),this.message=`Failed to load static file for page: ${e} ${t}`}}class v extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function w(e){return JSON.stringify({message:e.message,stack:e.stack})}},78677,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={assign:function(){return l},searchParamsToUrlQuery:function(){return o},urlQueryToSearchParams:function(){return a}};for(var s in n)Object.defineProperty(r,s,{enumerable:!0,get:n[s]});function o(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function i(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function a(e){let t=new URLSearchParams;for(let[r,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)t.append(r,i(e));else t.set(r,i(n));return t}function l(e,...t){for(let r of t){for(let t of r.keys())e.delete(t);for(let[t,n]of r.entries())e.append(t,n)}return e}},52663,e=>{"use strict";e.s(["get_button_class_name",0,function(e="ghost",t="default"){return`cursor-pointer appearance-none rounded-[0.65rem] border border-transparent font-inherit font-semibold disabled:cursor-not-allowed disabled:opacity-55 ${({default:"px-3.5 py-2.5",small:"px-2.5 py-1.5 text-xs"})[t]} ${({primary:"border-accent-border bg-[var(--accent)] text-[var(--accent-text-on)]",ghost:"border-panel-border bg-ghost-bg text-inherit",danger:"border-danger-border bg-danger-soft text-danger","danger-solid":"border-danger-border bg-[var(--danger-solid)] text-[var(--danger-text-on)]"})[e]}`}])},14974,e=>{"use strict";var t=e.i(54710),r=e.i(29158),n=e.i(52663);function s({options:e,on_confirm:o,on_cancel:i}){let a=(0,r.useId)(),l=(0,r.useRef)(null),{cancelLabel:u="Cancel",confirmLabel:c="Confirm",message:d,title:m,variant:f="default"}=e;return(0,r.useEffect)(()=>{l.current?.focus();let e=e=>{"Escape"===e.key&&i()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[i]),(0,t.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,t.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:i}),(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":a,className:"relative z-1 w-full max-w-md rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,t.jsx)("h2",{id:a,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:m}),(0,t.jsx)("p",{className:"m-0 mt-2 text-[0.9rem] leading-relaxed text-muted",children:d}),(0,t.jsxs)("div",{className:"mt-5 flex flex-wrap justify-end gap-2",children:[(0,t.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("ghost"),onClick:i,children:u}),(0,t.jsx)("button",{ref:l,type:"button",className:(0,n.get_button_class_name)("danger"===f?"danger":"primary"),onClick:o,children:c})]})]})]})}let o=(0,r.createContext)(null);e.s(["ConfirmDialogProvider",0,function({children:e}){let[n,i]=(0,r.useState)(null),a=(0,r.useCallback)(e=>new Promise(t=>{i({options:e,resolve:t})}),[]),l=e=>{n?.resolve(e),i(null)};return(0,t.jsxs)(o.Provider,{value:{confirm:a},children:[e,null!==n?(0,t.jsx)(s,{options:n.options,on_confirm:()=>l(!0),on_cancel:()=>l(!1)}):null]})},"use_confirm_dialog",0,function(){let e=(0,r.useContext)(o);if(null===e)throw Error("use_confirm_dialog must be used within ConfirmDialogProvider");return e}],14974)},13349,e=>{"use strict";var t=e.i(410);e.s(["is_greedy_cloud_sync_enabled",0,function(){return"true"===t.greedy_cloud_sync_preference.read()}])},83391,34995,99211,e=>{"use strict";var t=e.i(54710),r=e.i(29158);function n({label:e,description:r,compact:s}){return(0,t.jsxs)("div",{className:"contents",children:[(0,t.jsx)("dt",{className:"m-0",children:(0,t.jsx)("kbd",{className:`inline-block min-w-7 rounded border border-panel-border bg-surface text-center font-mono font-semibold text-foreground ${s?"px-1 py-0.5 text-[0.7rem]":"px-1.5 py-0.5 text-[0.78rem]"}`,children:e})}),(0,t.jsx)("dd",{className:`m-0 self-center leading-snug text-muted ${s?"text-[0.8rem]":"text-[0.9rem]"}`,children:r})]})}function s({sections:e,compact:r=!1}){return(0,t.jsx)("div",{className:`flex flex-col ${r?"gap-2.5":"gap-4"}`,children:e.map(e=>(0,t.jsxs)("section",{children:[(0,t.jsx)("h3",{className:`m-0 font-semibold uppercase tracking-[0.04em] text-muted ${r?"text-[0.65rem]":"text-[0.72rem]"}`,children:e.title}),(0,t.jsx)("dl",{className:`m-0 grid grid-cols-[auto_minmax(0,1fr)] ${r?"mt-1.5 gap-x-3 gap-y-1.5":"mt-2 gap-x-4 gap-y-2"}`,children:e.entries.map(s=>(0,t.jsx)(n,{label:s.label,description:s.description,compact:r},`${e.title}-${s.label}-${s.description}`))})]},e.title))})}var o=e.i(52663);e.s(["KeyboardShortcutsDialog",0,function({sections:e,on_close:n}){let i=(0,r.useId)(),a=(0,r.useRef)(null);return(0,r.useEffect)(()=>{a.current?.focus();let e=e=>{"Escape"===e.key&&n()};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[n]),(0,t.jsxs)("div",{className:"fixed inset-0 z-100 flex items-center justify-center p-5",role:"presentation",children:[(0,t.jsx)("button",{type:"button",className:"absolute inset-0 cursor-default border-0 bg-overlay p-0","aria-label":"Dismiss dialog",onClick:n}),(0,t.jsxs)("div",{role:"dialog","aria-modal":"true","aria-labelledby":i,className:"relative z-1 w-full max-w-lg rounded-lg border border-panel-border bg-panel p-5 shadow-md",children:[(0,t.jsx)("h2",{id:i,className:"m-0 text-[1.1rem] font-[650] tracking-tight",children:"Keyboard shortcuts"}),(0,t.jsx)("div",{className:"mt-4 max-h-[min(28rem,70vh)] overflow-y-auto pr-1",children:(0,t.jsx)(s,{sections:e})}),(0,t.jsx)("div",{className:"mt-5 flex justify-end",children:(0,t.jsx)("button",{ref:a,type:"button",className:(0,o.get_button_class_name)("primary"),onClick:n,children:"Close"})})]})]})}],83391),e.s(["get_app_keyboard_shortcut_sections",0,function(){return[{title:"General",entries:[{label:"?",description:"Show keyboard shortcuts"}]}]}],34995);var i=e.i(72074);e.s(["use_document_keyboard_shortcuts",0,function(e){let t=(0,r.useRef)(e);t.current=e,(0,r.useEffect)(()=>{let e=e=>{if(!function(e){let t=e.target;if(!(t instanceof HTMLElement))return!1;if(t.isContentEditable)return!0;let r=t.tagName;return"INPUT"===r||"TEXTAREA"===r||"SELECT"===r}(e)&&!(0,i.is_modal_dialog_open)()){for(let r of t.current)if(r.is_available?.()!==!1&&function(e,t){let r=t.modifiers??[],n=r.includes("alt"),s=r.includes("ctrl"),o=r.includes("meta"),i=r.includes("shift");return e.altKey===n&&e.ctrlKey===s&&e.metaKey===o&&e.shiftKey===i&&(1===e.key.length?e.key.toLowerCase():e.key)===(1===t.key.length?t.key.toLowerCase():t.key)}(e,r)){e.preventDefault(),r.action();return}}};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[])}],99211)},45452,e=>{"use strict";var t=e.i(54710),r=e.i(71060),n=e.i(29158),s=e.i(83391),o=e.i(34995),i=e.i(99211);e.s(["AppKeyboardShortcuts",0,function(){let e=(0,r.usePathname)(),[a,l]=(0,n.useState)(!1),u="/"===e,c=(0,n.useMemo)(()=>u?[]:[{id:"help",label:"?",description:"Show keyboard shortcuts",key:"?",modifiers:["shift"],action:()=>{l(e=>!e)}}],[u]);return((0,i.use_document_keyboard_shortcuts)(c),!a||u)?null:(0,t.jsx)(s.KeyboardShortcutsDialog,{sections:(0,o.get_app_keyboard_shortcut_sections)(),on_close:()=>l(!1)})}])},28302,e=>{"use strict";var t=e.i(54710),r=e.i(71060),n=e.i(29158),s=e.i(83105),o=e.i(18324),i=e.i(89497),a=e.i(13582);async function l(){await (0,a.with_ui_preferences_merge_guard)(async()=>{let e=(0,i.collect_ui_preferences_from_window)(),t=await fetch("/api/ui-preferences/merge-on-load",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({preferences:e})});if(!t.ok)throw Error((await t.json()).error??"UI preferences merge on load failed");let r=await t.json();(0,o.apply_ui_preferences_from_record)(r.preferences??{})})}var u=e.i(76670),c=e.i(44171),d=e.i(32417),m=e.i(28274),f=e.i(13349);function p(){return(0,f.is_greedy_cloud_sync_enabled)()}e.s(["CloudSyncProvider",0,function({children:e}){let o=(0,r.useRouter)(),i=(0,r.usePathname)(),a=(0,n.useRef)(null),f=(0,n.useRef)(!0);return(0,n.useEffect)(()=>{if(!(0,d.is_supabase_configured)()||!(0,c.is_cloud_sync_enabled)())return;let e=(0,s.create_browser_supabase_client)(),t=e=>{!p()&&(0,u.has_tracker_db_merged_this_browser_session)()?l().catch(()=>{}):(0,m.run_tracker_db_cloud_sync)({merge_on_load:!0,on_complete:e?()=>{o.refresh()}:void 0}).catch(()=>{})};e.auth.getSession().then(({data:{session:e}})=>{null!==e&&t(!1)});let{data:{subscription:r}}=e.auth.onAuthStateChange(e=>{if("SIGNED_IN"===e){(0,u.clear_tracker_db_merged_this_browser_session)(),a.current=null,f.current=!0,t(!0);return}"SIGNED_OUT"===e&&((0,u.clear_tracker_db_merged_this_browser_session)(),a.current=null,f.current=!0,o.refresh())});return()=>{r.unsubscribe()}},[o]),(0,n.useEffect)(()=>{if((0,d.is_supabase_configured)()&&(0,c.is_cloud_sync_enabled)()&&p()){if(f.current){f.current=!1,a.current=i;return}a.current!==i&&(a.current=i,(0,m.run_tracker_db_cloud_sync)({merge_on_load:!0}).catch(()=>{}))}},[i]),(0,t.jsx)(t.Fragment,{children:e})}],28302)},79957,e=>{"use strict";var t=e.i(54710),r=e.i(29158),n=e.i(47149);function s(){let[e,s]=(0,r.useState)(null);if((0,r.useEffect)(()=>{let e=null,t=(0,n.subscribe_cloud_db_sync)(t=>{s(t),null!==e&&(clearTimeout(e),e=null),(t?.phase==="success"||t?.phase==="error")&&(e=setTimeout(()=>{s(null),e=null},2800))});return()=>{t(),null!==e&&clearTimeout(e)}},[]),null===e)return null;let o="syncing"===e.phase,i="error"===e.phase,a="success"===e.phase?100:"error"===e.phase?0:null;return(0,t.jsxs)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-3 text-[0.88rem] font-medium text-foreground shadow-md",children:[(0,t.jsx)("p",{className:"m-0 mb-2.5 leading-snug",children:e.message}),(0,t.jsx)("div",{className:"h-1 overflow-hidden rounded-full bg-[color-mix(in_srgb,var(--accent)_22%,var(--panel-border))]","aria-hidden":"true",children:o?(0,t.jsx)("div",{className:"cloud-db-sync-progress-indeterminate h-full w-1/3 rounded-full bg-accent"}):(0,t.jsx)("div",{className:`h-full rounded-full transition-[width] duration-300 ease-out ${i?"bg-danger":"bg-accent"}`,style:{width:`${a??0}%`}})})]})}var o=e.i(46549);function i(){let[e,n]=(0,r.useState)(null);return((0,r.useEffect)(()=>{let e=null,t=(0,o.subscribe_settings_saved)(t=>{n(t),null!==e&&clearTimeout(e),e=setTimeout(()=>{n(null),e=null},2800)});return()=>{t(),null!==e&&clearTimeout(e)}},[]),null===e)?null:(0,t.jsx)("div",{role:"status","aria-live":"polite","aria-atomic":"true",className:"w-full rounded-md border border-accent-border bg-panel px-4 py-2.5 text-[0.88rem] font-medium text-foreground shadow-md transition-[opacity,transform] duration-200",children:e||o.SETTINGS_SAVED_DEFAULT_MESSAGE})}e.s(["ToastNotifications",0,function(){return(0,t.jsxs)("div",{className:"pointer-events-none fixed z-50 flex w-[min(22rem,calc(100vw-2rem))] flex-col items-end gap-2 right-[max(1rem,env(safe-area-inset-right,0px))] bottom-[max(1rem,env(safe-area-inset-bottom,0px))]",children:[(0,t.jsx)(s,{}),(0,t.jsx)(i,{})]})}],79957)},19943,e=>{"use strict";var t=e.i(29158),r=e.i(53602);e.s(["DocumentPreferencesInit",0,function(){return(0,t.useLayoutEffect)(()=>{(0,r.apply_ui_preferences_dom_from_window)()},[]),null}])},8091,e=>{"use strict";var t=e.i(54710),r=e.i(29158),n=e.i(52663);let s="super-time-tracker-pwa-install-notice-dismissed";e.s(["PwaInstallNotice",0,function(){let[e,o]=(0,r.useState)(null),[i,a]=(0,r.useState)(!0),[l,u]=(0,r.useState)(!1);return((0,r.useEffect)(()=>{let e=window.matchMedia("(display-mode: standalone)").matches||"standalone"in navigator&&!0===navigator.standalone,t="true"===window.localStorage.getItem(s);if(e||t)return void a(!0);a(!1);let r=e=>{e.preventDefault(),o(e)},n=()=>{window.localStorage.setItem(s,"true"),a(!0),o(null)};return window.addEventListener("beforeinstallprompt",r),window.addEventListener("appinstalled",n),()=>{window.removeEventListener("beforeinstallprompt",r),window.removeEventListener("appinstalled",n)}},[]),i)?null:(0,t.jsxs)("aside",{className:"fixed right-4 bottom-4 z-50 w-[min(22rem,calc(100vw-2rem))] rounded-md border border-accent-border bg-panel p-3.5 shadow-md",children:[(0,t.jsx)("p",{className:"m-0 text-[0.9rem] font-semibold",children:"Install app"}),(0,t.jsx)("p",{className:"m-0 mt-1 text-[0.82rem] leading-snug text-muted",children:null!==e?"Install Super Time Tracker for offline use and a faster startup.":"Install from your browser menu to enable app-style launch and offline support."}),(0,t.jsxs)("div",{className:"mt-3 flex gap-2",children:[null!==e?(0,t.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("primary","small"),disabled:l,onClick:()=>{u(!0),e.prompt().then(async()=>{"accepted"===(await e.userChoice).outcome&&(window.localStorage.setItem(s,"true"),a(!0))}).finally(()=>{u(!1),o(null)})},children:l?"Opening…":"Install"}):null,(0,t.jsx)("button",{type:"button",className:(0,n.get_button_class_name)("ghost","small"),onClick:()=>{window.localStorage.setItem(s,"true"),a(!0)},children:"Dismiss"})]})]})}])},33334,e=>{"use strict";var t=e.i(29158);e.s(["PwaRegister",0,function(){return(0,t.useEffect)(()=>{"serviceWorker"in navigator&&"caches"in window&&navigator.serviceWorker.register("/sw.js").then(()=>{let e;0!==(e="u"<typeof document?[]:[...new Set([...Array.from(document.querySelectorAll("script[src]")).map(e=>e.src).filter(e=>e.length>0),...Array.from(document.querySelectorAll('link[rel="stylesheet"],link[rel="modulepreload"],link[rel="preload"][as="script"],link[rel="preload"][as="style"]')).map(e=>e.href).filter(e=>e.length>0)])].filter(e=>{try{return new URL(e).origin===window.location.origin}catch{return!1}})).length&&caches.open("super-time-tracker-shell-v1").then(t=>Promise.all(e.map(e=>fetch(e,{cache:"no-store"}).then(r=>r.ok?t.put(e,r.clone()):Promise.resolve()).catch(()=>Promise.resolve()))))})},[]),null}])},89391,e=>{"use strict";var t=e.i(29158),r=e.i(17798),n=e.i(35434),s=e.i(70223),o=e.i(10464),i=e.i(61834),a=e.i(81553);e.s(["ThemeModeSystemListener",0,function(){return(0,t.useEffect)(()=>{let e=window.matchMedia("(prefers-color-scheme: light)"),t=()=>{if("system"!==o.theme_mode_preference.read())return;let e=(0,s.resolve_theme_mode_to_theme)("system");(0,r.apply_theme)(e),(0,a.write_stored_theme)(e),(0,i.write_document_preference_cookies)({theme_mode:"system",theme:e}),(0,n.notify_theme_subscribers)()};return e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}},[]),null}])},10289,e=>{"use strict";var t=e.i(29158),r=e.i(53602),n=e.i(60609);e.s(["UiPreferencesDocumentSync",0,function(){return(0,t.useEffect)(()=>{let e=()=>{(0,r.apply_ui_preferences_dom_from_window)()};return window.addEventListener(n.UI_PREFERENCES_APPLIED_EVENT,e),()=>{window.removeEventListener(n.UI_PREFERENCES_APPLIED_EVENT,e)}},[]),null}])}]);
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192">
|
|
2
|
-
<rect width="192" height="192" rx="42" fill="#0f172a"/>
|
|
3
|
-
<circle cx="96" cy="96" r="58" fill="#14b8a6"/>
|
|
4
|
-
<rect x="88" y="46" width="16" height="58" rx="8" fill="#0f172a"/>
|
|
5
|
-
<rect x="96" y="88" width="42" height="16" rx="8" fill="#0f172a"/>
|
|
6
|
-
</svg>
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
2
|
-
<rect width="512" height="512" rx="112" fill="#0f172a"/>
|
|
3
|
-
<circle cx="256" cy="256" r="154" fill="#14b8a6"/>
|
|
4
|
-
<rect x="235" y="122" width="42" height="154" rx="21" fill="#0f172a"/>
|
|
5
|
-
<rect x="256" y="235" width="112" height="42" rx="21" fill="#0f172a"/>
|
|
6
|
-
</svg>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|