diff --git a/assets/images/empty.json b/assets/images/empty.json
new file mode 100644
index 0000000..55a25f6
--- /dev/null
+++ b/assets/images/empty.json
@@ -0,0 +1 @@
+{"nm":"search_empty","ddd":0,"h":290,"w":426,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"shadow","sr":1,"st":0,"op":300,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70,100,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50,100,100],"t":30},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70,100,100],"t":60},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50,100,100],"t":90},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70,100,100],"t":120},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50,100,100],"t":150},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70,100,100],"t":180},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50,100,100],"t":210},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[70,100,100],"t":240},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[50,100,100],"t":270},{"s":[70,100,100],"t":295}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[191,145,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Ellipse 1","ix":1,"cix":2,"np":3,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[56.697,6.631],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-9.651,124.815],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":0,"nm":"main","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[213,145,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,145,0],"t":0,"ti":[0,0,0],"to":[0,0.833,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,150,0],"t":30,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,145,0],"t":60,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,150,0],"t":90,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,145,0],"t":120,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,150,0],"t":150,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,145,0],"t":180,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,150,0],"t":210,"ti":[0,0,0],"to":[0,0,0]},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[213,145,0],"t":240,"ti":[0,-0.833,0],"to":[0,0,0]},{"s":[213,150,0],"t":270}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"w":426,"h":290,"refId":"comp_0","ind":2},{"ty":0,"nm":"decoration1","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[213,289,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.37,"y":-0.029},"i":{"x":0.833,"y":0.866},"s":[0,0,100],"t":0},{"o":{"x":0.333,"y":0},"i":{"x":0.833,"y":1},"s":[100,100,100],"t":40},{"o":{"x":0.167,"y":0},"i":{"x":0.833,"y":1},"s":[80,80,100],"t":72},{"s":[90,90,100],"t":133}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[213,289,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.39,"y":0.019},"i":{"x":0.981,"y":1.128},"s":[0],"t":8},{"o":{"x":0.167,"y":0},"i":{"x":0.833,"y":1},"s":[100],"t":40},{"o":{"x":0.167,"y":0},"i":{"x":0.833,"y":1},"s":[80],"t":72},{"s":[100],"t":73}],"ix":11}},"ef":[],"w":426,"h":290,"refId":"comp_2","ind":3},{"ty":0,"nm":"decoratio2","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[211,291,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0,0,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[99.442,99.442,100],"t":43},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[84.442,84.442,100],"t":72},{"s":[90,90,100],"t":133}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[211,291,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100],"t":41},{"s":[100],"t":72}],"ix":11}},"ef":[],"w":426,"h":290,"refId":"comp_3","ind":4}],"v":"5.5.9","fr":60,"op":180,"ip":0,"assets":[{"nm":"","id":"comp_0","layers":[{"ty":4,"nm":"mouth","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":44},{"s":[105,105,100],"t":68}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[211,145,0],"t":44,"ti":[0,-0.667,0],"to":[0,0.667,0]},{"s":[211,149,0],"t":69}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[0.5,0.25],[-1.715,0.372]],"o":[[-13.025,-6.512],[7.5,-1.625]],"v":[[-10,12.25],[-31.75,12.625]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"æ±","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,-19.333,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[40,40,100],"t":51},{"s":[100,100,100],"t":95}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[248,95.252,0],"t":51,"ti":[0,-1.5,0],"to":[0,1.5,0]},{"s":[248,104.252,0],"t":94}],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":1,"k":[{"o":{"x":0.333,"y":0},"i":{"x":0.667,"y":1},"s":[0],"t":51},{"s":[100],"t":95}],"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ±","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-9.94,0],[0,7.27],[0,0],[0,-7.27]],"o":[[9.94,0],[0,-7.27],[0,0],[0,7.27]],"v":[[0,19],[18,5.84],[0,-19],[-18,5.84]]},"ix":2}},{"ty":"gf","bm":0,"hd":false,"mn":"ADBE Vector Graphic - G-Fill","nm":"Gradient Fill 1","e":{"a":0,"k":[10.208,19],"ix":6},"g":{"p":3,"k":{"a":0,"k":[0,0.6039215686274509,0,0,0.5,0.6862745098039216,0.16862745098039217,0.16862745098039217,1,0.6862745098039216,0.16862745098039217,0.16862745098039217],"ix":9}},"t":1,"a":{"a":0,"k":0},"h":{"a":0,"k":0},"s":{"a":0,"k":[0.019,-9.236],"ix":5},"r":1,"o":{"a":0,"k":100,"ix":10}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"eye","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":3},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":9},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":50},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":53},{"s":[100,100,100],"t":56}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-7.064,-11.347,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":92,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"eye","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[8.466,16.135],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3,"parent":1},{"ty":4,"nm":"eye","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":3},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":6},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":9},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":12},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,100,100],"t":50},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[100,20,100],"t":53},{"s":[100,100,100],"t":56}],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-33.767,-11.347,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":92,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"eye","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[8.466,16.135],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4,"parent":1},{"ty":0,"nm":"magnifier","sr":1,"st":0,"op":569,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[213,145,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[213,145,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"w":426,"h":290,"refId":"comp_1","ind":5}]},{"nm":"","id":"comp_1","layers":[{"ty":4,"nm":"Shape Layer 1","sr":1,"st":0,"op":3600,"ip":0,"hd":true,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[213,145,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":2,"it":[{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"c":{"a":0,"k":[0.6039,0,0],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[190.106,142.222,0],"ix":2},"r":{"a":0,"k":-5,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[99.994,100.091],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.8157,0.8157],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":-40,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[192.013,142.223,0],"ix":2},"r":{"a":0,"k":-5,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-26.81,22.62],[22.49,26.96],[26.8,-22.62],[-22.5,-26.95]],"o":[[26.81,-22.62],[-22.49,-26.96],[-26.81,22.62],[22.49,26.96]],"v":[[40.727,48.812],[48.537,-40.958],[-40.723,-48.808],[-48.533,40.952]]},"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.5765,0.1176,0.1176],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"ç©å½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[268.024,226.941,0],"ix":2},"r":{"a":0,"k":-5,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"ç©å½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":10,"ix":4},"s":{"a":0,"k":[42.094,74.507],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.6039,0,0],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":-40,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4},{"ty":4,"nm":"ç©å½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[238.933,197.25,0],"ix":2},"r":{"a":0,"k":-5,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"ç©å½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[24.446,44.702],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":-40,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":5}]},{"nm":"","id":"comp_2","layers":[{"ty":4,"nm":"å併形ç","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[208,27,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":60},{"s":[360],"t":265}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"å併形ç","ix":1,"cix":2,"np":4,"it":[{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[16,2],"ix":2}},{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 2","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[2,18],"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":2},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"å併形ç","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[418,107,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5},{"s":[360],"t":358}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"å併形ç","ix":1,"cix":2,"np":4,"it":[{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[16,2],"ix":2}},{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 2","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[2,18],"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":2},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"å併形ç","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[31,196,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":5},{"s":[360],"t":281}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"å併形ç","ix":1,"cix":2,"np":4,"it":[{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[16,2],"ix":2}},{"ty":"rc","bm":0,"hd":false,"mn":"ADBE Vector Shape - Rect","nm":"Rectangle Path 2","d":1,"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"s":{"a":0,"k":[2,18],"ix":2}},{"ty":"mm","bm":0,"hd":false,"mn":"ADBE Vector Filter - Merge","nm":"Merge Paths 1","mm":2},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3},{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[70,33,0],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[0],"t":0},{"s":[360],"t":281}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[24,24],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"c":{"a":0,"k":[1,0.6392,0.6392],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4}]},{"nm":"","id":"comp_3","layers":[{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[306,9,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[16,16],"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"c":{"a":0,"k":[1,0.6392,0.6392],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1},{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[376,179,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[16,16],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2},{"ty":4,"nm":"æ©¢åå½¢","sr":1,"st":0,"op":3600,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[8,115,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"æ©¢åå½¢","ix":1,"cix":2,"np":2,"it":[{"ty":"el","bm":0,"hd":false,"mn":"ADBE Vector Shape - Ellipse","nm":"Ellipse Path 1","d":1,"p":{"a":0,"k":[0,0],"ix":3},"s":{"a":0,"k":[16,16],"ix":2}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[1,0.6392,0.6392],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3}]}]}
\ No newline at end of file
diff --git a/assets/images/png/Ellipse 560 (1).png b/assets/images/png/Ellipse 560 (1).png
new file mode 100644
index 0000000..a6ac547
Binary files /dev/null and b/assets/images/png/Ellipse 560 (1).png differ
diff --git a/assets/images/png/Ellipse 560.png b/assets/images/png/Ellipse 560.png
deleted file mode 100644
index fa3d83d..0000000
Binary files a/assets/images/png/Ellipse 560.png and /dev/null differ
diff --git a/assets/images/svg/search-svgrepo-com.svg b/assets/images/svg/search-svgrepo-com.svg
new file mode 100644
index 0000000..5a10e0e
--- /dev/null
+++ b/assets/images/svg/search-svgrepo-com.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/svg/sidemenu/Gray.svg b/assets/images/svg/sidemenu/Gray.svg
new file mode 100644
index 0000000..17309fc
--- /dev/null
+++ b/assets/images/svg/sidemenu/Gray.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/svg/sidemenu/Group 51347.svg b/assets/images/svg/sidemenu/Group 51347.svg
new file mode 100644
index 0000000..224da5c
--- /dev/null
+++ b/assets/images/svg/sidemenu/Group 51347.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/images/svg/thumbs-down.svg b/assets/images/svg/thumbs-down.svg
new file mode 100644
index 0000000..a272caa
--- /dev/null
+++ b/assets/images/svg/thumbs-down.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/images/svg/thumbs-up.svg b/assets/images/svg/thumbs-up.svg
new file mode 100644
index 0000000..eb958fd
--- /dev/null
+++ b/assets/images/svg/thumbs-up.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/Utils/Common/CommonBottomNavigation.dart b/lib/Utils/Common/CommonBottomNavigation.dart
index bedce78..b4f406a 100644
--- a/lib/Utils/Common/CommonBottomNavigation.dart
+++ b/lib/Utils/Common/CommonBottomNavigation.dart
@@ -6,8 +6,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:glassmorphism/glassmorphism.dart';
import 'package:traderscircuit/Utils/Common/MainController.dart';
-GlassmorphicContainer bottomnavigationbar(
- MainController _mainController) {
+GlassmorphicContainer bottomnavigationbar(MainController _mainController) {
return GlassmorphicContainer(
width: double.infinity,
height: 83.h,
@@ -76,9 +75,9 @@ GlassmorphicContainer bottomnavigationbar(
shape: BoxShape.circle,
boxShadow: [
BoxShadow(
- color: Colors.grey.withOpacity(0.4),
+ color: Colors.grey.withOpacity(0.2),
spreadRadius: 15,
- blurRadius: 10,
+ blurRadius: 5,
offset: Offset(0, 10),
),
],
diff --git a/lib/Utils/Common/CustomTextFormField.dart b/lib/Utils/Common/CustomTextFormField.dart
index 32a621b..0104c7c 100644
--- a/lib/Utils/Common/CustomTextFormField.dart
+++ b/lib/Utils/Common/CustomTextFormField.dart
@@ -198,6 +198,160 @@ class _CustomTextFormField1State extends State {
obscureText = widget.isInputPassword;
}
+ @override
+ Widget build(BuildContext context) {
+ return GlassmorphicContainer(
+ width: double.infinity,
+ height: 50,
+ borderRadius: 8,
+ blur: 10,
+ alignment: Alignment.bottomCenter,
+ border: 0.8,
+ linearGradient: LinearGradient(
+ begin: Alignment.topLeft,
+ end: Alignment.bottomRight,
+ colors: [
+ const Color(0xFFffffff).withOpacity(0.1),
+ const Color(0xFFFFFFFF).withOpacity(0.05),
+ ],
+ stops: [
+ 0.1,
+ 1,
+ ]),
+ borderGradient: const LinearGradient(
+ begin: Alignment.topLeft,
+ end: Alignment.bottomRight,
+ colors: [
+ Color(0xff3A3A3A),
+ Color(0xFF3A3A3A),
+ ],
+ ),
+ child: TextFormField(
+ cursorColor: Colors.red,
+ initialValue: widget.value,
+ readOnly: widget.readonly,
+ onTap: widget.onTap,
+ enabled: widget.enabled,
+ enableInteractiveSelection: false,
+ maxLines: widget.maxlines,
+ autovalidateMode: AutovalidateMode.onUserInteraction,
+ obscureText: obscureText,
+ controller: widget.textEditingController,
+
+ decoration: InputDecoration(
+ hintText: widget.hintText,
+ prefixIconColor: widget.prefixIconColor,
+
+ hintStyle: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w400,
+ fontFamily: 'manrope'),
+
+ // ignore: prefer_null_aware_operators
+ prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!,
+ suffixIcon: widget.isInputPassword
+ ? GestureDetector(
+ onTap: () => setState(() => obscureText = !obscureText),
+ child: obscureText
+ ? const Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Padding(
+ padding: EdgeInsets.only(right: 20.0),
+ child: Icon(Icons.remove_red_eye),
+ ),
+ ],
+ )
+ : const Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Padding(
+ padding: EdgeInsets.only(right: 20.0),
+ child: Icon(
+ Icons.remove_red_eye_outlined,
+ color: Color(0xFF959595),
+ ),
+ ),
+ ],
+ ),
+ )
+ : widget.suffixIcon == null
+ ? null
+ : widget.suffixIcon!,
+ border: InputBorder.none,
+ contentPadding:
+ const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
+ ),
+ style: const TextStyle(color: Colors.white),
+ keyboardType: widget.texttype,
+ // validator: widget.validator ??
+ // (value) {
+ // if (value == null || value.isEmpty) {
+ // return "Empty value";
+ // }
+ // return null;
+ // },
+ inputFormatters: widget.inputFormatters,
+ onChanged: (value) {
+ widget.onInput?.call(value);
+ },
+ ),
+ );
+ }
+}
+
+class CustomTextFormField3 extends StatefulWidget {
+ const CustomTextFormField3({
+ Key? key,
+ this.validator,
+ this.textEditingController,
+ this.hintText,
+ this.leadingIcon,
+ this.prefixIconColor = const Color(0xFF737373),
+ this.isInputPassword = false,
+ this.validatorText,
+ this.value,
+ this.readonly = false,
+ this.enabled = true,
+ this.maxlines = 1,
+ this.texttype,
+ this.inputFormatters,
+ this.onInput,
+ this.onTap,
+ this.suffixIcon,
+ }) : super(key: key);
+
+ final dynamic validator;
+ final TextEditingController? textEditingController;
+ final String? hintText;
+ final Widget? leadingIcon;
+ final Color prefixIconColor;
+ final bool isInputPassword;
+ final String? validatorText;
+ final String? value;
+ final bool readonly;
+ final bool enabled;
+ final int maxlines;
+ final TextInputType? texttype;
+ final dynamic inputFormatters;
+ final Function(String)? onInput;
+ final VoidCallback? onTap;
+ final Widget? suffixIcon;
+
+ @override
+ State createState() => _CustomTextFormField3State();
+}
+
+class _CustomTextFormField3State extends State {
+ late bool obscureText;
+
+ @override
+ void initState() {
+ super.initState();
+ obscureText = widget.isInputPassword;
+ }
+
@override
Widget build(BuildContext context) {
return TextFormField(
@@ -211,23 +365,21 @@ class _CustomTextFormField1State extends State {
autovalidateMode: AutovalidateMode.onUserInteraction,
obscureText: obscureText,
controller: widget.textEditingController,
+
decoration: InputDecoration(
- contentPadding: const EdgeInsets.symmetric(
- vertical: 15,
- horizontal: 14,
- ),
hintText: widget.hintText,
+ prefixIconColor: widget.prefixIconColor,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8.r),
- borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
+ borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8.r),
- borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
+ borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8.r),
- borderSide: const BorderSide(color: Color(0XFF3A3A3A), width: 1),
+ borderSide: BorderSide(color: const Color(0xFF3A3A3A), width: 1),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
@@ -237,9 +389,13 @@ class _CustomTextFormField1State extends State {
borderRadius: BorderRadius.circular(8),
borderSide: const BorderSide(color: Colors.red, width: 1),
),
+
hintStyle: TextStyle(
- fontSize: 16.sp, fontFamily: "manrope", color: Colors.white),
- prefixIconColor: widget.prefixIconColor,
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w400,
+ fontFamily: 'manrope'),
+
// ignore: prefer_null_aware_operators
prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!,
suffixIcon: widget.isInputPassword
@@ -271,16 +427,18 @@ class _CustomTextFormField1State extends State {
: widget.suffixIcon == null
? null
: widget.suffixIcon!,
+ contentPadding:
+ const EdgeInsets.symmetric(horizontal: 10, vertical: 10),
),
style: const TextStyle(color: Colors.white),
keyboardType: widget.texttype,
- validator: widget.validator ??
- (value) {
- if (value == null || value.isEmpty) {
- return "Empty value";
- }
- return null;
- },
+ // validator: widget.validator ??
+ // (value) {
+ // if (value == null || value.isEmpty) {
+ // return "Empty value";
+ // }
+ // return null;
+ // },
inputFormatters: widget.inputFormatters,
onChanged: (value) {
widget.onInput?.call(value);
diff --git a/lib/Utils/Common/MainController.dart b/lib/Utils/Common/MainController.dart
index 751e2d3..8dfdb71 100644
--- a/lib/Utils/Common/MainController.dart
+++ b/lib/Utils/Common/MainController.dart
@@ -1,5 +1,7 @@
import 'package:get/get.dart';
import 'package:traderscircuit/view/MainScreen/HomeScreen.dart';
+import 'package:traderscircuit/view/MainScreen/Portfolio/Holdings.dart';
+import 'package:traderscircuit/view/MainScreen/Portfolio/PortfolioEmpty.dart';
import 'package:traderscircuit/view/MainScreen/ShortTrade.dart';
class MainController extends GetxController {
@@ -8,7 +10,7 @@ class MainController extends GetxController {
var currentTab = [
const HomeScreen(),
const ShortTrade(),
- const HomeScreen(),
+ const Holdings(),
].obs;
void updateTab(int index) {
diff --git a/lib/Utils/Common/commonBotton.dart b/lib/Utils/Common/commonBotton.dart
index 8819c2d..fb855c6 100644
--- a/lib/Utils/Common/commonBotton.dart
+++ b/lib/Utils/Common/commonBotton.dart
@@ -1,5 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:glassmorphism/glassmorphism.dart';
+import 'package:traderscircuit/Utils/Common/sized_box.dart';
+import 'package:traderscircuit/Utils/text.dart';
Widget CommonBtn({void Function()? onTap, required String text}) {
return InkWell(
@@ -24,6 +27,83 @@ Widget CommonBtn({void Function()? onTap, required String text}) {
));
}
+Widget CommonYesNoBtn({
+ void Function()? yesonTap,
+ void Function()? noonTap,
+}) {
+ return Row(
+ children: [
+ GestureDetector(
+ onTap: yesonTap,
+ child: GlassmorphicContainer(
+ width: 170.w,
+ height: 50.h,
+ borderRadius: 8,
+ blur: 10,
+ alignment: Alignment.center,
+ border: 0.9,
+ linearGradient: LinearGradient(
+ begin: Alignment.topLeft,
+ end: Alignment.bottomRight,
+ colors: [
+ Colors.white.withOpacity(0.1),
+ Color(0xFFFFFFFF).withOpacity(0.05),
+ ],
+ stops: [
+ 0.1,
+ 1,
+ ],
+ ),
+ borderGradient: LinearGradient(
+ begin: Alignment.topLeft,
+ end: Alignment.bottomRight,
+ colors: [
+ Color.fromRGBO(70, 5, 1, 0.8),
+ Color.fromRGBO(102, 102, 102, 0.8),
+ ],
+ ),
+ child: Center(
+ child: text18W500('Yes'),
+ ),
+ ),
+ ),
+ sizedBoxWidth(10.w),
+ GestureDetector(
+ onTap: noonTap,
+ child: Container(
+ height: 50.h,
+ width: 170.w,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(8.r),
+ border: Border.all(color: Color(0xFF9A0000), width: 1.w),
+ color: Color(0xFF6C0000)),
+ child: Center(child: text18W500('No')),
+ ),
+ )
+ ],
+ );
+}
+
+ // InkWell(
+ // onTap: onTap,
+ // child: Container(
+ // width: double.infinity,
+ // height: 50.h,
+ // decoration: BoxDecoration(
+ // color: Color(0xff9A0000), borderRadius: BorderRadius.circular(5)),
+ // child: Center(
+ // child: Text(
+ // text,
+ // textAlign: TextAlign.center,
+ // style: TextStyle(
+ // color: Colors.white,
+ // fontSize: 20.sp,
+ // fontFamily: 'Cambria',
+ // fontWeight: FontWeight.w400,
+ // ),
+ // ),
+ // ),
+ // ));
Widget kycBtn({
void Function()? onTap,
required String text,
diff --git a/lib/Utils/text.dart b/lib/Utils/text.dart
index 017d20e..d80cd16 100644
--- a/lib/Utils/text.dart
+++ b/lib/Utils/text.dart
@@ -12,6 +12,18 @@ Widget text20W400(String text) {
);
}
+Widget text20W400_center(String text) {
+ return Text(
+ text,
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 20.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w400,
+ fontFamily: 'manrope'),
+ );
+}
+
Widget text18W800(String text) {
return Text(
text,
@@ -294,6 +306,8 @@ Widget text14W400_979797(String text) {
);
}
+
+
Widget text12W400_979797(String text) {
return Text(
text,
diff --git a/lib/resources/routes/route_name.dart b/lib/resources/routes/route_name.dart
index d2497ba..9c0c81d 100644
--- a/lib/resources/routes/route_name.dart
+++ b/lib/resources/routes/route_name.dart
@@ -39,6 +39,8 @@ class RouteName {
static const String privacypolicy = '/privacypolicy';
static const String aboutus = '/aboutus';
+ static const String faqscreen = '/faqscreen';
+
//contact us
static const String contactUsMain = '/contactUsMain';
}
diff --git a/lib/resources/routes/routes.dart b/lib/resources/routes/routes.dart
index cdc6971..cbfef13 100644
--- a/lib/resources/routes/routes.dart
+++ b/lib/resources/routes/routes.dart
@@ -3,6 +3,7 @@ import 'package:traderscircuit/Utils/Common/noInternet.dart';
import 'package:traderscircuit/resources/routes/route_name.dart';
import 'package:traderscircuit/view/MainScreen/ExploreUnseen.dart';
import 'package:traderscircuit/view/Sidemenu/AboutUs.dart';
+import 'package:traderscircuit/view/Sidemenu/FaqScreen.dart';
import 'package:traderscircuit/view/Sidemenu/PrivacyPolicy.dart';
import 'package:traderscircuit/view/Sidemenu/TermsAndCondition.dart';
import 'package:traderscircuit/view/Sidemenu/contactUs/contact_us_main.dart';
@@ -141,6 +142,10 @@ class AppRoutes {
name: RouteName.aboutus,
page: () => const AboutUs(),
),
+ GetPage(
+ name: RouteName.faqscreen,
+ page: () => const FaqScreen(),
+ ),
//contact us
GetPage(
diff --git a/lib/view/MainScreen/ExploreUnseen.dart b/lib/view/MainScreen/ExploreUnseen.dart
index 5b73578..7a8bcb3 100644
--- a/lib/view/MainScreen/ExploreUnseen.dart
+++ b/lib/view/MainScreen/ExploreUnseen.dart
@@ -27,9 +27,10 @@ class _ExploreUnseenState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
+ drawerEnableOpenDragGesture: false,
key: _scaffoldKey1,
backgroundColor: Colors.black,
- drawer: Container(width: 320.w, child: SideMenu()),
+ drawer: Container(child: SideMenu()),
extendBody: true,
appBar: CommonAppbar(titleTxt: ''),
diff --git a/lib/view/MainScreen/Portfolio/Holdings.dart b/lib/view/MainScreen/Portfolio/Holdings.dart
new file mode 100644
index 0000000..f42d4f7
--- /dev/null
+++ b/lib/view/MainScreen/Portfolio/Holdings.dart
@@ -0,0 +1,665 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
+import 'package:flutter_svg/svg.dart';
+import 'package:get/get.dart';
+import 'package:glassmorphism/glassmorphism.dart';
+import 'package:traderscircuit/Utils/Common/CommonBottomNavigation.dart';
+import 'package:traderscircuit/Utils/Common/commonBotton.dart';
+import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart';
+import 'package:traderscircuit/Utils/Common/sized_box.dart';
+import 'package:traderscircuit/Utils/text.dart';
+import 'package:traderscircuit/view/MainScreen/MainScreen.dart';
+import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart';
+import 'package:traderscircuit/view/onBoarding/splashScreen1.dart';
+
+class Holdings extends StatefulWidget {
+ const Holdings({super.key});
+
+ @override
+ State createState() => _HoldingsState();
+}
+
+class _HoldingsState extends State {
+ GlobalKey _scaffoldKey1 = GlobalKey();
+ List containerTexts = [
+ "Portfolio 1",
+ "Portfolio 1",
+ "Portfolio 1",
+ "Portfolio 1",
+ "Portfolio 1"
+ ];
+ final selectedIndex = 0.obs;
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ key: _scaffoldKey1,
+ backgroundColor: Colors.black,
+ drawer: Container(width: 320.w, child: SideMenu()),
+ extendBody: true,
+ appBar: AppBar(
+ scrolledUnderElevation: 0.0,
+ backgroundColor: Colors.black,
+ elevation: 0,
+ automaticallyImplyLeading: false,
+ titleSpacing: 0,
+ leading: InkWell(
+ onTap: () {
+ _scaffoldKey1.currentState?.openDrawer();
+ },
+ child: Center(
+ child: Image.asset(
+ 'assets/images/png/menu.png',
+ height: 15.h,
+ width: 20.w,
+ ),
+ ),
+ ),
+ ),
+ body: Stack(
+ children: [
+ CommonBlurLeft(),
+ CommonBlurRight(),
+ Stack(
+ children: [
+ Padding(
+ padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
+ child: ListView(
+ physics: NeverScrollableScrollPhysics(),
+ children: [
+ text25W600("My Portfolio"),
+ SizedBox(
+ height: 10,
+ ),
+ DefaultTabController(
+ length: 5,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ PortfolioTabBar(),
+ SizedBox(
+ height: 30.h,
+ ),
+ SizedBox(
+ height: 570.h,
+ child: TabBarView(
+ children: [
+ DefaultTabController(
+ length: 2,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ HoldingsTabBar(),
+ Expanded(
+ child: TabBarView(
+ children: [
+ Holdings(),
+ PortfolioReview(),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ DefaultTabController(
+ length: 2,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ HoldingsTabBar(),
+ Expanded(
+ child: TabBarView(
+ children: [
+ Holdings(),
+ PortfolioReview(),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ DefaultTabController(
+ length: 2,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ HoldingsTabBar(),
+ Expanded(
+ child: TabBarView(
+ children: [
+ Holdings(),
+ PortfolioReview(),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ DefaultTabController(
+ length: 2,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ HoldingsTabBar(),
+ Expanded(
+ child: TabBarView(
+ children: [
+ Holdings(),
+ PortfolioReview(),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ DefaultTabController(
+ length: 2,
+ // initialIndex: selectedIndex.value,
+ child: Column(
+ children: [
+ HoldingsTabBar(),
+ Expanded(
+ child: TabBarView(
+ children: [
+ Holdings(),
+ PortfolioReview(),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ),
+ sizedBoxHeight(40.h),
+ ],
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ bottomNavigationBar: bottomnavigationbar(mainController),
+ );
+ }
+
+ Widget Holdings() {
+ return Obx(() {
+ WidgetsBinding.instance.addPostFrameCallback((_) {
+ if (selectedIndex == 1) _unlockbottomsheet();
+ });
+ return selectedIndex == 0
+ ? Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ sizedBoxHeight(20.h),
+ HoldingCard(
+ text: 'TATA MOTORS',
+ content: 'Text',
+ ),
+ sizedBoxHeight(25.h),
+ Table(
+ children: [
+ TableRow(
+ children: [
+ TableCell(
+ child: Text(
+ "Stock Name",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "AVG Price",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "Quantity",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "Exchange",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ ],
+ ),
+ ],
+ ),
+ Divider(
+ color: Color(0xFF3A3A3A),
+ ),
+ Expanded(
+ child: ListView.separated(
+ physics: BouncingScrollPhysics(),
+ shrinkWrap: true,
+ itemCount: 16,
+ itemBuilder: ((context, index) {
+ return Table(
+ children: [
+ TableRow(
+ children: [
+ TableCell(
+ child: Text(
+ "TATA MOTORS",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "416.66",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "3",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ TableCell(
+ child: Text(
+ "BSE",
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontSize: 16.sp,
+ color: Colors.white,
+ fontWeight: FontWeight.w500,
+ fontFamily: 'manrope'),
+ ),
+ ),
+ ],
+ ),
+ ],
+ );
+ }),
+ separatorBuilder: (BuildContext context, int index) {
+ return Divider();
+ },
+ ),
+ ),
+ SizedBox(
+ height: 30.h,
+ )
+ ],
+ )
+ : selectedIndex == 1
+ ? Column(
+ children: [],
+ )
+ : Column(
+ children: [],
+ );
+ });
+ }
+
+ void _unlockbottomsheet() {
+ Get.bottomSheet(
+ SizedBox(
+ height: 200,
+ child: commonGlassContainer(
+ width: double.infinity,
+ height: 200,
+ borderradius: 2,
+ customWidget: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ // Image.asset(
+ // 'assets/images/png/Group 1000003722.png',
+ // height: 100.h,
+ // ),
+ // sizedBoxHeight(25.h),
+ text20W400('Please subscribed to unlock'),
+ sizedBoxHeight(30.h),
+ CommonBtn(text: 'Subscribe Now'),
+ ],
+ ),
+ ),
+ ),
+ backgroundColor: Colors.black.withOpacity(0.3),
+ );
+ }
+
+ Widget PortfolioReview() {
+ List