diff --git a/docs/components/all.css b/docs/components/all.css new file mode 100644 index 0000000..141b1ac --- /dev/null +++ b/docs/components/all.css @@ -0,0 +1,3421 @@ +/* 03_Участие ОПК в иннов объед 1 */ + +position: absolute; +width: 726px; +height: 261px; + +background: url(03_Участие ОПК в иннов объед.png); +border-radius: 24px; + +/* Rectangle 2459 */ + +position: absolute; +width: 727px; +height: 116px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Rectangle 2460 */ + +position: absolute; +width: 727px; +height: 369px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Rectangle 2461 */ + +position: absolute; +width: 722px; +height: 326px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Line 17 */ + +position: absolute; +width: 34px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-35.84deg); + +/* Line 18 */ + +position: absolute; +width: 33.84px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-34.16deg); + +/* Line 19 */ + +position: absolute; +width: 34.76px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-140.07deg); + +/* Line 20 */ + +position: absolute; +width: 238px; +height: 1px; + +border: 1px solid #abafb3; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Line 21 */ + +position: absolute; +width: 164px; +height: 0px; + +border: 1px solid #abafb3; + +/* Line 22 */ + +position: absolute; +width: 223px; +height: 0px; + +border: 1px solid #abafb3; + +/* Топ отраслей по количеству организаций ОПК, участвующих в инновационных объединений */ + +position: absolute; +width: 596.19px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 20px; +/* or 100% */ + +color: #000000; + +/* Авиационная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Радиоэлектронная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Промышленность обычных вооружений */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Промышленность боепрпасов и спецхимии */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Беспилотные системы и робототехника */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Судостроительная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 180 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 124 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 110 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 78 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 101 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 12 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* Group 277134240 */ + +position: absolute; +width: 669px; +height: 18px; + +/* Организации ОПК в инновационных объединениях */ + +position: absolute; +width: 669px; +height: 18px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 10px; +/* or 50% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Group 277134284 */ + +position: absolute; +width: 669px; +height: 18px; + +/* Участие организации ОПК в инновационных объединениях */ + +position: absolute; +width: 669px; +height: 18px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 10px; +/* or 50% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Frame 1943564417 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 8px; + +position: absolute; +width: 1416px; +height: 39px; + +/* Frame 12 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 261px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 251px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 177px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 183px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 250.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 17 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 261px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 251px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 177px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 183px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 250.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 13 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 160px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 149px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 72px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 75px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 149.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 14 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 160px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 3; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 149px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 72px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 75px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 149.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 15 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 328.41px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 4; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 318px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 251px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 257px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 318px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 16 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 192px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 5; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 170px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 118px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 118px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 181.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Group 277134242 */ + +position: absolute; +width: 129px; +height: 10px; + +/* Bodytext */ + +position: absolute; +width: 114px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 5px; +/* identical to box height, or 35% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #022456; + +/* Vector */ + +position: absolute; +width: 10px; +height: 10px; + +background: #022456; +border: 0.0540625px solid #022456; + +/* Union */ + +position: absolute; +width: 6px; +height: 6px; + +background: #022456; + +/* Vector */ + +position: absolute; +width: 10px; +height: 10px; + +background: #022456; +border: 0.0540625px solid #022456; + +/* Rectangle 2462 */ + +position: absolute; +width: 722px; +height: 460px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Rectangle 2463 */ + +position: absolute; +width: 2.66px; +height: 38px; + +background: #022456; +border-radius: 5.40625px; + +/* Субъект РФ */ + +position: absolute; +width: 125.21px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 1 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 41 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 63 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 32 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 46 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 31 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 19 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 17 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 18 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 13 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 14 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 8 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 10 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 7 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 14 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 20 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 21 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Московская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 22 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Республика Татарстан */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 5 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 19 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Самарская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 6 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 17 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Пензенская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 7 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 12 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Томская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 8 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 10 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Ярославская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 9 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 5 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Ульяновская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 10 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Хабаровский край */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 11 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Республика Башкортастан */ + +position: absolute; +width: 275.74px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 12 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 3 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Краснодарский край */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 13 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Белгородская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 14 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Волгоградская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 15 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 80px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Удмуртская Республика */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 28 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 3 */ + +position: absolute; +width: 65.34px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 23 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Челябинская область */ + +position: absolute; +width: 258.16px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Group 277134243 */ + +position: absolute; +width: 237px; +height: 40px; + +/* 124 */ + +position: absolute; +width: 60px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* промышленных кластеров */ + +position: absolute; +width: 175px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134244 */ + +position: absolute; +width: 237px; +height: 40px; + +/* 517 */ + +position: absolute; +width: 60px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* организаций ОПК */ + +position: absolute; +width: 175px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134245 */ + +position: absolute; +width: 223px; +height: 40px; + +/* 17 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* особых экономических зон */ + +position: absolute; +width: 181px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134246 */ + +position: absolute; +width: 223px; +height: 40px; + +/* 64 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* организации ОПК */ + +position: absolute; +width: 181px; +height: 25px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +display: flex; +align-items: flex-end; + +color: #000000; + +/* Group 277134247 */ + +position: absolute; +width: 161px; +height: 40px; + +/* 66 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* организации ОПК */ + +position: absolute; +width: 119px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +display: flex; +align-items: flex-end; + +color: #000000; + +/* Group 277134248 */ + +position: absolute; +width: 124px; +height: 40px; + +/* 35 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* технопарков */ + +position: absolute; +width: 82px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +text-align: right; + +color: #000000; + +/* г. Москва */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Количество кластеров */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Количество ОЭЗ */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Bodytext */ + +position: absolute; +width: 536px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 20px; +/* or 100% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Group 277134249 */ + +position: absolute; +width: 19.12px; +height: 18px; + +/* Group 2184 */ + +position: absolute; +width: 18.02px; +height: 16.72px; + +/* Rectangle 566 */ + +box-sizing: border-box; + +position: absolute; +width: 18.02px; +height: 16.72px; + +border: 0.270312px solid #abafb3; + +/* Vector 185 */ + +position: absolute; +width: 16.9px; +height: 14.79px; + +border: 0.270312px solid #abafb3; + +/* Rectangle 567 */ + +position: absolute; +width: 18.02px; +height: 2.57px; + +background: #abafb3; +border-radius: 0.270312px 0.270312px 0px 0px; + +/* Vector 186 */ + +position: absolute; +width: 4.51px; +height: 5.14px; + +border: 0.270312px solid #abafb3; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; + +/* 41 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 22 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 19 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 17 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 12 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 10 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 5 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 4 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 4 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 3 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 28 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 23 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Количество технопарков */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; + +/* Group 277134250 */ + +position: absolute; +width: 677px; +height: 72px; + +/* Количество инновационных объединений */ + +position: absolute; +width: 160px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +letter-spacing: -0.02em; + +color: #000000; + +/* 176 */ + +position: absolute; +width: 100px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* 605 */ + +position: absolute; +width: 100px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Количество организаций ОПК */ + +position: absolute; +width: 139px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 4px; +/* or 43% */ +letter-spacing: -0.02em; + +color: #000000; + +/* 20% */ + +position: absolute; +width: 110px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* 42% */ + +position: absolute; +width: 110px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Составляют организации ОПК в инновационных объединениях */ + +position: absolute; +width: 160px; +height: 23px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #000000; + +/* Процент инновационных объединений, в которых участвуют организации ОПК */ + +position: absolute; +width: 137px; +height: 23px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #000000; + +/* 176 */ + +position: absolute; +width: 119px; +height: 55px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 64px; +line-height: 40px; +/* or 62% */ +text-align: center; + +color: #000000; + +/* Ellipse 307 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #abafb3; + +/* Ellipse 308 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #674ee3; + +/* Ellipse 309 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #ec9478; + +/* Ellipse 310 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #7dccc5; + +/* Rectangle 2464 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2465 */ + +position: absolute; +width: 300px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2466 */ + +position: absolute; +width: 50px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2467 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2468 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2469 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2470 */ + +position: absolute; +width: 20px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2471 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2472 */ + +position: absolute; +width: 400px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2473 */ + +position: absolute; +width: 10px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2474 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2475 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2476 */ + +position: absolute; +width: 60px; +height: 4px; +0 +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2477 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2478 */ + +position: absolute; +width: 400px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2479 */ + +position: absolute; +width: 45px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2480 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2481 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2482 */ + +position: absolute; +width: 100px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); diff --git a/docs/components/area.css b/docs/components/area.css new file mode 100644 index 0000000..d1ff704 --- /dev/null +++ b/docs/components/area.css @@ -0,0 +1,30 @@ +/* 03_Участие ОПК в иннов объед 1 */ + +position: absolute; +width: 726px; +height: 261px; + +background: url(03_Участие ОПК в иннов объед.png); +border-radius: 24px; + +/* Group 277134284 */ + +position: absolute; +width: 669px; +height: 18px; + +/* Участие организации ОПК в инновационных объединениях */ + +position: absolute; +width: 669px; +height: 18px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 10px; +/* or 50% */ +letter-spacing: -0.02em; + +color: #000000; diff --git a/docs/components/donut.css b/docs/components/donut.css new file mode 100644 index 0000000..55fd7ef --- /dev/null +++ b/docs/components/donut.css @@ -0,0 +1,369 @@ +/* Rectangle 2460 */ + +position: absolute; +width: 727px; +height: 369px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Line 17 */ + +position: absolute; +width: 34px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-35.84deg); + +/* Line 18 */ + +position: absolute; +width: 33.84px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-34.16deg); + +/* Line 19 */ + +position: absolute; +width: 34.76px; +height: 0px; + +border: 1px solid #abafb3; +transform: rotate(-140.07deg); + +/* Line 20 */ + +position: absolute; +width: 238px; +height: 1px; + +border: 1px solid #abafb3; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Line 21 */ + +position: absolute; +width: 164px; +height: 0px; + +border: 1px solid #abafb3; + +/* Line 22 */ + +position: absolute; +width: 223px; +height: 0px; + +border: 1px solid #abafb3; + +/* Group 277134240 */ + +position: absolute; +width: 669px; +height: 18px; + +/* Организации ОПК в инновационных объединениях */ + +position: absolute; +width: 669px; +height: 18px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 10px; +/* or 50% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Group 277134243 */ + +position: absolute; +width: 237px; +height: 40px; + +/* 124 */ + +position: absolute; +width: 60px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* промышленных кластеров */ + +position: absolute; +width: 175px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134244 */ + +position: absolute; +width: 237px; +height: 40px; + +/* 517 */ + +position: absolute; +width: 60px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* организаций ОПК */ + +position: absolute; +width: 175px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134245 */ + +position: absolute; +width: 223px; +height: 40px; + +/* 17 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: center; + +color: #000000; + +/* особых экономических зон */ + +position: absolute; +width: 181px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Group 277134246 */ + +position: absolute; +width: 223px; +height: 40px; + +/* 64 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* организации ОПК */ + +position: absolute; +width: 181px; +height: 25px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +display: flex; +align-items: flex-end; + +color: #000000; + +/* Group 277134247 */ + +position: absolute; +width: 161px; +height: 40px; + +/* 66 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* организации ОПК */ + +position: absolute; +width: 119px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +display: flex; +align-items: flex-end; + +color: #000000; + +/* Group 277134248 */ + +position: absolute; +width: 124px; +height: 40px; + +/* 35 */ + +position: absolute; +width: 40px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 32px; +line-height: 14px; +/* or 44% */ +display: flex; +align-items: center; +text-align: right; + +color: #000000; + +/* технопарков */ + +position: absolute; +width: 82px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* or 100% */ +text-align: right; + +color: #000000; + +/* 176 */ + +position: absolute; +width: 119px; +height: 55px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 64px; +line-height: 40px; +/* or 62% */ +text-align: center; + +color: #000000; + +/* Ellipse 307 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #abafb3; + +/* Ellipse 308 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #674ee3; + +/* Ellipse 309 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #ec9478; + +/* Ellipse 310 */ + +position: absolute; +width: 207px; +height: 205px; + +background: #7dccc5; diff --git a/docs/components/filters.css b/docs/components/filters.css new file mode 100644 index 0000000..f69fa08 --- /dev/null +++ b/docs/components/filters.css @@ -0,0 +1,1074 @@ +/* Frame 1943564417 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 8px; + +position: absolute; +width: 1416px; +height: 39px; + +/* Frame 12 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 261px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 251px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 177px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 183px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 250.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 17 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 261px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 251px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 177px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 183px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 250.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 13 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 160px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 149px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 72px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 75px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 149.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 14 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 160px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 3; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 149px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 72px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 75px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 149.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 15 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 328.41px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 4; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 318px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 251px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 257px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 318px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; + +/* Frame 16 */ + +box-sizing: border-box; + +/* Auto layout */ +display: flex; +flex-direction: column; +justify-content: space-between; +align-items: flex-start; +padding: 2.70312px 5px 3px 5.40625px; +gap: 2.7px; + +width: 192px; +height: 40px; + +border: 0.270312px solid #abafb3; +border-radius: 2.70312px; + +/* Inside auto layout */ +flex: none; +order: 5; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 6px; + +margin: 0 auto; +width: 170px; +height: 35px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 10 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 13.79px; + +width: 118px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Bodytext */ + +width: 118px; +height: 11px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* or 24% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 11 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px 0px 6px; +gap: 13.79px; + +width: 33px; +height: 17px; + +/* Inside auto layout */ +flex: none; +order: 1; +flex-grow: 0; + +/* Bodytext */ + +width: 31px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 20px; +line-height: 5px; +/* identical to box height, or 24% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Frame 2184 */ + +/* Auto layout */ +display: flex; +flex-direction: row; +align-items: center; +padding: 0px; +gap: 4.05px; + +width: 8px; +height: 15px; + +/* Inside auto layout */ +flex: none; +order: 2; +flex-grow: 0; + +/* Icon */ + +width: 16px; +height: 16px; + +filter: drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.25)); + +/* Inside auto layout */ +flex: none; +order: 0; +flex-grow: 0; + +/* Icon/Outline/cheveron-down */ + +position: absolute; +width: 16px; +height: 16px; +left: 0px; +top: -0.5px; + +/* Icon */ + +position: absolute; +left: 20.83%; +right: 20.83%; +top: 37.5%; +bottom: 33.33%; + +/* gray/900 */ +border: 1px solid #18181b; + +/* Line 1 */ + +margin: 0 auto; +width: 181.59px; +height: 0px; + +/* Inside auto layout */ +flex: none; +order: 1; +align-self: stretch; +flex-grow: 0; diff --git a/docs/components/filters_clear.css b/docs/components/filters_clear.css new file mode 100644 index 0000000..d1fde33 --- /dev/null +++ b/docs/components/filters_clear.css @@ -0,0 +1,49 @@ +/* Group 277134242 */ + +position: absolute; +width: 129px; +height: 10px; + +/* Bodytext */ + +position: absolute; +width: 114px; +height: 5px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 5px; +/* identical to box height, or 35% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #022456; + +/* Vector */ + +position: absolute; +width: 10px; +height: 10px; + +background: #022456; +border: 0.0540625px solid #022456; + +/* Union */ + +position: absolute; +width: 6px; +height: 6px; + +background: #022456; + +/* Vector */ + +position: absolute; +width: 10px; +height: 10px; + +background: #022456; +border: 0.0540625px solid #022456; diff --git a/docs/components/heder.css b/docs/components/heder.css deleted file mode 100644 index 60916a1..0000000 --- a/docs/components/heder.css +++ /dev/null @@ -1,847 +0,0 @@ -/* Single Window / Bars / Header */ - -position: absolute; -width: 1920px; -height: 88px; - -/* Rectangle 2 */ - -position: absolute; -width: 1920px; -height: 88px; -left: 0px; -top: 0px; - -background: #022456; - -/* Frame 1878 */ - -position: absolute; -width: 1920px; -height: 88px; -left: 0px; -top: 0px; - -/* Single Window / Elements / Logotypes / Footer Logo 4 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px; -gap: 12px; - -position: absolute; -width: 236px; -height: 36px; -left: 100px; -top: 26px; - -/* Frame */ - -width: 36px; -height: 35px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Vector */ - -position: absolute; -left: 0%; -right: 0%; -top: 0%; -bottom: 0%; - -background: #ffffff; - -/* ГОСУДАРСТВЕННАЯ ИНФОРМАЦИОННАЯ СИСТЕМА ПРОМЫШЛЕННОСТИ ЗАЩИЩЕННАЯ ЧАСТЬ */ - -width: 188px; -height: 36px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 10px; -line-height: 10px; -/* or 100% */ -display: flex; -align-items: center; - -color: #ffffff; - -/* Inside auto layout */ -flex: none; -order: 1; -flex-grow: 0; - -/* Frame 1943564305 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px; -gap: 24px; - -position: absolute; -width: 1112px; -height: 68px; -left: 750px; -top: 10px; - -/* Frame 1000004688 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px; -gap: 16px; - -width: 1112px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 2273 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 185px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 1966 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 175px; -height: 46px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Главная страница */ - -width: 165px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 18px; -/* identical to box height, or 90% */ -display: flex; -align-items: center; -text-align: center; - -color: rgba(255, 255, 255, 0.5); - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 2275 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 142px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 1; -flex-grow: 0; - -/* Frame 1966 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 132px; -height: 46px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Все сервисы */ - -width: 122px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 700; -font-size: 20px; -line-height: 18px; -/* identical to box height, or 90% */ -display: flex; -align-items: center; -text-align: center; - -color: #ffffff; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 2270 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 135px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 2; -flex-grow: 0; - -/* Frame 1966 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 125px; -height: 46px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* База знаний */ - -width: 115px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 18px; -/* identical to box height, or 90% */ -display: flex; -align-items: center; -text-align: center; - -color: rgba(255, 255, 255, 0.5); - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 2272 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 153px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 3; -flex-grow: 0; - -/* Frame 1966 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 143px; -height: 46px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Сообщения */ - -width: 107px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 18px; -/* identical to box height, or 90% */ -display: flex; -align-items: center; -text-align: center; - -color: rgba(255, 255, 255, 0.5); - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 1942 */ - -width: 16px; -height: 16px; - -/* Inside auto layout */ -flex: none; -order: 1; -flex-grow: 0; - -/* Group 1937 */ - -position: absolute; -width: 24px; -height: 24px; -left: calc(50% - 24px / 2); -top: calc(50% - 24px / 2); - -/* Ellipse 1 */ - -position: absolute; -width: 24px; -height: 24px; -left: -4px; -top: -4px; - -background: #c90237; - -/* 99 */ - -position: absolute; -width: 13px; -height: 8px; -left: 1px; -top: 4px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 700; -font-size: 11px; -line-height: 17px; -/* or 155% */ -display: flex; -align-items: center; -text-align: center; - -color: #ffffff; - -/* + */ - -position: absolute; -width: 6px; -height: 8px; -left: 13px; -top: 3px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 700; -font-size: 8px; -line-height: 17px; -/* or 212% */ -display: flex; -align-items: center; -text-align: center; - -color: #ffffff; - -/* Frame 2274 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 227px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 4; -flex-grow: 0; - -/* Frame 1966 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 217px; -height: 46px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Порядок подключения */ - -width: 207px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 18px; -/* identical to box height, or 90% */ -display: flex; -align-items: center; -text-align: center; - -color: rgba(255, 255, 255, 0.5); - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 2269 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px 5px; -gap: 10px; - -width: 190px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 5; -flex-grow: 0; - -/* Frame 1000004689 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px; -gap: 16px; - -position: absolute; -width: 140px; -height: 68px; -left: 1679px; -top: 10px; - -/* Frame 2269 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -align-items: center; -padding: 0px; -gap: 10px; - -width: 40px; -height: 68px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* White Icons */ - -width: 40px; -height: 40px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* IMPZM / Elements / Icons / Icons 24x24 */ - -/* Auto layout */ -display: flex; -flex-direction: row; -justify-content: center; -align-items: center; -padding: 0px; -gap: 10px; - -position: absolute; -width: 24px; -height: 24px; -left: 8px; -top: 8px; - -/* Icons */ - -width: 24px; -height: 24px; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Vector */ - -position: absolute; -width: 20px; -height: 20px; -left: calc(50% - 20px / 2); -top: calc(50% - 20px / 2); - -border: 2px solid #ffffff; - -/* Александр С. */ - -display: none; -width: 139px; -height: 34px; - -font-family: 'Lato'; -font-style: normal; -font-weight: 400; -font-size: 22.489px; -line-height: 34px; -/* identical to box height, or 150% */ -display: flex; -align-items: center; -text-align: center; - -/* Gosblue */ -color: #0d4cd3; - -/* Inside auto layout */ -flex: none; -order: 1; -flex-grow: 0; - -/* avatar+menu */ - -width: 84px; -height: 50px; - -/* Inside auto layout */ -flex: none; -order: 2; -flex-grow: 0; - -/* img */ - -position: absolute; -width: 50px; -height: 40px; -left: 0px; -top: 5px; - -/* Userpic */ - -position: absolute; -width: 40px; -height: 40px; -right: 39.06px; -top: calc(50% - 40px / 2); - -background: #ffffff; - -/* DZ */ - -position: absolute; -width: 50px; -height: 29px; -left: 0px; -top: 10.94px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 700; -font-size: 20px; -line-height: 28px; -/* identical to box height, or 141% */ -display: flex; -align-items: center; -text-align: center; - -color: #022456; - -/* Arrow Forward */ - -position: absolute; -width: 24px; -height: 24px; -left: 58px; -top: 13px; - -transform: rotate(90deg); - -/* Vector */ - -position: absolute; -left: 21%; -right: 44%; -top: 36.94%; -bottom: 4.72%; - -background: #ffffff; -transform: matrix(0, -1, -1, 0, 0, 0); - -/* 36 Corp */ - -box-sizing: border-box; - -position: absolute; -visibility: hidden; -left: 62.5%; -right: -18.75%; -top: 0%; -bottom: 0%; - -/* Pervinca */ -background: #e5eaf5; -border: 2.81113px solid #bfcceb; -border-radius: 50.6003px; - -/* Frame 277131358 */ - -position: absolute; -width: 25.3px; -height: 25.3px; -left: 12.65px; -top: 12.65px; - -/* Union */ - -position: absolute; -width: 25.3px; -height: 22.77px; -left: 0px; -top: 1.27px; - -/* Text Helper */ -background: #66727f; - -/* Union */ - -position: absolute; -width: 25.3px; -height: 22.77px; -left: 0px; -top: 1.27px; - -background: #000000; - -/* Union */ - -position: absolute; -width: 25.3px; -height: 22.77px; -left: 0px; -top: 1.27px; - -/* RT_Black / 100% */ -background: #101828; - -/* Union */ - -box-sizing: border-box; - -position: absolute; -width: 25.3px; -height: 18.98px; -left: 0px; -top: 5.06px; - -/* RT_Black / 100% */ -border: 1.89751px solid #101828; - -/* Rectangle 853 */ - -box-sizing: border-box; - -position: absolute; -width: 25.3px; -height: 18.98px; -left: calc(50% - 25.3px / 2 - 0px); -top: calc(50% - 18.98px / 2 + 1.9px); - -background: #c4c4c4; -border: 1.89751px solid #000000; - -/* Union */ - -position: absolute; -width: 10.73px; -height: 5.21px; -left: 7.28px; -top: 1.27px; - -background: #000000; - -/* Rectangle 249 */ - -position: absolute; -width: 8.86px; -height: 4.11px; -left: calc(50% - 8.86px / 2 - 0px); -top: calc(50% - 4.11px / 2 - 8.38px); - -border: 1.89751px solid #000000; - -/* Subtract */ - -position: absolute; -width: 23.8px; -height: 4.83px; -left: 0.75px; -top: 11.22px; - -background: #000000; - -/* Rectangle 853 */ - -box-sizing: border-box; - -position: absolute; -width: 22.77px; -height: 3.23px; -left: calc(50% - 22.77px / 2 - 0px); -top: calc(50% - 3.23px / 2 + 0.98px); - -border: 1.89751px solid #000000; -border-radius: 3.79502px; - -/* Rectangle 855 */ - -position: absolute; -width: 5.06px; -height: 3.8px; -left: calc(50% - 5.06px / 2 - 0.01px); -top: calc(50% - 3.8px / 2 + 1.9px); - -background: #c4c4c4; - -/* Rectangle 856 */ - -box-sizing: border-box; - -position: absolute; -width: 7.59px; -height: 7.59px; -left: calc(50% - 7.59px / 2 - 0px); -top: calc(50% - 7.59px / 2 + 2.53px); - -/* RT_Black / 100% */ -border: 1.89751px solid #101828; -border-radius: 2.53001px; - -/* img+notif */ - -position: absolute; -visibility: hidden; -width: 50.6px; -height: 50.6px; -left: 56.22px; -top: 0px; - -/* Group 277131056 */ - -position: absolute; -width: 50.6px; -height: 50.6px; -left: 0px; -top: 0px; - -/* Group 277130812 */ - -position: absolute; -width: 50.6px; -height: 50.6px; -left: 0px; -top: 0px; - -/* Userpic */ - -box-sizing: border-box; - -position: absolute; -width: 50.6px; -height: 50.6px; -right: 0px; -top: calc(50% - 50.6px / 2 + 0px); - -background: url(); -border: 2.81113px solid rgba(13, 76, 211, 0.2); - -/* Ellipse 11 */ - -position: absolute; -left: 75.01%; -right: 2.77%; -top: 75%; -bottom: 2.78%; - -/* Gosred */ -background: #ee3f58; -/* White */ -border: 2.81113px solid #ffffff; diff --git a/docs/components/kpi.css b/docs/components/kpi.css new file mode 100644 index 0000000..98f9b62 --- /dev/null +++ b/docs/components/kpi.css @@ -0,0 +1,154 @@ +/* Rectangle 2459 */ + +position: absolute; +width: 727px; +height: 116px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Group 277134250 */ + +position: absolute; +width: 677px; +height: 72px; + +/* Количество инновационных объединений */ + +position: absolute; +width: 160px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +letter-spacing: -0.02em; + +color: #000000; + +/* 176 */ + +position: absolute; +width: 100px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* 605 */ + +position: absolute; +width: 100px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Количество организаций ОПК */ + +position: absolute; +width: 139px; +height: 20px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 4px; +/* or 43% */ +letter-spacing: -0.02em; + +color: #000000; + +/* 20% */ + +position: absolute; +width: 110px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* 42% */ + +position: absolute; +width: 110px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 48px; +line-height: 4px; +/* or 9% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #c90237; + +/* Составляют организации ОПК в инновационных объединениях */ + +position: absolute; +width: 160px; +height: 23px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #000000; + +/* Процент инновационных объединений, в которых участвуют организации ОПК */ + +position: absolute; +width: 137px; +height: 23px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 10px; +line-height: 10px; +/* or 100% */ +display: flex; +align-items: center; +letter-spacing: -0.02em; + +color: #000000; diff --git a/docs/components/line.css b/docs/components/line.css new file mode 100644 index 0000000..1d6e566 --- /dev/null +++ b/docs/components/line.css @@ -0,0 +1,405 @@ +/* Rectangle 2461 */ + +position: absolute; +width: 722px; +height: 326px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Топ отраслей по количеству организаций ОПК, участвующих в инновационных объединений */ + +position: absolute; +width: 596.19px; +height: 40px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 20px; +/* or 100% */ + +color: #000000; + +/* Авиационная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Радиоэлектронная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Промышленность обычных вооружений */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Промышленность боепрпасов и спецхимии */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Беспилотные системы и робототехника */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Судостроительная промышленность */ + +position: absolute; +width: 463px; +height: 12px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 12px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 180 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 124 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 110 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 78 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 101 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* 12 */ + +position: absolute; +width: 27.7px; +height: 16px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 12px; +line-height: 16px; +text-align: right; + +color: #000000; + +opacity: 0.9; + +/* Rectangle 2464 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2465 */ + +position: absolute; +width: 300px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2466 */ + +position: absolute; +width: 50px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2467 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2468 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2469 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2470 */ + +position: absolute; +width: 20px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2471 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2472 */ + +position: absolute; +width: 400px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2473 */ + +position: absolute; +width: 10px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2474 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2475 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2476 */ + +position: absolute; +width: 60px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2477 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2478 */ + +position: absolute; +width: 400px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2479 */ + +position: absolute; +width: 45px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2480 */ + +position: absolute; +width: 650px; +height: 4px; + +background: #674ee3; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2481 */ + +position: absolute; +width: 200px; +height: 4px; + +background: #ec9478; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); + +/* Rectangle 2482 */ + +position: absolute; +width: 100px; +height: 4px; + +background: #7dccc5; +border-radius: 12px; +transform: matrix(1, 0, 0, -1, 0, 0); diff --git a/docs/components/sidebar.css b/docs/components/sidebar.css deleted file mode 100644 index 6c727fc..0000000 --- a/docs/components/sidebar.css +++ /dev/null @@ -1,557 +0,0 @@ -/* Frame 1943564418 */ - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 0px; - -position: absolute; -width: 391px; -height: 511px; - -/* Frame 28153 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.7px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; - -/* Организации */ - -width: 353px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; -letter-spacing: -0.02em; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28158 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 1; -align-self: stretch; -flex-grow: 0; - -/* Продукция/услуги */ - -width: 352px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28159 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 58px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 2; -align-self: stretch; -flex-grow: 0; - -/* Технологические компетенции */ - -width: 352px; -height: 18px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28160 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 3; -align-self: stretch; -flex-grow: 0; - -/* Импортозамещение */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; - -/* Frame 28161 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 4; -align-self: stretch; -flex-grow: 0; - -/* Инновационные объединения */ - -width: 284px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28165 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 5; -align-self: stretch; -flex-grow: 0; - -/* Кластеры */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; - -/* Frame 28166 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 6; -align-self: stretch; -flex-grow: 0; - -/* Технопарки */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28167 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 7; -align-self: stretch; -flex-grow: 0; - -/* Особые экономические зоны */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28168 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 8; -align-self: stretch; -flex-grow: 0; - -/* Аналитическая панель */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -flex-grow: 0; - -/* Frame 28162 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 9; -align-self: stretch; -flex-grow: 0; - -/* Показатели */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; - -/* Frame 28163 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 10; -align-self: stretch; -flex-grow: 0; - -/* Точки роста */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; - -/* Frame 28164 */ - -box-sizing: border-box; - -/* Auto layout */ -display: flex; -flex-direction: column; -align-items: flex-start; -padding: 20px 0px; -gap: 2.16px; - -width: 391px; -height: 61px; - -border-width: 0.270312px 0px; -border-style: solid; -border-color: #dde1e5; - -/* Inside auto layout */ -flex: none; -order: 11; -align-self: stretch; -flex-grow: 0; - -/* Меры поддержки */ - -width: 391px; -height: 21px; - -font-family: 'Clear Sans'; -font-style: normal; -font-weight: 400; -font-size: 20px; -line-height: 5px; -/* or 24% */ -display: flex; -align-items: center; - -color: #000000; - -/* Inside auto layout */ -flex: none; -order: 0; -align-self: stretch; -flex-grow: 0; diff --git a/docs/components/table.css b/docs/components/table.css new file mode 100644 index 0000000..3f82f7e --- /dev/null +++ b/docs/components/table.css @@ -0,0 +1,1334 @@ +/* Rectangle 2462 */ + +position: absolute; +width: 722px; +height: 460px; + +background: rgba(230, 230, 230, 0.8); +border-radius: 24px; + +/* Rectangle 2463 */ + +position: absolute; +width: 2.66px; +height: 38px; + +background: #022456; +border-radius: 5.40625px; + +/* Субъект РФ */ + +position: absolute; +width: 125.21px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 1 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 41 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 63 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 32 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 46 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 31 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 19 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 17 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 18 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 13 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 14 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 8 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 10 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 7 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 14 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 20 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 21 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Московская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 22 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Республика Татарстан */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 5 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 19 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Самарская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 6 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 17 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Пензенская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 7 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 12 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Томская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 8 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 10 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Ярославская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 9 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 5 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Ульяновская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 10 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Хабаровский край */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 11 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 4 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Республика Башкортастан */ + +position: absolute; +width: 275.74px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 12 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 3 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Краснодарский край */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 13 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Белгородская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 14 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Волгоградская область */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 15 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 80px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Удмуртская Республика */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 2 */ + +position: absolute; +width: 65.27px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 28 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 3 */ + +position: absolute; +width: 65.34px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* 23 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Челябинская область */ + +position: absolute; +width: 258.16px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* г. Москва */ + +position: absolute; +width: 258.42px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ + +color: #000000; + +/* Количество кластеров */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Количество ОЭЗ */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Bodytext */ + +position: absolute; +width: 536px; +height: 45px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 20px; +line-height: 20px; +/* or 100% */ +letter-spacing: -0.02em; + +color: #000000; + +/* Group 277134249 */ + +position: absolute; +width: 19.12px; +height: 18px; + +/* Group 2184 */ + +position: absolute; +width: 18.02px; +height: 16.72px; + +/* Rectangle 566 */ + +box-sizing: border-box; + +position: absolute; +width: 18.02px; +height: 16.72px; + +border: 0.270312px solid #abafb3; + +/* Vector 185 */ + +position: absolute; +width: 16.9px; +height: 14.79px; + +border: 0.270312px solid #abafb3; + +/* Rectangle 567 */ + +position: absolute; +width: 18.02px; +height: 2.57px; + +background: #abafb3; +border-radius: 0.270312px 0.270312px 0px 0px; + +/* Vector 186 */ + +position: absolute; +width: 4.51px; +height: 5.14px; + +border: 0.270312px solid #abafb3; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; + +/* 41 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 22 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 19 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 17 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 12 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 10 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 5 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 4 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 4 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 3 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 85px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 2 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 28 */ + +position: absolute; +width: 81px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* 23 */ + +position: absolute; +width: 82px; +height: 14px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 400; +font-size: 14px; +line-height: 14px; +/* identical to box height, or 100% */ +text-align: center; + +color: #000000; + +/* Количество технопарков */ + +position: absolute; +width: 139.87px; +height: 28px; + +font-family: 'Clear Sans'; +font-style: normal; +font-weight: 700; +font-size: 14px; +line-height: 14px; +/* or 100% */ + +color: #000000; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; + +/* Vector */ + +position: absolute; +width: 12px; +height: 15px; + +background: #abafb3; diff --git a/src/pages/dashboard/model/dashboardStore.spec.ts b/src/pages/dashboard/model/dashboardStore.spec.ts index 85eb095..ae3d3bf 100644 --- a/src/pages/dashboard/model/dashboardStore.spec.ts +++ b/src/pages/dashboard/model/dashboardStore.spec.ts @@ -8,8 +8,15 @@ import { import { associationTypeColorMap } from './constants' import { createEmptyAnalyticsResponse } from './emptyState' import { createDashboardFilterDefinitions } from './filterDefinitions' +import { mergeFiltersResponseOptions } from './filterOptionsCache' import { toDashboardAnalyticsFilters, toDashboardDraftFilters } from './filterDraft' -import { defaultAnalyticsFilters, normalizeAnalyticsFilters, toApiParams } from './filters' +import { + createCascadingAnalyticsFiltersPatch, + defaultAnalyticsFilters, + isDownstreamAnalyticsFilter, + normalizeAnalyticsFilters, + toApiParams, +} from './filters' import { formatGrowthPercent, formatOrganizationsText } from './formatters' import { dashboardAnalyticsQueryKeys } from './queryKeys' import { getNextSortDirection, sortRows } from './sorting' @@ -72,6 +79,38 @@ describe('dashboard contract helpers', () => { }) }) + it('resets all downstream filters when a parent filter changes', () => { + expect(createCascadingAnalyticsFiltersPatch('association_type', 'sez')).toEqual({ + association_type: 'sez', + }) + + expect(createCascadingAnalyticsFiltersPatch('federal_district_id', 'ural')).toEqual({ + federal_district_id: 'ural', + region_id: null, + industry_id: null, + integrated_structure_id: null, + organization_id: null, + }) + + expect(createCascadingAnalyticsFiltersPatch('industry_id', 'aviation')).toEqual({ + industry_id: 'aviation', + integrated_structure_id: null, + organization_id: null, + }) + + expect(createCascadingAnalyticsFiltersPatch('organization_id', 'org-1')).toEqual({ + organization_id: 'org-1', + }) + }) + + it('detects filters that are downstream in the cascade order', () => { + expect(isDownstreamAnalyticsFilter('association_type', 'federal_district_id')).toBe(false) + expect(isDownstreamAnalyticsFilter('federal_district_id', 'region_id')).toBe(true) + expect(isDownstreamAnalyticsFilter('federal_district_id', 'organization_id')).toBe(true) + expect(isDownstreamAnalyticsFilter('region_id', 'federal_district_id')).toBe(false) + expect(isDownstreamAnalyticsFilter('organization_id', 'organization_id')).toBe(false) + }) + it('builds structured query keys from normalized filters', () => { const filters = { association_type: 'all', @@ -180,6 +219,147 @@ describe('dashboard contract helpers', () => { }) }) + it('keeps cached filter options when a filtered response returns only the selected value', () => { + const baseResponse = { + applied_filters: defaultAnalyticsFilters, + association_types: [], + federal_districts: [], + regions: [ + { + id: '77', + federal_district_id: 'central', + label: 'г. Москва', + associations_count: 28, + disabled: false, + }, + { + id: '50', + federal_district_id: 'central', + label: 'Московская область', + associations_count: 41, + disabled: false, + }, + ], + industries: [], + integrated_structures: [], + organizations: [], + generated_at: '', + } satisfies CompetenceMapAnalyticsFiltersResponse + + const filteredResponse = { + ...baseResponse, + applied_filters: { + ...defaultAnalyticsFilters, + region_id: '77', + }, + regions: [ + { + id: '77', + federal_district_id: 'central', + label: 'г. Москва', + associations_count: 28, + disabled: false, + }, + ], + } satisfies CompetenceMapAnalyticsFiltersResponse + + const mergedResponse = mergeFiltersResponseOptions(baseResponse, filteredResponse) + const regionDefinition = createDashboardFilterDefinitions(mergedResponse).find( + (definition) => definition.id === 'region_id', + ) + + expect(regionDefinition?.options).toEqual([ + { label: 'Все', value: 'all', disabled: false }, + { label: 'г. Москва', value: '77', disabled: false }, + { label: 'Московская область', value: '50', disabled: false }, + ]) + }) + + it('uses latest context-scoped organization options instead of cached ones', () => { + const baseResponse = { + applied_filters: defaultAnalyticsFilters, + association_types: [], + federal_districts: [], + regions: [], + industries: [], + integrated_structures: [], + organizations: [ + { + id: 'org-voronezh', + label: 'Воронежская организация', + inn: null, + ogrn: null, + association_memberships_count: 1, + disabled: false, + }, + ], + generated_at: '', + } satisfies CompetenceMapAnalyticsFiltersResponse + + const filteredResponse = { + ...baseResponse, + applied_filters: { + ...defaultAnalyticsFilters, + federal_district_id: 'ural', + region_id: 'chelyabinsk', + }, + organizations: [ + { + id: 'org-chelyabinsk', + label: 'Челябинская организация', + inn: null, + ogrn: null, + association_memberships_count: 1, + disabled: false, + }, + ], + } satisfies CompetenceMapAnalyticsFiltersResponse + + const mergedResponse = mergeFiltersResponseOptions(baseResponse, filteredResponse) + + expect(mergedResponse.organizations).toEqual(filteredResponse.organizations) + }) + + it('filters region options by selected federal district', () => { + const filtersResponse = { + applied_filters: { + ...defaultAnalyticsFilters, + federal_district_id: 'ural', + }, + association_types: [], + federal_districts: [], + regions: [ + { + id: '77', + federal_district_id: 'central', + label: 'г. Москва', + associations_count: 28, + disabled: false, + }, + { + id: '66', + federal_district_id: 'ural', + label: 'Свердловская область', + associations_count: 7, + disabled: false, + }, + ], + industries: [], + integrated_structures: [], + organizations: [], + generated_at: '', + } satisfies CompetenceMapAnalyticsFiltersResponse + + const regionDefinition = createDashboardFilterDefinitions(filtersResponse).find( + (definition) => definition.id === 'region_id', + ) + + expect(regionDefinition?.options).toEqual([ + { label: 'Все', value: 'all', disabled: false }, + { label: 'Свердловская область', value: '66', disabled: false }, + ]) + }) + it('creates empty analytics response that matches the active association type', () => { expect( createEmptyAnalyticsResponse({ ...defaultAnalyticsFilters, association_type: 'sez' }), diff --git a/src/pages/dashboard/model/dashboardStore.ts b/src/pages/dashboard/model/dashboardStore.ts index 7d5e227..7797a14 100644 --- a/src/pages/dashboard/model/dashboardStore.ts +++ b/src/pages/dashboard/model/dashboardStore.ts @@ -17,10 +17,10 @@ import { normalizeAppliedFilters, toApiParams, } from './filters' +import { mergeFiltersResponseOptions } from './filterOptionsCache' import { dashboardAnalyticsQueryKeys } from './queryKeys' import type { AnalyticsFilters, - AssociationTypeFilterOption, CompetenceMapAnalyticsFiltersResponse, CompetenceMapAnalyticsResponse, } from './types' @@ -40,7 +40,10 @@ export { } from './emptyState' export { resolveApiErrorMessage } from './error' export { + analyticsFilterCascadeOrder, + createCascadingAnalyticsFiltersPatch, defaultAnalyticsFilters, + isDownstreamAnalyticsFilter, normalizeAnalyticsFilters, normalizeAppliedFilters, toApiParams, @@ -85,13 +88,16 @@ export const useDashboardStore = defineStore('dashboard', () => { ) const analyticsResponse = computed(() => analyticsQueryResponse.value) const filtersApiResponse = computed(() => filtersQueryResponse.value) - const cachedAssociationTypes = ref([]) + const cachedFiltersResponse = ref(null) watch( filtersApiResponse, (response) => { if (response) { - cachedAssociationTypes.value = response.association_types + cachedFiltersResponse.value = mergeFiltersResponseOptions( + cachedFiltersResponse.value, + response, + ) } }, { immediate: true }, @@ -102,16 +108,28 @@ export const useDashboardStore = defineStore('dashboard', () => { ) const filtersResponse = computed(() => { + if (filtersApiResponse.value && cachedFiltersResponse.value) { + return { + ...cachedFiltersResponse.value, + applied_filters: filtersApiResponse.value.applied_filters, + generated_at: filtersApiResponse.value.generated_at, + } + } + if (filtersApiResponse.value) { return filtersApiResponse.value } - return { - ...createEmptyFiltersResponse( - analyticsResponse.value?.applied_filters ?? requestedFilters.value, - ), - association_types: cachedAssociationTypes.value, + if (cachedFiltersResponse.value) { + return { + ...cachedFiltersResponse.value, + applied_filters: requestedFilters.value, + } } + + return createEmptyFiltersResponse( + analyticsResponse.value?.applied_filters ?? requestedFilters.value, + ) }) const appliedFilters = computed(() => @@ -159,11 +177,13 @@ export const useDashboardStore = defineStore('dashboard', () => { return '' }) const hasAnalyticsData = computed(() => analyticsResponse.value !== null) - const hasFiltersData = computed(() => filtersApiResponse.value !== null) + const hasFiltersData = computed( + () => filtersApiResponse.value !== null || cachedFiltersResponse.value !== null, + ) function applyFilters(filters: Partial) { requestedFilters.value = normalizeAnalyticsFilters({ - ...appliedFilters.value, + ...requestedFilters.value, ...filters, }) } diff --git a/src/pages/dashboard/model/filterDefinitions.ts b/src/pages/dashboard/model/filterDefinitions.ts index 935b7b2..5ca575b 100644 --- a/src/pages/dashboard/model/filterDefinitions.ts +++ b/src/pages/dashboard/model/filterDefinitions.ts @@ -1,5 +1,10 @@ import { ALL_FILTER_VALUE, type DashboardDialogFilterKey } from './filterDraft' -import type { AnalyticsFilterOptionBase, CompetenceMapAnalyticsFiltersResponse } from './types' +import type { + AnalyticsFilterOptionBase, + AnalyticsFilters, + CompetenceMapAnalyticsFiltersResponse, + RegionFilterOption, +} from './types' export interface DashboardFilterOption { disabled: boolean @@ -31,8 +36,22 @@ const withAllOption = (options: AnalyticsFilterOptionBase[]): DashboardFilterOpt ...options.map(toDashboardFilterOption), ] +const getRegionOptions = ( + filtersResponse: CompetenceMapAnalyticsFiltersResponse, + filters: AnalyticsFilters, +): RegionFilterOption[] => { + if (!filters.federal_district_id) { + return filtersResponse.regions + } + + return filtersResponse.regions.filter( + (region) => region.federal_district_id === filters.federal_district_id, + ) +} + export const createDashboardFilterDefinitions = ( filtersResponse: CompetenceMapAnalyticsFiltersResponse, + filters: AnalyticsFilters = filtersResponse.applied_filters, ): DashboardFilterDefinition[] => [ { id: 'federal_district_id', @@ -44,7 +63,7 @@ export const createDashboardFilterDefinitions = ( id: 'region_id', label: 'Субъект', placeholder: 'Выберите субъект', - options: withAllOption(filtersResponse.regions), + options: withAllOption(getRegionOptions(filtersResponse, filters)), }, { id: 'industry_id', diff --git a/src/pages/dashboard/model/filterOptionsCache.ts b/src/pages/dashboard/model/filterOptionsCache.ts new file mode 100644 index 0000000..e2fef24 --- /dev/null +++ b/src/pages/dashboard/model/filterOptionsCache.ts @@ -0,0 +1,59 @@ +import type { CompetenceMapAnalyticsFiltersResponse } from './types' + +type FilterOptionWithAvailability = { + disabled: boolean + id: string +} + +export const mergeFilterOptions = ( + cachedOptions: readonly TOption[], + incomingOptions: readonly TOption[], +): TOption[] => { + const mergedOptions = new Map() + + cachedOptions.forEach((option) => { + mergedOptions.set(option.id, { ...option }) + }) + + incomingOptions.forEach((option) => { + const cachedOption = mergedOptions.get(option.id) + + if (!cachedOption) { + mergedOptions.set(option.id, { ...option }) + return + } + + mergedOptions.set(option.id, { + ...cachedOption, + ...option, + disabled: cachedOption.disabled && option.disabled, + }) + }) + + return Array.from(mergedOptions.values()) +} + +export const mergeFiltersResponseOptions = ( + cachedResponse: CompetenceMapAnalyticsFiltersResponse | null, + incomingResponse: CompetenceMapAnalyticsFiltersResponse, +): CompetenceMapAnalyticsFiltersResponse => { + if (!cachedResponse) { + return incomingResponse + } + + return { + ...incomingResponse, + association_types: mergeFilterOptions( + cachedResponse.association_types, + incomingResponse.association_types, + ), + federal_districts: mergeFilterOptions( + cachedResponse.federal_districts, + incomingResponse.federal_districts, + ), + regions: mergeFilterOptions(cachedResponse.regions, incomingResponse.regions), + industries: incomingResponse.industries, + integrated_structures: incomingResponse.integrated_structures, + organizations: incomingResponse.organizations, + } +} diff --git a/src/pages/dashboard/model/filters.ts b/src/pages/dashboard/model/filters.ts index 47e1166..d8dcdeb 100644 --- a/src/pages/dashboard/model/filters.ts +++ b/src/pages/dashboard/model/filters.ts @@ -2,7 +2,7 @@ import type { ApiV1CompetenceMapAnalyticsFiltersListParams, ApiV1CompetenceMapAnalyticsListParams, } from '@/shared/api' -import type { AnalyticsFilters, AssociationType } from './types' +import type { AnalyticsFilterKey, AnalyticsFilters, AssociationType } from './types' export type CompetenceMapAnalyticsParams = ApiV1CompetenceMapAnalyticsListParams & ApiV1CompetenceMapAnalyticsFiltersListParams @@ -16,6 +16,14 @@ export const defaultAnalyticsFilters: AnalyticsFilters = { organization_id: null, } +export const analyticsFilterCascadeOrder: readonly AnalyticsFilterKey[] = [ + 'federal_district_id', + 'region_id', + 'industry_id', + 'integrated_structure_id', + 'organization_id', +] + const isAssociationType = (value: unknown): value is AssociationType => value === 'all' || value === 'sez' || value === 'technoparks' || value === 'clusters' @@ -39,6 +47,36 @@ export const normalizeAppliedFilters = ( filters: Partial = {}, ): AnalyticsFilters => normalizeAnalyticsFilters(filters) +export const createCascadingAnalyticsFiltersPatch = ( + filterId: FilterId, + value: AnalyticsFilters[FilterId], +): Partial => { + const filterIndex = analyticsFilterCascadeOrder.indexOf(filterId) + const patch: Partial = { + [filterId]: value, + } + + if (filterIndex === -1) { + return patch + } + + analyticsFilterCascadeOrder.slice(filterIndex + 1).forEach((nextFilterId) => { + patch[nextFilterId] = defaultAnalyticsFilters[nextFilterId] as never + }) + + return patch +} + +export const isDownstreamAnalyticsFilter = ( + sourceFilterId: AnalyticsFilterKey, + candidateFilterId: AnalyticsFilterKey, +): boolean => { + const sourceIndex = analyticsFilterCascadeOrder.indexOf(sourceFilterId) + const candidateIndex = analyticsFilterCascadeOrder.indexOf(candidateFilterId) + + return sourceIndex !== -1 && candidateIndex > sourceIndex +} + export const toApiParams = (filters: AnalyticsFilters): CompetenceMapAnalyticsParams => { const params: CompetenceMapAnalyticsParams = { association_type: filters.association_type, diff --git a/src/pages/dashboard/model/formatters.ts b/src/pages/dashboard/model/formatters.ts index a8f6a95..f1e5cb4 100644 --- a/src/pages/dashboard/model/formatters.ts +++ b/src/pages/dashboard/model/formatters.ts @@ -6,6 +6,9 @@ export const getNumericValue = (value: unknown): number => export const formatNumber = (value: number | null | undefined): string => typeof value === 'number' && Number.isFinite(value) ? value.toLocaleString('ru-RU') : '—' +const formatDecimalNumber = (value: number): string => + value.toLocaleString('ru-RU').replace(',', '.') + export const capitalizeFirstLetter = (value: string): string => { if (!value) { return value @@ -21,13 +24,15 @@ export const formatMetricValue = ( return '—' } - const formattedValue = formatNumber(metric.value) - if (metric.value_type === 'percent') { - return `${formattedValue}%` + return `${formatDecimalNumber(metric.value)}%` } - return formattedValue + if (metric.value_type === 'decimal') { + return formatDecimalNumber(metric.value) + } + + return formatNumber(metric.value) } export const formatKpiValue = (kpi: AnalyticsKpi): string => formatMetricValue(kpi) diff --git a/src/pages/dashboard/model/index.ts b/src/pages/dashboard/model/index.ts index 9d413eb..666e415 100644 --- a/src/pages/dashboard/model/index.ts +++ b/src/pages/dashboard/model/index.ts @@ -6,7 +6,10 @@ export { } from './chartData' export { associationTypeColorMap } from './constants' export { + analyticsFilterCascadeOrder, + createCascadingAnalyticsFiltersPatch, defaultAnalyticsFilters, + isDownstreamAnalyticsFilter, normalizeAnalyticsFilters, normalizeAppliedFilters, toApiParams, diff --git a/src/pages/dashboard/ui/CompetenceMapFilters.vue b/src/pages/dashboard/ui/CompetenceMapFilters.vue index 3cb973b..34b22ba 100644 --- a/src/pages/dashboard/ui/CompetenceMapFilters.vue +++ b/src/pages/dashboard/ui/CompetenceMapFilters.vue @@ -1,284 +1,550 @@ diff --git a/src/pages/dashboard/ui/DashboardPage.vue b/src/pages/dashboard/ui/DashboardPage.vue index c2bcd61..080fb33 100644 --- a/src/pages/dashboard/ui/DashboardPage.vue +++ b/src/pages/dashboard/ui/DashboardPage.vue @@ -1,9 +1,7 @@