Compare commits

..

4 Commits

Author SHA1 Message Date
OdooSky v3
bd01d44be5 fix(tk_construction_management): add name attribute to <app> element
Odoo 18 SettingsFormCompiler.compileApp reads el.getAttribute("name")
and passes it to toStringExpression(). Without the name attribute the
result is null -> null.replaceAll(...) -> TypeError -> Owl lifecycle
crash, Settings page renders white. Old data-key="..." attribute is
no longer recognized.

Add name="tk_construction_management" alongside data-key for
backward compat.
2026-05-09 02:00:53 +02:00
63c62699f5 Tower: upload tk_construction_management 18.0.2.0.8 (was 18.0.2.0.8, via marketplace) 2026-05-08 19:20:12 +00:00
c412640ca2 Tower: unpublish ks_dashboard_ninja — remove source from 18.0 branch 2026-05-07 12:21:13 +00:00
fd62a75b51 Tower: upload ks_dashboard_ninja 18.0.1.1.7 (was 18.0.1.1.7, via marketplace) 2026-05-07 12:17:21 +00:00
423 changed files with 73108 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.5399 2.62671C13.5133 5.18671 10.9399 8.66671 8.7866 10.3934L7.47327 11.4467C7.3066 11.5667 7.13993 11.6734 6.95327 11.7467C6.95327 11.6267 6.9466 11.4934 6.9266 11.3667C6.85327 10.8067 6.59993 10.2867 6.15326 9.84004C5.69993 9.38671 5.1466 9.12004 4.57993 9.04671C4.4466 9.04004 4.31326 9.02671 4.17993 9.04004C4.25326 8.83337 4.3666 8.64004 4.5066 8.48004L5.5466 7.16671C7.2666 5.01337 10.7599 2.42671 13.3133 1.40671C13.7066 1.26004 14.0866 1.36671 14.3266 1.61337C14.5799 1.86004 14.6999 2.24004 14.5399 2.62671Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.95343 11.7467C6.95343 12.48 6.67343 13.18 6.14677 13.7133C5.7401 14.12 5.18677 14.4 4.52677 14.4867L2.88677 14.6667C1.99343 14.7667 1.22677 14.0067 1.33343 13.1L1.51343 11.46C1.67343 9.99999 2.89343 9.06666 4.18677 9.03999C4.3201 9.03333 4.4601 9.03999 4.58677 9.04666C5.15343 9.11999 5.70677 9.37999 6.1601 9.83999C6.60677 10.2867 6.8601 10.8067 6.93343 11.3667C6.9401 11.4933 6.95343 11.62 6.95343 11.7467Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.49342 9.64662C9.49342 7.90662 8.08009 6.49329 6.34009 6.49329" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,8 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.3333 14.5833H12.5" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.16675 14.5834H1.66675" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18.3333 5.41663H15.8333" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.50008 5.41663H1.66675" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.83341 12.0834H10.8334C11.7501 12.0834 12.5001 12.5 12.5001 13.75V15.4167C12.5001 16.6667 11.7501 17.0834 10.8334 17.0834H5.83341C4.91675 17.0834 4.16675 16.6667 4.16675 15.4167V13.75C4.16675 12.5 4.91675 12.0834 5.83341 12.0834Z" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.16667 2.91675H14.1667C15.0833 2.91675 15.8333 3.33341 15.8333 4.58341V6.25008C15.8333 7.50008 15.0833 7.91675 14.1667 7.91675H9.16667C8.25 7.91675 7.5 7.50008 7.5 6.25008V4.58341C7.5 3.33341 8.25 2.91675 9.16667 2.91675Z" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.18 9.16671H10.4867C9.14667 9.16671 8.5 8.54671 8.5 7.26671V2.73337C8.5 1.45337 9.15333 0.833374 10.4867 0.833374H13.18C14.52 0.833374 15.1667 1.45337 15.1667 2.73337V7.26671C15.1667 8.54671 14.5133 9.16671 13.18 9.16671ZM10.4867 1.83337C9.64 1.83337 9.5 2.06004 9.5 2.73337V7.26671C9.5 7.94004 9.64 8.16671 10.4867 8.16671H13.18C14.0267 8.16671 14.1667 7.94004 14.1667 7.26671V2.73337C14.1667 2.06004 14.0267 1.83337 13.18 1.83337H10.4867Z" fill="#4B5563"/>
<path d="M13.18 15.1666H10.4867C9.14667 15.1666 8.5 14.5466 8.5 13.2666V12.0666C8.5 10.7866 9.15333 10.1666 10.4867 10.1666H13.18C14.52 10.1666 15.1667 10.7866 15.1667 12.0666V13.2666C15.1667 14.5466 14.5133 15.1666 13.18 15.1666ZM10.4867 11.1666C9.64 11.1666 9.5 11.3933 9.5 12.0666V13.2666C9.5 13.94 9.64 14.1666 10.4867 14.1666H13.18C14.0267 14.1666 14.1667 13.94 14.1667 13.2666V12.0666C14.1667 11.3933 14.0267 11.1666 13.18 11.1666H10.4867Z" fill="#4B5563"/>
<path d="M5.5135 15.1667H2.82016C1.48016 15.1667 0.833496 14.5467 0.833496 13.2667V8.73337C0.833496 7.45337 1.48683 6.83337 2.82016 6.83337H5.5135C6.8535 6.83337 7.50016 7.45337 7.50016 8.73337V13.2667C7.50016 14.5467 6.84683 15.1667 5.5135 15.1667ZM2.82016 7.83337C1.9735 7.83337 1.8335 8.06004 1.8335 8.73337V13.2667C1.8335 13.94 1.9735 14.1667 2.82016 14.1667H5.5135C6.36016 14.1667 6.50016 13.94 6.50016 13.2667V8.73337C6.50016 8.06004 6.36016 7.83337 5.5135 7.83337H2.82016Z" fill="#4B5563"/>
<path d="M5.5135 5.83337H2.82016C1.48016 5.83337 0.833496 5.21337 0.833496 3.93337V2.73337C0.833496 1.45337 1.48683 0.833374 2.82016 0.833374H5.5135C6.8535 0.833374 7.50016 1.45337 7.50016 2.73337V3.93337C7.50016 5.21337 6.84683 5.83337 5.5135 5.83337ZM2.82016 1.83337C1.9735 1.83337 1.8335 2.06004 1.8335 2.73337V3.93337C1.8335 4.60671 1.9735 4.83337 2.82016 4.83337H5.5135C6.36016 4.83337 6.50016 4.60671 6.50016 3.93337V2.73337C6.50016 2.06004 6.36016 1.83337 5.5135 1.83337H2.82016Z" fill="#4B5563"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.3333 4.50004C14.3459 4.50004 15.1667 3.67923 15.1667 2.66671C15.1667 1.65419 14.3459 0.833374 13.3333 0.833374C12.3208 0.833374 11.5 1.65419 11.5 2.66671C11.5 3.67923 12.3208 4.50004 13.3333 4.50004Z" fill="#6789C6"/>
<path d="M12.694 5.43337C11.6473 5.20671 10.794 4.35337 10.5673 3.30671C10.4807 2.90004 10.474 2.50671 10.5473 2.13337C10.634 1.72004 10.3273 1.33337 9.90065 1.33337H4.66732C2.82732 1.33337 1.33398 2.82671 1.33398 4.66671V9.30004C1.33398 11.14 2.82732 12.6334 4.66732 12.6334H5.66732C5.85398 12.6334 6.09398 12.7534 6.20065 12.9L7.20065 14.2267C7.64065 14.8134 8.36065 14.8134 8.80065 14.2267L9.80065 12.9C9.92732 12.7334 10.1207 12.6334 10.334 12.6334H11.3407C13.1807 12.6334 14.6673 11.1467 14.6673 9.30671V6.10004C14.6673 5.68004 14.2807 5.37337 13.8673 5.45337C13.494 5.52004 13.1007 5.52004 12.694 5.43337ZM5.33398 8.00004C4.96065 8.00004 4.66732 7.70004 4.66732 7.33337C4.66732 6.96671 4.96065 6.66671 5.33398 6.66671C5.70065 6.66671 6.00065 6.96671 6.00065 7.33337C6.00065 7.70004 5.70732 8.00004 5.33398 8.00004ZM8.00065 8.00004C7.62732 8.00004 7.33398 7.70004 7.33398 7.33337C7.33398 6.96671 7.62732 6.66671 8.00065 6.66671C8.36732 6.66671 8.66732 6.96671 8.66732 7.33337C8.66732 7.70004 8.37398 8.00004 8.00065 8.00004ZM10.6673 8.00004C10.294 8.00004 10.0007 7.70004 10.0007 7.33337C10.0007 6.96671 10.294 6.66671 10.6673 6.66671C11.034 6.66671 11.334 6.96671 11.334 7.33337C11.334 7.70004 11.0407 8.00004 10.6673 8.00004Z" fill="#6789C6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.99935 12.8334C10.2077 12.8334 12.8327 10.2084 12.8327 7.00008C12.8327 3.79175 10.2077 1.16675 6.99935 1.16675C3.79102 1.16675 1.16602 3.79175 1.16602 7.00008C1.16602 10.2084 3.79102 12.8334 6.99935 12.8334Z" stroke="#292D32" stroke-width="0.875" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.34961 8.65079L8.65128 5.34912" stroke="#292D32" stroke-width="0.875" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.65128 8.65079L5.34961 5.34912" stroke="#292D32" stroke-width="0.875" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 670 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.00016 14.6666C11.6668 14.6666 14.6668 11.6666 14.6668 7.99992C14.6668 4.33325 11.6668 1.33325 8.00016 1.33325C4.3335 1.33325 1.3335 4.33325 1.3335 7.99992C1.3335 11.6666 4.3335 14.6666 8.00016 14.6666Z" stroke="#737791" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.11328 9.88661L9.88661 6.11328" stroke="#737791" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.88661 9.88661L6.11328 6.11328" stroke="#737791" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

View File

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.668 3.43325V5.89992C14.668 7.39992 14.068 7.99992 12.568 7.99992H10.768C9.26797 7.99992 8.66797 7.39992 8.66797 5.89992V3.43325C8.66797 1.93325 9.26797 1.33325 10.768 1.33325H12.568C14.068 1.33325 14.668 1.93325 14.668 3.43325Z" fill="#6789C6"/>
<path d="M7.33203 10.1V12.5667C7.33203 14.0667 6.73203 14.6667 5.23203 14.6667H3.43203C1.93203 14.6667 1.33203 14.0667 1.33203 12.5667V10.1C1.33203 8.6 1.93203 8 3.43203 8H5.23203C6.73203 8 7.33203 8.6 7.33203 10.1Z" fill="#6789C6"/>
<path d="M9.85299 14.6667C9.67299 14.6667 9.50633 14.5667 9.41966 14.4133C9.33299 14.2533 9.33299 14.0667 9.42633 13.9067L10.073 12.8267C10.213 12.5867 10.5197 12.5133 10.7597 12.6533C10.9997 12.7933 11.073 13.1 10.933 13.34L10.813 13.54C12.4597 13.1133 13.673 11.62 13.673 9.84668C13.673 9.57335 13.8997 9.34668 14.173 9.34668C14.4463 9.34668 14.6663 9.57335 14.6663 9.85335C14.6663 12.5067 12.5063 14.6667 9.85299 14.6667Z" fill="#6789C6"/>
<path d="M1.83203 6.64659C1.5587 6.64659 1.33203 6.42659 1.33203 6.14659C1.33203 3.49325 3.49203 1.33325 6.14536 1.33325C6.33203 1.33325 6.49203 1.43325 6.58536 1.58659C6.67203 1.74659 6.67203 1.93325 6.5787 2.09325L5.93203 3.16659C5.78536 3.40659 5.4787 3.48659 5.24536 3.33992C5.00536 3.19992 4.93203 2.89325 5.07203 2.65325L5.19203 2.45325C3.55203 2.87992 2.33203 4.37325 2.33203 6.14659C2.33203 6.42659 2.10536 6.64659 1.83203 6.64659Z" fill="#6789C6"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.6663 8.60004V11.4C10.6663 13.7334 9.73301 14.6667 7.39967 14.6667H4.59967C2.26634 14.6667 1.33301 13.7334 1.33301 11.4V8.60004C1.33301 6.26671 2.26634 5.33337 4.59967 5.33337H7.39967C9.73301 5.33337 10.6663 6.26671 10.6663 8.60004Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6663 4.60004V7.40004C14.6663 9.73337 13.733 10.6667 11.3997 10.6667H10.6663V8.60004C10.6663 6.26671 9.73301 5.33337 7.39967 5.33337H5.33301V4.60004C5.33301 2.26671 6.26634 1.33337 8.59967 1.33337H11.3997C13.733 1.33337 14.6663 2.26671 14.6663 4.60004Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 KiB

View File

@@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" width="186" height="149" viewBox="0 0 186 149" fill="none">
<path d="M128.112 149H55.5054L55.4915 148.593L52.0247 49.4409H131.592L128.112 149ZM56.3199 148.157H127.298L130.72 50.2841H52.8974L56.3199 148.157Z" fill="#3F3D56"/>
<path d="M72.8252 67.8125H67.3026V136.153H72.8252V67.8125Z" fill="#3F3D56"/>
<path d="M94.5698 67.8125H89.0472V136.153H94.5698V67.8125Z" fill="#3F3D56"/>
<path d="M116.314 67.8125H110.792V136.153H116.314V67.8125Z" fill="#3F3D56"/>
<path d="M177.73 78.5567L177.374 78.3315L87.1871 21.338L95.0102 8.95898L95.3668 9.1842L185.553 66.1775L177.73 78.5567ZM88.3506 21.0757L177.468 77.3932L184.39 66.4402L95.2729 10.1221L88.3506 21.0757Z" fill="#3F3D56"/>
<path d="M155.956 16.7447C153.334 15.0857 150.292 14.2135 147.189 14.2317C144.087 14.2499 141.055 15.1578 138.453 16.8475C135.852 18.5372 133.789 20.9379 132.511 23.7646C131.232 26.5914 130.792 29.7255 131.241 32.7951L135.542 35.5128C134.461 33.0034 134.212 30.214 134.831 27.5529C135.45 24.8918 136.905 22.4989 138.983 20.7245C141.061 18.9501 143.652 17.8874 146.377 17.6921C149.102 17.4968 151.818 18.179 154.128 19.639C156.437 21.099 158.218 23.26 159.211 25.8056C160.203 28.3512 160.355 31.1476 159.643 33.7854C158.931 36.4233 157.393 38.7639 155.255 40.4647C153.117 42.1654 150.49 43.137 147.76 43.237L152.06 45.9546C155.026 45.0442 157.668 43.302 159.673 40.9348C161.679 38.5676 162.963 35.6748 163.373 32.5997C163.784 29.5246 163.304 26.3963 161.989 23.5859C160.675 20.7756 158.583 18.4013 155.959 16.7447H155.956Z" fill="#3F3D56"/>
<path d="M36.0609 67.2421L0.645595 42.4212C0.31656 42.1896 0.0926907 41.8371 0.022996 41.4408C-0.0466987 41.0446 0.0434788 40.6368 0.27376 40.3069L28.0706 0.645597C28.3021 0.316562 28.6546 0.0926923 29.0509 0.0229976C29.4471 -0.0466971 29.8549 0.0434675 30.1848 0.273749L65.6001 25.0947C65.9291 25.3263 66.153 25.6788 66.2227 26.075C66.2924 26.4713 66.2022 26.879 65.9719 27.209L38.1758 66.8692C37.9444 67.1986 37.5919 67.4229 37.1954 67.4928C36.799 67.5627 36.391 67.4725 36.0609 67.2421Z" fill="#E7495E"/>
<path d="M44.0255 40.31L23.2444 25.7455C23.0041 25.577 22.7993 25.3629 22.6417 25.1153C22.4841 24.8677 22.3769 24.5916 22.326 24.3025C22.2752 24.0135 22.2818 23.7173 22.3454 23.4308C22.4091 23.1443 22.5285 22.8731 22.6969 22.6328C22.8654 22.3925 23.0795 22.1877 23.3271 22.0301C23.5746 21.8725 23.8508 21.7653 24.1399 21.7144C24.4289 21.6636 24.7251 21.6702 25.0116 21.7338C25.2981 21.7975 25.5693 21.9169 25.8096 22.0854L46.5907 36.6499C47.076 36.9901 47.4064 37.5091 47.509 38.0928C47.6117 38.6766 47.4783 39.2772 47.1381 39.7625C46.7979 40.2479 46.2789 40.5782 45.6952 40.6809C45.1114 40.7836 44.5108 40.6501 44.0255 40.31Z" fill="white"/>
<path d="M39.2561 47.1143L18.475 32.5498C18.2344 32.3815 18.0293 32.1674 17.8715 31.9198C17.7136 31.6722 17.6062 31.3959 17.5552 31.1067C17.5042 30.8175 17.5107 30.5211 17.5743 30.2345C17.6379 29.9478 17.7574 29.6765 17.9259 29.4361C18.0945 29.1956 18.3087 28.9907 18.5565 28.8331C18.8042 28.6755 19.0806 28.5682 19.3698 28.5175C19.659 28.4668 19.9554 28.4735 20.242 28.5374C20.5286 28.6012 20.7999 28.721 21.0402 28.8897L41.8212 43.4542C42.306 43.7946 42.6359 44.3136 42.7382 44.897C42.8406 45.4805 42.7071 46.0807 42.3671 46.5658C42.0271 47.0508 41.5085 47.3811 40.9251 47.484C40.3418 47.5868 39.7414 47.4539 39.2561 47.1143Z" fill="white"/>
<path d="M34.4354 53.9926L13.6543 39.4281C13.414 39.2597 13.2092 39.0455 13.0516 38.798C12.894 38.5504 12.7868 38.2742 12.7359 37.9852C12.6851 37.6961 12.6917 37.3999 12.7553 37.1134C12.819 36.8269 12.9384 36.5558 13.1068 36.3154C13.2753 36.0751 13.4894 35.8703 13.737 35.7128C13.9846 35.5552 14.2608 35.4479 14.5498 35.3971C14.8388 35.3462 15.135 35.3528 15.4215 35.4165C15.708 35.4801 15.9792 35.5996 16.2195 35.768L37.0006 50.3325C37.4859 50.6727 37.8163 51.1917 37.919 51.7754C38.0216 52.3592 37.8882 52.9598 37.548 53.4452C37.2079 53.9305 36.6888 54.2609 36.1051 54.3635C35.5214 54.4662 34.9207 54.3328 34.4354 53.9926Z" fill="white"/>
<path d="M43.9671 26.8478L35.918 21.2065C35.6774 21.0382 35.4723 20.8241 35.3145 20.5765C35.1566 20.3289 35.0492 20.0526 34.9982 19.7634C34.9472 19.4743 34.9537 19.1779 35.0173 18.8912C35.0809 18.6046 35.2004 18.3332 35.3689 18.0928C35.5375 17.8523 35.7517 17.6474 35.9995 17.4898C36.2472 17.3322 36.5236 17.225 36.8128 17.1742C37.1021 17.1235 37.3984 17.1303 37.6851 17.1941C37.9717 17.258 38.2429 17.3777 38.4832 17.5464L46.5323 23.1877C47.0177 23.5279 47.348 24.0469 47.4507 24.6306C47.5533 25.2144 47.4199 25.815 47.0797 26.3004C46.7396 26.7857 46.2205 27.1161 45.6368 27.2187C45.0531 27.3214 44.4525 27.188 43.9671 26.8478Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@@ -0,0 +1,7 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6 7.33337V11.3334L7.33333 10" fill="#4B5563"/>
<path d="M6 7.33337V11.3334L7.33333 10" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.00033 11.3333L4.66699 10" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6663 6.66671V10C14.6663 13.3334 13.333 14.6667 9.99967 14.6667H5.99967C2.66634 14.6667 1.33301 13.3334 1.33301 10V6.00004C1.33301 2.66671 2.66634 1.33337 5.99967 1.33337H9.33301" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6663 6.66671H11.9997C9.99967 6.66671 9.33301 6.00004 9.33301 4.00004V1.33337L14.6663 6.66671Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 802 B

