feat: initial Pezkuwi Apps rebrand from polkadot-apps

Rebranded terminology:
- Polkadot → Pezkuwi
- Kusama → Dicle
- Westend → Zagros
- Rococo → PezkuwiChain
- Substrate → Bizinikiwi
- parachain → teyrchain

Custom logos with Kurdistan brand colors (#e6007a → #86e62a):
- bizinikiwi-hexagon.svg
- sora-bizinikiwi.svg
- hezscanner.svg
- heztreasury.svg
- pezkuwiscan.svg
- pezkuwistats.svg
- pezkuwiassembly.svg
- pezkuwiholic.svg
This commit is contained in:
Kurdistan Tech Ministry committed 2026-01-07 13:05:27 +03:00
commit d21bfb1320
5867 files changed
+329019

No files matched your search

@@ -0,0 +1,149 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
export default `
.ui--output {
background: var(--bg-input);
border-radius: 4px;
border: 1px dashed #eee;
box-sizing: border-box;
line-height: 1rem;
max-height: 25rem;
overflow-y: auto;
padding: 0.75rem 1rem;
position: relative;
word-break: break-all;
&.error {
background: var(--bg-input-error);
border-color: #e0b4b4;
}
&.monospace {
font-family: monospace;
}
}
header .ui--Button-Group {
text-align: center;
}
.ui.input .ui--Button-Group {
margin: 0;
}
button.u.ui--Icon.icon-button {
padding-top: 0;
padding-right: 0;
padding-bottom: 0.3em;
padding-left: 0.3em;
color: #2e86ab !important;
background: none !important;
}
button.ui--Button {
font: var(--font-sans);
}
.editable {
cursor: pointer;
}
.ui--DropdownLinked.ui--row {
.small .ui.selection.dropdown {
border-right: none;
border-bottom-right-radius: 0;
border-top-right-radius: 0;
min-width: 5rem;
}
.large .ui.selection.dropdown {
border-left: none;
border-bottom-left-radius: 0;
border-top-left-radius: 0;
}
}
.ui--Identicon-React-Base {
border: 1px solid var(--border-identicon);
border-radius: 50%;
display: inline-block;
overflow: hidden;
svg circle:first-child {
fill: var(--bg-identicon-circle);
}
}
.ui--Input {
&.disabled {
overflow: hidden;
input {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
&.inPlaceEditor {
margin: 0 !important;
input {
padding: 0 !important;
background: rgba(230, 230, 230, 0.8) !important;
border: 0 !important;
border-radius: 0 !important;
box-shadow: 0 3px 3px rgba(0,0,0,.2);
}
}
&.isWarning.ui.input {
> input,
input:focus {
background: #ffffe0;
border-color: #eeeeae;
}
}
.ui--SiDropdown {
width: 6rem;
text-align: center;
}
}
.ui--Static {
min-width: 2rem; /* adjust width from normal dropdown sizing */
overflow: hidden;
word-break: break-all;
}
.ui--Tooltip {
text-align: center;
z-index: 1002;
max-width: 300px;
&.accounts-badge {
background-color: var(--bg-menu) !important;
color: var(--color-text) !important;
box-shadow: 0 2px 4px 0 rgb(34 36 38 / 12%), 0 2px 10px 0 rgb(34 36 38 / 15%);
z-index: 999;
&.place-top::after {
border-top-color: var(--bg-menu) !important;
}
&.place-right::after {
border-right-color: var(--bg-menu) !important;
}
a {
color: #3BBEFF;
&.purpleColor {
color: #E6007A;
}
}
}
`;
@@ -0,0 +1,72 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
export default `
.ui--grid,
.ui--row {
width: 100%;
}
.ui--grid,
.ui--row {
align-items: stretch;
display: flex;
flex-wrap: nowrap;
flex-direction: row;
justify-content: flex-start;
text-align: left;
min-width: 0;
}
.ui--grid > div,
.ui--row > div {
box-sizing: border-box;
min-width: 0;
}
.ui--grid > div:not(.grow):not(.shrink),
.ui--row > div:not(.grow):not(.shrink) {
width: 100%;
}
.ui--grid > div:not(.shrink),
.ui--grid > div.full,
.ui--row > div.full {
flex: 0 100%;
}
.ui--grid > div.shrink,
.ui--row > div.shrink {
flex: 0 1 auto;
}
.ui--grid > div.grow,
.ui--row > div.grow {
flex: 1 1 auto;
}
.ui--grid > div.large,
.ui--row > div.large {
flex: 0 75%;
}
.ui--grid > div.medium,
.ui--row > div.medium {
flex: 0 50%;
}
.ui--grid > div.small,
.ui--row > div.small {
flex: 0 25%;
}
.ui--grid > div.sixty6,
.ui--row > div.sixty6 {
flex: 0 66.66%;
}
.ui--grid > div.thirty3,
.ui--row > div.thirty3 {
flex: 0 33.33%;
}
`;
@@ -0,0 +1,565 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { createGlobalStyle } from 'styled-components';
import cssComponents from './components.js';
import cssForm from './form.js';
import cssMedia from './media.js';
import cssSemantic from './semantic.js';
import cssTheme from './theme.js';
interface Props {
uiHighlight?: string;
}
const BRIGHTNESS = 128 + 32;
const FACTORS = [0.2126, 0.7152, 0.0722];
const PARTS = [0, 2, 4];
const VERY_DARK = 16;
export const defaultHighlight = '#f19135';
function getHighlight (uiHighlight: string | undefined): string {
return (uiHighlight || defaultHighlight);
}
function countBrightness (uiHighlight: string | undefined): number {
const hc = getHighlight(uiHighlight).replace('#', '').toLowerCase();
return PARTS.reduce((b, p, index) => b + (parseInt(hc.substring(p, p + 2), 16) * FACTORS[index]), 0);
}
function getContrast (uiHighlight: string | undefined): string {
const brightness = countBrightness(uiHighlight);
return brightness > BRIGHTNESS
? 'rgba(45, 43, 41, 0.875)'
: 'rgba(255, 253, 251, 0.875)';
}
function getMenuHoverContrast (uiHighlight: string | undefined): string {
const brightness = countBrightness(uiHighlight);
if (brightness < VERY_DARK) {
return 'rgba(255, 255, 255, 0.15)';
}
return brightness < BRIGHTNESS
? 'rgba(0, 0, 0, 0.15)'
: 'rgba(255, 255, 255, 0.15)';
}
function hexToRGB (hex: string, alpha?: string) {
const r = parseInt(hex.slice(1, 3), 16);
const g = parseInt(hex.slice(3, 5), 16);
const b = parseInt(hex.slice(5, 7), 16);
return alpha
? `rgba(${r}, ${g}, ${b}, ${alpha})`
: `rgb(${r}, ${g}, ${b})`;
}
export default createGlobalStyle<Props>(({ uiHighlight }: Props) => `
.highlight--all {
background: ${getHighlight(uiHighlight)} !important;
border-color: ${getHighlight(uiHighlight)} !important;
color: ${getHighlight(uiHighlight)} !important;
}
.highlight--before:before {
background: ${getHighlight(uiHighlight)} !important;
}
.highlight--before-border:before {
border-color: ${getHighlight(uiHighlight)} !important;
}
.highlight--bg {
background: ${getHighlight(uiHighlight)} !important;
}
.highlight--bg-contrast {
background: ${getContrast(uiHighlight)};
}
.ui--MenuItem.isActive .ui--Badge {
background: ${getHighlight(uiHighlight)};
color: ${getContrast(uiHighlight)} !important;
}
.ui--MenuItem {
& .ui--Badge {
color: ${countBrightness(uiHighlight) < BRIGHTNESS ? '#fff' : '#424242'};
}
&:hover:not(.isActive) .ui--Badge {
background: ${countBrightness(uiHighlight) < BRIGHTNESS ? 'rgba(255, 255, 255, 0.8)' : '#4D4D4D'};
color: ${countBrightness(uiHighlight) > BRIGHTNESS ? '#fff' : '#424242'};
}
}
.ui--Tab .ui--Badge {
background: ${getHighlight(uiHighlight)};
color: ${countBrightness(uiHighlight) < BRIGHTNESS ? '#fff' : '#424242'};
}
.highlight--bg-faint,
.highlight--bg-light {
background: var(--bg-table);
position: relative;
&:before {
background: ${getHighlight(uiHighlight)};
bottom: 0;
content: ' ';
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: -1;
}
}
.highlight--bg-faint:before {
opacity: 0.025;
}
.highlight--bg-light:before {
opacity: 0.2;
}
.highlight--border {
border-color: ${getHighlight(uiHighlight)} !important;
}
.highlight--color {
color: ${getHighlight(uiHighlight)} !important;
}
.highlight--color-contrast {
color: ${getContrast(uiHighlight)};
}
.highlight--fill {
fill: ${getHighlight(uiHighlight)} !important;
}
.highlight--gradient {
background: ${`linear-gradient(90deg, ${uiHighlight || defaultHighlight}, transparent)`};
}
.ui--MenuItem.topLevel:hover,
.ui--MenuItem.isActive.topLevel:hover {
color: ${getContrast(uiHighlight)};
a {
background-color: ${getMenuHoverContrast(uiHighlight)};
}
}
.menuItems li:hover .groupHdr {
background: ${getMenuHoverContrast(uiHighlight)};
color: ${getContrast(uiHighlight)};
}
.groupMenu {
background: ${getHighlight(uiHighlight)} !important;
&::before {
background: ${getMenuHoverContrast(uiHighlight)};
color: ${getContrast(uiHighlight)};
}
li {
color: ${getContrast(uiHighlight)};
}
}
.highlight--hover-bg:hover {
background: ${getHighlight(uiHighlight)} !important;
}
.highlight--hover-color:hover {
color: ${getHighlight(uiHighlight)} !important;
}
.highlight--icon {
.ui--Icon {
color: ${getHighlight(uiHighlight)} !important;
}
}
.highlight--shadow {
box-shadow: 0 0 1px ${getHighlight(uiHighlight)} !important;
}
.highlight--stroke {
stroke: ${getHighlight(uiHighlight)} !important;
}
.ui--Button {
&:not(.isDisabled):not(.isIcon):not(.isBasic),
&.withoutLink:not(.isDisabled) {
.ui--Icon {
background: ${getHighlight(uiHighlight)};
color: ${getContrast(uiHighlight)};
}
}
&.isBasic:not(.isDisabled):not(.isIcon):not(.isSelected) {
&:not(.isReadOnly) {
box-shadow: 0 0 1px ${getHighlight(uiHighlight)};
}
.ui--Icon {
color: ${getHighlight(uiHighlight)};
}
}
&.isSelected {
box-shadow: 0 0 1px ${getHighlight(uiHighlight)};
}
&:hover:not(.isDisabled):not(.isReadOnly),
&.isSelected {
background: ${getHighlight(uiHighlight)};
color: ${getContrast(uiHighlight)};
text-shadow: none;
&:not(.isIcon),
&.withoutLink {
.ui--Icon {
color: inherit;
}
}
}
}
.ui--Table td .ui--Button {
&:not(.isDisabled):not(.isIcon):not(.isToplevel),
&.withoutLink:not(.isDisabled) {
&:hover {
.ui--Icon {
color: ${getContrast(uiHighlight)};
}
}
.ui--Icon {
background: transparent;
color: inherit;
color: ${getHighlight(uiHighlight)};
}
}
}
.ui--Popup .ui--Button.isOpen:not(.isDisabled):not(.isReadOnly) {
background: ${getHighlight(uiHighlight)} !important;
color: ${getContrast(uiHighlight)} !important;
.ui--Icon {
background: transparent !important;
color: ${getContrast(uiHighlight)} !important;
}
}
.ui--Menu {
.ui--Menu__Item:hover {
background: ${hexToRGB(getHighlight(uiHighlight), '.1')};
}
.ui--Toggle.isChecked .ui--Toggle-Slider {
background: ${getHighlight(uiHighlight)};
&::before {
border-color: ${getHighlight(uiHighlight)};
}
}
}
.ui--Sort {
.ui--Labelled.ui--Dropdown:hover {
.ui.selection.dropdown {
border-color: ${getHighlight(uiHighlight)};
.visible.menu {
border: 1px solid ${getHighlight(uiHighlight)};
}
}
}
button:hover {
border-color: ${getHighlight(uiHighlight)};
}
button:hover,
.ui--Labelled.ui--Dropdown:hover {
&::after {
background-color: ${getHighlight(uiHighlight)};
}
}
.arrow.isActive {
color: ${getHighlight(uiHighlight)};
opacity: 1;
}
}
.theme--dark,
.theme--light {
.ui--Tabs .active .tabLinkText::after {
background: ${getHighlight(uiHighlight)};
}
.ui.primary.button,
.ui.buttons .primary.button {
background: ${getHighlight(uiHighlight)};
&.active,
&:active,
&:focus,
&:hover {
background-color: ${getHighlight(uiHighlight)};
}
}
.ui--Toggle.isChecked {
&:not(.isRadio) {
.ui--Toggle-Slider {
background: ${getHighlight(uiHighlight)} !important;
&:before {
border-color: ${getHighlight(uiHighlight)} !important;
}
}
}
}
}
.ui--ExpandButton:hover {
border-color: ${getHighlight(uiHighlight)} !important;
.ui--Icon {
color: ${getHighlight(uiHighlight)} !important;
}
}
.ui--Tag.themeColor.lightTheme,
.ui--InputTags.lightTheme .ui.label {
background: ${hexToRGB(getHighlight(uiHighlight), '0.08')};
color: ${countBrightness(uiHighlight) > BRIGHTNESS ? '#424242' : getHighlight(uiHighlight)};
}
.ui--Tag.themeColor.darkTheme,
.ui--InputTags.darkTheme .ui.label {
color: ${countBrightness(uiHighlight) > BRIGHTNESS ? getHighlight(uiHighlight) : '#fff'};
}
#root {
background: var(--bg-page);
color: var(--color-text);
font: var(--font-sans);
font-weight: var(--font-weight-normal);
height: 100%;
}
a {
cursor: pointer;
}
article {
background: var(--bg-table);
border: 1px solid #f2f2f2;
border-radius: 0.25rem;
box-sizing: border-box;
margin: 0.25rem;
padding: 1.25rem;
position: relative;
text-align: left;
> ul {
margin: 0;
padding: 0;
}
&.error,
&.warning {
border-left-width: 0.25rem;
font-size: var(--font-size-small);
line-height: 1.5;
margin-left: 2.25rem;
padding: 0.75rem 1rem;
position: relative;
z-index: 5;
&:before {
border-radius: 0.25rem;
bottom: 0;
content: ' ';
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: -1;
}
}
&.mark {
margin: 0.5rem 0 0.5rem 2.25rem;
padding: 0.5rem 1rem !important;
}
&.nomargin {
margin-left: 0;
}
&.extraMargin {
margin: 2rem auto;
}
&.centered {
margin: 1.5rem auto;
max-width: 75rem;
&+.ui--Button-Group {
margin-top: 2rem;
}
}
&.error {
&:before {
background: rgba(255, 12, 12, 0.05);
}
border-color: rgba(255, 12, 12, 1);
}
&.padded {
padding: 0.75rem 1rem;
> div {
margin: 0.25rem;
}
}
&.warning {
&:before {
background: rgba(255, 196, 12, 0.05);
}
border-color: rgba(255, 196, 12, 1);
}
}
body {
height: 100%;
margin: 0;
font: var(--font-sans);
}
br {
line-height: 1.5rem;
}
details {
cursor: pointer;
&[open] > summary {
white-space: normal;
br, br + * {
display: block;
}
}
> summary {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
outline: none;
br, br + * {
display: none;
}
}
}
h1, h2, h3, h4, h5 {
color: var(--color-header);
font: var(--font-sans);
font-weight: var(--font-weight-header);
margin-bottom: 0.25rem;
}
h1 {
font-size: var(--font-size-h1);
text-transform: lowercase;
em {
font-style: normal;
text-transform: none;
}
}
h2 {
font-size: var(--font-size-h2);
}
h3 {
font-size: var(--font-size-h3);
}
h4 {
font-size: var(--font-size-h4);
}
header {
margin-bottom: 1.5rem;
text-align: center;
> article {
background: transparent;
}
}
html {
height: 100%;
}
label {
box-sizing: border-box;
display: block;
font: var(--font-sans);
}
// we treat h5 and label as equivalents
label, h5 {
color: var(--color-label);
font-size: var(--font-size-label);
font-style: normal;
font-weight: var(--font-weight-label);
line-height: 1rem;
margin-bottom: 0.25rem !important;
text-transform: var(--text-transform-label);
vertical-align: middle;
}
button {
font-size: var(--font-size-small);
font-weight: var(--font-weight-normal);
}
main {
> section {
margin-bottom: 2em;
}
}
/* Add our overrides */
${cssSemantic}
${cssTheme}
${cssForm}
${cssMedia}
${cssComponents}
`);
@@ -0,0 +1,20 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
export default [
'2000', '1900', '1800', '1700', '1600', '1500', '1400', '1300', '1200', '1100',
'1000', '900', '800', '700', '600', '500', '400'
].map((size) => `
.media--${size} {
@media only screen and (max-width: ${size}px) {
display: none !important;
}
}
.media--${size}-noPad {
@media only screen and (max-width: ${size}px) {
min-width: 0 !important;
padding: 0 !important;
}
}
`).join('');
@@ -0,0 +1,157 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
export default `
.ui.hidden.divider {
margin: 0.5rem 0;
}
.ui.dropdown {
display: block;
min-width: 0;
width: 100%;
}
.ui.dropdown,
.ui.input {
margin: 0.25rem 0;
}
.ui.selection.dropdown,
.ui.input > input,
.ui.selection.dropdown > input {
background: var(--bg-input);
border-color: var(--border-input);
color: var(--color-text);
font: var(--font-sans);
font-size: var(--font-size-base);
&:focus {
background: var(--bg-input);
color: var(--color-text);
}
}
.ui.action.input > .buttons {
position: relative;
}
.ui.dropdown {
&.disabled {
background: transparent;
border-style: dashed;
opacity: 1;
.dropdown.icon {
opacity: 0;
}
}
&.selection.visible {
background: var(--bg-input);
color: var(--color-text);
}
.menu {
background: var(--bg-input);
color: var(--color-text);
> .item {
border-color: transparent !important;
color: var(--color-text) !important;
&.header.disabled {
margin: 1em 0 0 0;
opacity: 1;
&:hover,
&.selected {
background: var(--bg-input);
}
}
}
}
> .text {
min-height: 1em;
&:not(.default) {
color: var(--color-text) !important;
}
}
}
.ui.input {
width: 100%;
&.disabled:not(.retain-appearance) {
opacity: 1;
input {
background: transparent;
border-style: dashed;
}
.ui.buttons {
.ui.button {
background: transparent;
}
&.primary .ui.button {
background-color: #666;
border-color: transparent;
color: #f9f8f7;
opacity: 0.5;
.dropdown.icon {
opacity: 0;
}
}
}
}
&.error input {
background-color: var(--bg-input-error);
border-color: #e0b4b4;
}
> input {
width: 0;
}
}
.ui.label {
background: transparent;
font-weight: var(--font-weight-normal);
position: relative;
z-index: 1;
}
.ui.page.modals.transition.visible {
display: flex !important;
}
.ui.secondary.vertical.menu > .item {
margin: 0;
}
.ui[class*="left icon"].input.left.icon > input {
padding-left: 4rem !important;
}
.ui[class*="left icon"].input.left.icon > .ui--Icon.big {
left: -7px;
opacity: 1;
}
/* modals aligned to top, not center */
.ui.dimmer {
background-color: rgba(96, 96, 96, 0.5);
justify-content: flex-start;
}
/* remove the default white background, settings app has it as part of Tab */
.ui.segment {
background: transparent;
}
`;
@@ -0,0 +1,49 @@
// Copyright 2017-2025 @pezkuwi/react-components authors & contributors
// SPDX-License-Identifier: Apache-2.0
/* default buttons, dark gray */
export const colorBtnDefault = '#767778';
export const colorBtnShadow = '#98999a';
/* highlighted buttons, orange */
export const colorBtnHighlight = '#f19135';
/* primary buttons, blue */
export const colorBtnPrimary = colorBtnDefault; // '#2e86ab';
/* button text color */
export const colorBtnText = '#f9f8f7';
export const colorLink = '#2e86ab';
export default `
.theme--dark,
.theme--light {
a:not(.ui--Tab) {
color: ${colorLink};
&:hover,
a:visited {
color: ${colorLink};
}
}
.ui--Button {
&.isIcon:not(.isDisabled):not(.withoutLink):not(:hover) {
.ui--Icon {
color: ${colorLink};
}
}
}
.ui.modal > .header:not(.ui) {
border-bottom-color: ${colorBtnDefault};
}
.ui.negative.button,
.ui.buttons .negative.button {
background: #666 !important;
}
}
`;