From a1bf65a0071e09b6a816dca8ea60d4226513e91d Mon Sep 17 00:00:00 2001 From: Animesh <69345507+n-ce@users.noreply.github.com> Date: Fri, 2 Feb 2024 18:46:59 +0530 Subject: [PATCH] Rewritten in Tailwind (#2) * init vite+tailwind * Update README.md * setup gh pages * finished rewrite --- .github/workflows/deploy.yml | 51 ++++++++++++++++++++++++++ .gitignore | 2 ++ README.md | 14 ++++++-- index.html | 67 ++++++++++++++++++++++++----------- manifest.json | 21 ----------- maskable_icon_x192.png | Bin 6369 -> 0 bytes maskable_icon_x512.png | Bin 19186 -> 0 bytes package.json | 19 ++++++++++ postcss.config.js | 6 ++++ public/192.png | Bin 0 -> 1575 bytes public/512.png | Bin 0 -> 2810 bytes script.js | 51 -------------------------- service-worker.js | 33 ----------------- src/index.css | 26 ++++++++++++++ src/main.ts | 26 ++++++++++++++ src/vite-env.d.ts | 1 + style.css | 15 -------- tailwind.config.js | 12 +++++++ tsconfig.json | 23 ++++++++++++ vite.config.ts | 34 ++++++++++++++++++ 20 files changed, 258 insertions(+), 143 deletions(-) create mode 100644 .github/workflows/deploy.yml create mode 100644 .gitignore delete mode 100644 manifest.json delete mode 100644 maskable_icon_x192.png delete mode 100644 maskable_icon_x512.png create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/192.png create mode 100644 public/512.png delete mode 100644 script.js delete mode 100644 service-worker.js create mode 100644 src/index.css create mode 100644 src/main.ts create mode 100644 src/vite-env.d.ts delete mode 100644 style.css create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..44a7c6c --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,51 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Deploy static content to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ['main'] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets the GITHUB_TOKEN permissions to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: 'pages' + cancel-in-progress: true + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Set up Node + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'npm' + - name: Install dependencies + run: npm install + - name: Build + run: npm run build + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Upload artifact + uses: actions/upload-pages-artifact@v2 + with: + # Upload dist repository + path: './dist' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5e52727 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/node_modules +package-lock.json diff --git a/README.md b/README.md index dd3d47b..dbd67a6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,12 @@ -# Note -Single Page Note Taking Webapp. +# [Note](https://n-ce.github.io/Note/) + +[![](public/192.png)](https://n-ce.github.io/Note/) + +*Robust Single Note Taking Progressive Web Application.* + +### Developed with Vanilla TS & Tailwind. +![IMG_20240202_130334](https://github.com/n-ce/Note/assets/69345507/4feb42c3-e2dc-406e-933d-3130dab7f608) + +### Attribution +> [App Icon created by Freepik - Flaticon](https://www.flaticon.com/free-icon/note_3025463?term=note&related_id=3025463) -https://n-ce.github.io/Note/ diff --git a/index.html b/index.html index bbde90f..c976ee1 100644 --- a/index.html +++ b/index.html @@ -1,33 +1,60 @@ - + - - + + + Note - - - Note - - - + + + - - -
- - - - + + +
+ + + + + + +
- - - + - + \ No newline at end of file diff --git a/manifest.json b/manifest.json deleted file mode 100644 index db8aa39..0000000 --- a/manifest.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "short_name": "Note", - "icons": [ - { - "src": "maskable_icon_x192.png", - "type": "image/png", - "sizes": "192x192", - "purpose": "any maskable" - }, - { - "src": "maskable_icon_x512.png", - "type": "image/png", - "sizes": "512x512", - "purpose": "any maskable" - } - ], - "start_url": "index.html", - "display": "standalone", - "background_color": "#e69602" - -} \ No newline at end of file diff --git a/maskable_icon_x192.png b/maskable_icon_x192.png deleted file mode 100644 index c6b8ec4f048757274369c20472bc7fab64fc155e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6369 zcmeHM=QkWq)Ly%K-PL=PC|M;$@1hf(AVi54y+@6;qU|DTgs4jh5=8H1v7(nCqW1)e zWrHB(oFpwiXRFvYLv{{|^Bel}h9 zBEc^Nfu`DOfSL*RJph0?Pgmoid8i%MmMq!UGVEr;c2)U!wTd&9?l9O(Aht=ij*85^ zZ!?~dRgcsKIZF#hl)NQ;{3fx))P#)GhJh41qzO&SDHVQrSC!R`RiD>s6Z1%V$thK- zd9a~7Y&7yvv|K*Kb^l%1QrBU(%<;kUtzJ6Eq}=Vl+r!%)x!Z+>sYqIq$XHcXh=T?k z9$q-s4B-MAa}lx<@Tj6zjK0tj2oeKd10Y;e2LfA206i#L3r-4lJInl|0Z5Ei?}lxN1jH zvH;MS^8fTTsyI?qJa?sus$+EURn?#62hnQO%aTCkV7&k!)44X3cH_n8==KZfkoO8e z@O(#8p~b;4U;WuS*GaE>Z9pbqCz=a$#1E%c+fL*l^D9ho1rQ%${9({mMKZs^p7UXnM<0b`^y#$& zYa7XD3S1!r{WR#2e0x)+yl=7))RUnL)ta)rDeZ<@a#t5`BtRLr4P;QLAgS1sgj@}5 zP-?8&|K$bFV(Nd83-c3TyoQ|@Rf~tx^+re&O5?ZE$KT0b1aOj2yE<5-zb!eohI_Ij zTc3V69;CjZc()hrQ)ZOiYd|Izw0r-WP%(-)f9LIrG*mBIG5$BMBIPqIf;2{*sB>q| zXa8nqqWx8U1}l@+i~TS^=F6htr@}nC=*KpWt-m89clS(fpBM{aH`)mU1<90`i3_O+ zh(YJ{vI-P6`y^&(F%4Cpq;1;7An5lYDcx@dyUvOphL2#_np?K|@9f5WlyoH?k(A@S zS|Ej8%*zUU-W=%HbKv^j^$bjpl)L|c- zaes-;77%+k}cS?a9=*vV`uQ zkmXNJw;so=v>q{}(;`bqLXU3w{nrWunI_+j)y#|+D(vY%&$qQN>fEo(7`)Pf*B8TN zir0gbt1p~rENK4rDl+v=Ia5cF7&$nVaQND^v6>>(_4W{UMe+H$DrI|u*s$h1FZWF+ zw@7JSqem~JhoUazIe37wxMsN$uFE891Se{-yy_dcLzIe9^fvE&f%l2R3JZq}>i4o? zF{aAIDBJP&=UP3tMey4=Ps(>i!F{Ce@3KYFt`RK&ph zs3PwOagYn#(fXz-dLWIhR0FD%t82hnpSc(e<%ApO^9G+*vPofla)K=8AKtTb7*d=j z^PF9%l&&<>-v45S(DEh<6m(n{n_&eo*(Z`bGxX3PwnM32rD*h#n;F8u^(AL z4McBVux`por2%qd$0p?+UMo;o%-O{rtkTk~d@EX-p02 z`g-vox}OFaIh*pw`qwMGPn_$-4P*`m!%dL`@ZB0oHJjt6QF)PP1Z@HtQ>j_hHKWM1 z@N!h=rZDPF&5`S0!qb8_>hkir#lTj7p;RngLY-Qk8zq?)#PuY};fSn!P9#i@2M%J| z73d$jmM6>kwzKqOmB&%WKrK<`6o-(y$9rsFus*=LBRmS5}hk`2Y;dF^Nne}29OSv5mE_Gg^ea5G^-yG`T=D~$S1W;WWgkp!+c7LX0lcz zwIt{U2{A)V`#q-=Xs{92kg=MEI2)Zb%1eo)vLz_5&udX4$IkvV$8B~R_n{8-S~tOp z(PER%N8e_;UIS2$3q-S=~6C%tD{L@G+P7iA{d0 z4WLC2G^SE>4y*nehig7MzKL@;DwAf-re<(ximZBjPvkg|2X14D0GT<)%#T@+@&}@O zacFOe$D?eNn}`~vNfjQ`?4!$nLihx8mf_*pJQByvGqHO3NW?)1a*;lCF5j)Uq4k7? znQPJ6DIw~4L9n*0mLNoob~mWzrW^TI#zGQ;stXlOY_yJukh~YypB}QAA3$U*nWiKi zznpXIN&VX(q4gyp0>+UqC$L-suqcD@piLvtE|*QGr*5XSB=18UG#JeaB#L}^BE0C^ zOm^=2G(dBQ!a7KV_) zJ#Ys=C|re$rnSDDft-%Ox|f1F$S>>EJi}63o?ha(HF#6*gmDJkP)(sCS^!MFA>k?r za?t$Ezzu9HG}4p&D1@zawzSgrYDe>&(DCWU#q(_l#ODL<>btY=SAGEsV5>?O7 ze_Iacjm=|BWU6P7X&&B??wr4=IdV73DnxtB(>DaP!cG9D@zP!3-L1ywqQV+*qK6OU zT-GmXQrFLQtNA!}H{KE*P|`9 zp@;H!U%@&~@0C{ZzV>V(x(gw&Mw2x_C4-s=t8E`o7ng<+Dl{3PR>Fs?XW!m8B6Nc= zeY4&k;f^kUvxL%Ykv>FjJ=il=Ou=7Ds6U zk2TPaiO`D1?ij^+<~*-X<<4#-Ak|Ma{6!BKt-E;4d>hEVHDgv#$pSP7nP&m~#S2{L zq9m0@1aOO2H0hGWfOgKvuUp>(V_;nHnZ_O2wNOZEN?L5U)sMhlah6cq?~*2kY&)_h zgM1U%xv;0zO0lK>9__X~@SV`7K?K!?02%kmr?`(0E*_9f6+pgk%rM<>M;5kq^!UBB zC-ditTd?=fsWMk2Ac?c5kj;yc0CRy}*eHo?de&vR=9i>iG-UZQUoEkD!|f0&+pA|8 zDpaQGPZX+7GsW?alVh7IWpENiH_>wIWVa~s9i#!6{L{J%%+-WD2}oTXcg39YJdx=3 z`$+L=^#X>Od%Lz|<^vXTh7&nIQb4YWL7 zV%TApncl2YnOktf#>vSTmn^##+Fizv)N?E zL<7bPu$9|eh%vvgr&?CTc56gczMiIwyr;_dXlGNH?|##`uw3H@O6G(bFl2|H?ewxM zvdxDYIFXur5&!g{FM*O=3N6>i96G^iDl0za@c$0W)*Pn|9ndG4^2XZGW!~+ z#qW}3Kx_G_DV?Jmj{^@B@H)w8^pRKVk@r@-JQX zpjQw2;e!ffI%RJV%L#-PghuJB)lak_K24lH)sHAibDHVJmyK(Xq)G68e2;d8LS3nQ zn(UORVo~&C!Rx;@&A#f6*h>Ka*6=YSCr1G6Vr)1V5im8EkA0VUI#z9@q)G>BdQ!rx zaHv%wL@kFGLQfhNKi;(@?2gQ_Rm3XqI0aB5siLU(+DC3I#eHvo@M@Jg_3&*D$T~Q6 zbez;|@_bJY5?_*#!DonYaHC{v*HB7FuQOTk0dpxLrlpH@xf}dkp8=J+qvr~n-OfVT z!xVDZyXSuy8NLe*pZ&MFC@)U!cg`H5W>i?#ZwvFT+GS<+06jz6p%emi4XYcq+4&jiKn+Pxn--Z= z%EjSyZ>+2I&wri0;?q0!n)G-;+$2HHXQC8$FXg9$C_4bude$qfRZsSEzed6TTl3=C z1>$5Unt)DQVDt>=Nb2`QU+rnu)DWIQz+`%TBXD-SgFEEAzx@YLlco{)mv;=anfXOy zgFB9B=?=zieaoIho4@=$Zx*Kf@Sm)-Z&l~tFpJY06ABeJNg-;4CV8WXe7t88g<-%r z+sm=5pG6IQztQF$q<;a1=^n)a0k^+VHC+==3hfhC9rNOH6W>==(^>`pHy2e5rv>?Z?6qL?k3oEl&;nyt=`G?b5Qw?+rDw4&5uBk}bhV+;Fv- zgUWloUOk=qb#Sz2>_Jyq*v%?ui>xutI%6H9;AEe-amzJPsoQh2#`HdNH6{OuV($$B z#-5X}(*!u9C`(L#&pj+l{s(oQIA{)h7eZ}d#mw9T=NKTFijgCkXM2Npaq3O&lc&Yw z>?DY$SYuxzp#FBTkq6%w*w%*P4eq7;Bo}#N(C(dse{5b0onL$R!3mXAyb-@h#Ezej z#{3fhuSR{Uq|2l#yY6g!Isk+`SUWV0@gM}tC^Nf|a=F3_BioKNm9B*@U8jqMpdL;v za=UaS#Z1lfkr8qr*L`^K-wSON@xYuz;cZhEBV)h_br zp~5EzZK#xlLL)4Cg8gDPX=*}+npfp+A>zJoW>;C;1)da#DQ2{YqlmekhYfNns|A$N zf$eY7uh0URdBrGO=KgX%qAXgHh)?(L+RReRz)Zc--^wZHo4;2Am=tE!R?+3ck^?M>|9hj2Lm}(m8ztvg*aVl%sOi?)!E{!6V zjnLheC+r-8T=rrRvf*8~?62QM-wW`)Z&BCs)$3b)Oco@-;5W0d5+A%cvygB5Sp$&p z@axBc(q>p}^D?jk8DDAj8c+h^RSIN8=_maI4w|Q^&+uuOQ*dWJWVdIGf=)EEj%Pw& z*^lW+{ieh#-e=Dmf?mx^DR6(Ljli+ZP|Whct?HopMbHT5?q`BJW2>7Yu;Y%E>R(zU zJaD!~>!vDpHMe6Q9gb`t>(des10VwQCye8wLY8*#3f;k5ps}t^KZLBk-Wi*-(0=^; z9{x#1(!^NRujU`y+zAq{n{EhpyklHp$=?3C{(UCs!v~`^a+3`$ST+Y{7E}X+xyw)MnWh3jer5B4PMKI?i)XMDK+c?aoI)E-?y0ErP>da zpGkP3(adj=kBw1;5M{_Ftsgn02=G3K9+$K-|AtxZZD=7p4uK7GWBHAxJL^Bu%y|1r-Yg#|->7O2Dj}xqpI*qA+*zW0I<`10!B7(0Pb} z_kU~-=C{L7CVNuc2eQ|gbb#}BNn6xcaIQMTqgaZM%P=0Q#40aOfBr4#Av2ZGj-23d{Wr2C}PP{bgp8-y7Z!X2P zsck+W#sI+PP0WamZ4VbHJs3aGaX4&GzJJrDo&@Gwo=U&GwxcJZxv%E==sO|Af%??+ z5-Rv9;z^!Gh4BzSq_y=XCM3f@ENmYp_aD6PTIZ)gGP7r9&z@bby=PuO(o&|TV4?s3fLc{WQ5OK9;Ga+c zegXVA@EyT}9}o{+e5GVja`_E4R^vWf9z<=D#wq~BDsNcu+P@9KVJ`eP%zsS# zSAhPLwExb{f6C@R)%kz9yY%GcOBWN6xv6`=55fvQfc2G zk!>=HB}0}hw*_!k(|>#rrSMK13P;U+)+u9##^ukKX_lGc)lwQ{H7R~7`5}N16l$kj z*h}#+psoDpO!K0^@k6Tu4FHlLz-@5XHze!9AXAOtWoRDxTe^^MG!ENi z)uqBR*PA3r5d%CBn0)o(?FJD@N1{}{4hR349m7}_2`60sojNqwL(8Kf$h=p^$Ln$E zID$47fFhXW)N(c2-3)%$>M0nt7&tdxV1~;hZbHz*y5}=HWW!KwYeJzPD|8NA?bp5e zts2^0R-+Ur?eT$qq>@%C6&FZZ85&$%xvbD&yM5%s4)uSo@^Kq%-L&xCw3`mzcIIQd z`h%$BTngm@DYHX3piIrqBWLF08Ka?e4*3$W)LWpVA;f;kRsX7a`JfRYDyz%&d(-WU z5IFCp-6_r9X{@N|@gK-#_{|3(FW`m&++N)Vu`Qch+!a&K@q@+`A#dQmv67mWr;q*g zBK7POtsU7>z=zH$!72OtV*~!+(y}zOYaYG&WDqzE*7F#$a4HhCwXzi8^iCdO2yTe6 z+i(4JdX@z#e1>K6x6WWO$?K+ix2%ew%Pyx)Of;Ar_im9iAFyFdfW)2Cs28!)L{0AO z099SSNBl4ZZ4C7GXLYOf47pTH#WxuABb_|(Jz}UT>Q7=FQ$TNZ_mfeyd0fZuHd^DW zq@PVRP!THp7fsQb zbaR4K?@nh_=sc6#b7uG{c5@0|r_e404KB~uYUQgQOvSlWk4o+{p|tdR&4~yXtYG)5 zmGdRgK~;U!>z7@QIgoPiQjl!8w2w%ThEz}L*wmNyndt>LM{giwfr)c3Kl=Ea7)g^~ zGT=bl<}B!ta^w+-JB1mJS?;lYZ76tbWX5%En&<+zBK>;Y+GpCBM}GJF0Z%^fZ4ZH? zC@R@P9cIp+bb2YIs{HX#v5n1>7(|kTwV04{2ew359mYEr;tliI}ygrj{za za8yFOZ_s0C3_y$cUjm%47HiYkZ#BBmP7Fd3FutU6C;c^`LhhN9aUWRh%$&Hy7!tlH z$KjPERm=vVO=~FWpp^$`$^NImd>?s1;@LIGFF)GDFVZl1ws$tIsxbL685QEf%>+ZN zGVpy(bp0s|b#?VM0DZ^hc=_II`I@!06Hl%QCOM%+d*6}-Rav`RNSORBh3D_2dg1Nz z%{Bs3k-$|AG?ja`#(O#6g3=9_jFBy$URz>FQRAGLFN?BCLs3EZ-Rnc~XxEgSqc>$N z`$U#quC2v*;OZ{wmlep#Yn~?P<``gghGbd&c-?`^bDBE&p6uwD-xLqNbi86X-dv2G zIyi1)X5ht4R`$j!GHB~0`|`w?GSUAgxbcciez+}NLy zi~ahGQU&IR|Rh|ifxegU)!pBAJbNMGD;lO-l1tb`6ivuLE5^%m3g?SuKe|~`qK2x zWV9uJ*HnYj%)&EDRpgJ36?;=4C=d3*cDI$UWNY^6CMuX&Yj)CqTv0o zfD!v#oLBu5b5%Ct?8TIBT#Lcr1ai?>o$YKQ|DM>)6sbgAM!63WE9pNb9AR`JXNXyq z6N%m`tFftUk#Q*0;uoA#?|XCBHNME;lC=xwRc%;dIp~F zDhuNmZP+ZaONn!#gxR1K`vv?L)@6&yt{U`{h;t%F&QGJ6E$--HlYQ+w46%Bp6J8W7 z_xdK%5?jn;PdvSX8y>x?aj?kf(^(yC;jYE%7nSE;_UjsWT>DruA|&CclslP?+ssIb zO1abb>A5odg3#GxOhA>GOHVFf+Yl7A@>BJE3BzJ?ZG^(*ttceT@?Hf7Kk9*R5)dd| z+|i^e4eBr~Wmvfjw`>bA4nEY=ePRb;niSMepaj=q_F2%J17zHO{bQh~$NQj-SZ@>= z_tS%NW;dan=6tO2cU#>jp%d7Q$}OA}HZEI*AVZC-wzB=u?)iW)z_rvI&nX|yy)O@% z7c%}LM-r&ji&;AglwtR{57A3kd`7wu=cmoMS+VX_ZBedy!)UO7TnhiQj=t%9`!TMq z+QvepA~$f-S3rqC~Ll3C!!4QLb08sh*5P6Mw`J_WZ5 zK70wVF8;!Zc2~qS?w#DpHjyzLK;jOa?h#wIms5(Z@8MUA*@m|xbFym0P4^mHN>|U( zjpo({!Q$FAYa7+Xy;oI@&QCkXqaP|8S$tG;LGCN1&jsyYHI)18Ws-}Vzn@-5Uo2O| zW-69?xJR?4;>Cm*?nKhDv%kyyPQ(g4jq$@ zs?W}>Wn9vQ$uw9`X~YhSk$#WjrTv#fW%k1fc%$lJZQ^26N^Gi#`_Rz5K$H<$iaBOku3GD%@va1c?Bs^mZu``%P;0G6`I{dD$2j1{qUX_+D;+f z;cycwkIjs0>3rXE%_vyvq$f%5&7ZlrtiiYzcV+Qup+ars+-%bBf-%fCf>7P&ZDvVW zAFR3e+4m{kbh%}{5~KN}WE@mH{+cs#Q(g~q{-vPmoZu#!p-zJ)%Li8U4+f8SR=Hm- zFUtfi(w`m-%n1K@S?aLTXmI}Jv`;Gk?z3(qw3i0*`0$x}z3@G=0XD)B&ZMDJ^9(37 z;{<1FNLxl_SA zxie%RWnBB#piGe<$!Xl?%D7o}JG*%Er5~JY{o`-t5gUml7nea}F!I^Mct-KF zqwuuzTG;U)?){zQ+#e5J*-m=5+%+S%_8v<+uF9~@@YGyEye`)DK18Ga@~iy!%Bsr5 zJx;9Y^5`JN{7@0H)3YO~hV^;M$eY^sTaRadOMXIx7MWtK7 z?l|`9{{G~AG>2>i%Xq2w+6D2*-z_`lQ=#EbI&2ZXC8>~8CMQ;jB|Xe3CaX{(yh4?rof~=LfnV9`$>O(< zq3y{TH2R{*;kVD1k2$1sb{vRj6$Ga<*WK{upy$T?#67`E^!vMq?(-X$f&}+htVhq& z(B7V%1_!O4auTSOq$lTisrnK_YK%_JPph40n$tA_ci*}TFrGP1>+3jJKJ*x`PRdaC z5XI~XZ>4Ta1Z&i6rPhxtc@9pj%foq3F9)XZSCk)pEgcw!8vYebe)PpgzA)fdr9-kX z?>Mxb3b#{cMll?LF!{mA2bb*E@&eQfF)cKa-IWgr1mJo@(PQUz2eVSTPn^^_s@c*mb;Vi-wUfm6Y~;y! zu}c3L*=%8qp?d3g9=oA-&&Tv3qva#@ZB%w#KHlk@{h!3`l(ubSWeykV`o(P^iFoNo z99(7RI2dK}0H8_`{xpLsb#eKJK?9@3g(X@A}se8S;=n_@BTr-SE0JW7N7&!kyiRRNgOiU zz|xC!(Ws1UZkFJ39@w^3&UcY)ntxySc}lZMR=83Z?WNe;9FgQ~--++Ne;@pjz4#_) z;#m+z$K$C+-&ST)>nOjIKbIoP@|2_WgWT4b9sfhnkY9eXQds(j995J*=~AV$;=0p; zRoZh(D47WqNgdvNf55T*Ny)g^yjg84DCKkccA0GPy4|8?M}e+h>^I?|OXAet27{OQ z{o2Zvi@n#El`YHCw9Zu=tW(>*myF|2E$+T0XHGLZeW@=oaJ)Sb@*MQcljbruOg!!Y zZ6B9kbJz`gTOfeo<&rG>g9XRo?Nj$HQs}H{`Dm~-{&i&Q#0yyafCEjrsCc>x7VU=N z89j>TKGifA4N@m4q8c~9%CNhvqSgCK$2E`VX}YMcLtyQ*xaYG0Z=@gtJBkMTB1dB! zdDID9LT{i861SCezW-c0p5!c%2BgY47ZZjB*^N;iRJp`KjeVNUjN6ZuJA|e+Ji=0 z;ltdPZ)zkL=@G4Kp+)FVcN-Uw{mTO5Mo&5f8SY9jMXMXB{iW6>e1n>p6UY_WZ1D7T zf}>$5@T&-e|GfdyQw{z$*fT!f#k_;1#l4lL<<$>Z5Nza7&6Q!%i&QXN$Rtf2uh3a} z)J4gw&YBYJSe=z<{p)%z&cC5kZk)Z{uB-a2@@(iZ(NFiwEEt(k#qkRbCreYHW`q4b zXxi(_lbd0yo-~=Kz}UeIdX-5HYI*t$+k^@j<`jGb@qLF9c&dO6&ClzgS47*hY`}YZ4k6AbnXazdH)Q=7{`JVZH-Su>g>C(OfhD zuFCoCS6QP!-r6e#ipK_b9k}$3hdWJudF|rUpQfL$jIOh&`Knu$=Fcz1cbd~XX+9iT z%+;o|DuNI!f^kxY-z%t<*a62~_a3q3#{i7o>gVWY!`LsW)E?2y~SCTztsTVUPh}DOx+xIwmiOE{)Se>WRiSDpQxm1R8NOE{F@XH`< z4mOPdpKnszi@E%Cv+8}HTM~&w)M_)G0O;3W$P%$Nue}ezdcwj(3`Sk9CyHO&YP0b8 zZMpQgrp!z_ZDJH1c7@AkE53NvvmK9)EfK!%<|F?x|7)LH<4SDz9Ys_1M15?3EL`A0 zw@ZmI9{K#%$m%K;2+U~BZB*JGfab>$-Zma-)y^HRkCn3|Bfmb(d-o{IH=T?M9XgLmcb3- zzp;4K0IY%@h<G2-P9ePl*pZY z>#Sjcpts9f(FZrj(?dtx7X!FHkF}r*Ys&6cyPNers?8%LpC%b%``h3G_k+!5eg(jn zvp~UE{GMo+@uU(^p%-$>zK?j#6Ev(vn7jgE#f6(=BW3SMy*{p z?JqrSe;Ist^bI#A!IE&{emXsPQnMt4G=*sayP={=>03mND8NQ5cuRYc@jBwR$6rK@ zUb)Eb0u-V7+q)q}5qoSf@UiPflLvv}-UkQ6EiELY-ScJcCpKo;bI09o>)vE9;wqGZ z#b4=m>7js1bnW!k&9t-J!l^PB{SFU`ViIAu|El`?Q|0%CF ziO6oI*p7X&T+V4wWxZ#45y?ykNP5~2-MRrJ-Ewp}xBF|u)jlq(hj%PepZll|-ZeHU z43*-n zJ+d17mstAtp(q!1kXrB@K`}^s>6`-vtg@Z<)W-n7DmE^BS_n%5DRD)1WVNi@6b?<3 zTod->z7EdYSHi@A63n#vaM^FZ13f0x4SB4#$SPThJFFd$&7dG90Uz6Y+ z4O(d{;@I~oDVThVbY%(kUw4OI)O{csoz0F~%(We$v08$oAf8?Ce8?dJtJj$}2`@Nt zH1FXhCz|GxxM~yO@u#eF${Q`9HU52D{atkEhLm-9lw*VwX8_E9(E#?b+XMUuz4wVJNqa0k=Dq(OREx41f;~TTF3#~eq5MO&ljs*`+|_k zkvFuItx2MQ5*2H0@6E4+vv+y>Z)CH;In1;GC1A`!>hGovhly zkL_2$QIm~vvRLKQgWVY=jPanWCp0YUtmXz3WLLgGt|$nJu8k{Jc7+1F(rY1+D~E)5 z*^Jwi+}f$~SCWYDqEKn^Acr%loe$N;6ot*Dporn^4ega01n}F*avbyU7lSJBKeYfN zrTyoJc?9|QqrYIE-kfP)f&A#a!#X2c=-u(U2cbqP>S87*c)riwbgWn!@ktT{wSRr| zNEYG)C2Bu#nmEuRdqUh&ryx1JrGkj=L?$RfyD~-?JkVvD*+|U+b^UBFPy{OiKG2-^ zhXMk|JxnN?AjjMz*`G`(*_W#Qn%0synou|bcg*5H#sDIFE7;WwHV=Wf=0Ie8{lOYP z%Rm*`Ns4WdZu9rYiFkxW_6u))m!M0ddhDlEjV9y z&z>zeZRdwxZs`vniVPP2)S?{h6~8_!r^AiWE|Gq6aJY5OfbJW>=3!8Os*NUa;CP!f z?PkI;Jz?HEfC&_IwubS|5*mnAWbU)NOAuO~J`DpU>`t$_Y81H3F0y%VUIGY;2lVp5 zOQqCk=uM)nv&I8(8}o7BkA}doj^iEKDIFjq-|b76gp|G*qX+)Bu=l#R4#ZQBg5&Es z0DoB8;8WF`NNrM9Zp*4>dzY(kql1RrwORh2veX9b^hGEFL(u#Vo*{N)vQI+=NyM=5 zmG$NMjoPB5_))@>Y{rKm(QiY`=QW_Vpk@9S>g;|V0=6XC_BiaHaj0uE8Cd_6sVe5? z*~Ccq$Zh4|(?@Ol-Zr`Te9Dn0l3>zr2{I6kgQF};UX*JjbrLiB9F{rgdhaQ*5My3^&hpm^w7<5?L;)(9zD--4DQ7;J{KP(o(IeKz zIL{fC`=g=L(01Q?W;)uNM33sh<+)aD$IgAA;FKqEYK#_W^m1~K02Sr4shx~uHG=g7 zCJ>jo=yE;zxS#n>*AORQ^Vv_5?!()&h8XEvm>mRwKUYu6KLRzZyR}IX0vKY?c9yc^ zBtC?E@Th&4bd6$`9L~!L)zTs?v%-Kcm$*PBn$YP6t#14QDQW5=^&Vl(47ZQ!>h~^(!(17c3~0Z`vcq_*fk_hHl}DjBP?A^+L#Yz@rx#(C#9}#WZTxbuWz81hbZ+sw zXXY7bF_#*o4=(&KwupE!D<~>{yA$*F*%$QLxiN6_y!`5~LC-Ek%-QAK9y(`t`IsURb;MVDO+&hvd$#PID zfwRjIf+WV`5djN00({vL8 z148IBKwm`UQyat8?~823!0K|hoJv;G_1yi#)^ABR1ZB2d3y}W1c&%=`VbCYJC#G8C z$N;qQvu4_^&CaC;?#o>`+mp&Mq2I^$PWYI`n+}{UGp_!`ZsdHPC{8QuRYiS~1n7<+ z-lt106>=izgtOk;@^ZPiJJ}!u+Wkv4PN1zh&nPhvqd+zKX(Mssk)FeRdRTmx;w7(b zp_JzE_w{DM;bZ7|r**|YU)Tp zk^4*hV-ZFzqF68(6Cj1Yi<|I_PA6X%ZrZQ2i-fQFXO0TMY&*V}XP_9375AP{& zP22{qL|7I!;jXX7-o zz%V!MxuVRB4{lM8eSZmk0;=27=Cp<}I>2w=mg1-)cwc!@QS!S?xa@NMYx;e{R;O=O z?S>InobY&E!bd!HYvu8)p9;nMR(|0j=jvkL>?uhf=QX{j`HASsp_eBD-BxlTrL$>wKa#{faK5ZcC%y z>!#cNYdNI^+#np)D{54pIzb^}k`x@6pD)VQw1OLIle8pyf3K1x4rlkmh660-CXzg1di{r5W;D zoI5&)Sq7BPK1+Af3s@38G)3e4l$^WyD#unycixzq6gJi$*fdWuxg4m2xqC{hmDO}9 z2s?9zJZUE5?azK#DYql!!V=D?*_40_l4_sE#bNSCfn&$ljjB)h7?ioW zD_PeAEZs4X{X;p7?!HQGBeH|9v}sAMq=^uvm%!?vlH1Zy2*T8@_%CpvhW5knrAkz5 zJ$>PycQ-)|c9~z-`wp0woM#saS&t4@*ZN}cqWf)+>I>;ku;79~quK4Cq%s&+KEJCK zn?t=h%knU8WQyDZkmhxAPXUumR6E&Z7hv9$j5f<$ z;u3lSWG0$}!*YuQz%KRcS3JH9EYltj85{fzXq}ha>0pJ-n|puTp8T`LlW9vkA`;sjs{dxUG6#{9{_K4fN>qa z{gOXJv($6etZhav2fS~=2Cw?Duy;mq2^yJ6V}wm7YDJP+qN_uHQ7H;PfKmOdfPtxNtewH z(1ZEv`^KmF1{e-UT-wQcFiQoo3bywqt*E-YNg)qYjJt{+)j8iQ&Dn5^0#Sb=XU&Co zQ#MVU=WA8<)_4Jmf&MKNxWrWtLh)%F9m+XB{kZ9Wh*j_cTCY&p-x(Af%NH1xp#B$` zF-8Gpd1HIHnKDtI|Hv(EbO-!icbmPT=wQ?KJKhep2)h1%9YU2G z59b*EIy;F2uv8X^aRuj9a)A|+H`mDFnn#Kuuf_@YoF9H$Y1J(JSRA<>LI*k4^2bLi zO9?fT36N(^6v$dxv?ngI=pyKwvwMEh9Fx0IFM@n_7K(e!L?K`uy7$P%1h0ms)q zJRRVTmq{Asp+M2sHK)Aq+K61boJT6`$1F*RACG6*hjWdZ^>g$aX z2}1+Bm>(h2KjVyCO5I92x{*EWM9u0)UJKn#PF3Z{ftL65Eon)7;sP=pIcv-ZVhAp* z+^`N3u00UYNj?WlHEz;TkGuwJxF669G(aNGFN@faUcK??Dz_lt2NpMsk;A8|qvtZU zmKq_$)n{9!NemR}VPV&^j>7oDj;|j-C-`LbKN=)=hR2vfpUdEwe^x+V2@jP}LgcAl z-WrGoj2*w z`NLA3n8Mg*+Gls%)iD@)jm}lAip3)#VT1Qfsz(3C`6@a z+^#I^sx0D#1(pg=J=&iz(=G`mL3y8rs^x2Ml?IMHxV4wbOxpXkUE;bhN3Bx{EhyeW z*tcN#@FX8~Yy_4l8Na5LlM9ny`b4~Ko_+n*foF@K3pYSbtpcf$xY{6J+gbhi zjPrckQu@}o*Wt*%&%r}jt@K*vsZvkv$HhXUG z>rWgF-8Oh$<%oca#lcJ&ll{-?Cm{n^Q+{Z>1?JeXQO~>*TZ1gMq+ANv_8AGa&V2e}-&V+n`7J4G zpHDRYz#Hb8&lyC>C~_toFKEA=PYiNSyLF*9keAyUU8FsR_k~$$PtzgG@Yw~gx?+DRsBhJc^Eu0Y z+no?SAKC*2SZ&Z+ghEc0%)pdML`~z!CdGuYS6vZykvvHZjC$p}(3@98z>uQ7(=BuL zvIDpIk%v1^C!0944~AphrU*JlT`Hg-XEu6=K~Wm&>u-Ud?(bhc8A&&VpWc8LO$~MI z*!^(7)!vyES{d?=9-&Jo^IvesmEuJTe{gG-j+8evOVH8K-C$bi%EoQ^ z55Vqh?b-EsKvs;ib!Aw2$xofXP2Cg*vw?1|tj{`vS*i<^E=%Nhtiw6ds@d*1{VFHbehp#}IZ?(?W zw>Q3WfI4aaV;eHl9)Mo`OVp2Yut@ohLE}lRyHdmCYfcFkTg7mDsuk#4dLX{wPH4+YQdmg3(vGj?_L`t((ovK?P6tQxnm2gzf*Q^IN zpo@VJ@xL{DnTOjFZ!K9DD>I(B6dG=?x}?dGs0oh)X5=RIWWdwmg3%c!;>U7wx-uV} zUxGxl9tEvEnjX)lZ`)=$7MV1meE=56dAxt-_v{{{^x@{4n#+p7cg>M)JT2gTDwlK^ zH+k{%J_UoA48N|-W4_H)$}bPvRpKR~pJ#OUUBQhS&uo+3*Y=wJ*xbMhiw@dpfE#Z{ zUW55P|2ZzR;N_IjXsGRgxk|pX7G9He7M7T-rGD64We{Z4V)is#<3&2Sj$bk57i#jg zUMQxloZ0XcL$chT%*nsIt^I-IUEY|Y56_9Vi+$DI^9KIj^^XeE{D8En57|SQ@0Mim z)_IbNFpbiU0PD#Z$3xRTTQKWz<4J(iUkDXZcK#!ZJMAncE3a3_q00>S87BWm3P_cL zer9~91T#As$;M}6g42E~DF>9YKe%RTvH#in=q%;l{wc?ZhxK3u631`y5_l!bTTu1G4$`(?@| zTP>5uGopI0=;>G_p+AyBXdP^gEw4e_@wBflwzE*^x1OuuQMvhX^13ZRy0-a6tgj*|b827PuR+I0J+OdrOAyk*iu;$qHc5O)KUxFmu!=8y<&7wMq5%0Vv%Y|0T zdH&cDiukJ2UL#hQwoIc+earNU?}^5-2%F7h49ea{Wa#h z!P@@&DLv3uJ@(vutJA;VFhf1WTh3yPEeQ8+{e}xE)s$`Cqk;XqXq6rRj`GENnsQ;J zd^Y~RSB5gD#|LCr{{t*rqGX2T4h{M*{Yb6Xv&W`};|8A1<@x0iPXjye zFkERni#{?_1`(7Ph@t^lCJuW|3)dnGJmT;2ad zFEC8|u4HXb4i7Fwa^=#J{CIjlQ#@wvkLHhA2ZHpz0eWWGxKftZ@^Bh(Eq|CY4(3zO zejofTUiZd=LYQRZXhW%Wzp%Ie(cGEQL#DCo&wW2qpsYgDit!kz;P=0dnFf~Kj+P$N^xZRtD!N|aXsoeN<6e$G42--S|c{P6#Gp5&nfuf~o zq*~vq-|L1HYm(P+lvUQak;7Aqt(P>1s>uec^(>v0srn{*HH31|WxMBpd*JWAhqQOT zeC#1ZAIj2*E&3Wq&bU{tR0h(55Z9;Nh&ZQ^JSwJywB93G;c?3n2Hd(_FINmerIN5* z!2CC{@4nmXs&Cw?`J))E8fVIKw(ULm?ItP8ZpOi9L|TG=^Wuj&!PjUBLmjt?nTNqV zxNHA}9M?g$gP`J@iB)W`Aam_+)F@;%T7DWVWe1^sg|b!#OQBvnQpYUzT&2t;4ZgL< zXwTVpVl)fJ7lOMbQDLZ8A#cbpt8r%|3n`fIYBtWDWO}Gom911nq34I~4>FuY<9n9v zZBQU4e6^}Xz|7?BLW8R|l0PI2SPf@-(Wiu>1DYLrTj@ zaJ`c;pwXhy*b+S54})1!ZCYrYM38D@VQ1cY`{Kkfrhpx-Ho^bBmLk1+;huZMSc!XQ zzx7TGFi!4VKxtTgys_6Zd*w@?hMq+^y#s&fjlg|QmrFrw-_gCJ&Ab!QDIO(Vzo~ow z?8=SaJ8>;}+Cmjl2tpvQqC*f?+f;Bx`P3p3mQo2b^1hOt(*^b5n##UF9tkxGW8R6a z_V(A+_;5wbKy3L8)!aVSWe8fbx^yQ{Yi2KuWR(A2vL?7jM?7Czt2cN4KhD$AX!^(g zI~kRzJ9lB5NijR8SW{M;9H^CFc?Z-l{@d#FS!tt>LA>Lu46ufgO!tEL)F$Q5Z8-9p{n-Gjcx!caMDDv1R z$uXjd@9+JsUz6!Vqj$<`x7-`2EZLQ}<$b1kQ_Hi2uTYim%OmbUEo!PJH)M;CzK0ZK zytC*AdB*GEo7!{8YV<>NrSxC~yrXq-m$81Kq_)0jUWHTLcg>*)ezLB?I(#6Cy8G!5)fcL?u4Vb$=DYOn$_<=4LA+iUq9F}2sxi>-Uz63eIINBwzX&t{ z0L7cX?*b4pM_!|BZLA`+ul`=56MLio<~F3EWPZ%1lvacMU~V=$CB~y*sH`li{DN=6 zQ%>d+oYkdWPM2U^z2yz`W40dIp>hon?|DAtN((0bvCD(u z!aLwaEP99s9`mP?Sg_0?7gefM7Sav{qvXT{NvM_plWQZzR8>OOm*2rQchRMeEHAhb z9y+4$Sj9|!Ra!LS=iQYTG0wlLH}aW zrEZ`5tbA_{x9&1~WDxpnM$@IU?4(xDtiTyk6vmd2(6!aZWJ{N>$MJxpcLfMhwz%r{u%l1BQOTxU=8O zgg7{i10u?x%tIoqAUH9T?-K!LTVo@g2mfqg-Yf*jhsZw#(dE~9h4aCe1R~+-r6KcU zD_!PZ!Nj(&y%{JS4}I4ZQOG&ftC-rY2GcUkY3nRo;+gP#-KIA^B*7drxbIBC~u0nFd{bzw_O%y#dm+64|K94NTVPS*1}qZq)!5`m`f#ORK{jJs7S+0m!7r`z(AO9*Z@pD^CB3QYSgvS1;zI>@SW{R3* zLyr@*a}46K)Krjh4LZkUDetO3hm5~UE7U6;v`Rr8KJR+%Mgr3z#PQcLxEBSufGRx) zOsm>o)iLSTRMn@CyNG`p^z*l4081?lwtpJK|9QjWUupmM`2pGw2_S6vp!k^(?B6#j zKpgU)MgWW#gxWt0ti7fB_vs7JoRiT0`=SLUD2%+G_iict`}74Z@crM1F67%EfIcT> zc3kKGGz1ez{|)mW)BY8p|0M0dbMv3F`A>EJzhZ9)$YC$#p*PgpFTh8v0M&| diff --git a/package.json b/package.json new file mode 100644 index 0000000..9f9bf74 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "note", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "autoprefixer": "^10.4.17", + "postcss": "^8.4.33", + "tailwindcss": "^3.4.1", + "typescript": "^5.2.2", + "vite": "^5.0.8", + "vite-plugin-pwa": "^0.17.5" + } +} \ No newline at end of file diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2e7af2b --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} diff --git a/public/192.png b/public/192.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb4484cc1fb3852376ab64cc96c8e546fc3514c GIT binary patch literal 1575 zcmZuxdpOez82;^=#*S4)Xyz6Uib`{I*=P>khn#dpr%+9trI5=u5|V1tg%+z$}GJ9S#7P^fk1A&8Z!uyiw+mzgf_RoZKCnS@Cnmnl{K`-$hr@ z0q+%}9iQvw-Pw4P)qMZLlhG29!mQ5w7uCB6J4-K8Bs-whxkMs0f-|Mxb@nQdydSN0 z2kOCzaRzmukcJ#sYQlrPJV>4yi|Ko3xLN>~oIQh~s@?2WGp+OOYEmqz%#~H@Sfscn zWiG&cikt!?FoD@nVyo!!zOn>QRzrB@SjXzGuHwhT`xG&T2mZv{x0*?G#wNse%FKsd z=A$`~N)vc4#+-*yl;MsGz4c4zRx+@3@c~r5`xs&>dBdlkN9@>6y`_cGy|vyAVCQ=# z^|&rPC}qvyJXVzL20v4yfY(FqvhoLWw;*oR;wB#q!FC=eRdJ|HMAa#)jw9*M%E!oF z%kUBX0sTpYCMmW9nL1J8ZLO&1CqTK#S0UUen}LeJ51RAZ*l=<}=X+?a$xl-X*jtG< zOR#aolP8sNIV+GFt{6W8|M92UdvtWINbg<)>-sqyEs@x!FE&-@3T_sIs*qAjEZ;>`viC!{wz55hTY+bqSje5UX9hx; zjuhJg6LitE>nT5qt=lN#+^6x1;YBh0!zYK7-HaY=1d)@PHKc=M`Jrr6e;p-;uaWXL z8Uz7@+L^C(jrg?}Hj&CH2l+pWAEe^!vGEdnA37_P6~F86?*7xZB^@b!Lu0;%QRAdO zk>R_juUk*U&;GJ)#dG7*{gf$WR{F&?EhFUc4EMg2udL-1vMggzl~T#8!27YX5T#L7 z_Aw&xKT`?x5SBOlw1*QplMrhH8JhFrjWeMFo`)R1mw9)hpjSs(r&!WG{YnGE@`Q^j z=C=ce9Y_s0UehFu^lWGA;^yQ_S<;>ytVs<^O<}DZ7KT zaZ?X*OWPn67b>-3`xjS~a=T|;??xS7(&A28;v_UB6h}!;_*hRuHG9dfLi5k3LrJUP zVC1l>7edR!$INTBHj~PcFH}#Vc@3s@r`p5){?#4oHQ$`nJR^)yI3l8qSJmKzt;1<#Gq(-{6(oXc7$1Ii=pd-V zaxh0fUd`@=^xNx{$<)+7v+VlZ4@X@wN~qACP6C<HJOER01h9cHUA8I#YgBAFPO?%vV)NizNjW$CCS zx)HnE5KP~X2&~RqEj!HceoD#*rCn?%0y2TTEShuK5B_FL;-ztI8y?NK&BuLr6lS56 z!~iFR|HI4Pkx{zBAsVXmBSE^W>+rkinhrdeW^f^BXR00ESBoV9&8#x4n;@9oUdKo} z?ZzQziY*dJpksF0x{H2U9VpUgRbmZ>5f+!-l0X}G&S{lZd9Zwcg3NT^6^Iv|_RR-?2WUoUNS!4$yUR$EyMbZ?r zXOG#@U4*r(`C>=*TPxMz9IVJABjU;`<-oCF7V_%53qeEccwQr>0r+3WWrP8B$?HT` U8~BcI40~Wr&_>$b!07D%0hKloa{vGU literal 0 HcmV?d00001 diff --git a/public/512.png b/public/512.png new file mode 100644 index 0000000000000000000000000000000000000000..c37f323551204470b99edfa3c215ab79206bfd63 GIT binary patch literal 2810 zcmbVOYg7~07Ctj1Kob!Jk@`lZqD^V=fuf)Zh*wb|Ak-Js|Efgp-35N1%Y3Kp<0 zP^h7zf+B>13Kn!yMM13r%aueB62o*n8Ky>;CNgnECd1_W917z0cZb zp9~6IXTzGt0sz?fulL&w016=rtS#W@?j@II_(2jjuk!_!@)-lr_%vu!=-QFiM4G1c z{SA7}*Rq#`CEe81$EnHk_gCs#Ybp-)XPwI_dHL<>!+~2w`|iBF4gf37-_IvBsbjcn zAhECkJsy0qdg`<~x^vYk)rF-tcbqdaYYvm;<(!?5G`atx?6zL?xIXFR`b)o%yNed2~WdHJJ?uP)mT4@c7Ipkrq z%zb?rl5y&Vsn3U@EpD@D*3i`F_|^u73y0*WALiq4Ope;uQuGb9{^Z%_b@C?3mb09P zrFdzoTXDE&1dO(uWe}AVO}e5B4#_G17Zl5LB`zMJ7R{)Ec?}_4tHM3^K)1|03rW|1 z>M52%eRZv`x0!65TKumS3OYgo$;S)7YuvYtpjsUGnGOjjzKAgywGg645P1$n8EDxDT(LadfBlcDmH^_H#;4UP2k#17zH1e89ay_o7Dx z>W#xh2|yZJsd|<+0pZrra?}{nnmt6+L$;A(G7T?U6-puv>2|sD%*1AEEhi~dW^-Oy zm+28(J3m;_Z8lx2hRx95 z{&8pA*7tB_{HSI)Z3D8#j$bdKr9wEr)hzt+QP5%Df|-Z#7fLYqYl!I)V<0&>?``Kt=-rvytcNs&{PA7>XkHiIoTH; zPrDE_FILx5r&M68AB@nm$;j|ggWv$^3b~h~l2$fg9Q2_>ECUs5McVQf(mCrOj9B(8(N6_f*s9RuCuZXLJX=*E}q zqVox>Bu&B)4Uhl(h7esYnzRGaq;@YP*`kv8!T}8-G~Luk2f|W$D06qf5Er-93$AFm z_>X!4^8C|bF8=VLPJo1V2tj~Gg4R8KCIsI=P*zQVeVi_yV^9L!ACexa;f;k^l>I_1 zk=5wvCvg+iX+}y8uDgxUH{9@p)5Tt~7~&mI*OJGR#!}Op z9)*JqmB^p4oTNMOfAc85Pd%x%l+;0#CGr;)#>uU5&xN3=({xZCk{QBJ!;sKlmg7zA{`?r2okK$@%j#D+28nHy zFp5{6z1^Sl_Bi@}w=E3s4YZ)whB-FXc7%(cP3%JVFHpBfdS4^J>kcYHUdZZSG7BnP zk0Gp{hstiXY*Pt=q_Nb>9S+rvuZV`fz$nxpwT`Wkf9jq1oyhl2V%w>~uy(rBdp@ma zTSM&n%rIA!fYhco5#a2E;=){xbA%sKv`68_e;1u@gm<084~#rkbA8wHnKZg>vShlf zD1z0zyeiGeR)-eGB8ijpo@;F3Sd=H8%5>3>_XxqTrMoXT7ZAucmrL3>3kb@0*#{QSC!#;j!f}5 zc*8VWZx03vlV8x{;Ub?41$bXp(-ilBUCOyEwJ-8Yinb{;E6#(;Dg2L1r4z|Y zwwE8`-IWtrL&g|CADY4xSAcKhXOu3QsU!W6Ycu&@E@BlkTas6nfDY}2z9lTRmz7-! z*fDy_b?JZbH2a!;-siyC18+j6F~t|QVW*ENocPi5l+C*)^N-1sx9plMTWjIjyK){r zXla){n-7MwY!@2((WtN^zsqwuxbB`+j4=zmZ&Uki~ zSH{N_HGS7L`sqE?++4vviwO$?8U&#TW5Pa5w-q-z{>AF@aZsr(S)&R6;!SMJ3S!)4L4}yN&DM3>25BTW(EJXfqs>~qND!?X?Z`l literal 0 HcmV?d00001 diff --git a/script.js b/script.js deleted file mode 100644 index df50fc3..0000000 --- a/script.js +++ /dev/null @@ -1,51 +0,0 @@ -const text = document.querySelector('textarea'); -text.value = localStorage.getItem('key'); -text.oninput = () => { - localStorage.setItem('key', text.value); -} -let clean = () => { - localStorage.clear(); - location.reload(); -} -let c; -let darkMode = () => { - document.body.style.backgroundColor = 'black'; - document.querySelector('meta[name="theme-color"]').setAttribute("content", 'black'); - text.style.color = 'white'; - localStorage.setItem('theme','black'); - c = true; -} -if (localStorage.getItem('theme') == 'black') { - darkMode(); -} - -let theme = () => { - if (c == null) { - darkMode(); - } - else { - document.body.style.backgroundColor = 'white'; - document.querySelector('meta[name="theme-color"]').setAttribute("content", 'white'); - text.style.color = 'black'; - localStorage.setItem('theme','white'); - c = null; - } -} -let download = () => { - const textToBLOB = new Blob([text.value], { type: 'text/plain' }); - let newLink = document.createElement("a"); - newLink.download = 'Note.txt'; - - if (window.webkitURL != null) { - newLink.href = window.webkitURL.createObjectURL(textToBLOB); - } - else { - newLink.href = window.URL.createObjectURL(textToBLOB); - newLink.style.display = "none"; - document.body.appendChild(newLink); - } - newLink.click(); -} -async function loadFile(file) { - text.value = await file.text(); -} diff --git a/service-worker.js b/service-worker.js deleted file mode 100644 index 95c88eb..0000000 --- a/service-worker.js +++ /dev/null @@ -1,33 +0,0 @@ -//Progressive Web App -const staticLoader = "Note" -const assets = [ - "maskable_icon_x192.png", - "maskable_icon_x512.png", - "index.html", - "script.js", - "style.css" -] - -self.addEventListener("install", installEvent => { - installEvent.waitUntil( - caches.open(staticLoader).then(cache => { - cache.addAll(assets) - }) - ) -}) -self.addEventListener("fetch", fetchEvent => { - fetchEvent.respondWith( - caches.match(fetchEvent.request).then(res => { - return res || fetch(fetchEvent.request) - }) - ) -}) - -if ("serviceWorker" in navigator) { - window.addEventListener("load", function() { - navigator.serviceWorker - .register("service-worker.js") - .then(res => console.log("service worker registered")) - .catch(err => console.log("service worker not registered", err)) - }) -} \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..6f970f9 --- /dev/null +++ b/src/index.css @@ -0,0 +1,26 @@ +@import "tailwindcss/base"; +@import "tailwindcss/components"; +@import "tailwindcss/utilities"; + +html, +body { + height: 100dvh; + margin: 0; + padding: 0; +} + + +textarea { + vertical-align: top; + resize: none; + height: 93dvh; + width: calc(100% - 8dvh); + background: none; + outline: none; + border: 1px solid red; +} + +div { + bottom: 5dvmin; + height: 3rem; +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..1a5fb9a --- /dev/null +++ b/src/main.ts @@ -0,0 +1,26 @@ +const textarea = document.querySelector('textarea'); + +textarea.value = localStorage.getItem('key') || ''; +textarea.addEventListener('input', () => { + localStorage.setItem('key', textarea.value); +}); + +document.getElementById('clear')?.addEventListener('click', () => { + localStorage.removeItem('key'); + textarea.textContent = ''; +}); + +document.getElementById('download')?.addEventListener('click', () => { + const textToBLOB = new Blob([textarea.value], { type: 'text/plain' }); + const link = document.createElement('a'); + link.download = 'Note.txt'; + link.href = URL.createObjectURL(textToBLOB); + link.click(); +}); + +const upload = document.getElementById('upload'); + +upload.addEventListener('change', async () => { + textarea.value = await (upload.files)[0].text(); + localStorage.setItem('key', textarea.value); +}) diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/style.css b/style.css deleted file mode 100644 index 192387f..0000000 --- a/style.css +++ /dev/null @@ -1,15 +0,0 @@ -html, -body { - margin: 0; - padding: 0; - height: 100%; -} - -textarea { - height:100%; - width: 100%; - border:none; - resize: none; - outline: none; - background-color: transparent; -} diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..edbcae5 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: [ + "./index.html", + "./src/**/*.{js,ts}" + ], + theme: { + extend: {}, + }, + plugins: [], +} + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..75abdef --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..d643d9a --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,34 @@ +import { defineConfig } from 'vite'; +import { VitePWA } from 'vite-plugin-pwa'; + +const manifest = { + "short_name": "Note", + "icons": [ + { + "src": "192.png", + "type": "image/png", + "sizes": "192x192", + "purpose": "any maskable" + }, + { + "src": "512.png", + "type": "image/png", + "sizes": "512x512", + "purpose": "any maskable" + } + ], + "start_url": "/", + "display": "standalone", + "background_color": "#eed076" +}; + +export default defineConfig(({ command }) => ({ + plugins: [ + VitePWA({ + manifest: manifest, + registerType: 'autoUpdate', + disable: command !== 'build' + }) + ], + base: '/Note/' +}));