View File

@@ -0,0 +1,7 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.00033 11.3334V7.33337L4.66699 8.66671" fill="#4B5563"/>
<path d="M6.00033 11.3334V7.33337L4.66699 8.66671" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6 7.33337L7.33333 8.66671" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6663 6.66671V10C14.6663 13.3334 13.333 14.6667 9.99967 14.6667H5.99967C2.66634 14.6667 1.33301 13.3334 1.33301 10V6.00004C1.33301 2.66671 2.66634 1.33337 5.99967 1.33337H9.33301" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6663 6.66671H11.9997C9.99967 6.66671 9.33301 6.00004 9.33301 4.00004V1.33337L14.6663 6.66671Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 823 B

View File

@@ -0,0 +1,3 @@
<svg width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.2801 0.966675L6.93343 5.31334C6.42009 5.82668 5.58009 5.82668 5.06676 5.31334L0.720093 0.966675" stroke="#241C1D" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@@ -0,0 +1,6 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.3333 9.08341V3.41675C18.3333 2.16675 17.8 1.66675 16.475 1.66675H13.1083C11.7833 1.66675 11.25 2.16675 11.25 3.41675V9.08341C11.25 10.3334 11.7833 10.8334 13.1083 10.8334H16.475C17.8 10.8334 18.3333 10.3334 18.3333 9.08341Z" stroke="#241C1D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M18.3333 16.5833V15.0833C18.3333 13.8333 17.8 13.3333 16.475 13.3333H13.1083C11.7833 13.3333 11.25 13.8333 11.25 15.0833V16.5833C11.25 17.8333 11.7833 18.3333 13.1083 18.3333H16.475C17.8 18.3333 18.3333 17.8333 18.3333 16.5833Z" stroke="#241C1D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.75008 10.9166V16.5833C8.75008 17.8333 8.21675 18.3333 6.89175 18.3333H3.52508C2.20008 18.3333 1.66675 17.8333 1.66675 16.5833V10.9166C1.66675 9.66663 2.20008 9.16663 3.52508 9.16663H6.89175C8.21675 9.16663 8.75008 9.66663 8.75008 10.9166Z" stroke="#241C1D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.75008 3.41663V4.91663C8.75008 6.16663 8.21675 6.66663 6.89175 6.66663H3.52508C2.20008 6.66663 1.66675 6.16663 1.66675 4.91663V3.41663C1.66675 2.16663 2.20008 1.66663 3.52508 1.66663H6.89175C8.21675 1.66663 8.75008 2.16663 8.75008 3.41663Z" stroke="#241C1D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.2133 8.50006H10C8.34 8.50006 7.5 7.56006 7.5 5.70006V3.78672C7.5 3.10672 7.58 2.13339 8.28667 1.60006C8.88 1.16006 9.73333 1.12672 10.9933 1.49339C12.6467 1.97339 14.0267 3.35339 14.5067 5.00672C14.8733 6.26006 14.84 7.12006 14.4 7.70672C13.8667 8.42006 12.8933 8.50006 12.2133 8.50006ZM9.52 2.24006C9.24667 2.24006 9.03333 2.29339 8.89333 2.40006C8.63333 2.59339 8.50667 3.04672 8.50667 3.78672V5.70672C8.50667 7.20006 9.08 7.50672 10.0067 7.50672H12.22C12.9533 7.50672 13.4067 7.38006 13.6067 7.12006C13.84 6.81339 13.82 6.20006 13.56 5.30006C13.1733 3.98672 12.04 2.84672 10.7267 2.46672C10.2333 2.31339 9.83333 2.24006 9.52 2.24006Z" fill="#4B5563"/>
<path d="M7.37992 15.1667C7.02659 15.1667 6.66659 15.1401 6.30659 15.0801C3.57992 14.6401 1.35992 12.4267 0.919922 9.70005C0.353255 6.19338 2.61325 2.88672 6.07326 2.18005C6.34659 2.12672 6.60659 2.30005 6.66659 2.56672C6.71992 2.84005 6.54659 3.10005 6.27992 3.16005C3.35326 3.76005 1.43326 6.56005 1.91992 9.54005C2.29326 11.8467 4.16659 13.7201 6.47326 14.0934C9.46659 14.5734 12.2599 12.6467 12.8533 9.70672C12.9066 9.43338 13.1733 9.26005 13.4399 9.31338C13.7133 9.36672 13.8866 9.63338 13.8333 9.90005C13.1999 13.0134 10.4799 15.1667 7.37992 15.1667Z" fill="#4B5563"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,8 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.4668 10.6667L6.80013 5.33337L9.20013 10.6667" fill="#4B5563"/>
<path d="M4.4668 10.6667L6.80013 5.33337L9.20013 10.6667" stroke="#4B5563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5 8.8667H8.6" stroke="#4B5563" stroke-miterlimit="10"/>
<path d="M10.8662 10.6666V7.1333" stroke="#4B5563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M9.99967 14.6667H5.99967C2.66634 14.6667 1.33301 13.3334 1.33301 10V6.00004C1.33301 2.66671 2.66634 1.33337 5.99967 1.33337H9.99967C13.333 1.33337 14.6663 2.66671 14.6663 6.00004V10C14.6663 13.3334 13.333 14.6667 9.99967 14.6667Z" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.8936 5.35608V5.35608" stroke="#4B5563" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 984 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.00004 14.6667C11.6667 14.6667 14.6667 11.6667 14.6667 8.00004C14.6667 4.33337 11.6667 1.33337 8.00004 1.33337C4.33337 1.33337 1.33337 4.33337 1.33337 8.00004C1.33337 11.6667 4.33337 14.6667 8.00004 14.6667Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8 5.33337V8.66671" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.99646 10.6666H8.00245" stroke="#292D32" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 608 B

View File

@@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.6261 3.26532L11.3263 3.73673C10.8222 3.80875 10.4103 4.04904 10.1162 4.38114L2.41674 12.0806C1.6357 12.8616 1.63566 14.1279 2.41674 14.909L5.24517 17.7374C6.02625 18.5185 7.29255 18.5185 8.0736 17.7374L15.773 10.038C16.1051 9.74388 16.3454 9.33199 16.4174 8.82786L16.8888 5.52803C17.0775 4.20815 15.946 3.07671 14.6261 3.26532ZM12.3162 7.83793C12.7067 8.22843 13.3399 8.22846 13.7305 7.83793C14.121 7.4474 14.1209 6.81421 13.7305 6.42371C13.34 6.03322 12.7068 6.03319 12.3162 6.42372C11.9257 6.81424 11.9257 7.44743 12.3162 7.83793Z" fill="#04A9CC"/>
</svg>

After

Width:  |  Height:  |  Size: 707 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.85993 7.91996C7.49993 7.91996 7.13327 7.85329 6.8466 7.72663L2.91327 5.97996C1.91327 5.53329 1.7666 4.93329 1.7666 4.60663C1.7666 4.27996 1.91327 3.67996 2.91327 3.23329L6.8466 1.48663C7.4266 1.22663 8.29994 1.22663 8.87994 1.48663L12.8199 3.23329C13.8133 3.67329 13.9666 4.27996 13.9666 4.60663C13.9666 4.93329 13.8199 5.53329 12.8199 5.97996L8.87994 7.72663C8.5866 7.85996 8.2266 7.91996 7.85993 7.91996ZM7.85993 2.29329C7.63327 2.29329 7.41327 2.32663 7.25327 2.39996L3.31993 4.14663C2.91327 4.33329 2.7666 4.51996 2.7666 4.60663C2.7666 4.69329 2.91327 4.88663 3.31327 5.06663L7.2466 6.81329C7.5666 6.95329 8.1466 6.95329 8.4666 6.81329L12.4066 5.06663C12.8133 4.88663 12.9599 4.69329 12.9599 4.60663C12.9599 4.51996 12.8133 4.32663 12.4066 4.14663L8.47327 2.39996C8.31327 2.33329 8.0866 2.29329 7.85993 2.29329Z" fill="#4B5563"/>
<path d="M8 11.3934C7.74667 11.3934 7.49333 11.34 7.25333 11.2334L2.72667 9.22004C2.04 8.92004 1.5 8.08671 1.5 7.33337C1.5 7.06004 1.72667 6.83337 2 6.83337C2.27333 6.83337 2.5 7.06004 2.5 7.33337C2.5 7.70004 2.8 8.16004 3.13333 8.31337L7.66 10.3267C7.87333 10.42 8.12 10.42 8.34 10.3267L12.8667 8.31337C13.2 8.16671 13.5 7.70004 13.5 7.33337C13.5 7.06004 13.7267 6.83337 14 6.83337C14.2733 6.83337 14.5 7.06004 14.5 7.33337C14.5 8.08671 13.96 8.92004 13.2733 9.22671L8.74667 11.24C8.50667 11.34 8.25333 11.3934 8 11.3934Z" fill="#4B5563"/>
<path d="M8 14.7267C7.74667 14.7267 7.49333 14.6734 7.25333 14.5667L2.72667 12.5534C1.98 12.22 1.5 11.48 1.5 10.66C1.5 10.3867 1.72667 10.16 2 10.16C2.27333 10.16 2.5 10.3934 2.5 10.6667C2.5 11.0867 2.74667 11.4734 3.13333 11.6467L7.66 13.66C7.87333 13.7534 8.12 13.7534 8.34 13.66L12.8667 11.6467C13.2533 11.4734 13.5 11.0934 13.5 10.6667C13.5 10.3934 13.7267 10.1667 14 10.1667C14.2733 10.1667 14.5 10.3934 14.5 10.6667C14.5 11.4867 14.02 12.2267 13.2733 12.56L8.74667 14.5734C8.50667 14.6734 8.25333 14.7267 8 14.7267Z" fill="#292D32"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.5282 2.75995L11.4815 5.28661C11.4748 5.63328 11.6948 6.09328 11.9748 6.29995L13.6282 7.55328C14.6882 8.35328 14.5148 9.33328 13.2482 9.73328L11.0948 10.4066C10.7348 10.5199 10.3548 10.9133 10.2615 11.2799L9.74815 13.2399C9.34148 14.7866 8.32815 14.9399 7.48815 13.5799L6.31482 11.6799C6.10148 11.3333 5.59482 11.0733 5.19482 11.0933L2.96815 11.2066C1.37482 11.2866 0.921483 10.3666 1.96148 9.15328L3.28148 7.61995C3.52815 7.33328 3.64148 6.79995 3.52815 6.43995L2.84815 4.27995C2.45482 3.01328 3.16148 2.31328 4.42148 2.72661L6.38815 3.37328C6.72148 3.47995 7.22148 3.40661 7.50148 3.19995L9.55482 1.71995C10.6681 0.926614 11.5548 1.39328 11.5282 2.75995Z" fill="#04A9CC"/>
<path d="M14.2935 13.6467L12.2735 11.6267C12.0802 11.4334 11.7602 11.4334 11.5669 11.6267C11.3735 11.82 11.3735 12.14 11.5669 12.3334L13.5869 14.3534C13.6869 14.4534 13.8135 14.5 13.9402 14.5C14.0669 14.5 14.1935 14.4534 14.2935 14.3534C14.4869 14.16 14.4869 13.84 14.2935 13.6467Z" fill="#04A9CC"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3 7H21" stroke="#292D32" stroke-width="1.5" stroke-linecap="round"/>
<path d="M3 12H21" stroke="#292D32" stroke-width="1.5" stroke-linecap="round"/>
<path d="M3 17H21" stroke="#292D32" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 342 B

View File

@@ -0,0 +1,5 @@
<svg width="11" height="11" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.625 3.55212H1.375C1.18708 3.55212 1.03125 3.39629 1.03125 3.20837C1.03125 3.02046 1.18708 2.86462 1.375 2.86462H9.625C9.81292 2.86462 9.96875 3.02046 9.96875 3.20837C9.96875 3.39629 9.81292 3.55212 9.625 3.55212Z" fill="#241C1D"/>
<path d="M9.625 5.84375H1.375C1.18708 5.84375 1.03125 5.68792 1.03125 5.5C1.03125 5.31208 1.18708 5.15625 1.375 5.15625H9.625C9.81292 5.15625 9.96875 5.31208 9.96875 5.5C9.96875 5.68792 9.81292 5.84375 9.625 5.84375Z" fill="#241C1D"/>
<path d="M9.625 8.13538H1.375C1.18708 8.13538 1.03125 7.97954 1.03125 7.79163C1.03125 7.60371 1.18708 7.44788 1.375 7.44788H9.625C9.81292 7.44788 9.96875 7.60371 9.96875 7.79163C9.96875 7.97954 9.81292 8.13538 9.625 8.13538Z" fill="#241C1D"/>
</svg>

After

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 B

View File

