aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/coverage/src/App.tsx.html
diff options
context:
space:
mode:
authorAdam Mathes <adam@adammathes.com>2026-02-14 21:34:49 -0800
committerAdam Mathes <adam@adammathes.com>2026-02-14 21:34:49 -0800
commit6e28d1530aa08b878f5082bbcd85a95f84f830e8 (patch)
tree7f6b1fb3a74166d97f2ba74f50d3cd787ec163dd /frontend/coverage/src/App.tsx.html
parent5e2b1b2de36fc63cfa677705388f5701c62ee138 (diff)
downloadneko-6e28d1530aa08b878f5082bbcd85a95f84f830e8.tar.gz
neko-6e28d1530aa08b878f5082bbcd85a95f84f830e8.tar.bz2
neko-6e28d1530aa08b878f5082bbcd85a95f84f830e8.zip
chore: update build artifacts and finalize test improvements
Diffstat (limited to 'frontend/coverage/src/App.tsx.html')
-rw-r--r--frontend/coverage/src/App.tsx.html163
1 files changed, 143 insertions, 20 deletions
diff --git a/frontend/coverage/src/App.tsx.html b/frontend/coverage/src/App.tsx.html
index cd305cc..6ec66af 100644
--- a/frontend/coverage/src/App.tsx.html
+++ b/frontend/coverage/src/App.tsx.html
@@ -23,30 +23,30 @@
<div class='clearfix'>
<div class='fl pad1y space-right2'>
- <span class="strong">72.72% </span>
+ <span class="strong">65.71% </span>
<span class="quiet">Statements</span>
- <span class='fraction'>16/22</span>
+ <span class='fraction'>23/35</span>
</div>
<div class='fl pad1y space-right2'>
- <span class="strong">62.5% </span>
+ <span class="strong">60% </span>
<span class="quiet">Branches</span>
- <span class='fraction'>10/16</span>
+ <span class='fraction'>15/25</span>
</div>
<div class='fl pad1y space-right2'>
- <span class="strong">62.5% </span>
+ <span class="strong">53.84% </span>
<span class="quiet">Functions</span>
- <span class='fraction'>5/8</span>
+ <span class='fraction'>7/13</span>
</div>
<div class='fl pad1y space-right2'>
- <span class="strong">72.72% </span>
+ <span class="strong">64.7% </span>
<span class="quiet">Lines</span>
- <span class='fraction'>16/22</span>
+ <span class='fraction'>22/34</span>
</div>
@@ -162,7 +162,48 @@
<a name='L97'></a><a href='#L97'>97</a>
<a name='L98'></a><a href='#L98'>98</a>
<a name='L99'></a><a href='#L99'>99</a>
-<a name='L100'></a><a href='#L100'>100</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
+<a name='L100'></a><a href='#L100'>100</a>
+<a name='L101'></a><a href='#L101'>101</a>
+<a name='L102'></a><a href='#L102'>102</a>
+<a name='L103'></a><a href='#L103'>103</a>
+<a name='L104'></a><a href='#L104'>104</a>
+<a name='L105'></a><a href='#L105'>105</a>
+<a name='L106'></a><a href='#L106'>106</a>
+<a name='L107'></a><a href='#L107'>107</a>
+<a name='L108'></a><a href='#L108'>108</a>
+<a name='L109'></a><a href='#L109'>109</a>
+<a name='L110'></a><a href='#L110'>110</a>
+<a name='L111'></a><a href='#L111'>111</a>
+<a name='L112'></a><a href='#L112'>112</a>
+<a name='L113'></a><a href='#L113'>113</a>
+<a name='L114'></a><a href='#L114'>114</a>
+<a name='L115'></a><a href='#L115'>115</a>
+<a name='L116'></a><a href='#L116'>116</a>
+<a name='L117'></a><a href='#L117'>117</a>
+<a name='L118'></a><a href='#L118'>118</a>
+<a name='L119'></a><a href='#L119'>119</a>
+<a name='L120'></a><a href='#L120'>120</a>
+<a name='L121'></a><a href='#L121'>121</a>
+<a name='L122'></a><a href='#L122'>122</a>
+<a name='L123'></a><a href='#L123'>123</a>
+<a name='L124'></a><a href='#L124'>124</a>
+<a name='L125'></a><a href='#L125'>125</a>
+<a name='L126'></a><a href='#L126'>126</a>
+<a name='L127'></a><a href='#L127'>127</a>
+<a name='L128'></a><a href='#L128'>128</a>
+<a name='L129'></a><a href='#L129'>129</a>
+<a name='L130'></a><a href='#L130'>130</a>
+<a name='L131'></a><a href='#L131'>131</a>
+<a name='L132'></a><a href='#L132'>132</a>
+<a name='L133'></a><a href='#L133'>133</a>
+<a name='L134'></a><a href='#L134'>134</a>
+<a name='L135'></a><a href='#L135'>135</a>
+<a name='L136'></a><a href='#L136'>136</a>
+<a name='L137'></a><a href='#L137'>137</a>
+<a name='L138'></a><a href='#L138'>138</a>
+<a name='L139'></a><a href='#L139'>139</a>
+<a name='L140'></a><a href='#L140'>140</a>
+<a name='L141'></a><a href='#L141'>141</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -201,9 +242,28 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1x</span>
+<span class="cline-any cline-yes">1x</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-yes">1x</span>
+<span class="cline-any cline-yes">1x</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-yes">1x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -220,6 +280,12 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -234,6 +300,12 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
@@ -242,9 +314,19 @@
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-no">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2x</span>
<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-yes">2x</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
+<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -299,31 +381,61 @@ import FeedList from './components/FeedList';
import FeedItems from './components/FeedItems';
import Settings from './components/Settings';
&nbsp;
-function Dashboard({ theme, setTheme }: { theme: string; setTheme: (t: string) =&gt; void }) {
- const [sidebarVisible, setSidebarVisible] = useState(true);
+interface DashboardProps {
+ theme: string;
+ setTheme: (t: string) =&gt; void;
+ fontTheme: string;
+ setFontTheme: (t: string) =&gt; void;
+}
+&nbsp;
+function Dashboard({ theme, setTheme, fontTheme, setFontTheme }: DashboardProps) {
+ const [sidebarVisible, setSidebarVisible] = useState(window.innerWidth &gt; 768);
+&nbsp;
+ useEffect(() =&gt; {
+ const handleResize = <span class="fstat-no" title="function not covered" >() =&gt; {</span>
+<span class="cstat-no" title="statement not covered" > if (window.innerWidth &gt; 768) {</span>
+<span class="cstat-no" title="statement not covered" > setSidebarVisible(true);</span>
+ } else {
+<span class="cstat-no" title="statement not covered" > setSidebarVisible(false);</span>
+ }
+ };
+ window.addEventListener('resize', handleResize);
+ return () =&gt; window.removeEventListener('resize', handleResize);
+ }, []);
&nbsp;
return (
&lt;div
- className={`dashboard ${sidebarVisible ? 'sidebar-visible' : <span class="branch-1 cbranch-no" title="branch not covered" >'sidebar-hidden'}</span> theme-${theme}`}
+ className={`dashboard ${sidebarVisible ? 'sidebar-visible' : <span class="branch-1 cbranch-no" title="branch not covered" >'sidebar-hidden'}</span> theme-${theme} font-${fontTheme}`}
&gt;
&lt;div className="dashboard-content"&gt;
- {!sidebarVisible &amp;&amp; (
-<span class="branch-1 cbranch-no" title="branch not covered" > &lt;button</span>
+ {(!sidebarVisible || window.innerWidth &lt;= 768) &amp;&amp; (
+<span class="branch-2 cbranch-no" title="branch not covered" > &lt;button</span>
className="sidebar-toggle fixed-toggle"
- onClick={<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSidebarVisible(true)}</span>
- title="Show Sidebar"
+ onClick={<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSidebarVisible(!sidebarVisible)}</span>
+ title={sidebarVisible ? "Hide Sidebar" : "Show Sidebar"}
&gt;
🐱
&lt;/button&gt;
)}
+ {sidebarVisible &amp;&amp; (
+ &lt;div
+ className="sidebar-backdrop"
+ onClick={<span class="fstat-no" title="function not covered" >() =&gt; <span class="cstat-no" title="statement not covered" >s</span>etSidebarVisible(false)}</span>
+ /&gt;
+ )}
&lt;aside className={`dashboard-sidebar ${sidebarVisible ? '' : <span class="branch-1 cbranch-no" title="branch not covered" >'hidden'}</span>`}&gt;
- &lt;FeedList theme={theme} setTheme={setTheme} setSidebarVisible={setSidebarVisible} /&gt;
+ &lt;FeedList
+ theme={theme}
+ setTheme={setTheme}
+ setSidebarVisible={setSidebarVisible}
+ isMobile={window.innerWidth &lt;= 768}
+ /&gt;
&lt;/aside&gt;
&lt;main className="dashboard-main"&gt;
&lt;Routes&gt;
&lt;Route path="/feed/:feedId" element={&lt;FeedItems /&gt;} /&gt;
&lt;Route path="/tag/:tagName" element={&lt;FeedItems /&gt;} /&gt;
- &lt;Route path="/settings" element={&lt;Settings /&gt;} /&gt;
+ &lt;Route path="/settings" element={&lt;Settings fontTheme={fontTheme} setFontTheme={setFontTheme} /&gt;} /&gt;
&lt;Route path="/" element={&lt;FeedItems /&gt;} /&gt;
&lt;/Routes&gt;
&lt;/main&gt;
@@ -334,12 +446,18 @@ function Dashboard({ theme, setTheme }: { theme: string; setTheme: (t: string) =
&nbsp;
function App() {
const [theme, setTheme] = useState(localStorage.getItem('neko-theme') || 'light');
+ const [fontTheme, setFontTheme] = useState(localStorage.getItem('neko-font-theme') || 'default');
&nbsp;
const handleSetTheme = <span class="fstat-no" title="function not covered" >(n</span>ewTheme: string) =&gt; {
<span class="cstat-no" title="statement not covered" > setTheme(newTheme);</span>
<span class="cstat-no" title="statement not covered" > localStorage.setItem('neko-theme', newTheme);</span>
};
&nbsp;
+ const handleSetFontTheme = <span class="fstat-no" title="function not covered" >(n</span>ewFontTheme: string) =&gt; {
+<span class="cstat-no" title="statement not covered" > setFontTheme(newFontTheme);</span>
+<span class="cstat-no" title="statement not covered" > localStorage.setItem('neko-font-theme', newFontTheme);</span>
+ };
+&nbsp;
const basename = window.location.pathname.startsWith('/v2') ? '/v2' : <span class="branch-1 cbranch-no" title="branch not covered" >'/';</span>
&nbsp;
return (
@@ -350,7 +468,12 @@ function App() {
path="/*"
element={
&lt;RequireAuth&gt;
- &lt;Dashboard theme={theme} setTheme={handleSetTheme} /&gt;
+ &lt;Dashboard
+ theme={theme}
+ setTheme={handleSetTheme}
+ fontTheme={fontTheme}
+ setFontTheme={handleSetFontTheme}
+ /&gt;
&lt;/RequireAuth&gt;
}
/&gt;
@@ -367,7 +490,7 @@ export default App;
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
- at 2026-02-14T18:02:09.004Z
+ at 2026-02-15T05:30:50.842Z
</div>
<script src="../prettify.js"></script>
<script>