KPI cards: Bloomberg stock ticker style
- Redesign KPI cards to look like stock tickers - Add ticker ID (e.g. ВЫРУЧК:KPI, AOV:KPI) - Arrow up/down SVG indicators for change direction - Mini trend-line (50px) inside each card - Change color: green (#16a34a) for up, red (#e21d1d) for down - Remove sparkline background area, keep only line - Fix duplicate arrowUp variable naming (bArrowUp/bArrowDown/bArrowNeutral)
This commit is contained in:
1 parent
0b49915420
commit
932ec3ac8f
75 files changed
+3032
-56
No files matched your search
+1
@@ -0,0 +1 @@
|
||||
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("@foundation/statsig"),require("preact/compat")):"function"==typeof define&&define.amd?define(["@foundation/statsig","preact/compat"],n):"object"==typeof exports?exports["fortress-client"]=n(require("@foundation/statsig"),require("preact/compat")):e["fortress-client"]=n(e["@foundation/statsig"],e["preact/compat"])}(this,((e,n)=>(()=>{var t,i,r,a,o={9710:(e,n,t)=>{"use strict";t.r(n),t.d(n,{UserBrowserSession:()=>d});function i(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var i in t)"__proto__"!==i&&(e[i]=t[i])}return e}var r=function e(n,t){function r(e,r,a){if("undefined"!=typeof document){"number"==typeof(a=i({},t,a)).expires&&(a.expires=new Date(Date.now()+864e5*a.expires)),a.expires&&(a.expires=a.expires.toUTCString()),e=encodeURIComponent(e).replace(/%(2[346B]|5E|60|7C)/g,decodeURIComponent).replace(/[()]/g,escape);var o="";for(var l in a)a[l]&&(o+="; "+l,!0!==a[l]&&(o+="="+a[l].split(";")[0]));return document.cookie=e+"="+n.write(r,e)+o}}return Object.create({set:r,get:function(e){if("undefined"!=typeof document&&(!arguments.length||e)){for(var t=document.cookie?document.cookie.split("; "):[],i={},r=0;r<t.length;r++){var a=t[r].split("="),o=a.slice(1).join("=");try{var l=decodeURIComponent(a[0]);if(l in i||(i[l]=n.read(o,l)),e===l)break}catch(e){}}return e?i[e]:i}},remove:function(e,n){r(e,"",i({},n,{expires:-1}))},withAttributes:function(n){return e(this.converter,i({},this.attributes,n))},withConverter:function(n){return e(i({},this.converter,n),this.attributes)}},{attributes:{value:Object.freeze(t)},converter:{value:Object.freeze(n)}})}({read:function(e){return'"'===e[0]&&(e=e.slice(1,-1)),e.replace(/(%[\dA-F]{2})+/gi,decodeURIComponent)},write:function(e){return encodeURIComponent(e).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,decodeURIComponent)}},{path:"/"});class a{cookies=r;get length(){return Object.keys(this.cookies.get()).length}clear(){const e=this.cookies.get();Object.keys(e).forEach((e=>{this.cookies.remove(e)}))}getItem(e){const n=this.cookies.get(e);return void 0===n?null:n}key(e){return Object.keys(this.cookies.get())[e]||null}removeItem(e){this.cookies.remove(e)}setItem(e,n){this.cookies.set(e,n,{expires:7})}}const o="__bb-media",l=()=>{if("undefined"!=typeof window)return window[o]||(window[o]={}),window[o];throw new Error(`${o} store on Window object is undefined!`)};class s{get length(){return Object.keys(l()).length}clear(){const e=l();Object.keys(e).forEach((n=>{delete e[n]}))}getItem(e){const n=l()[e];return void 0===n?null:n}key(e){return Object.keys(l())[e]||null}removeItem(e){delete l()[e]}setItem(e,n){l()[e]=n}}class u{type;storage;reportErrorsToNewRelic=!1;storageContext;constructor(e,n){this.type=e,this.storage=(e=>{switch(e){case"window":return new s;case"local":return localStorage;case"session":return sessionStorage;default:return new a}})(e),this.reportErrorsToNewRelic=n?.reportErrorsToNewRelic??!1,this.storageContext=n?.storageContext}handleErrorReporting(e,n,t){this.reportErrorsToNewRelic&&((e,n,t)=>{const i=t?`[${t}] - ${e}: ${n}`:`[@bloomberg/media.browser-storage] - ${e}: ${n}`;window?.newrelic?.noticeError(i)})(`Failed to ${e} ${n} in ${this.type}Storage.`,t,this.storageContext)}setItem(e,n){try{return this.storage.setItem(e,JSON.stringify(n)),!0}catch(n){return this.handleErrorReporting("set",e,n),!1}}getItem(e){try{const n=this.storage.getItem(e);if(!n)return null;try{return JSON.parse(n)}catch(e){return n}}catch(n){return this.handleErrorReporting("get",e,n),null}}removeItem(e){try{return this.storage.removeItem(e),!0}catch(n){return this.handleErrorReporting("remove",e,n),!1}}}const c=e=>{switch(e){case"agentId":return"agent_id";case"gatehouseId":return"gatehouse_id";case"sessionId":return"session_id";case"sessionKey":return"session_key";case"userData":return"_user-data";case"bregUid":return"_breg-uid";case"bregUser":return"_breg-user";default:return e}};class d{windowBrowserStorage;sessionBrowserStorage;localBrowserStorage;cookiesBrowserStorage;constructor(){this.windowBrowserStorage=new u("window",{reportErrorsToNewRelic:!0,storageContext:"UserBrowserSession-Window"}),this.sessionBrowserStorage=new u("session",{reportErrorsToNewRelic:!0,storageContext:"UserBrowserSession-Session"}),this.localBrowserStorage=new u("local",{reportErrorsToNewRelic:!0,storageContext:"UserBrowserSession-Local"}),this.cookiesBrowserStorage=new u("cookies",{reportErrorsToNewRelic:!0,storageContext:"UserBrowserSession-Cookies"})}setAttribute(e,n){this.windowBrowserStorage.setItem(e,n),this.sessionBrowserStorage.setItem(e,n),this.localBrowserStorage.setItem(e,n)}getAttribute(e){return this.windowBrowserStorage.getItem(e)||this.sessionBrowserStorage.getItem(e)||this.localBrowserStorage.getItem(e)||this.cookiesBrowserStorage.getItem(c(e))}clearAttribute(e){this.windowBrowserStorage.removeItem(e),this.sessionBrowserStorage.removeItem(e),this.localBrowserStorage.removeItem(eLine truncated
|
||||
Reference in new issue
Block a user