@@ -0,0 +1,7 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.99996 19.0083C9.42496 19.0083 8.88329 18.7166 8.49996 18.2083L7.24996 16.5416C7.22496 16.5083 7.12496 16.4583 7.07496 16.4583H6.66663C3.19163 16.4583 1.04163 15.5166 1.04163 10.8333V6.66663C1.04163 2.98329 2.98329 1.04163 6.66663 1.04163H11.6666C12.0083 1.04163 12.2916 1.32496 12.2916 1.66663C12.2916 2.00829 12.0083 2.29163 11.6666 2.29163H6.66663C3.68329 2.29163 2.29163 3.68329 2.29163 6.66663V10.8333C2.29163 14.6 3.58329 15.2083 6.66663 15.2083H7.08329C7.50829 15.2083 7.99163 15.45 8.24996 15.7916L9.49996 17.4583C9.79163 17.8416 10.2083 17.8416 10.5 17.4583L11.75 15.7916C12.025 15.425 12.4583 15.2083 12.9166 15.2083H13.3333C16.3166 15.2083 17.7083 13.8166 17.7083 10.8333V8.33329C17.7083 7.99163 17.9916 7.70829 18.3333 7.70829C18.675 7.70829 18.9583 7.99163 18.9583 8.33329V10.8333C18.9583 14.5166 17.0166 16.4583 13.3333 16.4583H12.9166C12.85 16.4583 12.7916 16.4916 12.75 16.5416L11.5 18.2083C11.1166 18.7166 10.575 19.0083 9.99996 19.0083Z" fill="#241C1D"/>
<path d="M9.99996 10C9.53329 10 9.16663 9.62504 9.16663 9.16671C9.16663 8.70837 9.54163 8.33337 9.99996 8.33337C10.4583 8.33337 10.8333 8.70837 10.8333 9.16671C10.8333 9.62504 10.4666 10 9.99996 10Z" fill="#241C1D"/>
<path d="M13.3333 10C12.8667 10 12.5 9.62504 12.5 9.16671C12.5 8.70837 12.875 8.33337 13.3333 8.33337C13.7917 8.33337 14.1667 8.70837 14.1667 9.16671C14.1667 9.62504 13.8 10 13.3333 10Z" fill="#241C1D"/>
<path d="M6.66671 10C6.20004 10 5.83337 9.62504 5.83337 9.16671C5.83337 8.70837 6.20837 8.33337 6.66671 8.33337C7.12504 8.33337 7.50004 8.70837 7.50004 9.16671C7.50004 9.62504 7.13337 10 6.66671 10Z" fill="#241C1D"/>
<path d="M16.25 6.45829C14.7583 6.45829 13.5416 5.24163 13.5416 3.74996C13.5416 2.25829 14.7583 1.04163 16.25 1.04163C17.7416 1.04163 18.9583 2.25829 18.9583 3.74996C18.9583 5.24163 17.7416 6.45829 16.25 6.45829ZM16.25 2.29163C15.45 2.29163 14.7916 2.94996 14.7916 3.74996C14.7916 4.54996 15.45 5.20829 16.25 5.20829C17.05 5.20829 17.7083 4.54996 17.7083 3.74996C17.7083 2.94996 17.05 2.29163 16.25 2.29163Z" fill="#241C1D"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,7 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.9866 7.19334V9.86001C11.9866 10.0333 11.9799 10.2 11.9599 10.36C11.8066 12.16 10.7466 13.0533 8.79325 13.0533H8.52659C8.35992 13.0533 8.19991 13.1333 8.09991 13.2667L7.29993 14.3333C6.94659 14.8067 6.37325 14.8067 6.01992 14.3333L5.21991 13.2667C5.13324 13.1533 4.93992 13.0533 4.79325 13.0533H4.52659C2.39992 13.0533 1.33325 12.5267 1.33325 9.86001V7.19334C1.33325 5.24001 2.23326 4.18001 4.02659 4.02667C4.18659 4.00667 4.35326 4 4.52659 4H8.79325C10.9199 4 11.9866 5.06667 11.9866 7.19334Z" stroke="#292D32" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6533 4.52671V7.19338C14.6533 9.15338 13.7533 10.2067 11.9599 10.36C11.9799 10.2 11.9866 10.0334 11.9866 9.86005V7.19338C11.9866 5.06671 10.9199 4.00004 8.79327 4.00004H4.52661C4.35328 4.00004 4.18661 4.00671 4.02661 4.02671C4.17994 2.23338 5.23994 1.33337 7.19328 1.33337H11.4599C13.5866 1.33337 14.6533 2.40005 14.6533 4.52671Z" stroke="#292D32" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.99708 8.83333H9.00308" stroke="#292D32" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.66359 8.83333H6.66959" stroke="#292D32" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.33033 8.83333H4.33633" stroke="#292D32" stroke-width="1.33333" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.2916 15.8333C12.2916 17.1 11.2666 18.125 9.99992 18.125C8.73325 18.125 7.70825 17.1 7.70825 15.8333C7.70825 14.5667 8.73325 13.5417 9.99992 13.5417C11.2666 13.5417 12.2916 14.5667 12.2916 15.8333ZM8.95825 15.8333C8.95825 16.4083 9.42492 16.875 9.99992 16.875C10.5749 16.875 11.0416 16.4083 11.0416 15.8333C11.0416 15.2583 10.5749 14.7917 9.99992 14.7917C9.42492 14.7917 8.95825 15.2583 8.95825 15.8333Z" fill="#241C1D"/>
<path d="M12.2916 4.16671C12.2916 5.43337 11.2666 6.45837 9.99992 6.45837C8.73325 6.45837 7.70825 5.43337 7.70825 4.16671C7.70825 2.90004 8.73325 1.87504 9.99992 1.87504C11.2666 1.87504 12.2916 2.90004 12.2916 4.16671ZM8.95825 4.16671C8.95825 4.74171 9.42492 5.20837 9.99992 5.20837C10.5749 5.20837 11.0416 4.74171 11.0416 4.16671C11.0416 3.59171 10.5749 3.12504 9.99992 3.12504C9.42492 3.12504 8.95825 3.59171 8.95825 4.16671Z" fill="#241C1D"/>
<path d="M12.2916 9.99996C12.2916 11.2666 11.2666 12.2916 9.99992 12.2916C8.73325 12.2916 7.70825 11.2666 7.70825 9.99996C7.70825 8.73329 8.73325 7.70829 9.99992 7.70829C11.2666 7.70829 12.2916 8.73329 12.2916 9.99996ZM8.95825 9.99996C8.95825 10.575 9.42492 11.0416 9.99992 11.0416C10.5749 11.0416 11.0416 10.575 11.0416 9.99996C11.0416 9.42496 10.5749 8.95829 9.99992 8.95829C9.42492 8.95829 8.95825 9.42496 8.95825 9.99996Z" fill="#241C1D"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.54 13.4533C10.3667 13.4533 10.1867 13.4466 9.99338 13.4266C9.64671 13.4 9.25338 13.3333 8.84671 13.2333L7.72671 12.9666C4.65338 12.24 3.64671 10.6133 4.36671 7.54664L5.02005 4.7533C5.16671 4.11997 5.34005 3.60664 5.55338 3.17997C6.70005 0.813303 8.89338 1.02664 10.4534 1.3933L11.5667 1.6533C13.1267 2.01997 14.1134 2.59997 14.6667 3.48664C15.2134 4.3733 15.3 5.5133 14.9334 7.0733L14.28 9.85997C13.7067 12.3 12.5134 13.4533 10.54 13.4533ZM8.74671 2.16664C7.63338 2.16664 6.92671 2.62664 6.45338 3.6133C6.28005 3.9733 6.12671 4.41997 5.99338 4.97997L5.34005 7.7733C4.74671 10.2933 5.43338 11.3933 7.95338 11.9933L9.07338 12.26C9.43338 12.3466 9.77338 12.4 10.08 12.4266C11.8934 12.6066 12.7934 11.8133 13.3 9.6333L13.9534 6.84664C14.2534 5.55997 14.2134 4.65997 13.8134 4.0133C13.4134 3.36664 12.6267 2.92664 11.3334 2.62664L10.22 2.36664C9.66671 2.2333 9.17338 2.16664 8.74671 2.16664Z" fill="#4B5563"/>
<path d="M5.55341 14.8334C3.84008 14.8334 2.74674 13.8067 2.04674 11.64L1.19341 9.0067C0.246742 6.07337 1.09341 4.42003 4.01341 3.47337L5.06674 3.13337C5.41341 3.0267 5.67341 2.95337 5.90674 2.91337C6.10007 2.87337 6.28674 2.9467 6.40008 3.10003C6.51341 3.25337 6.53341 3.45337 6.45341 3.6267C6.28008 3.98003 6.12674 4.4267 6.00008 4.9867L5.34674 7.78003C4.75341 10.3 5.44007 11.4 7.96007 12L9.08008 12.2667C9.44007 12.3534 9.78008 12.4067 10.0867 12.4334C10.3001 12.4534 10.4734 12.6 10.5334 12.8067C10.5867 13.0134 10.5067 13.2267 10.3334 13.3467C9.89341 13.6467 9.34008 13.9 8.64008 14.1267L7.58674 14.4734C6.82008 14.7134 6.15341 14.8334 5.55341 14.8334ZM5.18674 4.1467L4.32674 4.4267C1.94674 5.19337 1.38008 6.31337 2.14674 8.70003L3.00008 11.3334C3.77341 13.7134 4.89341 14.2867 7.27341 13.52L8.32674 13.1734C8.36674 13.16 8.40007 13.1467 8.44007 13.1334L7.73341 12.9667C4.66008 12.24 3.65341 10.6134 4.37341 7.5467L5.02674 4.75337C5.07341 4.54003 5.12674 4.33337 5.18674 4.1467Z" fill="#4B5563"/>
<path d="M11.6599 7.00664C11.6199 7.00664 11.5799 6.99997 11.5332 6.99331L8.29992 6.17331C8.03325 6.10664 7.87325 5.83331 7.93992 5.56664C8.00658 5.29997 8.27992 5.13997 8.54658 5.20664L11.7799 6.02664C12.0466 6.09331 12.2066 6.36664 12.1399 6.63331C12.0866 6.85331 11.8799 7.00664 11.6599 7.00664Z" fill="#4B5563"/>
<path d="M9.70643 9.25993C9.66643 9.25993 9.62643 9.25326 9.57976 9.2466L7.63976 8.75326C7.37309 8.6866 7.21309 8.41326 7.27976 8.1466C7.34643 7.87993 7.61976 7.71993 7.88643 7.7866L9.82643 8.27993C10.0931 8.3466 10.2531 8.61993 10.1864 8.8866C10.1331 9.11326 9.93309 9.25993 9.70643 9.25993Z" fill="#4B5563"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -0,0 +1,7 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.66663 1.66663V4.16663" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.3334 1.66663V4.16663" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17.5 7.08329V14.1666C17.5 16.6666 16.25 18.3333 13.3333 18.3333H6.66667C3.75 18.3333 2.5 16.6666 2.5 14.1666V7.08329C2.5 4.58329 3.75 2.91663 6.66667 2.91663H13.3333C16.25 2.91663 17.5 4.58329 17.5 7.08329Z" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.66663 9.16663H13.3333" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.66663 13.3334H9.99996" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1006 B

View File

@@ -0,0 +1,6 @@
<svg width="56" height="55" viewBox="0 0 56 55" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21.7923 24.9105C21.5631 24.8875 21.2881 24.8875 21.036 24.9105C15.5819 24.7271 11.2506 20.2584 11.2506 14.7584C11.2506 9.14379 15.7881 4.58337 21.4256 4.58337C27.0402 4.58337 31.6006 9.14379 31.6006 14.7584C31.5777 20.2584 27.2464 24.7271 21.7923 24.9105Z" stroke="#241C1D" stroke-width="2.35714" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M38.4056 9.16663C42.8514 9.16663 46.4264 12.7645 46.4264 17.1875C46.4264 21.5187 42.9889 25.0479 38.7035 25.2083C38.5202 25.1854 38.3139 25.1854 38.1077 25.2083" stroke="#241C1D" stroke-width="2.35714" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.3336 33.3666C4.78774 37.0791 4.78774 43.1291 10.3336 46.8187C16.6357 51.0354 26.9711 51.0354 33.2732 46.8187C38.819 43.1062 38.819 37.0562 33.2732 33.3666C26.994 29.1729 16.6586 29.1729 10.3336 33.3666Z" stroke="#241C1D" stroke-width="2.35714" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M42.8296 45.8334C44.4796 45.4896 46.0379 44.825 47.3213 43.8396C50.8963 41.1584 50.8963 36.7355 47.3213 34.0542C46.0608 33.0917 44.5254 32.45 42.8983 32.0834" stroke="#241C1D" stroke-width="2.35714" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.59351 3.92004H3.40682C2.26682 3.92004 1.3335 4.85337 1.3335 5.99337V13.5667C1.3335 14.5334 2.02683 14.9467 2.87349 14.4734L5.49349 13.0134C5.77349 12.86 6.22683 12.86 6.50016 13.0134L9.12016 14.4734C9.96682 14.9467 10.6602 14.5334 10.6602 13.5667V5.99337C10.6668 4.85337 9.73351 3.92004 8.59351 3.92004Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.6668 5.99337V13.5667C10.6668 14.5334 9.9735 14.94 9.12683 14.4734L6.50684 13.0134C6.22684 12.86 5.77349 12.86 5.49349 13.0134L2.87349 14.4734C2.02683 14.94 1.3335 14.5334 1.3335 13.5667V5.99337C1.3335 4.85337 2.26682 3.92004 3.40682 3.92004H8.59351C9.73351 3.92004 10.6668 4.85337 10.6668 5.99337Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14.6668 3.4067V10.98C14.6668 11.9467 13.9735 12.3534 13.1268 11.8867L10.6668 10.5134V5.99337C10.6668 4.85337 9.73351 3.92004 8.59351 3.92004H5.3335V3.4067C5.3335 2.2667 6.26682 1.33337 7.40682 1.33337H12.5935C13.7335 1.33337 14.6668 2.2667 14.6668 3.4067Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 10C9.10457 10 10 9.10457 10 8C10 6.89543 9.10457 6 8 6C6.89543 6 6 6.89543 6 8C6 9.10457 6.89543 10 8 10Z" fill="#4B5563" stroke="#4B5563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M1.33301 8.58667V7.41333C1.33301 6.72 1.89967 6.14667 2.59967 6.14667C3.80634 6.14667 4.29967 5.29333 3.69301 4.24667C3.34634 3.64667 3.55301 2.86667 4.15967 2.52L5.31301 1.86C5.83967 1.54666 6.51967 1.73333 6.83301 2.26L6.90634 2.38666C7.50634 3.43333 8.49301 3.43333 9.09967 2.38666L9.17301 2.26C9.48634 1.73333 10.1663 1.54666 10.693 1.86L11.8463 2.52C12.453 2.86667 12.6597 3.64667 12.313 4.24667C11.7063 5.29333 12.1997 6.14667 13.4063 6.14667C14.0997 6.14667 14.673 6.71333 14.673 7.41333V8.58667C14.673 9.28 14.1063 9.85333 13.4063 9.85333C12.1997 9.85333 11.7063 10.7067 12.313 11.7533C12.6597 12.36 12.453 13.1333 11.8463 13.48L10.693 14.14C10.1663 14.4533 9.48634 14.2667 9.17301 13.74L9.09967 13.6133C8.49967 12.5667 7.51301 12.5667 6.90634 13.6133L6.83301 13.74C6.51967 14.2667 5.83967 14.4533 5.31301 14.14L4.15967 13.48C3.55301 13.1333 3.34634 12.3533 3.69301 11.7533C4.29967 10.7067 3.80634 9.85333 2.59967 9.85333C1.89967 9.85333 1.33301 9.28 1.33301 8.58667Z" stroke="#4B5563" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.3335 14.1667H4.66683C4.3935 14.1667 4.16683 13.94 4.16683 13.6667C4.16683 13.3934 4.3935 13.1667 4.66683 13.1667H11.3335C13.2402 13.1667 14.1668 12.24 14.1668 10.3334V5.66671C14.1668 3.76004 13.2402 2.83337 11.3335 2.83337H4.66683C2.76016 2.83337 1.8335 3.76004 1.8335 5.66671C1.8335 5.94004 1.60683 6.16671 1.3335 6.16671C1.06016 6.16671 0.833496 5.94004 0.833496 5.66671C0.833496 3.23337 2.2335 1.83337 4.66683 1.83337H11.3335C13.7668 1.83337 15.1668 3.23337 15.1668 5.66671V10.3334C15.1668 12.7667 13.7668 14.1667 11.3335 14.1667Z" fill="#292D32"/>
<path d="M7.99969 8.57998C7.43969 8.57998 6.87302 8.40665 6.43969 8.05331L4.35302 6.38665C4.13969 6.21331 4.09969 5.89998 4.27302 5.68665C4.44636 5.47331 4.75968 5.43332 4.97302 5.60665L7.05969 7.27332C7.56635 7.67998 8.42635 7.67998 8.93302 7.27332L11.0197 5.60665C11.233 5.43332 11.553 5.46665 11.7197 5.68665C11.893 5.89998 11.8597 6.21998 11.6397 6.38665L9.55301 8.05331C9.12635 8.40665 8.55969 8.57998 7.99969 8.57998Z" fill="#292D32"/>
<path d="M5.3335 11.5H1.3335C1.06016 11.5 0.833496 11.2733 0.833496 11C0.833496 10.7267 1.06016 10.5 1.3335 10.5H5.3335C5.60683 10.5 5.8335 10.7267 5.8335 11C5.8335 11.2733 5.60683 11.5 5.3335 11.5Z" fill="#292D32"/>
<path d="M3.3335 8.83337H1.3335C1.06016 8.83337 0.833496 8.60671 0.833496 8.33337C0.833496 8.06004 1.06016 7.83337 1.3335 7.83337H3.3335C3.60683 7.83337 3.8335 8.06004 3.8335 8.33337C3.8335 8.60671 3.60683 8.83337 3.3335 8.83337Z" fill="#292D32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,5 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2799 20.25H16.9999C19.7599 20.25 21.9999 18.01 21.9999 15.25V8.75C21.9999 5.99 19.7599 3.75 16.9999 3.75H10.2799C8.86993 3.75 7.52993 4.34 6.57993 5.39L3.04993 9.27C1.63993 10.82 1.63993 13.18 3.04993 14.73L6.57993 18.61C7.52993 19.66 8.86993 20.25 10.2799 20.25Z" stroke="#292D32" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M16.0001 14.47L11.0601 9.53003" stroke="#292D32" stroke-width="1.5" stroke-linecap="round"/>
<path d="M11.0601 14.47L16.0001 9.53003" stroke="#292D32" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 670 B

View File

@@ -0,0 +1,8 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14 3.98665C11.78 3.76665 9.54667 3.65332 7.32 3.65332C6 3.65332 4.68 3.71999 3.36 3.85332L2 3.98665" fill="#4B5563"/>
<path d="M14 3.98665C11.78 3.76665 9.54667 3.65332 7.32 3.65332C6 3.65332 4.68 3.71999 3.36 3.85332L2 3.98665" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M5.66699 3.31337L5.81366 2.44004C5.92033 1.80671 6.00033 1.33337 7.12699 1.33337H8.87366C10.0003 1.33337 10.087 1.83337 10.187 2.44671L10.3337 3.31337" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.5669 6.09338L12.1336 12.8067C12.0603 13.8534 12.0003 14.6667 10.1403 14.6667H5.86026C4.00026 14.6667 3.94026 13.8534 3.86693 12.8067L3.43359 6.09338" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.88672 11H9.10672" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.33301 8.33337H9.66634" stroke="#4B5563" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 6C12 8.20914 10.2091 10 8 10C5.79086 10 4 8.20914 4 6C4 3.79086 5.79086 2 8 2C10.2091 2 12 3.79086 12 6ZM8 11C4.13401 11 1 13.2386 1 16C1 17.1046 1.89543 18 3 18H13C14.1046 18 15 17.1046 15 16C15 13.2386 11.866 11 8 11ZM16 4C16.5523 4 17 4.44772 17 5V6H18C18.5523 6 19 6.44772 19 7C19 7.55228 18.5523 8 18 8H17V9C17 9.55228 16.5523 10 16 10C15.4477 10 15 9.55228 15 9V8H14C13.4477 8 13 7.55228 13 7C13 6.44771 13.4477 6 14 6H15V5C15 4.44772 15.4477 4 16 4Z" fill="#04A9CC"/>
</svg>

After

Width:  |  Height:  |  Size: 631 B

View File

