Skip to content
Binary file added src/assets/fonts/noto-sans/NotoSans-Bold.woff2
Binary file not shown.
Binary file not shown.
3 changes: 2 additions & 1 deletion src/lib/components/button/button.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ type ExtraBadgeSeverityValue = PrimeBadgeSeverity;
[size]="primeSize"
[styleClass]="size === 'xlarge' ? 'p-button-xlg' : ''"
[rounded]="rounded"
[outlined]="variant === 'tertiary'"
[outlined]="variant === 'tertiary' && severity !== null"
[text]="variant === 'text' || text"
[link]="variant === 'link'"
[icon]="icon"
Expand Down Expand Up @@ -70,6 +70,7 @@ export class ExtraButtonComponent {

get primeSeverity(): ExtraButtonSeverityValue | null {
if (this.variant === 'secondary') return 'secondary';
if (this.variant === 'tertiary' && this.severity === null) return 'contrast';
if (this.severity === 'warning') return 'warn';
return this.severity;
}
Expand Down
60 changes: 56 additions & 4 deletions src/lib/providers/prime-preset/tokens/components/button.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,14 @@ export const buttonCss = ({ dt }: { dt: (token: string) => string }): string =>
--p-button-extend-ext-xlg-padding-x: ${dt('button.extend.extXlg.paddingX')};
--p-button-extend-ext-xlg-padding-y: ${dt('button.extend.extXlg.paddingY')};
--p-button-extend-ext-xlg-height: ${dt('button.extend.extXlg.height')};
--p-button-extend-ext-outlined-danger-focus-background: ${dt('button.extend.extOutlined.danger.focusBackground')};
--p-button-extend-ext-outlined-warn-focus-background: ${dt('button.extend.extOutlined.warn.focusBackground')};
--p-button-extend-ext-outlined-success-focus-background: ${dt('button.extend.extOutlined.success.focusBackground')};
--p-button-extend-ext-outlined-info-focus-background: ${dt('button.extend.extOutlined.info.focusBackground')};
--p-button-extend-ext-text-danger-focus-background: ${dt('button.extend.extText.danger.focusBackground')};
--p-button-extend-ext-text-warn-focus-background: ${dt('button.extend.extText.warn.focusBackground')};
--p-button-extend-ext-text-success-focus-background: ${dt('button.extend.extText.success.focusBackground')};
--p-button-extend-ext-text-info-focus-background: ${dt('button.extend.extText.info.focusBackground')};
}

/* ─── Шрифт для текста кнопки ─── */
Expand Down Expand Up @@ -77,20 +85,64 @@ export const buttonCss = ({ dt }: { dt: (token: string) => string }): string =>
}
.p-button.p-button-outlined:is(.p-disabled, :disabled, .p-button-loading) {
color: var(--p-button-extend-disabled-color);
background: transparent;
border-color: transparent;
background: var(--p-button-extend-disabled-background);
border-color: var(--p-button-extend-disabled-background);
}
.p-button.p-button-text:is(.p-disabled, :disabled, .p-button-loading) {
color: var(--p-button-extend-disabled-color);
background: transparent;
border-color: transparent;
background: var(--p-button-extend-disabled-background);
border-color: var(--p-button-extend-disabled-background);
}
.p-button.p-button-link:is(.p-disabled, :disabled, .p-button-loading) {
color: var(--p-button-extend-disabled-color);
background: transparent;
border-color: transparent;
}

/* ─── Focus: прозрачный фон и рамка убрана у outlined/text — виден только focus-ring (Figma) ─── */
.p-button-outlined.p-button-danger:focus-visible {
background: ${dt('button.extend.extOutlined.danger.focusBackground')};
border-color: transparent;
}
.p-button-text.p-button-danger:focus-visible {
background: ${dt('button.extend.extText.danger.focusBackground')};
border-color: transparent;
}
.p-button-outlined.p-button-warn:focus-visible {
background: ${dt('button.extend.extOutlined.warn.focusBackground')};
border-color: transparent;
}
.p-button-text.p-button-warn:focus-visible {
background: ${dt('button.extend.extText.warn.focusBackground')};
border-color: transparent;
}
.p-button-outlined.p-button-success:focus-visible {
background: ${dt('button.extend.extOutlined.success.focusBackground')};
border-color: transparent;
}
.p-button-text.p-button-success:focus-visible {
background: ${dt('button.extend.extText.success.focusBackground')};
border-color: transparent;
}
.p-button-outlined.p-button-info:focus-visible {
background: ${dt('button.extend.extOutlined.info.focusBackground')};
border-color: transparent;
}
.p-button-text.p-button-info:focus-visible {
background: ${dt('button.extend.extText.info.focusBackground')};
border-color: transparent;
}

/* ─── Нейтральное кольцо фокуса для text/link без severity ───
У text/link без severity-класса нет собственного focusRing, поэтому
они наследуют primary (зелёное кольцо). В Figma (Button.Base,
variant=text/link) кольцо должно быть нейтральным, как у secondary/
tertiary (contrast): zinc.300 1px + black 10% 2px. */
.p-button-text:not(.p-button-danger):not(.p-button-warn):not(.p-button-info):not(.p-button-help):not(.p-button-success):focus-visible,
.p-button-link:not(.p-button-danger):not(.p-button-warn):not(.p-button-info):not(.p-button-help):not(.p-button-success):focus-visible {
box-shadow: 0 0 0 ${dt('button.extend.extFocusRing.width')} ${dt('button.extend.extFocusRing.borderColor')}, 0 0 0 ${dt('button.extend.extFocusRing.ringWidth')} ${dt('button.extend.extFocusRing.neutralColor')};
}

/* ─── Link кнопки ─── */
.p-button-link.p-button:is(.p-button, .p-button-xlg) {
padding: var(--p-button-extend-ext-link-padding-y) var(--p-button-extend-ext-link-padding-x);
Expand Down
Loading
Loading