@@ -0,0 +1,4 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7.58301 9.99999V8.76666C7.58301 7.17499 8.70801 6.53333 10.083 7.32499L11.1497 7.94166L12.2163 8.55833C13.5913 9.34999 13.5913 10.65 12.2163 11.4417L11.1497 12.0583L10.083 12.675C8.70801 13.4667 7.58301 12.8167 7.58301 11.2333V9.99999Z" stroke="#241C1D" stroke-width="1.25" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.0001 18.3333C14.6025 18.3333 18.3334 14.6023 18.3334 9.99996C18.3334 5.39759 14.6025 1.66663 10.0001 1.66663C5.39771 1.66663 1.66675 5.39759 1.66675 9.99996C1.66675 14.6023 5.39771 18.3333 10.0001 18.3333Z" stroke="#241C1D" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,3 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M17 8C12.0294 8 8 12.0294 8 17C8 21.9706 12.0294 26 17 26C21.9706 26 26 21.9706 26 17C26 12.0294 21.9706 8 17 8ZM9.25581 17C9.25581 15.0875 9.94906 13.337 11.098 11.9859L13.7791 14.6671C13.3036 15.3224 13.0233 16.1285 13.0233 17C13.0233 17.8715 13.3036 18.6776 13.7791 19.3329L11.098 22.014C9.94905 20.663 9.25581 18.9125 9.25581 17ZM14.6671 13.7791L11.986 11.098C13.337 9.94906 15.0875 9.25581 17 9.25581C18.9125 9.25581 20.663 9.94906 22.014 11.098L19.3329 13.7791C18.6776 13.3036 17.8715 13.0233 17 13.0233C16.1285 13.0233 15.3224 13.3036 14.6671 13.7791ZM11.9859 22.902C13.337 24.0509 15.0875 24.7442 17 24.7442C18.9125 24.7442 20.663 24.0509 22.0141 22.902L19.3329 20.2209C18.6776 20.6964 17.8715 20.9767 17 20.9767C16.1285 20.9767 15.3224 20.6964 14.6671 20.2209L11.9859 22.902ZM20.2209 19.3329L22.902 22.014C24.0509 20.663 24.7442 18.9125 24.7442 17C24.7442 15.0875 24.0509 13.337 22.902 11.9859L20.2209 14.6671C20.6964 15.3224 20.9767 16.1285 20.9767 17C20.9767 17.8715 20.6964 18.6776 20.2209 19.3329ZM14.2791 17C14.2791 15.4973 15.4973 14.2791 17 14.2791C18.5027 14.2791 19.7209 15.4973 19.7209 17C19.7209 18.5027 18.5027 19.7209 17 19.7209C15.4973 19.7209 14.2791 18.5027 14.2791 17Z" fill="#1C1C1C"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.6667 8.66671V6.00004C14.6667 2.66671 13.3334 1.33337 10 1.33337H6.00004C2.66671 1.33337 1.33337 2.66671 1.33337 6.00004V10C1.33337 13.3334 2.66671 14.6667 6.00004 14.6667H8.66671" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M4.8866 9.65997L6.47327 7.59997C6.69993 7.30663 7.11994 7.2533 7.41327 7.47997L8.63328 8.43997C8.92661 8.66664 9.3466 8.61331 9.57326 8.32664L11.1133 6.33997" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.9867 10.5466L13.1733 10.9266C13.2666 11.1132 13.5 11.2866 13.7066 11.3266L13.96 11.3666C14.72 11.4933 14.9 12.0533 14.3533 12.6066L14.12 12.8399C13.9666 12.9999 13.88 13.3066 13.9267 13.5199L13.96 13.6599C14.1666 14.5799 13.68 14.9332 12.88 14.4532L12.7066 14.3532C12.5 14.2332 12.1666 14.2332 11.96 14.3532L11.7866 14.4532C10.98 14.9399 10.4933 14.5799 10.7066 13.6599L10.74 13.5199C10.7866 13.3066 10.7 12.9999 10.5466 12.8399L10.3133 12.6066C9.76664 12.0533 9.94664 11.4933 10.7066 11.3666L10.96 11.3266C11.16 11.2933 11.4 11.1132 11.4933 10.9266L11.68 10.5466C12.04 9.81992 12.6267 9.81992 12.9867 10.5466Z" stroke="#292D32" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,6 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8 17C8 12.7574 8 10.636 9.31802 9.31802C10.636 8 12.7574 8 17 8C21.2426 8 23.364 8 24.682 9.31802C26 10.636 26 12.7574 26 17C26 21.2426 26 23.364 24.682 24.682C23.364 26 21.2426 26 17 26C12.7574 26 10.636 26 9.31802 24.682C8 23.364 8 21.2426 8 17Z" stroke="#1C1C1C" stroke-width="1.5"/>
<path d="M12.95 12.5L15.65 12.5" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M12.9501 17H18.3501" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M12.95 21.5H21.05" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.00016 14.6654C11.6821 14.6654 14.6668 11.6806 14.6668 7.9987C14.6668 4.3168 11.6821 1.33203 8.00016 1.33203C4.31826 1.33203 1.3335 4.3168 1.3335 7.9987C1.3335 11.6806 4.31826 14.6654 8.00016 14.6654Z" stroke="#B0B0B0"/>
<path d="M8 11.332V7.33203" stroke="#B0B0B0" stroke-linecap="round"/>
<path d="M7.99992 4.66667C8.36811 4.66667 8.66659 4.96514 8.66659 5.33333C8.66659 5.70152 8.36811 6 7.99992 6C7.63173 6 7.33325 5.70152 7.33325 5.33333C7.33325 4.96514 7.63173 4.66667 7.99992 4.66667Z" fill="#B0B0B0"/>
</svg>

After

Width:  |  Height:  |  Size: 624 B

View File

@@ -0,0 +1,3 @@
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Search" fill-rule="evenodd" clip-rule="evenodd" d="M9.47653 11.6407C8.49572 12.3392 7.29583 12.75 6 12.75C2.68629 12.75 0 10.0637 0 6.75C0 3.43629 2.68629 0.75 6 0.75C9.31371 0.75 12 3.43629 12 6.75C12 8.04583 11.5892 9.24572 10.8907 10.2265L13.7071 13.0429C14.0976 13.4334 14.0976 14.0666 13.7071 14.4571C13.3166 14.8476 12.6834 14.8476 12.2929 14.4571L9.47653 11.6407ZM10 6.75C10 8.95914 8.20914 10.75 6 10.75C3.79086 10.75 2 8.95914 2 6.75C2 4.54086 3.79086 2.75 6 2.75C8.20914 2.75 10 4.54086 10 6.75Z" fill="#ccc"/>
</svg>

After

Width:  |  Height:  |  Size: 634 B

View File

@@ -0,0 +1,3 @@
<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
<path id="Search" fill-rule="evenodd" clip-rule="evenodd" d="M9.47653 11.6407C8.49572 12.3392 7.29583 12.75 6 12.75C2.68629 12.75 0 10.0637 0 6.75C0 3.43629 2.68629 0.75 6 0.75C9.31371 0.75 12 3.43629 12 6.75C12 8.04583 11.5892 9.24572 10.8907 10.2265L13.7071 13.0429C14.0976 13.4334 14.0976 14.0666 13.7071 14.4571C13.3166 14.8476 12.6834 14.8476 12.2929 14.4571L9.47653 11.6407ZM10 6.75C10 8.95914 8.20914 10.75 6 10.75C3.79086 10.75 2 8.95914 2 6.75C2 4.54086 3.79086 2.75 6 2.75C8.20914 2.75 10 4.54086 10 6.75Z" fill="#B0B0B0"/>
</svg>

After

Width:  |  Height:  |  Size: 637 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M15 5L9 12L15 19" stroke="#1C1C1C" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 215 B

View File

@@ -0,0 +1,12 @@
<svg width="21" height="21" viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.89307 2.2207V4.7207" stroke="#241C1D" stroke-width="1.36865" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.5591 2.2207V4.7207" stroke="#241C1D" stroke-width="1.36865" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M3.14307 8.12988H17.3097" stroke="#241C1D" stroke-width="1.36865" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17.7261 7.63737V14.7207C17.7261 17.2207 16.4761 18.8874 13.5594 18.8874H6.89274C3.97607 18.8874 2.72607 17.2207 2.72607 14.7207V7.63737C2.72607 5.13737 3.97607 3.4707 6.89274 3.4707H13.5594C16.4761 3.4707 17.7261 5.13737 17.7261 7.63737Z" stroke="#241C1D" stroke-width="1.36865" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.3047 11.9714H13.3122" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M13.3047 14.4714H13.3122" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.2221 11.9714H10.2296" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.2221 14.4714H10.2296" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.13768 11.9714H7.14516" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.13768 14.4714H7.14516" stroke="#241C1D" stroke-width="1.82487" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.99999 18.3333C14.5833 18.3333 18.3333 14.5833 18.3333 9.99996C18.3333 5.41663 14.5833 1.66663 9.99999 1.66663C5.41666 1.66663 1.66666 5.41663 1.66666 9.99996C1.66666 14.5833 5.41666 18.3333 9.99999 18.3333Z" stroke="#241C1D" stroke-width="1.20759" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M7.6416 12.3584L12.3583 7.64172" stroke="#241C1D" stroke-width="1.20759" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.3583 12.3584L7.6416 7.64172" stroke="#241C1D" stroke-width="1.20759" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 674 B

View File

@@ -0,0 +1,3 @@
<svg width="12" height="7" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.2801 0.966675L6.93343 5.31334C6.42009 5.82668 5.58009 5.82668 5.06676 5.31334L0.720093 0.966675" stroke="#241C1D" stroke-miterlimit="10" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 300 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Icon after">
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M5.528 7.6118C5.40347 7.73773 5.33362 7.90769 5.33362 8.0848C5.33362 8.26191 5.40347 8.43187 5.528 8.5578L7.48734 10.5345C7.63267 10.6778 7.82067 10.7491 8.00667 10.7491C8.19267 10.7491 8.37734 10.6778 8.51934 10.5345L10.4727 8.56446C10.597 8.43845 10.6668 8.26852 10.6668 8.09146C10.6668 7.91441 10.597 7.74448 10.4727 7.61846C10.4115 7.55634 10.3385 7.50701 10.258 7.47334C10.1776 7.43967 10.0912 7.42233 10.004 7.42233C9.91679 7.42233 9.83044 7.43967 9.74998 7.47334C9.66952 7.50701 9.59656 7.55634 9.53534 7.61846L8.00334 9.16313L6.46534 7.6118C6.40398 7.54992 6.33098 7.5008 6.25054 7.46728C6.1701 7.43376 6.08382 7.4165 5.99667 7.4165C5.90953 7.4165 5.82325 7.43376 5.74281 7.46728C5.66237 7.5008 5.58936 7.54992 5.528 7.6118Z" fill="#ccc"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 937 B

View File

@@ -0,0 +1,5 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Icon after">
<path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M5.528 7.6118C5.40347 7.73773 5.33362 7.90769 5.33362 8.0848C5.33362 8.26191 5.40347 8.43187 5.528 8.5578L7.48734 10.5345C7.63267 10.6778 7.82067 10.7491 8.00667 10.7491C8.19267 10.7491 8.37734 10.6778 8.51934 10.5345L10.4727 8.56446C10.597 8.43845 10.6668 8.26852 10.6668 8.09146C10.6668 7.91441 10.597 7.74448 10.4727 7.61846C10.4115 7.55634 10.3385 7.50701 10.258 7.47334C10.1776 7.43967 10.0912 7.42233 10.004 7.42233C9.91679 7.42233 9.83044 7.43967 9.74998 7.47334C9.66952 7.50701 9.59656 7.55634 9.53534 7.61846L8.00334 9.16313L6.46534 7.6118C6.40398 7.54992 6.33098 7.5008 6.25054 7.46728C6.1701 7.43376 6.08382 7.4165 5.99667 7.4165C5.90953 7.4165 5.82325 7.43376 5.74281 7.46728C5.66237 7.5008 5.58936 7.54992 5.528 7.6118Z" fill="#666"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 937 B

View File

@@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1264_72089)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.83792 1.74779C11.057 0.52873 13.0335 0.52873 14.2525 1.74779C15.4716 2.96686 15.4716 4.94335 14.2525 6.16242L7.92901 12.486C7.56773 12.8473 7.35506 13.0599 7.11846 13.2445C6.8396 13.462 6.53786 13.6485 6.2186 13.8006C5.94774 13.9297 5.66239 14.0248 5.17765 14.1864L2.9569 14.9266L2.42218 15.1049C1.98848 15.2494 1.51031 15.1366 1.18704 14.8133C0.863776 14.49 0.750898 14.0119 0.895467 13.5782L1.81395 10.8227C1.97551 10.338 2.07062 10.0526 2.19971 9.78174C2.35186 9.46248 2.53834 9.16074 2.75585 8.88188C2.94039 8.64528 3.15309 8.4326 3.51441 8.07131L9.83792 1.74779ZM2.93384 13.8802L4.82818 13.2488C5.35559 13.073 5.57968 12.9974 5.78838 12.8979C6.04208 12.777 6.28185 12.6288 6.50344 12.456C6.68574 12.3138 6.85358 12.1472 7.24669 11.7541L12.293 6.70774C11.7672 6.5223 11.0899 6.17858 10.4558 5.5445C9.82176 4.91042 9.47803 4.23309 9.2926 3.70733L4.24628 8.75365C3.85317 9.14676 3.68655 9.31459 3.54436 9.4969C3.37152 9.71849 3.22334 9.95826 3.10243 10.212C3.00297 10.4207 2.92736 10.6447 2.75156 11.1722L2.12011 13.0665L2.93384 13.8802ZM10.1037 2.89619C10.1265 3.01283 10.1651 3.17139 10.2294 3.35675C10.3742 3.77405 10.6476 4.32208 11.1629 4.83739C11.6783 5.3527 12.2263 5.62619 12.6436 5.77096C12.8289 5.83527 12.9875 5.8738 13.1041 5.8966L13.5454 5.45531C14.374 4.62677 14.374 3.28344 13.5454 2.4549C12.7169 1.62636 11.3736 1.62636 10.545 2.4549L10.1037 2.89619Z" fill="#1C1C1C"/>
</g>
<defs>
<clipPath id="clip0_1264_72089">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,9 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Linear / Essentional, UI / Magic Stick 4">
<path id="Vector" d="M2.56302 5.28151C1.81233 4.53082 1.81233 3.31371 2.56302 2.56302C3.31371 1.81233 4.53082 1.81233 5.28151 2.56302L13.437 10.7185C14.1877 11.4692 14.1877 12.6863 13.437 13.437C12.6863 14.1877 11.4692 14.1877 10.7185 13.437L2.56302 5.28151Z" stroke="white" stroke-width="1.5"/>
<path id="Vector_2" d="M4 6.66667L6.66667 4" stroke="white" stroke-width="1.5" stroke-linecap="round"/>
<path id="Vector_3" d="M10.7335 1.53829C10.8408 1.26523 11.2258 1.26523 11.3331 1.53829L11.62 2.26848C11.6528 2.35184 11.7185 2.41784 11.8016 2.45072L12.5291 2.7387C12.8011 2.84639 12.8011 3.23283 12.5291 3.34052L11.8016 3.62851C11.7185 3.66139 11.6528 3.72738 11.62 3.81074L11.3331 4.54093C11.2258 4.81399 10.8408 4.81399 10.7335 4.54094L10.4466 3.81074C10.4138 3.72738 10.3481 3.66139 10.265 3.62851L9.53755 3.34052C9.26548 3.23283 9.26548 2.84639 9.53755 2.7387L10.265 2.45072C10.3481 2.41784 10.4138 2.35184 10.4466 2.26848L10.7335 1.53829Z" stroke="white"/>
<path id="Vector_4" d="M13.3116 6.08614C13.4189 5.81308 13.804 5.81308 13.9112 6.08614L14.0158 6.35237C14.0486 6.43574 14.1144 6.50173 14.1974 6.5346L14.4626 6.6396C14.7347 6.7473 14.7347 7.13377 14.4626 7.24144L14.1974 7.34644C14.1144 7.3793 14.0486 7.4453 14.0158 7.52864L13.9112 7.7949C13.804 8.06797 13.4189 8.06797 13.3116 7.7949L13.207 7.52864C13.1742 7.4453 13.1085 7.3793 13.0254 7.34644L12.7602 7.24144C12.4882 7.13377 12.4882 6.7473 12.7602 6.6396L13.0254 6.5346C13.1085 6.50173 13.1742 6.43574 13.207 6.35237L13.3116 6.08614Z" stroke="white"/>
<path id="Vector_5" d="M3.42197 10.2048C3.52926 9.93173 3.91428 9.93173 4.02158 10.2048L4.12619 10.471C4.15895 10.5544 4.2247 10.6204 4.30776 10.6533L4.573 10.7583C4.84506 10.8659 4.84506 11.2524 4.573 11.3601L4.30776 11.4651C4.2247 11.4979 4.15895 11.5639 4.12619 11.6473L4.02158 11.9135C3.91428 12.1866 3.52926 12.1866 3.42197 11.9135L3.31736 11.6473C3.2846 11.5639 3.21885 11.4979 3.13579 11.4651L2.87054 11.3601C2.59849 11.2524 2.59849 10.8659 2.87054 10.7583L3.13579 10.6533C3.21885 10.6204 3.2846 10.5544 3.31736 10.471L3.42197 10.2048Z" stroke="white"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.64628 6.98011C9.84155 6.78484 10.1581 6.78484 10.3534 6.98011C10.5487 7.17537 10.5487 7.49195 10.3534 7.68721L8.35339 9.68721C8.15813 9.88247 7.84155 9.88247 7.64628 9.68721L5.64628 7.68721C5.45102 7.49195 5.45102 7.17537 5.64628 6.98011C5.84155 6.78484 6.15813 6.78484 6.35339 6.98011L7.49984 8.12655V2.66699C7.49984 2.39085 7.7237 2.16699 7.99984 2.16699C8.27598 2.16699 8.49984 2.39085 8.49984 2.66699V8.12655L9.64628 6.98011Z" fill="#1C1C1C"/>
<path d="M13.8332 8.00033C13.8332 7.72418 13.6093 7.50033 13.3332 7.50033C13.057 7.50033 12.8332 7.72418 12.8332 8.00033C12.8332 10.6697 10.6692 12.8337 7.99984 12.8337C5.33046 12.8337 3.1665 10.6697 3.1665 8.00033C3.1665 7.72418 2.94265 7.50033 2.6665 7.50033C2.39036 7.50033 2.1665 7.72418 2.1665 8.00033C2.1665 11.222 4.77818 13.8337 7.99984 13.8337C11.2215 13.8337 13.8332 11.222 13.8332 8.00033Z" fill="#1C1C1C"/>
</svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 8.5C1 5.90728 1 4.61091 1.80546 3.80546C2.61091 3 3.90727 3 6.5 3H9.25C11.8427 3 13.1391 3 13.9445 3.80546C14.75 4.61091 14.75 5.90728 14.75 8.5C14.75 11.0927 14.75 12.3891 13.9445 13.1945C13.1391 14 11.8427 14 9.25 14H6.5C3.90727 14 2.61091 14 1.80546 13.1945C1 12.3891 1 11.0927 1 8.5Z" stroke="#1C1C1C"/>
<path d="M3.74951 5.74951L5.23375 6.98638C6.49644 8.03862 7.12778 8.56474 7.87451 8.56474C8.62124 8.56474 9.25258 8.03862 10.5153 6.98638L11.9995 5.74951" stroke="#1C1C1C" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 620 B

View File

@@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.55237 3.91767C4.74068 3.47627 3.76751 4.05844 3.76751 4.93514L3.7675 12.0649C3.7675 12.9416 4.74068 13.5237 5.55237 13.0823L12.1079 9.51748C12.9263 9.07238 12.9263 7.92762 12.1079 7.48252L5.55237 3.91767ZM3 4.93514C3 3.44874 4.62032 2.53718 5.91903 3.24341L12.4745 6.80827C13.8275 7.54399 13.8275 9.456 12.4745 10.1917L5.91903 13.7566C4.62033 14.4628 3 13.5513 3 12.0649L3 4.93514Z" fill="#1C1C1C" stroke="#1C1C1C" stroke-width="0.5"/>
</svg>

After

Width:  |  Height:  |  Size: 591 B

View File

@@ -0,0 +1,10 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1264_72074)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.96358 0.833496H8.03675C8.94847 0.833483 9.68335 0.833472 10.2613 0.911179C10.8614 0.991856 11.3667 1.16445 11.7679 1.56573C12.2613 2.05905 12.4138 2.71694 12.4676 3.53311C12.631 3.54402 12.7843 3.55853 12.928 3.57785C13.5281 3.65852 14.0333 3.83112 14.4346 4.2324C14.8359 4.63367 15.0085 5.13892 15.0891 5.739C15.1669 6.31697 15.1668 7.05186 15.1668 7.96358V8.03674C15.1668 8.94847 15.1669 9.68335 15.0891 10.2613C15.0085 10.8614 14.8359 11.3667 14.4346 11.7679C13.9413 12.2613 13.2834 12.4138 12.4672 12.4676C12.4563 12.631 12.4418 12.7843 12.4225 12.928C12.3418 13.5281 12.1692 14.0333 11.7679 14.4346C11.3667 14.8359 10.8614 15.0085 10.2613 15.0891C9.68335 15.1669 8.94847 15.1668 8.03674 15.1668H7.96358C7.05186 15.1668 6.31697 15.1669 5.739 15.0891C5.13892 15.0085 4.63367 14.8359 4.2324 14.4346C3.83112 14.0333 3.65852 13.5281 3.57784 12.928C3.55853 12.7843 3.54402 12.631 3.53311 12.4676C2.71694 12.4138 2.05905 12.2612 1.56573 11.7679C1.16445 11.3667 0.991856 10.8614 0.911179 10.2613C0.833472 9.68335 0.833483 8.94847 0.833496 8.03675V7.96358C0.833483 7.05185 0.833472 6.31697 0.911179 5.739C0.991856 5.13892 1.16445 4.63367 1.56573 4.2324C1.96701 3.83112 2.47226 3.65852 3.07233 3.57785C3.21599 3.55853 3.36934 3.54402 3.53269 3.53311C3.58651 2.71694 3.73908 2.05905 4.2324 1.56573C4.63367 1.16445 5.13892 0.991856 5.73899 0.911179C6.31697 0.833472 7.05185 0.833483 7.96358 0.833496ZM4.53826 3.50213C4.7762 3.50016 5.02892 3.50016 5.29691 3.50016H10.7034C10.9714 3.50016 11.2241 3.50016 11.4621 3.50213C11.4074 2.82156 11.2845 2.49651 11.0608 2.27284C10.8763 2.08833 10.6173 1.96803 10.1281 1.90226C9.62452 1.83456 8.95711 1.8335 8.00016 1.8335C7.04322 1.8335 6.37581 1.83456 5.87224 1.90226C5.38306 1.96803 5.12401 2.08833 4.9395 2.27284C4.71583 2.49651 4.59289 2.82156 4.53826 3.50213ZM3.50212 11.4621C3.50015 11.2241 3.50016 10.9714 3.50016 10.7034L3.50016 8.75169L3.20496 8.75169C2.95305 8.8648 2.65714 8.75228 2.54403 8.50036C2.43092 8.24844 2.54345 7.95253 2.79536 7.83943L8.00016 7.83943L13.205 7.83943C13.4569 7.95253 13.5694 8.24844 13.4563 8.50036C13.3432 8.75228 13.0473 8.8648 12.7954 8.75169L12.4733 8.75169L12.5002 10.7034C12.5002 10.9714 12.5002 11.2241 12.4982 11.4621C13.1788 11.4074 13.5038 11.2845 13.7275 11.0608C13.912 10.8763 14.0323 10.6173 14.0981 10.1281C14.1658 9.62452 14.1668 8.95711 14.1668 8.00016C14.1668 7.04322 14.1658 6.37581 14.0981 5.87224C14.0323 5.38306 13.912 5.12401 13.7275 4.9395C13.543 4.75499 13.2839 4.6347 12.7947 4.56893C12.2912 4.50123 11.6238 4.50016 10.6668 4.50016H5.3335C4.37655 4.50016 3.70914 4.50123 3.20558 4.56893C2.71639 4.6347 2.45735 4.75499 2.27284 4.9395C2.08833 5.12401 1.96803 5.38306 1.90226 5.87224C1.83456 6.37581 1.8335 7.04322 1.8335 8.00016C1.8335 8.95711 1.83456 9.62452 1.90226 10.1281C1.96803 10.6173 2.08833 10.8763 2.27284 11.0608C2.49651 11.2845 2.82156 11.4074 3.50212 11.4621ZM11.5002 8.95154L8.03675 8.95154H4.50016L4.50016 10.6668C4.50016 11.6238 4.50122 12.2912 4.56893 12.7947C4.6347 13.2839 4.75499 13.543 4.9395 13.7275C5.12401 13.912 5.38306 14.0323 5.87224 14.0981C6.37581 14.1658 7.04322 14.1668 8.00016 14.1668C8.95711 14.1668 9.62452 14.1658 10.1281 14.0981C10.6173 14.0323 10.8763 13.912 11.0608 13.7275C11.2453 13.543 11.3656 13.2839 11.4314 12.7947C11.4991 12.2912 11.5002 11.6238 11.5002 10.6668V8.95154Z" fill="#1C1C1C"/>
</g>
<defs>
<clipPath id="clip0_1264_72074">
<rect width="16" height="16" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,3 @@
<svg width="26" height="30" viewBox="0 0 26 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.46504 0.667046C6.52911 0.667074 6.59413 0.667103 6.66011 0.667103H19.3401C19.4061 0.667103 19.4711 0.667074 19.5351 0.667046C20.8908 0.666453 21.8238 0.666044 22.6095 0.939453C24.0935 1.4558 25.2456 2.65001 25.7396 4.15444L24.7895 4.46639L25.7396 4.15444C26.001 4.9506 26.0006 5.89705 26.0001 7.30239C26.0001 7.36528 26.0001 7.42909 26.0001 7.49385V26.166C26.0001 28.1197 23.6975 29.2828 22.1809 27.895C22.0749 27.798 21.9253 27.798 21.8193 27.895L21.1752 28.4844C19.9376 29.6169 18.0626 29.6169 16.825 28.4844C16.3517 28.0513 15.6485 28.0513 15.1752 28.4844C13.9376 29.6169 12.0626 29.6169 10.825 28.4844C10.3517 28.0513 9.64849 28.0513 9.17518 28.4844C7.93759 29.6169 6.06259 29.6169 4.82501 28.4844L4.18088 27.895C4.07491 27.798 3.92527 27.798 3.8193 27.895C2.30273 29.2828 8.98778e-05 28.1197 8.98778e-05 26.166V7.49385C8.98778e-05 7.42909 6.67512e-05 7.36529 4.39425e-05 7.30239C-0.000465002 5.89705 -0.000807762 4.9506 0.260595 4.15444C0.754543 2.65001 1.90669 1.4558 3.39064 0.939453C4.1764 0.666044 5.10938 0.666453 6.46504 0.667046ZM6.66011 2.6671C5.032 2.6671 4.4712 2.68108 4.0479 2.82837C3.16874 3.13428 2.46558 3.85003 2.1608 4.77833C2.01269 5.22943 2.00009 5.82428 2.00009 7.49385V26.166C2.00009 26.3248 2.07998 26.4218 2.18023 26.4681C2.23245 26.4923 2.28352 26.4985 2.32607 26.4928C2.36359 26.4878 2.41214 26.4717 2.46913 26.4195C3.33937 25.6232 4.66081 25.6232 5.53105 26.4195L6.17517 27.0089C6.64849 27.4421 7.35169 27.4421 7.825 27.0089C9.06259 25.8765 10.9376 25.8765 12.1752 27.0089C12.6485 27.4421 13.3517 27.4421 13.825 27.0089C15.0626 25.8765 16.9376 25.8765 18.1752 27.0089C18.6485 27.4421 19.3517 27.4421 19.825 27.0089L20.4691 26.4195C21.3394 25.6232 22.6608 25.6232 23.531 26.4195C23.588 26.4717 23.6366 26.4878 23.6741 26.4928C23.7167 26.4985 23.7677 26.4923 23.82 26.4682C23.9202 26.4218 24.0001 26.3248 24.0001 26.166V7.49385C24.0001 5.82428 23.9875 5.22943 23.8394 4.77833C23.5346 3.85003 22.8314 3.13428 21.9523 2.82837C21.529 2.68108 20.9682 2.6671 19.3401 2.6671H6.66011ZM5.33342 9.00044C5.33342 8.44815 5.78114 8.00044 6.33342 8.00044H7.00009C7.55237 8.00044 8.00009 8.44815 8.00009 9.00044C8.00009 9.55272 7.55237 10.0004 7.00009 10.0004H6.33342C5.78114 10.0004 5.33342 9.55272 5.33342 9.00044ZM10.0001 9.00044C10.0001 8.44815 10.4478 8.00044 11.0001 8.00044H19.6668C20.219 8.00044 20.6668 8.44815 20.6668 9.00044C20.6668 9.55272 20.219 10.0004 19.6668 10.0004H11.0001C10.4478 10.0004 10.0001 9.55272 10.0001 9.00044ZM5.33342 13.6671C5.33342 13.1148 5.78114 12.6671 6.33342 12.6671H7.00009C7.55237 12.6671 8.00009 13.1148 8.00009 13.6671C8.00009 14.2194 7.55237 14.6671 7.00009 14.6671H6.33342C5.78114 14.6671 5.33342 14.2194 5.33342 13.6671ZM10.0001 13.6671C10.0001 13.1148 10.4478 12.6671 11.0001 12.6671H19.6668C20.219 12.6671 20.6668 13.1148 20.6668 13.6671C20.6668 14.2194 20.219 14.6671 19.6668 14.6671H11.0001C10.4478 14.6671 10.0001 14.2194 10.0001 13.6671ZM5.33342 18.3338C5.33342 17.7815 5.78114 17.3338 6.33342 17.3338H7.00009C7.55237 17.3338 8.00009 17.7815 8.00009 18.3338C8.00009 18.8861 7.55237 19.3338 7.00009 19.3338H6.33342C5.78114 19.3338 5.33342 18.8861 5.33342 18.3338ZM10.0001 18.3338C10.0001 17.7815 10.4478 17.3338 11.0001 17.3338H19.6668C20.219 17.3338 20.6668 17.7815 20.6668 18.3338C20.6668 18.8861 20.219 19.3338 19.6668 19.3338H11.0001C10.4478 19.3338 10.0001 18.8861 10.0001 18.3338Z" fill="#B0B0B0"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,4 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26 26H17C12.7574 26 10.636 26 9.31802 24.682C8 23.364 8 21.2426 8 17V8" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M26 9L22.6422 15.3804C22.1278 16.3577 21.8707 16.8464 21.5754 17.0846C21.1215 17.4508 20.579 17.4686 20.1149 17.1325C19.8131 16.914 19.5421 16.4426 19.0001 15.5C18.4581 14.5573 18.187 14.086 17.8852 13.8674C17.4211 13.5314 16.8787 13.5492 16.4248 13.9154C16.1295 14.1535 15.8724 14.6422 15.358 15.6195L12 22" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
</svg>

After

Width:  |  Height:  |  Size: 625 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,4 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.2 20.1971C23.1437 23.5604 20.0016 26 16.2898 26C11.7114 26 8 22.2885 8 17.7101C8 13.9982 10.4396 10.8561 13.8028 9.7998" stroke="#1C1C1C" stroke-width="1.5" stroke-linecap="round"/>
<path d="M25.9218 15.1526C24.9664 11.73 22.27 9.03362 18.8474 8.07821C17.3682 7.66529 16.1 8.94878 16.1 10.4846V16.5097C16.1 17.2776 16.7225 17.9001 17.4904 17.9001H23.5154C25.0512 17.9001 26.3347 16.6319 25.9218 15.1526Z" stroke="#1C1C1C" stroke-width="1.5"/>
</svg>

After

Width:  |  Height:  |  Size: 559 B

View File

@@ -0,0 +1,3 @@
<svg width="34" height="34" viewBox="0 0 34 34" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.0605 17.5814C23.9567 15.3865 22.9217 13.3615 21.2882 12.1577L22.2595 10.2538L21.9818 10.0719C20.7639 9.27436 19.375 8.85285 17.9643 8.85285C16.6615 8.85285 15.379 9.2169 14.2306 9.90027L13.2608 8L12.9825 8.18257C9.90896 10.1945 8 13.9354 8 17.945V18.3087H13.7995C13.8976 19.7282 14.5642 21.0331 15.6053 21.8412L14.6349 23.743L14.9126 23.9248C15.8419 24.5332 16.8975 24.8551 17.9643 24.8551C18.9241 24.8551 19.8742 24.5925 20.7324 24.0965L21.7038 26L21.9821 25.8174C24.4607 24.1957 26 21.179 26 17.945V17.5814H24.0605ZM23.4189 17.5814H18.521L20.9674 12.7865C22.4039 13.8597 23.3167 15.6451 23.4189 17.5814ZM14.5501 10.5265C15.6008 9.90609 16.7744 9.58022 17.9643 9.58022C19.1542 9.58022 20.3281 9.90645 21.3785 10.5265L17.9643 17.2177L15.8515 13.0771L14.5501 10.5265ZM13.0291 8.99978L17.4076 17.5814H13.7857H8.64864C8.75632 14.0896 10.4062 10.8571 13.0291 8.99978ZM14.4434 18.3087H17.4076L16.3086 20.4625L15.9271 21.2102C15.083 20.5345 14.5385 19.4693 14.4434 18.3087ZM20.4116 23.468C18.8913 24.3332 17.0376 24.3329 15.5169 23.4684L16.1543 22.2191L16.5812 21.383L17.9646 18.6724L19.9401 22.5435L20.4116 23.468ZM21.9352 24.9991L18.5213 18.3087H24.0714H25.3504C25.2443 21.024 23.9638 23.5335 21.9352 24.9991Z" fill="#1C1C1C" stroke="#1C1C1C" stroke-width="0.5" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,4 @@
<svg width="41" height="41" viewBox="0 0 41 41" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="20.5" cy="20.5" r="20" stroke="black"/>
<path d="M15.6333 26.3417L9.15833 19.8667L7 22.025L15.6333 30.6583L34.1333 12.1583L31.975 10L15.6333 26.3417Z" fill="#F04F65"/>
</svg>

After

Width:  |  Height:  |  Size: 283 B

View File

@@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM6.75 14.14C6.75 14.55 6.41 14.89 6 14.89C5.59 14.89 5.25 14.55 5.25 14.14V9.86C5.25 9.45 5.59 9.11 6 9.11C6.41 9.11 6.75 9.45 6.75 9.86V14.14ZM9.75 15.57C9.75 15.98 9.41 16.32 9 16.32C8.59 16.32 8.25 15.98 8.25 15.57V8.43C8.25 8.02 8.59 7.68 9 7.68C9.41 7.68 9.75 8.02 9.75 8.43V15.57ZM12.75 17C12.75 17.41 12.41 17.75 12 17.75C11.59 17.75 11.25 17.41 11.25 17V7C11.25 6.59 11.59 6.25 12 6.25C12.41 6.25 12.75 6.59 12.75 7V17ZM15.75 15.57C15.75 15.98 15.41 16.32 15 16.32C14.59 16.32 14.25 15.98 14.25 15.57V8.43C14.25 8.02 14.59 7.68 15 7.68C15.41 7.68 15.75 8.02 15.75 8.43V15.57ZM18.75 14.14C18.75 14.55 18.41 14.89 18 14.89C17.59 14.89 17.25 14.55 17.25 14.14V9.86C17.25 9.45 17.59 9.11 18 9.11C18.41 9.11 18.75 9.45 18.75 9.86V14.14Z" fill="#737791"/>
</svg>

After

Width:  |  Height:  |  Size: 962 B

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
"use strict";(self.webpackChunk_am5=self.webpackChunk_am5||[]).push([[4837],{9295:function(t,e,i){i.r(e),i.d(e,{am5themes_Animated:function(){return s}});var a=i(3409);class n extends a.Q{setupDefaultRules(){super.setupDefaultRules(),this.rule("Component").setAll({interpolationDuration:600}),this.rule("Hierarchy").set("animationDuration",600),this.rule("Scrollbar").set("animationDuration",600),this.rule("Tooltip").set("animationDuration",300),this.rule("MapChart").set("animationDuration",1e3),this.rule("MapChart").set("wheelDuration",300),this.rule("Entity").setAll({stateAnimationDuration:600}),this.rule("Sprite").states.create("default",{stateAnimationDuration:600}),this.rule("Tooltip",["axis"]).setAll({animationDuration:200}),this.rule("WordCloud").set("animationDuration",500)}}const s=n}},function(t){var e=(9295,t(t.s=9295)),i=window;for(var a in e)i[a]=e[a];e.__esModule&&Object.defineProperty(i,"__esModule",{value:!0})}]);

View File

@@ -0,0 +1,2 @@
"use strict";(self.webpackChunk_am5=self.webpackChunk_am5||[]).push([[7891],{5650:function(e,s,t){t.r(s),t.d(s,{am5themes_Dataviz:function(){return o}});var u=t(1112),l=t(3409);class r extends l.Q{setupDefaultRules(){super.setupDefaultRules(),this.rule("ColorSet").setAll({colors:[u.Il.fromHex(2634320),u.Il.fromHex(9448493),u.Il.fromHex(13976381),u.Il.fromHex(15750208)],reuse:!1,passOptions:{lightness:.05,hue:0}})}}const o=r}},function(e){var s=(5650,e(e.s=5650)),t=window;for(var u in s)t[u]=s[u];s.__esModule&&Object.defineProperty(t,"__esModule",{value:!0})}]);
//# sourceMappingURL=Dataviz.js.map

View File

@@ -0,0 +1,2 @@
"use strict";(self.webpackChunk_am5=self.webpackChunk_am5||[]).push([[4583],{2250:function(e,l,r){r.r(l),r.d(l,{am5themes_Material:function(){return s}});var o=r(1112),f=r(3409);class m extends f.Q{setupDefaultRules(){super.setupDefaultRules(),this.rule("ColorSet").setAll({colors:[o.Il.fromHex(16007990),o.Il.fromHex(15277667),o.Il.fromHex(10233776),o.Il.fromHex(6765239),o.Il.fromHex(4149685),o.Il.fromHex(2201331),o.Il.fromHex(240116),o.Il.fromHex(48340),o.Il.fromHex(38536),o.Il.fromHex(5025616),o.Il.fromHex(9159498),o.Il.fromHex(13491257),o.Il.fromHex(16771899),o.Il.fromHex(16761095),o.Il.fromHex(16750592),o.Il.fromHex(16733986),o.Il.fromHex(7951688),o.Il.fromHex(10395294),o.Il.fromHex(6323595)],reuse:!0})}}const s=m}},function(e){var l=(2250,e(e.s=2250)),r=window;for(var o in l)r[o]=l[o];l.__esModule&&Object.defineProperty(r,"__esModule",{value:!0})}]);
//# sourceMappingURL=Material.js.map

View File

@@ -0,0 +1,2 @@
"use strict";(self.webpackChunk_am5=self.webpackChunk_am5||[]).push([[2480],{8283:function(e,r,l){l.r(r),l.d(r,{am5themes_Moonrise:function(){return f}});var o=l(1112),s=l(3409);class u extends s.Q{setupDefaultRules(){super.setupDefaultRules(),this.rule("ColorSet").setAll({colors:[o.Il.fromHex(3805954),o.Il.fromHex(6296069),o.Il.fromHex(9054989),o.Il.fromHex(13065764),o.Il.fromHex(13082457),o.Il.fromHex(10786154),o.Il.fromHex(8815977),o.Il.fromHex(7696225),o.Il.fromHex(5792096),o.Il.fromHex(6388099)],reuse:!0})}}const f=u}},function(e){var r=(8283,e(e.s=8283)),l=window;for(var o in r)l[o]=r[o];r.__esModule&&Object.defineProperty(l,"__esModule",{value:!0})}]);
//# sourceMappingURL=Moonrise.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,556 @@
/**@odoo-module **/
import { Component, useState} from "@odoo/owl";
import { _t } from "@web/core/l10n/translation";
import { useForwardRefToParent } from "@web/core/utils/hooks";
import { download } from "@web/core/network/download";
import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
import { KsDateFilter } from '@ks_dashboard_ninja/components/date_filter/date_filter';
import { ks_get_current_gridstack_config } from '@ks_dashboard_ninja/js/ks_global_functions'
import { DNFilter } from '@ks_dashboard_ninja/components/dn_filter/dn_filter';
import { isMobileOS } from "@web/core/browser/feature_detection";
import { Dropdown } from "@web/core/dropdown/dropdown";
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
import { FormViewDialog} from '@web/views/view_dialogs/form_view_dialog';
import { useService } from "@web/core/utils/hooks";
import { eraseAllCookies } from '@ks_dashboard_ninja/js/ks_global_functions';
import { rpc } from "@web/core/network/rpc";
import { user } from "@web/core/user";
export class KsHeader extends Component{
static props = {
dashboard_data: {type:Object, optional:true },
mode : { type: String },
headerRootRef: { type: Function, optional: true },
}
static components = { Dropdown, DropdownItem, KsDateFilter, DNFilter }
static template = "ks_dashboard_ninja.Ks_dashboard_ninja_header"
setup(){
// super.setup()
this.ks_dashboard_data = this.props.dashboard_data
this.action = this.env.services.action
this.uiService = useService("ui");
this.action = useService("action");
this.notification = useService("notification");
this._rpc = rpc
this.ks_dashboard_id = this.ks_dashboard_data.ks_dashboard_id
this.isMobile = isMobileOS();
this.headerRootRef = useForwardRefToParent("headerRootRef");
this.items_length = this.ks_dashboard_data.ks_dashboard_items_ids.length
this.state = useState({
mode: this.props.mode , // types - [ "manager", "user", "mobile", "layout", "custom_date" ]
isDashboardBookmarked: this.ks_dashboard_data.is_bookmarked
});
this.dialogService = this.env.services.dialog
this.tempSelectedLayoutId = JSON.parse(JSON.stringify(this.ks_dashboard_data.ks_selected_board_id))
this.tempDashboardName = JSON.parse(JSON.stringify(this.ks_dashboard_data.name))
this.dropdowns = [
{ name: "Edit Layout", modes: ["manager", "custom_date"],
func: ()=>this.onKsEditLayoutClick(), svg: "ks_dashboard_ninja.header_edit_svg" },
{ name: "Bookmark Dashboard", modes: ["manager", "user", "custom_date"],
func: ()=>this.updateBookmark(), svg: "ks_dashboard_ninja.bookmark" },
{ name: "Capture Dashboard", modes: ["manager", "user", "custom_date"],
func: ()=> this.dashboardImageUpdate(), svg: "ks_dashboard_ninja.capture" },
{ name: "Settings", svg: "ks_dashboard_ninja.setting", modes: ["manager", "custom_date"],
dropdown_items: [ {name: "Dashboard Settings" , svg: "ks_dashboard_ninja.setting-2", func: (ev)=>this.ksOnDashboardSettingClick(ev), class : '', modes: ["manager", "custom_date"],},
{name: "Delete the Dashboard", svg: "ks_dashboard_ninja.trash_svg", func: this.ksOnDashboardDeleteClick.bind(this), class : '', modes: ["manager", "custom_date"],},
{name: "Create New Dashboard", svg: "ks_dashboard_ninja.add-square", func:()=>this.ksOnDashboardCreateClick(), class : '', modes: ["manager", "custom_date"],},
{name: "Generate Dashboard with AI", svg: "ks_dashboard_ninja.illustrator", func:()=>this.kscreateaidashboard(), class : '', modes: ["manager", "custom_date"],},
{name: "Duplicate Current Dashboard", svg: "ks_dashboard_ninja.copy", func:(ev)=>this.ksOnDashboardDuplicateClick(ev), class : '', modes: ["manager", "custom_date"],}], },
{ name: "More", svg: "ks_dashboard_ninja.more", modes: ["manager", "user", "custom_date"],
dropdown_items: [ {name: "Import Item" , svg: "ks_dashboard_ninja.download_svg", func: () => this.ksImportItemJson(), class : '', modes: ["manager", "custom_date"],},
{name: "Export Dashboard", svg: "ks_dashboard_ninja.document-upload", func:()=>this.ksOnDashboardExportClick(), class : '', modes: ["manager","user", "custom_date"],},
{name: "Import Dashboard", svg: "ks_dashboard_ninja.download_svg", func:()=>this.ksOnDashboardImportClick(), class : '', modes: ["manager", "custom_date"],}] },
]
this.header_mode_buttons = { "edit" : { buttons : [{ name: "Discard", callback: this._onDiscardLayoutChanges.bind(this), classes: 'dash-default-btn bg-white me-2', shouldVisible: true },
{ name: "Save as New Layout", callback: this.onSaveNewLayoutClick.bind(this), classes: 'dash-btn-red me-2 ks-bg-violet', shouldVisible: this.props.dashboard_data.multi_layouts },
{ name: "Save Layout", callback: this._onKsSaveLayoutClick.bind(this), classes: 'dash-btn-red', shouldVisible: true } ] },
"layout": { buttons : [{ name: "Set Default Layout", callback: this._ksSetLayoutAsDefault.bind(this), classes: 'dash-btn-red', shouldVisible: true},
{ name: "Discard", callback: this.discardLayoutSelection.bind(this), classes: 'dash-default-btn bg-white', shouldVisible: true}] } }
}
update_mode(mode){
this.state.mode = mode
}
dashboardImageUpdate(){
let image_element = document.querySelector('.ks_dashboard_main_content');
if(!document.querySelector('.ks_dashboard_main_content')?.childNodes.length){
image_element = document.querySelector('.main-box');
}
let self = this;
this.uiService.block();
let canvas = html2canvas(image_element, {
height: image_element.clientHeight + 186,
width: image_element.clientWidth,
windowWidth: image_element.scrollWidth,
windowHeight: image_element.scrollHeight,
scrollY: 0,
scrollX: 0,
x: image_element.scrollLeft,
y: image_element.scrollTop < 600 ? image_element.scrollTop < 50 ? image_element.scrollTop :
image_element.scrollTop - 150 : image_element.scrollTop - 650,
}).then((canvas) => {
let image = canvas.toDataURL("image/png");
self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/saveImage",{
model: 'ks_dashboard_ninja.board',
method: 'save_dashboard_image',
args: [[self.ks_dashboard_id]],
kwargs:{image: image},
}).then((result) => {
this.uiService.unblock();
});
});
this.notification.add(_t('Dashboard image updated successfully!'),{
title:_t("Dashboard Image Refreshed"),
type: 'success',
});
}
restoreController(){
let self = this;
let js_id = self.action.currentController.jsId
self.action.restore(js_id)
}
_onDiscardLayoutChanges(){
this.restoreController();
}
async updateBookmark(){
let updatedBookmarks = await this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_bookmarks",{
model: 'ks_dashboard_ninja.board',
method: 'update_bookmarks',
args: [[this.ks_dashboard_id]],
kwargs:{},
});
updatedBookmarks = updatedBookmarks[1]
this.state.isDashboardBookmarked = !this.state.isDashboardBookmarked
this.notification.add(_t(`Dashboard ${ updatedBookmarks ? "added to" : "removed from"} your bookmarks`),{
title:_t(`Bookmark ${ updatedBookmarks ? "Added" : "Removed"}`), type: 'success'});
}
onCreateNewChartClick() {
let self = this;
self.dialogService.add(FormViewDialog,{
resModel: 'ks_dashboard_ninja.item',
is_expand_icon_visible: true,
context: {
'ks_dashboard_id': self.ks_dashboard_data.ks_dashboard_id,
'ks_dashboard_item_type': 'ks_tile',
'form_view_ref': 'ks_dashboard_ninja.item_form_view',
'form_view_initial_mode': 'edit',
'ks_set_interval': self.ks_dashboard_data.ks_set_interval,
'ks_data_formatting':self.ks_dashboard_data.ks_data_formatting,
'ks_form_view' : true
},
onRecordSaved:()=>{
var js_id = self.env.services.action.currentController.jsId
self.env.services.action.restore(js_id)
},
size: "fs",
title: "Create New Chart"
});
}
onDashboardLayoutSelect(selected_board_id){
this.state.mode = 'layout'
this.tempSelectedLayoutId = selected_board_id
this.setLayoutGrid(selected_board_id);
}
setLayoutGrid(layout_id){
let grid_stack = this.env.gridStackRootRef.el.gridstack
let selected_layout_grid_config = this.ks_dashboard_data.ks_child_boards[layout_id][1];
selected_layout_grid_config = JSON.parse(selected_layout_grid_config);
Object.entries(selected_layout_grid_config).forEach((x,y)=>{
grid_stack.update($(this.env.gridStackRootRef.el).find(".grid-stack-item[gs-id=" + x[0] + "]")[0],{ x:x[1]['x'], y:x[1]['y'], w:x[1]['w'], h:x[1]['h'], autoPosition:false});
});
}
discardLayoutSelection(){
this.state.mode = this.ks_dashboard_data.ks_dashboard_manager ? "manager" : "user"
this.tempSelectedLayoutId = this.ks_dashboard_data.ks_selected_board_id
this.setLayoutGrid(this.ks_dashboard_data.ks_selected_board_id);
}
_ksSetLayoutAsDefault(){
let self = this;
this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board",{
model: 'ks_dashboard_ninja.board',
method: 'update_child_board',
args: ['update', self.ks_dashboard_id, {
"ks_selected_board_id": this.tempSelectedLayoutId ? this.tempSelectedLayoutId : this.ks_dashboard_data.ks_selected_board_id,
}],
kwargs:{},
}).then(function(result){
window.location.reload();
});
}
checkItemsPresence(){
if(!this.items_length){
this.notification.add(_t('No Items!'),{ title:_t("Create some items"), type: 'info'});
return true;
}
return false;
}
onKsEditLayoutClick(e) {
if(this.checkItemsPresence()) return;
let dashboard_data = this.ks_dashboard_data
this.tempDashboardName = dashboard_data.multi_layouts && dashboard_data.ks_child_boards ?
dashboard_data.ks_child_boards[dashboard_data.ks_selected_board_id]?.[0] : dashboard_data.name
this.env.gridStackRootRef.el.gridstack.setStatic(false);
this.env.update_dashboard_mode('edit');
this.env.gridStackRootRef?.el.gridstack?.enable();
this.state.mode = "edit"
}
_onKsSaveLayoutClick(){
let self = this;
let grid_stack = this.env.gridStackRootRef.el.gridstack
grid_stack.setStatic(true);
let dashboard_title = this.tempDashboardName
if (dashboard_title != false && dashboard_title != 0) {
let model = 'ks_dashboard_ninja.board';
let rec_id = self.ks_dashboard_data.ks_dashboard_id;
if(this.ks_dashboard_data.multi_layouts && this.ks_dashboard_data.ks_child_boards){
this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][0] = dashboard_title;
if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default'){
rec_id = parseInt(this.ks_dashboard_data.ks_selected_board_id);
this.env.services.orm.write("ks_dashboard_ninja.child_board", [rec_id], { 'name': dashboard_title });
}
else{
this.ks_dashboard_data.name = this.tempDashboardName;
this.env.services.orm.write("ks_dashboard_ninja.board", [rec_id], { 'name': dashboard_title });
}
}
else{
self.ks_dashboard_data.name = dashboard_title;
this.env.services.orm.write("ks_dashboard_ninja.board", [rec_id], { 'name': dashboard_title });
}
}
if (this.ks_dashboard_data.ks_item_data) self._ksSaveCurrentLayout();
this.env.update_dashboard_mode('active')
grid_stack.disable();
grid_stack.commit();
this.state.mode = this.ks_dashboard_data.ks_dashboard_manager ? "manager" : "user"
}
_ksSaveCurrentLayout() {
let self = this;
let grid_config = ks_get_current_gridstack_config(this.env.gridStackRootRef.el);
let model = 'ks_dashboard_ninja.child_board';
let rec_id = self.ks_dashboard_data.ks_gridstack_config_id;
self.ks_dashboard_data.ks_gridstack_config = JSON.stringify(grid_config);
if(this.ks_dashboard_data.ks_selected_board_id && this.ks_dashboard_data.ks_child_boards){
this.ks_dashboard_data.ks_child_boards[this.ks_dashboard_data.ks_selected_board_id][1] = JSON.stringify(grid_config);
if (this.ks_dashboard_data.ks_selected_board_id !== 'ks_default'){
rec_id = parseInt(this.ks_dashboard_data.ks_selected_board_id)
}
}
if (!isMobileOS()) { // Do not save in Mobile view , due to column mode enable
this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.child_board/write",{
model: model,
method: 'write',
args: [parseInt(rec_id), {
"ks_gridstack_config": JSON.stringify(grid_config)
}],
kwargs:{},
})
}
}
onSaveNewLayoutClick() {
let self = this;
let grid_stack = this.env.gridStackRootRef.el.gridstack
grid_stack.setStatic(true);
var dashboard_title = $('#ks_dashboard_title_input').val();
if (dashboard_title === "") {
self.notification.add(_t("Dashboard Name is required to save as New Layout"), { type: 'warning' });
} else{
if (!self.ks_dashboard_data.ks_child_boards){
self.ks_dashboard_data.ks_child_boards = {
'ks_default': [ this.ks_dashboard_data.name, self.ks_dashboard_data.ks_gridstack_config ]
}
}
this.ks_dashboard_data.name = dashboard_title;
let grid_config = ks_get_current_gridstack_config(this.env.gridStackRootRef.el);
this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/update_child_board",{
model: 'ks_dashboard_ninja.board',
method: 'update_child_board',
args: ['create', self.ks_dashboard_id, {
"ks_gridstack_config": JSON.stringify(grid_config),
"ks_dashboard_ninja_id": self.ks_dashboard_id,
"name": dashboard_title,
"ks_active": true,
"company_id": self.ks_dashboard_data.ks_company_id,
}],
kwargs : {},
}).then(function(res_id){
self.ks_update_child_board_value(dashboard_title, res_id, grid_config),
// self._ksRenderActiveMode();
window.location.reload();
});
}
}
ks_update_child_board_value(dashboard_title, res_id, grid_config){
let self = this;
let child_board_id = res_id.toString();
self.ks_dashboard_data.ks_selected_board_id = child_board_id;
let update_data = {};
update_data[child_board_id] = [dashboard_title, JSON.stringify(grid_config)];
self.ks_dashboard_data.ks_child_boards = Object.assign(update_data, self.ks_dashboard_data.ks_child_boards);
}
ksOnDashboardSettingClick(ev){
let self = this;
let dashboard_id = this.ks_dashboard_id;
// TODO : Apply such functionlity that we donot have to give name of the name of the filter as string to erase cookies Also dont need to remove all cookies"
eraseAllCookies(this.ks_dashboard_id, ['PFilter', 'PFilterDataObj', 'Filter', 'CFilter', 'FilterDateData', 'ChartFilter', 'FFilter']);
let action = {
name: _t('Dashboard Settings'),type: 'ir.actions.act_window',
res_model: 'ks_dashboard_ninja.board', res_id: dashboard_id,
domain: [],context: {'create':false},
views: [
[false, 'form']
],view_mode: 'form',target: 'new',
}
// self.action.doAction(action)
self.action.doAction(action).then(function(result){
// self.eraseCookie('FilterOrderData' + self.ks_dashboard_id);
});
}
ksOnDashboardExportClick(){
// ev.preventDefault();
let self= this;
let dashboard_id = JSON.stringify(this.ks_dashboard_id);
this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_dashboard_export", {
model: 'ks_dashboard_ninja.board',
method: "ks_dashboard_export",
args: [dashboard_id],
kwargs: {dashboard_id: dashboard_id}
}).then(function(result) {
var name = "dashboard_ninja";
var data = {"header": name, "dashboard_data":result,}
download({
data: { data:JSON.stringify(data) },
url: '/ks_dashboard_ninja/export/dashboard_json',
});
});
}
ksOnDashboardDeleteClick(ev){
let dashboard_id = this.ks_dashboard_id;
let self= this;
self.dialogService.add(ConfirmationDialog, {
body: _t("Are you sure you want to delete this dashboard ?"),
confirmLabel: _t("Delete Dashboard"),
title: _t("Delete Dashboard"),
confirm: () => {
this._rpc("/web/dataset/call_kw/ks.dashboard.delete.wizard/ks_delete_record", {
model: 'ks.dashboard.delete.wizard',
method: "ks_delete_record",
args: [dashboard_id],
kwargs: {dashboard_id: dashboard_id}
}).then((result)=>{
self.env.services.menu.reload();
let currentAppId = self.env.services.menu?.getCurrentApp()?.id;
self.env.services.menu.selectMenu(currentAppId).then(()=>{
self.notification.add(_t('Dashboard Deleted Successfully'),{
title:_t("Deleted"),
type: 'success',
});
});
});
},
});
}
ksOnDashboardCreateClick(){
var self= this;
var action = {
name: _t('Add New Dashboard'), type: 'ir.actions.act_window',
res_model: 'ks.dashboard.wizard', domain: [],
context: {}, views: [ [false, 'form']],
view_mode: 'form', target: 'new',
}
self.action.doAction(action)
}
ksOnDashboardDuplicateClick(){
let self= this;
let dashboard_id = this.ks_dashboard_id;
this._rpc('/web/dataset/call_kw/ks.dashboard.duplicate.wizard/DuplicateDashBoard', {
model: 'ks.dashboard.duplicate.wizard', method: "DuplicateDashBoard",
args: [this.ks_dashboard_id], kwargs: {}
}).then((result)=>{
self.action.doAction(result)
});
}
kscreateaidashboard(){
let self= this;
let action = {
name: _t('Generate Dashboard with AI'), type: 'ir.actions.act_window',
res_model: 'ks_dashboard_ninja.ai_dashboard',domain: [],
context: {'ks_dashboard_id': this.ks_dashboard_id},
views: [ [false, 'form']],
view_mode: 'form', target: 'new',
}
self.action.doAction(action)
}
kscreateaiitem(ev){
var self= this;
self.dialogService.add(FormViewDialog,{
resModel: 'ks_dashboard_ninja.arti_int', title: 'Generate items with AI',
is_expand_icon_visible: true,
context: {
'ks_dashboard_id': this.ks_dashboard_id, 'ks_form_view' : true,
'generate_dialog' : true, dialog_size: 'extra-large',
}
});
}
ksOnDashboardImportClick(){
let self = this;
let dashboard_id = this.ks_dashboard_id;
this._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_open_import", {
model: 'ks_dashboard_ninja.board',
method: 'ks_open_import',
args: [dashboard_id],
kwargs: {
dashboard_id: dashboard_id
}
}).then((result)=>{
self.action.doAction(result)
});
}
ksImportItemJson() {
var self = this;
$('.ks_input_import_item_button').click();
}
ksImportItem(e) {
var self = this;
var fileReader = new FileReader();
fileReader.onload = function() {
$('.ks_input_import_item_button').val('');
self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.board/ks_import_item", {
model: 'ks_dashboard_ninja.board',
method: 'ks_import_item',
args: [self.ks_dashboard_id],
kwargs: {
file: fileReader.result,
dashboard_id: self.ks_dashboard_id
}
}).then(function(result) {
if (result === "Success") {
var js_id = self.action.currentController.jsId
self.action.restore(js_id)
}
});
};
fileReader.readAsText($('.ks_input_import_item_button').prop('files')[0]);
}
ks_gen_ai_analysis(ev){
var self = this;
this.state.dialog_header = false;
var ks_items = Object.values(self.ks_dashboard_data.ks_item_data);
var ks_items_explain = []
var ks_rest_items = []
if (ks_items.length>0){
ks_items.map((item)=>{
ks_items_explain.push({
name:item.name,
id:item.id,
ks_chart_data:item.ks_chart_data?{...JSON.parse(item.ks_chart_data),...{domains:[],previous_domain:[]}}:item.ks_chart_data,
ks_list_view_data: typeof item.ks_list_view_data === 'string' ? JSON.parse(item.ks_list_view_data) : item.ks_list_view_data,
item_type:item.ks_dashboard_item_type,
groupedby:item.ks_chart_relation_groupby_name,
subgroupedby:item.ks_chart_relation_sub_groupby_name,
stacked_bar_chart:item.ks_bar_chart_stacked,
count_type:item.ks_record_count_type,
count:item.ks_record_count,
model_name:item.ks_model_display_name,
kpi_data:item.ks_kpi_data
})
});
this.dialogService.add(ConfirmationDialog, {
body: _t("Do you agree that AI should be used to produce the explanation? It will take a few minutes to finish the process?"),
title:_t("Explain with AI"),
cancel: () => {},
confirmLabel: _t("Confirm"),
confirm: () => {
self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_generate_analysis",{
model: 'ks_dashboard_ninja.arti_int',
method: 'ks_generate_analysis',
args: [ks_items_explain,ks_rest_items,self.ks_dashboard_id],
kwargs:{},
}).then(function(result) {
if (result){
self.action.doAction({
type: "ir.actions.client",
name: _t("Explain with AI"),
target: "new",
tag: 'ks_dashboard_ninja',
params:{
ks_dashboard_id: self.ks_dashboard_id,
on_dialog: true,
explain_ai_whole: true,
explainWithAi: true,
dashboard_data: self.ks_dashboard_data,
},
context: {
dialog_size: 'extra-large'
}
},{
onClose: ()=>{
return self._rpc("/web/dataset/call_kw/ks_dashboard_ninja.arti_int/ks_switch_default_dashboard",{
model: 'ks_dashboard_ninja.arti_int',
method: 'ks_switch_default_dashboard',
args: [self.ks_dashboard_id],
kwargs:{},
})
}
},
);
}
});
}
});
}else{
self.notification.add(_t('Please make few items to explain with AI'),{
title:_t("Failed"),
type: 'warning',
});
}
}
};

View File

@@ -0,0 +1,181 @@
<?xml version="1.0" encoding="utf-8" ?>
<template>
<t t-name="ks_dashboard_ninja.Ks_dashboard_ninja_header" owl="1">
<section class="screen-info mb-2 container-fluid" t-ref="headerRootRef">
<div class="d-flex align-items-center justify-content-between info gap-1 flex-wrap w-100 ks_dashboard_top_menu-new">
<div class="d-flex align-items-center gap-2">
<div id="ks_dashboard_title" class="user-template-title dash-dd-2">
<t t-if="['manager', 'user', 'layout'].includes(state.mode)" t-call="ks_dashboard_ninja.ks_dn_layout_container"/>
<div class="form-input-box form-control ps-4" t-if="['edit'].includes(state.mode)">
<input id="ks_dashboard_title_input" type="text" maxlength="35"
t-att-value="tempDashboardName" t-model="this.tempDashboardName"/>
</div>
</div>
<t t-if="!isMobile" t-call="ks_dashboard_ninja.ks_header_dropdowns"/>
<KsDateFilter t-if="['manager', 'user', 'custom_date'].includes(state.mode) &amp;&amp; items_length"
dashboard_data="this.ks_dashboard_data" update_mode.bind="update_mode"/>
<DNFilter t-if="['manager', 'user'].includes(state.mode) &amp;&amp; !isMobile &amp;&amp; items_length"
dashboard_data="this.ks_dashboard_data"/>
<t t-if="ks_dashboard_data.ks_dashboard_manager">
<div class="ks_dashboard_top_settings dropdown d-none d-lg-block">
<input accept=".json " t-attf-id="file_#{_id}"
name="file" class="ks_input_import_item_button" type="file" style="display:none;"
t-on-change="ksImportItem"/>
</div>
</t>
</div>
<t t-if="['manager'].includes(state.mode) &amp;&amp; !isMobile">
<div class="new-features ks_dashboard_top_settings hide-in-edit d-flex align-items-center ms-auto">
<div class="d-lg-flex d-none">
<div class="dropdown dash-dd-2 magic-star-dd" title="AI Features">
<a class="text-decoration-none dropdown-toggle img-bg info me-lg-2 me-1" href="#"
role="button" data-bs-toggle="dropdown" aria-expanded="false">
<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.01757 5.03498C8.24044 4.43268 9.09232 4.43268 9.31519 5.03498L10.7982 9.04271C10.8683 9.23208 11.0176 9.38137 11.2069 9.45144L15.2147 10.9344C15.817 11.1573 15.817 12.0092 15.2147 12.2321L11.2069 13.7151C11.0176 13.7851 10.8683 13.9344 10.7982 14.1238L9.31519 18.1315C9.09232 18.7338 8.24044 18.7338 8.01757 18.1315L6.53457 14.1238C6.4645 13.9344 6.31521 13.7851 6.12585 13.7151L2.11811 12.2321C1.51581 12.0092 1.51581 11.1573 2.11811 10.9344L6.12585 9.45144C6.31521 9.38137 6.4645 9.23208 6.53457 9.04271L8.01757 5.03498Z" fill="" stroke="" stroke-width="1.25"/>
<path d="M17.6239 5L13.6239 5" stroke="" stroke-width="1.25" stroke-linecap="round"/>
<path d="M15.6244 7L15.6244 3" stroke="" stroke-width="1.25" stroke-linecap="round"/>
</svg>
</a>
<ul class="dropdown-menu py-0 ks-dropdown-menu">
<li>
<button class="feature-btn dropdown-item" t-on-click="kscreateaiitem" title="Generate the charts of a particular model using AI">
<span>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" class="me-2">
<path d="M13.3996 4.62671C13.3996 4.98671 13.2063 5.31337 12.8996 5.48004L11.7396 6.10671L10.7529 6.63337L8.70628 7.74004C8.48628 7.86004 8.24628 7.92004 7.99961 7.92004C7.75294 7.92004 7.51294 7.86004 7.29294 7.74004L3.09961 5.48004C2.79294 5.31337 2.59961 4.98671 2.59961 4.62671C2.59961 4.26671 2.79294 3.94004 3.09961 3.77337L4.41294 3.06671L5.45961 2.50004L7.29294 1.51337C7.73294 1.27337 8.26628 1.27337 8.70628 1.51337L12.8996 3.77337C13.2063 3.94004 13.3996 4.26671 13.3996 4.62671Z" fill="#6789C6"/>
<path d="M6.59917 8.52664L2.69917 6.57997C2.39917 6.42664 2.0525 6.44664 1.76583 6.61997C1.47917 6.79331 1.3125 7.09997 1.3125 7.4333V11.12C1.3125 11.76 1.66583 12.3333 2.23917 12.62L6.13917 14.5666C6.2725 14.6333 6.41917 14.6666 6.56583 14.6666C6.73917 14.6666 6.9125 14.62 7.06583 14.52C7.3525 14.3466 7.51917 14.04 7.51917 13.7066V10.02C7.52583 9.38664 7.1725 8.8133 6.59917 8.52664Z" fill="#6789C6"/>
<path d="M14.686 7.43338V11.12C14.686 11.7534 14.3327 12.3267 13.7593 12.6134L9.85932 14.5667C9.72599 14.6334 9.57932 14.6667 9.43266 14.6667C9.25932 14.6667 9.08599 14.62 8.92599 14.52C8.64599 14.3467 8.47266 14.04 8.47266 13.7067V10.0267C8.47266 9.38671 8.82599 8.81338 9.39932 8.52671L10.8327 7.81338L11.8327 7.31338L13.2993 6.58004C13.5993 6.42671 13.946 6.44004 14.2327 6.62004C14.5127 6.79338 14.686 7.10004 14.686 7.43338Z" fill="#6789C6"/>
<path d="M11.7407 6.10667L10.7541 6.63333L4.41406 3.06667L5.46073 2.5L11.5807 5.95333C11.6474 5.99333 11.7007 6.04667 11.7407 6.10667Z" fill="#6789C6"/>
<path d="M11.834 7.31335V8.82669C11.834 9.10002 11.6073 9.32669 11.334 9.32669C11.0607 9.32669 10.834 9.10002 10.834 8.82669V7.81335L11.834 7.31335Z" fill="#6789C6"/>
</svg>
</span>
Generate with AI
</button>
</li>
<li>
<button class="feature-btn dropdown-item" t-on-click="ks_gen_ai_analysis">
<span>
<img src="/ks_dashboard_ninja/static/images/dashboardOverview/convertshape.png" alt="convertshape"
class="img-fluid me-2" loading="lazy"/>
</span>
Explain with AI
</button>
</li>
<li>
<button class="feature-btn d-xl-none d-block dark dropdown-item" t-on-click="onCreateNewChartClick">
<span>
<img src="/ks_dashboard_ninja/static/images/dashboardOverview/Graph 1.svg" alt="Graph" class="img-fluid me-1"
loading="lazy"/>
</span>
Create New Chart
</button>
</li>
</ul>
</div>
<button class="feature-btn dark d-xl-block d-none me-0" t-on-click="onCreateNewChartClick" title="Add the Charts to Dashboard">
<span>
<svg width="25" height="23" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg" class="">
<mask id="mask0_9094_3795" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="0" width="20" height="21">
<rect y="0.5" width="20" height="20" fill="white"/>
</mask>
<g mask="url(#mask0_9094_3795)">
<path d="M8.54411 5.40375L8.77611 8.85371L8.89128 10.5877C8.89253 10.766 8.92045 10.9432 8.97436 11.1135C9.11345 11.444 9.44811 11.654 9.81219 11.6393L15.3599 11.2764C15.6001 11.2725 15.8321 11.3623 16.0048 11.5262C16.1487 11.6628 16.2416 11.8415 16.2709 12.0336L16.2808 12.1503C16.0512 15.3292 13.7164 17.9807 10.5441 18.6651C7.37174 19.3495 4.11866 17.9037 2.55104 15.1125C2.0991 14.3016 1.81682 13.4104 1.72076 12.491C1.68064 12.2188 1.66297 11.9439 1.66793 11.6689C1.66297 8.26074 4.09 5.31426 7.48739 4.60394C7.89629 4.54026 8.29714 4.75673 8.46111 5.12974C8.50353 5.21612 8.53153 5.30864 8.54411 5.40375Z" fill="#04A9CC"/>
<path opacity="0.4" d="M18.3333 8.67687L18.3275 8.70403L18.3107 8.74352L18.313 8.85196C18.3043 8.99554 18.2488 9.13371 18.1533 9.24538C18.0537 9.36163 17.9177 9.44079 17.768 9.47154L17.6767 9.48404L11.276 9.89879C11.0631 9.91979 10.8511 9.85113 10.6928 9.70996C10.5608 9.59221 10.4765 9.43338 10.4527 9.26221L10.0231 2.87084C10.0156 2.84923 10.0156 2.82581 10.0231 2.80419C10.0289 2.62802 10.1065 2.46149 10.2384 2.34182C10.3702 2.22214 10.5456 2.15929 10.725 2.16731C14.5249 2.26398 17.7186 4.99645 18.3333 8.67687Z" fill="#04A9CC"/>
</g>
</svg>
</span>
<span class="ellipsis-content max-width-medium-130">Create New Chart</span>
</button>
</div>
</div>
</t>
<t t-if="['edit', 'layout'].includes(state.mode) &amp;&amp; !isMobile">
<t t-call="ks_dashboard_ninja.header_mode_buttons">
<t t-set="buttons_condition" t-value="['edit', 'layout'].includes(state.mode)"/>
<t t-set="buttons" t-value="header_mode_buttons[state.mode].buttons"/>
</t>
</t>
</div>
</section>
</t>
<t t-name="ks_dashboard_ninja.ks_header_dropdowns">
<t t-foreach="dropdowns" t-as="dropdown" t-key="dropdown_index">
<t t-if="dropdown.dropdown_items">
<Dropdown menuClass="'ks-dropdown-menu'" t-if="dropdown.modes.includes(state.mode)">
<t t-set-slot="content">
<DropdownItem
t-foreach="dropdown.dropdown_items"
t-as="dropdown_item" t-key="dropdown_item_index"
class="{ '': true }"
t-if="dropdown_item.modes.includes(state.mode)"
onSelected="dropdown_item.func">
<span class="me-2">
<t t-call="{{ dropdown_item.svg }}" />
</span>
<t t-esc="dropdown_item.name"/>
</DropdownItem>
</t>
<span class="img-bg info">
<t t-call="{{ dropdown.svg }}"/>
</span>
</Dropdown>
</t>
<t t-else="">
<DropdownItem class="{ 'img-bg info cursor-pointer': true,
'nav-active': dropdown.name === 'Bookmark Dashboard' &amp;&amp; state.isDashboardBookmarked }"
onSelected="dropdown.func" t-if="dropdown.modes.includes(state.mode)">
<t t-call="{{ dropdown.svg }}" />
</DropdownItem>
</t>
</t>
</t>
<t t-name="ks_dashboard_ninja.header_mode_buttons">
<div t-att-class=" 'd-flex gap-2 ' + btn_container_classes " t-if="buttons_condition">
<t t-foreach="buttons" t-as="button" t-key="button_index">
<button type="button" t-if="button.shouldVisible" t-att-class="button.classes" title="" t-on-click="button.callback">
<span><t t-out="button.name"/></span>
</button>
</t>
</div>
</t>
<t t-name="ks_dashboard_ninja.ks_dn_layout_container">
<t t-if="props.dashboard_data.multi_layouts &amp;&amp; props.dashboard_data.ks_child_boards">
<Dropdown menuClass="'ks-dropdown-menu'" disabled="isMobile || !items_length || !ks_dashboard_data.ks_dashboard_manager">
<t t-set-slot="content">
<DropdownItem t-foreach="ks_dashboard_data.ks_child_boards" t-as="child_board" t-key="child_board_index"
class="{ 'global-active': child_board === tempSelectedLayoutId }"
onSelected="() => { this.onDashboardLayoutSelect(child_board) } "
t-esc="ks_dashboard_data.ks_child_boards[child_board][0]"/>
</t>
<div class=" bg-transparent">
<span class="ellipsis-content max-width-medium-25vw" t-esc="ks_dashboard_data.ks_child_boards[tempSelectedLayoutId][0]"
t-att-class="isMobile || !items_length || !ks_dashboard_data.ks_dashboard_manager ? ' ks-dropdown-no--caret': ''"/>
</div>
</Dropdown>
</t>
<t t-else="">
<span id="ks_dashboard_title_label" class="ks_am_element dash-dd-2 ellipsis-content max-width-medium-25vw"
t-if="['manager', 'user'].includes(state.mode)" t-att-data-tooltip="props.dashboard_data.name">
<t t-esc="props.dashboard_data.name"/>
</span>
</t>
</t>
</template>

View File

@@ -0,0 +1,295 @@
.ks_body_class {
.screen-info {
background-color: $color-nav-bg;
height: 56px;
display: flex;
align-items: center;
padding: 0 40px;
@include max-992 {
padding: 0 20px;
}
@include max-575 {
padding: 0 16px;
}
// .ks_dashboard_top_menu-new {}
.user-template-title {
.ks_body_class .ks_am_element.dash-dd-2 {
font-size: $font-16;
color: $color-black;
font-weight: $f-w-400;
line-height: 20px;
}
span {
position: relative;
}
// &::after {
// content: '';
// display: block;
// position: absolute;
// height: 20px;
// width: 20px;
// right: 2px;
// background-image: url(../../images/icons/down-arrow.svg);
// background-repeat: no-repeat;
// top: 43%;
// transition: all 350ms ease-in-out;
// }
}
}
}
.ks_body_class .img-bg {
display: flex;
justify-content: center !important;
padding: 0 !important;
align-items: center !important;
background-color: $color-secondary-bg;
border: 0.5px solid $color-E5E7EB;
border-radius: 50% !important;
height: 40px;
width: 40px;
button{
border: none;
background:transparent;
}
&.info {
background-color: $color-white !important;
}
&.hover-item {
background-color: $color-bg-main;
&.kpi-tile-img {
background-color: $color-white !important;
margin: 0;
display: flex !important;
justify-content: center;
align-items: center;
&:hover {
transition: 0.2s linear;
transform: scale(1.1);
cursor: pointer !important;
}
svg {
fill: none !important;
}
}
&:hover {
background-color: $color-white !important;
}
}
&.dropdown-toggle::after {
display: none !important;
}
&.info svg {
fill: none !important;
stroke: $color-black !important;
@include max-992 {
width: 16px;
height: 16px;
}
}
&.info.active, &.info.nav-active,
&.info:hover {
border: 0.5px solid transparent !important;
background-color: $color-6789C6 !important;
svg {
stroke: $color-white !important;
}
}
@include max-992 {
height: 30px;
width: 30px;
& img {
height: 16px;
width: 16px;
}
}
// &.more-img {
// svg {
// fill: $color-black !important;
// stroke: none !important;
// }
//
// &.active,
// &:hover {
// svg {
// fill: $color-white !important;
// stroke: none !important;
// }
// }
// }
}
.ks_body_class .ks_chart_heading {
width: 75% !important;
}
.ks_body_class #ks_dashboard_title_input {
width: 450px;
}
.ks_body_class .ks_dashboard_layout_event {
span.df_selection_text {
padding: 0 6px !important;
}
&.ks_layout_selected {
span {
&::before {
left: -12px !important;
}
}
}
}
.ks_body_class .magic-star-dd {
.feature-btn {
// border-bottom: 1px solid $color-E5E7EB;
border-radius: 0;
border: none;
}
.img-bg {
border-radius: 10px !important;
display: flex;
justify-content: center;
align-items: center;
background-color: $color-FFF5F5 !important;
min-height: 45px !important;
width: 42px !important;
svg {
path {
fill: $color-ABC8E7;
stroke: $color-6789C6;
}
}
&:hover {
border: 1px solid $color-6789C6 !important;
background-color: $color-FFF5F5 !important;
// svg {
// path {
// fill: $color-white;
// stroke: $color-white;
// }
// }
}
}
}
.img-bg.info svg.fill-black-stroke-none{
fill: $color-black !important;
stroke: none !important;
&.active,
&:hover {
fill: $color-white !important;
stroke: none !important;
}
}
#ks_dashboard_title_label {
padding: 12px 15px;
border: 0.5px solid #E5E7EB;
color: #241C1D;
border-radius: 10px;
font-size: 16px;
font-weight: 400;
// text-overflow: ellipsis;
white-space: nowrap;
// overflow: hidden;
// max-width: 187px;
display: block;
}
button.ks-bg-violet {
background-color: $color-6789C6 !important;
border: 1px solid $color-6789C6 !important;
&:hover {
background-color: $color-597ebe !important;
}
}
.feature-btn {
font-size: $font-16;
font-weight: 500;
line-height: 21px;
text-align: left;
color: $color-paragraph;
padding: 10px 12px;
border-radius: 10px;
border: 1px solid $color-E5E7EB;
outline: none;
background-color: $color-white;
display: flex;
align-items: center;
@include minmax1260 {
font-size: 11px;
}
&:hover {
background-color: $color-secondary-bg;
}
&:focus {
border: 1px solid $color-E7495E;
}
&.light {
background-color: $color-FFF5F5;
@include max-575 {
padding: 6px 10px;
font-size: $font-8;
& img {
height: 12px;
width: 12px;
object-fit: cover;
}
}
}
&.dark {
background-color: $color-D9F1FD;
&:hover {
background-color: #c4e4f3 !important;
}
}
}

View File

@@ -0,0 +1,310 @@
/** @odoo-module **/
import { Component, onMounted, useRef } from "@odoo/owl";
import { _t } from "@web/core/l10n/translation";
import { useService } from "@web/core/utils/hooks";
import { FormViewDialog } from '@web/views/view_dialogs/form_view_dialog';
import { download } from "@web/core/network/download";
import { BlockUI } from "@web/core/ui/block_ui";
import { ks_get_current_gridstack_config } from '@ks_dashboard_ninja/js/ks_global_functions';
import { isMobileOS } from "@web/core/browser/feature_detection";
import { ConfirmationDialog } from "@web/core/confirmation_dialog/confirmation_dialog";
import { rpc } from "@web/core/network/rpc";
import { user } from "@web/core/user";
export class KsItemButton extends Component{
static props = { item_data : { type: Object, optional:true },
item_classes : { type: String, optional:true },
itemRootRef : { type: Object },
}
static template = "ks_dashboard_ninja.ks_chart_buttons";
setup(){
this.common_classes = 'ks_dashboard_item_button_container ks_dropdown_container ks_dashboard_item_header ks_dashboard_item_header_hover chart_button_container d-flex '
this.ks_company = this.env.services.company.currentCompany.name
this.isMobile = isMobileOS()
this.item_data = this.props.item_data
this.ks_button_color = this._ks_get_rgba_format(this.item_data.ks_button_color)
this.id = this.props.item_data.id
this.rootRef = useRef('rootRef')
this.ksChartColorOptions = ["default", "dark", "moonrise", "material"]
this.chart_list = ['ks_bar_chart', 'ks_horizontalBar_chart', 'ks_line_chart', 'ks_area_chart', 'ks_pie_chart',
'ks_doughnut_chart', 'ks_polarArea_chart', 'ks_radialBar_chart', 'ks_scatter_chart', 'ks_funnel_chart',
'ks_bullet_chart', 'ks_flower_view', 'ks_radar_view']
this.isExportListVisible = [ ...this.chart_list, 'ks_map_view', 'ks_list_view'].includes(this.item_data.ks_dashboard_item_type)
this.store = useService("mail.store");
this.showButtons = !this.env.inDialog
this.selectedDashboardId = this.item_data.ks_dashboard_list[0]['id']
this.setItemDescription(this.item_data.ks_info)
}
_ks_get_rgba_format(val){
let rgba = val.split(',')[0].match(/[A-Za-z0-9]{2}/g);
rgba = rgba.map(function(v) {
return parseInt(v, 16)
}).join(",");
return "rgba(" + rgba + "," + val.split(',')[1] + ")";
}
setItemDescription(item_description){
let item_description_list = item_description.replace?.(/\\n/g, '\n').split?.('\n').filter(element => element !== '');
this.item_data.ks_info = item_description_list?.join?.(' ') ?? false
this.ks_item_description_list = item_description_list ?? false
}
handleDropdowns(ev){
let targetDropdown = ev.target.closest('.dropdown-toggle')
this.rootRef.el.querySelectorAll('.dropdown-toggle').forEach((dropdown) => {
targetDropdown !== dropdown ? Dropdown.getInstance(dropdown)?.hide() : ''
})
}
onEditItemTypeClick() {
var self = this;
self.env.services.dialog.add(FormViewDialog,{
resModel: 'ks_dashboard_ninja.item',
title: 'Edit Chart',
resId : self.id,
is_expand_icon_visible: true,
context: {
'form_view_ref': 'ks_dashboard_ninja.item_form_view',
'form_view_initial_mode': 'edit',
'ks_form_view' :true
},
onRecordSaved: () => {
var js_id = self.env.services.action.currentController.jsId
self.env.services.action.restore(js_id)
},
onRecordDiscarded: () => {
},
size: 'fs'
});
}
async ksChartExportXlsCsv(e) {
let chart_id = this.id;
let name = this.item_data.name;
let context = this.env.getContext();
let data = {}
if (this.item_data.ks_dashboard_item_type === 'ks_list_view'){
let params = this.env.ksGetParamsForItemFetch(chart_id);
data = {
"header": name,
"chart_data": typeof this.item_data.ks_list_view_data === 'string' ? this.item_data.ks_list_view_data : JSON.stringify(this.item_data.ks_list_view_data),
"ks_item_id": chart_id,
"ks_export_boolean": true,
"context": context,
'params': params,
}
}else{
data = {
"header": name,
"chart_data": this.item_data.ks_chart_data,
}
}
const blockUI = new BlockUI();
await download({
url: '/ks_dashboard_ninja/export/' + e.currentTarget.dataset.format,
data: {
data: JSON.stringify(data)
},
complete: () => unblockUI,
error: (error) => self.call('crash_manager', 'rpc_error', error),
});
}
ksChartExportPdf (e){
var self = this;
var chart_id = this.id;
var name = this.item_data.name;
var base64_image;
base64_image = $($(e.target).parentsUntil(".grid-stack-item").slice(-1)[0]).find('.ks_chart_card_body')[0]
var $ks_el = $($($(self.props.itemRootRef.el).find(".grid-stack-item[gs-id=" + chart_id + "]")).find('.ks_chart_card_body'));
var ks_height = $ks_el.height()
html2canvas(base64_image, {useCORS: true, allowTaint: false}).then(function(canvas){
var ks_image = canvas.toDataURL("image/png");
var ks_image_def = {
content: [{
image: ks_image,
width: 500,
height: ks_height > 750 ? 750 : ks_height,
}],
images: {
bee: ks_image
}
};
pdfMake.createPdf(ks_image_def).download(name + '.pdf');
})
}
ksChartExportimage(e){
var self = this;
var chart_id = this.id;
var name = this.item_data.name;
var base64_image
base64_image = $($(e.target).parentsUntil(".grid-stack-item").slice(-1)[0]).find(".ks_chart_card_body")[0]
html2canvas(base64_image,{useCORS: true, allowTaint: false}).then(function(canvas){
var ks_image = canvas.toDataURL("image/png");
const link = document.createElement('a');
link.href = ks_image;
link.download = name + 'png'
document.body.appendChild(link);
link.click()
document.body.removeChild(link);
})
}
async ksItemExportJson(e) {
var itemId = this.id;
var name = this.item_data.name;
var data = { 'header': name, item_id: itemId, }
const blockUI = new BlockUI();
await download({
url: '/ks_dashboard_ninja/export/item_json',
data: { data: JSON.stringify(data) },
complete: () => unblockUI,
error: (error) => self.call('crash_manager', 'rpc_error', error),
});
}
async openChatWizard(ev){
ev.stopPropagation();
let internal_chat_thread;
let channelId = await rpc("/web/dataset/call_kw/discuss.channel/getId",{
model: 'discuss.channel',
method: 'ks_chat_wizard_channel_id',
args: [[]],
kwargs:{
item_id: this.id,
dashboard_id: this.item_data.ks_dashboard_id,
dashboard_name: this.item_data.ks_dashboard_name,
item_name: this.item_data.name,
}
})
// FIXME : Dont close all chat popover windows . only close those ones belong belongs to dashboard
this.store.chatHub.opened?.forEach?.( (visibleChatWindow) => {
visibleChatWindow.close?.()
})
//
if(channelId) internal_chat_thread = await this.store.Thread.getOrFetch({ model: "discuss.channel", id: channelId})
if(internal_chat_thread){
if(internal_chat_thread.name) internal_chat_thread.name = this.item_data.ks_dashboard_name + ' - ' + this.item_data.name
internal_chat_thread.open()
}
}
onKsDuplicateItemClick(e) {
var self = this;
var ks_item_id = this.id;
var dashboard_id = parseInt(this.selectedDashboardId);
var dashboard_name = this.item_data.ks_dashboard_list.filter( (dashboard) => dashboard.id === dashboard_id)[0]?.name;
rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/copy",{
model: 'ks_dashboard_ninja.item',
method: 'copy',
args: [ks_item_id, {
'ks_dashboard_ninja_board_id': dashboard_id
}],
kwargs:{},
}).then(function(result) {
self.env.services.notification.add(_t('Selected item is duplicated to ' + dashboard_name + ' .'),{
title:_t("Item Duplicated"), type: 'success', });
var js_id = self.env.services.action.currentController.jsId
self.env.services.action.restore(js_id)
})
}
onKsMoveItemClick(e) {
let self = this;
let dashboard_id = parseInt(this.selectedDashboardId);
let dashboard_name = this.item_data.ks_dashboard_list.filter( (dashboard) => dashboard.id === dashboard_id)[0]?.name;
rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/write",{
model: 'ks_dashboard_ninja.item',
method: 'write',
args: [this.id, {
'ks_dashboard_ninja_board_id': dashboard_id
}],
kwargs:{}
}).then(function(result) {
self.env.services.notification.add(_t('Selected item is moved to ' + dashboard_name + ' .'), {
title:_t("Item Moved"), type: 'success', });
let js_id = self.env.services.action.currentController.jsId
self.env.services.action.restore(js_id)
});
}
onKsDeleteItemClick(e) {
let self = this;
let item = $($(e.currentTarget).parentsUntil('.grid-stack').slice(-1)[0])
this.env.services.dialog.add(ConfirmationDialog, {
body: _t("Are you sure that you want to remove this item?"),
confirmLabel: _t("Delete Item"),
title: _t("Delete Dashboard Item"),
confirm: () => {
self.ks_delete_item(self.id , item);
},
cancel: () => {},
});
}
ks_delete_item(id, item) {
let self = this;
let dashboard_data = self.env.getDashboardDataAsObj(['ks_item_data'])
rpc("/web/dataset/call_kw/ks_dashboard_ninja.item/unlink", {
model: 'ks_dashboard_ninja.item',
method: 'unlink',
args: [id],
kwargs:{}
}).then(function(result) {
// Clean Item Remove Process. // TODO
// self.ks_remove_update_interval(); // IMPORTANT
delete self.props.item_data;
self.env.gridStackRootRef.el.gridstack?.removeWidget(item);
if (Object.keys(dashboard_data.ks_item_data).length > 0) {
self._ksSaveCurrentLayout();
}
let js_id = self.env.services.action.currentController.jsId
self.env.services.action.restore(js_id)
});
}
_ksSaveCurrentLayout() {
let self = this;
let grid_config = ks_get_current_gridstack_config(this.env.gridStackRootRef.el);
let dashboard_data = self.env.getDashboardDataAsObj(['ks_gridstack_config_id'])
let model = 'ks_dashboard_ninja.child_board';
let rec_id = dashboard_data.ks_gridstack_config_id;
if (!isMobileOS()) {
rpc("/web/dataset/call_kw/ks_dashboard_ninja.child_board/write",{
model: model,
method: 'write',
args: [rec_id, {
"ks_gridstack_config": JSON.stringify(grid_config)
}],
kwargs:{},
})
}
}
ksRenderChartColorOptions(e) {
let self = this;
// FIXME : Correct this later.
this.__owl__.parent.component.ksRenderChartColorOptions(e);
}
}

Some files were not shown because too many files have changed in this diff Show More