From 2e5947fc7d3298a0b90fafef1887da6f21ccd1b1 Mon Sep 17 00:00:00 2001 From: "ak.dmitriev" Date: Fri, 20 Mar 2026 11:51:32 +0700 Subject: [PATCH 1/6] example of button component --- src/components/button/button.component.html | 3 ++ src/components/button/button.component.scss | 0 .../button/button.component.spec.ts | 23 ++++++++++++++ src/components/button/button.component.ts | 30 +++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 src/components/button/button.component.html create mode 100644 src/components/button/button.component.scss create mode 100644 src/components/button/button.component.spec.ts create mode 100644 src/components/button/button.component.ts diff --git a/src/components/button/button.component.html b/src/components/button/button.component.html new file mode 100644 index 0000000..4a13bbd --- /dev/null +++ b/src/components/button/button.component.html @@ -0,0 +1,3 @@ + + + diff --git a/src/components/button/button.component.scss b/src/components/button/button.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/components/button/button.component.spec.ts b/src/components/button/button.component.spec.ts new file mode 100644 index 0000000..d4ad18e --- /dev/null +++ b/src/components/button/button.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonComponent } from './button.component'; + +describe('ButtonComponent', () => { + let component: ButtonComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ButtonComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/components/button/button.component.ts b/src/components/button/button.component.ts new file mode 100644 index 0000000..8909500 --- /dev/null +++ b/src/components/button/button.component.ts @@ -0,0 +1,30 @@ +import { Component, Input } from '@angular/core'; +import { Button } from 'primeng/button'; + +/** + * как использовать + * ``` + * + *
content
// это то, на что заменится внутри компонента + *
+ *``` + */ + +@Component({ + selector: 'app-button', + standalone: true, + imports: [Button], + templateUrl: './button.component.html', + styleUrl: './button.component.scss' +}) +export class ButtonComponent { + @Input() size!: 'small' | undefined | 'large' | 'xlarge'; + + @Input() text: boolean = false; + + private innerSize: 'small' | undefined | 'large'; + + constructor() { + this.innerSize = this.size === 'xlarge' ? undefined : this.size; + } +} From 97d2422417ddecd6e5d09607c82886934e820c23 Mon Sep 17 00:00:00 2001 From: Danil Khaliulin Date: Mon, 23 Mar 2026 17:35:55 +0700 Subject: [PATCH 2/6] style: add space before closing brace in `ButtonSizesComponent` --- .../console-2026-03-20T05-59-04-766Z.log | 1 + documentation.json | 1854 ++++++++ .../tt-fellows/TT_Fellows_DemiBold.woff2 | Bin 0 -> 48592 bytes .../fonts/tt-fellows/TT_Fellows_Regular.woff2 | Bin 0 -> 47760 bytes .../button/button-extra.component.ts | 58 + src/components/button/button.component.html | 2 +- src/components/button/button.component.ts | 6 +- src/prime-preset/map-tokens.ts | 44 +- .../tokens/components-default.json | 3362 --------------- src/prime-preset/tokens/components.ts | 3716 +++++++++++++++++ .../tokens/components/button.json | 5 - src/prime-preset/tokens/components/button.ts | 157 + .../tokens/primitive-default.json | 377 -- src/prime-preset/tokens/primitive.ts | 480 +++ src/prime-preset/tokens/semantic-default.json | 112 - src/prime-preset/tokens/semantic.ts | 838 ++++ src/prime-preset/tokens/sizing-base.json | 30 - src/prime-preset/tokens/sizing-lg.json | 30 - src/prime-preset/tokens/sizing-sm.json | 30 - src/prime-preset/tokens/sizing-xlg.json | 30 - src/prime-preset/tokens/theme-dark.json | 212 - src/prime-preset/tokens/theme-light.json | 212 - .../components/button/button.stories.ts | 414 +- .../button/examples/button-extra.component.ts | 87 + src/styles.scss | 18 + 25 files changed, 7596 insertions(+), 4479 deletions(-) create mode 100644 .playwright-mcp/console-2026-03-20T05-59-04-766Z.log create mode 100644 documentation.json create mode 100644 src/assets/fonts/tt-fellows/TT_Fellows_DemiBold.woff2 create mode 100644 src/assets/fonts/tt-fellows/TT_Fellows_Regular.woff2 create mode 100644 src/components/button/button-extra.component.ts delete mode 100644 src/prime-preset/tokens/components-default.json create mode 100644 src/prime-preset/tokens/components.ts delete mode 100644 src/prime-preset/tokens/components/button.json create mode 100644 src/prime-preset/tokens/components/button.ts delete mode 100644 src/prime-preset/tokens/primitive-default.json create mode 100644 src/prime-preset/tokens/primitive.ts delete mode 100644 src/prime-preset/tokens/semantic-default.json create mode 100644 src/prime-preset/tokens/semantic.ts delete mode 100644 src/prime-preset/tokens/sizing-base.json delete mode 100644 src/prime-preset/tokens/sizing-lg.json delete mode 100644 src/prime-preset/tokens/sizing-sm.json delete mode 100644 src/prime-preset/tokens/sizing-xlg.json delete mode 100644 src/prime-preset/tokens/theme-dark.json delete mode 100644 src/prime-preset/tokens/theme-light.json create mode 100644 src/stories/components/button/examples/button-extra.component.ts diff --git a/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log b/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log new file mode 100644 index 0000000..567be13 --- /dev/null +++ b/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log @@ -0,0 +1 @@ +[ 388ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://raw.githubusercontent.com/cdek-it/vue-ui-kit/storybook-update/src/assets/style/vars/_colors.scss:0 diff --git a/documentation.json b/documentation.json new file mode 100644 index 0000000..d00b737 --- /dev/null +++ b/documentation.json @@ -0,0 +1,1854 @@ +{ + "pipes": [], + "interfaces": [], + "injectables": [], + "guards": [], + "interceptors": [], + "classes": [], + "directives": [], + "components": [ + { + "name": "ButtonBadgeComponent", + "id": "component-ButtonBadgeComponent-c9b005f02f6e55b548ed6d44acdd87fbdf45b61e3a7f18d9d961e78d431b006c05ee81e31efae1ae4ec339fb6b7695b596dedf691d78ee81e927ce08eee82673", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-badge", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + }, + { + "name": "OverlayBadgeModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-badge',\n standalone: true,\n imports: [ButtonModule, OverlayBadgeModule],\n template\n})\nexport class ButtonBadgeComponent {}\n\nexport const Badge: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonBaseComponent", + "id": "component-ButtonBaseComponent-81242ea4c12e4bd3710ef0ab4cd6263ecce5f5d559192ef040bf30fd20b9ff129d272455cd71793f536ca24f9722d12c4da599572fdc45d6162bc6ffd2e3fa0c", + "file": "src/stories/components/button/examples/button-base.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-base", + "styleUrls": [], + "styles": [], + "template": "`
\n \n \n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "badge", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "string", + "decorators": [] + }, + { + "name": "disabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 34, + "type": "boolean", + "decorators": [] + }, + { + "name": "icon", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "string", + "decorators": [] + }, + { + "name": "iconPos", + "defaultValue": "'left'", + "deprecated": false, + "deprecationMessage": "", + "line": 40, + "type": "ButtonIconPosition", + "decorators": [] + }, + { + "name": "label", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 33, + "type": "string", + "decorators": [] + }, + { + "name": "loading", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 35, + "type": "boolean", + "decorators": [] + }, + { + "name": "rounded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "boolean", + "decorators": [] + }, + { + "name": "severity", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "Extract", + "decorators": [] + }, + { + "name": "size", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "\"small\" | \"large\" | \"xlarge\" | undefined", + "decorators": [] + }, + { + "name": "variant", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "\"outlined\" | \"text\" | \"link\" | null", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "Button" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button, ButtonIconPosition } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
\n`;\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [Button],\n template\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | 'xlarge' | undefined;\n @Input() rounded = false;\n @Input() variant: 'outlined' | 'text' | 'link' | null = null;\n @Input() icon: string = '';\n @Input() iconPos: ButtonIconPosition = 'left';\n @Input() badge: string = '';\n @Input() severity: Extract = null;\n}\n\nexport const Default: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonDisabledComponent", + "id": "component-ButtonDisabledComponent-68a58df505e94299e8d28d3d882464c07106fc021b1ff9a5b2aa900da697878649bb93a7d3022da8d410db37dd98bee18061262bcf1e065b11b8420b496f2216", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-disabled", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonDisabledComponent {}\n\nexport const Disabled: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonIconComponent", + "id": "component-ButtonIconComponent-593709211f63b4521fe1da011a69eb0b10325b97b3079d710c392a135c70c4087d1dbaeedf8335be9925cfea65651eb17bbe1c054f5064dfef72ada6437d537c", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-icon", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonIconComponent {}\n\nexport const Icons: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonIconOnlyComponent", + "id": "component-ButtonIconOnlyComponent-fd1de76754aa7f8fc48d81d4ca05e7f173032e18879c1ce3a3be46c2f6f02bae7b92f40d2a17085bd004bca0f6cf63fb32ff2fdbcc57868797294c2e1f878fb1", + "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-icon-only", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-icon-only',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonIconOnlyComponent {}\n\nexport const IconOnly: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonLinkComponent", + "id": "component-ButtonLinkComponent-007a470d2943d83647e22b07ab1a166adb2bcf5277a70764dbf493bd57f58eab655647073590a738e950f3a47daabe97c64a32cbfd51889f3aa4bbfac5339690", + "file": "src/stories/components/button/examples/button-link.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-link", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-link',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonLinkComponent {}\n\nexport const Link: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonLoadingComponent", + "id": "component-ButtonLoadingComponent-38ebe46e8e8f5c9b416d26a65e30fdd9fe7157c394ba9d632f9f8a228a63111342eeedfc9f723724dcd8cc7e6a745b43d412fede99d2c8721a1c2652cec7362c", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-loading", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonLoadingComponent {}\n\nexport const Loading: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonOutlinedComponent", + "id": "component-ButtonOutlinedComponent-a13faff82fc977a14c4c2617748ac67685eeb29cc4d41568bbdb138ee506668f41237e08b7300bfed3ed505f22b2c92024bf893b714db9e69c0d3e51c71e55eb", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-outlined", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonOutlinedComponent {}\n\nexport const Outlined: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonRoundedComponent", + "id": "component-ButtonRoundedComponent-6bb6041fd5f04e03709f54d657c1deb7a399760fcfa23e48faf81626afbdf66a023798e961b7a9dd6eb2290dfab0d66b85b0693e4153758f0e107194f6f529ba", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-rounded", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonRoundedComponent {}\n\nexport const Rounded: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonSeverityComponent", + "id": "component-ButtonSeverityComponent-4224631554907621005b0d851894c01123bd61db2006116292e39193a72529526c066b8a3a0b11fe7a6af30c49f9baf6543c07a8f1fe9fbace37ad0348cf2a9d", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-severity", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonSeverityComponent {}\n\nexport const Severity: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonSizesComponent", + "id": "component-ButtonSizesComponent-661dba1070924aed1cf4ef49813a1f6a6d907cda1dbe15073344241af94004420dbf3f7107d8d4cf54381532ef87576f0bd782219a05c55c872ac9615e66b4f4", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-sizes", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonSizesComponent { }\n\nexport const Sizes: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ButtonTextComponent", + "id": "component-ButtonTextComponent-b8472d5ec2f9a7a21c0437842a5b23baa7e24c4a845f0fc5b52a8f2f5775c2686be8685b6806f4825b21f6aaf458393f6fcfd3de779933a6154fdb45c6c2df0d", + "file": "src/stories/components/button/examples/button-text.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "app-button-text", + "styleUrls": [], + "styles": [], + "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "ButtonModule", + "type": "module" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonTextComponent {}\n\nexport const Text: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [] + }, + { + "name": "ExtraButtonComponent", + "id": "component-ExtraButtonComponent-7358754f1ac1c9e3e3f8be731885ba5cdacf6a1995653ef9d32fe869f8caa4a60c9e6bb1bb9b7da84303aba0a6f8c83d9f60d8b6d22267cc9d61e13d4cd9ed87", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "encapsulation": [], + "entryComponents": [], + "inputs": [], + "outputs": [], + "providers": [], + "selector": "extra-button", + "styleUrls": [], + "styles": [], + "template": "`
\n \n
\n`", + "templateUrl": [], + "viewProviders": [], + "hostDirectives": [], + "inputsClass": [ + { + "name": "disabled", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 44, + "type": "boolean", + "decorators": [] + }, + { + "name": "icon", + "defaultValue": "''", + "deprecated": false, + "deprecationMessage": "", + "line": 43, + "type": "string", + "decorators": [] + }, + { + "name": "iconOnly", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 42, + "type": "boolean", + "decorators": [] + }, + { + "name": "iconPos", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 41, + "type": "ExtraButtonIconPos", + "decorators": [] + }, + { + "name": "label", + "defaultValue": "'Button'", + "deprecated": false, + "deprecationMessage": "", + "line": 36, + "type": "string", + "decorators": [] + }, + { + "name": "loading", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 45, + "type": "boolean", + "decorators": [] + }, + { + "name": "rounded", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 40, + "type": "boolean", + "decorators": [] + }, + { + "name": "severity", + "defaultValue": "null", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "ExtraButtonSeverity", + "decorators": [] + }, + { + "name": "size", + "defaultValue": "'base'", + "deprecated": false, + "deprecationMessage": "", + "line": 39, + "type": "ExtraButtonSize", + "decorators": [] + }, + { + "name": "variant", + "defaultValue": "'primary'", + "deprecated": false, + "deprecationMessage": "", + "line": 37, + "type": "ExtraButtonVariant", + "decorators": [] + } + ], + "outputsClass": [], + "propertiesClass": [], + "methodsClass": [], + "deprecated": false, + "deprecationMessage": "", + "hostBindings": [], + "hostListeners": [], + "standalone": true, + "imports": [ + { + "name": "Button" + } + ], + "description": "", + "rawdescription": "\n", + "type": "component", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\ntype ExtraButtonVariant = 'primary' | 'secondary' | 'outlined' | 'text' | 'link';\ntype ExtraButtonSeverity = 'success' | 'warning' | 'danger' | 'info' | null;\ntype ExtraButtonSize = 'small' | 'base' | 'large' | 'xlarge';\ntype ExtraButtonIconPos = 'prefix' | 'postfix' | null;\n\nconst template = `\n
\n \n
\n`;\n\n@Component({\n selector: 'extra-button',\n standalone: true,\n imports: [Button],\n template\n})\nexport class ExtraButtonComponent {\n @Input() label = 'Button';\n @Input() variant: ExtraButtonVariant = 'primary';\n @Input() severity: ExtraButtonSeverity = null;\n @Input() size: ExtraButtonSize = 'base';\n @Input() rounded = false;\n @Input() iconPos: ExtraButtonIconPos = null;\n @Input() iconOnly = false;\n @Input() icon = '';\n @Input() disabled = false;\n @Input() loading = false;\n\n get primeSize(): 'small' | 'large' | undefined {\n if (this.size === 'small') return 'small';\n if (this.size === 'large') return 'large';\n return undefined;\n }\n\n get primeIconPos(): 'left' | 'right' {\n return this.iconPos === 'postfix' ? 'right' : 'left';\n }\n\n get primeSeverity(): string | null {\n if (this.variant === 'secondary') return 'secondary';\n if (this.severity === 'warning') return 'warn';\n return this.severity;\n }\n}\n\nexport const Extra: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n};\n", + "assetsDirs": [], + "styleUrlsData": "", + "stylesData": "", + "extends": [], + "accessors": { + "primeSize": { + "name": "primeSize", + "getSignature": { + "name": "primeSize", + "type": "unknown", + "returnType": "\"small\" | \"large\" | undefined", + "line": 47 + } + }, + "primeIconPos": { + "name": "primeIconPos", + "getSignature": { + "name": "primeIconPos", + "type": "unknown", + "returnType": "\"left\" | \"right\"", + "line": 53 + } + }, + "primeSeverity": { + "name": "primeSeverity", + "getSignature": { + "name": "primeSeverity", + "type": "unknown", + "returnType": "string | null", + "line": 57 + } + } + } + } + ], + "modules": [], + "miscellaneous": { + "variables": [ + { + "name": "Badge", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n}" + }, + { + "name": "Default", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-base.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n}" + }, + { + "name": "Disabled", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n}" + }, + { + "name": "Extra", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" + }, + { + "name": "IconOnly", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n}" + }, + { + "name": "Icons", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n}" + }, + { + "name": "Link", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-link.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n}" + }, + { + "name": "Loading", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n}" + }, + { + "name": "meta", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Meta", + "defaultValue": "{\n title: 'PrimeNG/Button',\n decorators: [\n moduleMetadata({\n imports: [\n CommonModule,\n ButtonModule,\n BadgeModule,\n OverlayBadgeModule,\n ExtraButtonComponent,\n ButtonBaseComponent,\n ButtonSizesComponent,\n ButtonRoundedComponent,\n ButtonTextComponent,\n ButtonLinkComponent,\n ButtonIconComponent,\n ButtonIconOnlyComponent,\n ButtonDisabledComponent,\n ButtonLoadingComponent,\n ButtonBadgeComponent,\n ButtonSeverityComponent\n ]\n })\n ],\n parameters: {\n docs: {\n description: {\n component: 'Кнопка — базовый интерактивный элемент. [PrimeNG Button](https://primeng.org/button), [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)'\n }\n }\n }\n}" + }, + { + "name": "Outlined", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n}" + }, + { + "name": "Rounded", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n}" + }, + { + "name": "Severity", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n}" + }, + { + "name": "Sizes", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-base.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n \n \n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n \n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-link.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "Text", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n}" + } + ], + "functions": [], + "typealiases": [ + { + "name": "ExtraButtonIconPos", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"prefix\" | \"postfix\" | null", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonSeverity", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"success\" | \"warning\" | \"danger\" | \"info\" | null", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonSize", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"small\" | \"base\" | \"large\" | \"xlarge\"", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonVariant", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"primary\" | \"secondary\" | \"outlined\" | \"text\" | \"link\"", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + } + ], + "enumerations": [], + "groupedVariables": { + "src/stories/components/button/examples/button-badge.component.ts": [ + { + "name": "Badge", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-base.component.ts": [ + { + "name": "Default", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-base.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-base.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n \n \n
\n`" + } + ], + "src/stories/components/button/examples/button-disabled.component.ts": [ + { + "name": "Disabled", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-extra.component.ts": [ + { + "name": "Extra", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n \n
\n`" + } + ], + "src/stories/components/button/examples/button-icon-only.component.ts": [ + { + "name": "IconOnly", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-icon.component.ts": [ + { + "name": "Icons", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-link.component.ts": [ + { + "name": "Link", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-link.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-link.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-loading.component.ts": [ + { + "name": "Loading", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/button.stories.ts": [ + { + "name": "meta", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Meta", + "defaultValue": "{\n title: 'PrimeNG/Button',\n decorators: [\n moduleMetadata({\n imports: [\n CommonModule,\n ButtonModule,\n BadgeModule,\n OverlayBadgeModule,\n ExtraButtonComponent,\n ButtonBaseComponent,\n ButtonSizesComponent,\n ButtonRoundedComponent,\n ButtonTextComponent,\n ButtonLinkComponent,\n ButtonIconComponent,\n ButtonIconOnlyComponent,\n ButtonDisabledComponent,\n ButtonLoadingComponent,\n ButtonBadgeComponent,\n ButtonSeverityComponent\n ]\n })\n ],\n parameters: {\n docs: {\n description: {\n component: 'Кнопка — базовый интерактивный элемент. [PrimeNG Button](https://primeng.org/button), [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)'\n }\n }\n }\n}" + } + ], + "src/stories/components/button/examples/button-outlined.component.ts": [ + { + "name": "Outlined", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-rounded.component.ts": [ + { + "name": "Rounded", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-severity.component.ts": [ + { + "name": "Severity", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-sizes.component.ts": [ + { + "name": "Sizes", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n}" + }, + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + } + ], + "src/stories/components/button/examples/button-text.component.ts": [ + { + "name": "template", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + }, + { + "name": "Text", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n}" + } + ] + }, + "groupedFunctions": {}, + "groupedEnumerations": {}, + "groupedTypeAliases": { + "src/stories/components/button/examples/button-extra.component.ts": [ + { + "name": "ExtraButtonIconPos", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"prefix\" | \"postfix\" | null", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonSeverity", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"success\" | \"warning\" | \"danger\" | \"info\" | null", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonSize", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"small\" | \"base\" | \"large\" | \"xlarge\"", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + }, + { + "name": "ExtraButtonVariant", + "ctype": "miscellaneous", + "subtype": "typealias", + "rawtype": "\"primary\" | \"secondary\" | \"outlined\" | \"text\" | \"link\"", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "description": "", + "kind": 193 + } + ] + } + }, + "routes": { + "name": "", + "kind": "module", + "children": [] + }, + "coverage": { + "count": 0, + "status": "low", + "files": [ + { + "filePath": "src/stories/components/button/button.stories.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "meta", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonBadgeComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Badge", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-base.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonBaseComponent", + "coveragePercent": 0, + "coverageCount": "0/11", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-base.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Default", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-base.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonDisabledComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Disabled", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "component", + "linktype": "component", + "name": "ExtraButtonComponent", + "coveragePercent": 0, + "coverageCount": "0/11", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Extra", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "type alias", + "linktype": "miscellaneous", + "linksubtype": "typealias", + "name": "ExtraButtonIconPos", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "type alias", + "linktype": "miscellaneous", + "linksubtype": "typealias", + "name": "ExtraButtonSeverity", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "type alias", + "linktype": "miscellaneous", + "linksubtype": "typealias", + "name": "ExtraButtonSize", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "type alias", + "linktype": "miscellaneous", + "linksubtype": "typealias", + "name": "ExtraButtonVariant", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonIconOnlyComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "IconOnly", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonIconComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Icons", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-link.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonLinkComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-link.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Link", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-link.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-loading.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonLoadingComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-loading.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Loading", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-loading.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-outlined.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonOutlinedComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-outlined.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Outlined", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-outlined.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-rounded.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonRoundedComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-rounded.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Rounded", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-rounded.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-severity.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonSeverityComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-severity.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Severity", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-severity.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-sizes.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonSizesComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-sizes.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Sizes", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-sizes.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-text.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonTextComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-text.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "template", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-text.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Text", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + } + ] + } +} \ No newline at end of file diff --git a/src/assets/fonts/tt-fellows/TT_Fellows_DemiBold.woff2 b/src/assets/fonts/tt-fellows/TT_Fellows_DemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..ec6701528ffd4226e1d3a1492f231ea123c295d2 GIT binary patch literal 48592 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 literal 0 HcmV?d00001 diff --git a/src/assets/fonts/tt-fellows/TT_Fellows_Regular.woff2 b/src/assets/fonts/tt-fellows/TT_Fellows_Regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..c4c67360f20d5bc4bd0575eda8355207add62d61 GIT binary patch literal 47760 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�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%0AL!1b9~eH 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 + ` +}) +export class ExtraButtonComponent { + @Input() label = 'Button'; + @Input() variant: ExtraButtonVariant = 'primary'; + @Input() severity: ExtraButtonSeverity = null; + @Input() size: ExtraButtonSize = 'base'; + @Input() rounded = false; + @Input() iconPos: ExtraButtonIconPos = null; + @Input() iconOnly = false; + @Input() icon = ''; + @Input() disabled = false; + @Input() loading = false; + + get primeSize(): 'small' | 'large' | undefined { + if (this.size === 'small') return 'small'; + if (this.size === 'large') return 'large'; + return undefined; + } + + get primeIconPos(): 'left' | 'right' { + return this.iconPos === 'postfix' ? 'right' : 'left'; + } + + get primeSeverity(): string | null { + if (this.variant === 'secondary') return 'secondary'; + if (this.severity === 'warning') return 'warn'; + return this.severity; + } +} diff --git a/src/components/button/button.component.html b/src/components/button/button.component.html index 4a13bbd..b6a3c33 100644 --- a/src/components/button/button.component.html +++ b/src/components/button/button.component.html @@ -1,3 +1,3 @@ - + diff --git a/src/components/button/button.component.ts b/src/components/button/button.component.ts index 8909500..c5454f2 100644 --- a/src/components/button/button.component.ts +++ b/src/components/button/button.component.ts @@ -22,9 +22,7 @@ export class ButtonComponent { @Input() text: boolean = false; - private innerSize: 'small' | undefined | 'large'; - - constructor() { - this.innerSize = this.size === 'xlarge' ? undefined : this.size; + get innerSize(): 'small' | undefined | 'large' { + return (this.size === 'xlarge' || !this.size) ? undefined : (this.size as 'small' | 'large'); } } diff --git a/src/prime-preset/map-tokens.ts b/src/prime-preset/map-tokens.ts index 62ebcb4..5cb6345 100644 --- a/src/prime-preset/map-tokens.ts +++ b/src/prime-preset/map-tokens.ts @@ -1,45 +1,15 @@ import { Preset } from '@primeuix/themes/types'; +import type { ComponentsDesignTokens } from '@primeuix/themes/types'; import type { AuraBaseDesignTokens } from '@primeuix/themes/aura/base'; -import primitive from './tokens/primitive-default.json'; -import semantic from './tokens/semantic-default.json'; -import components from './tokens/components-default.json'; -import themeLight from './tokens/theme-light.json'; -import themeDark from './tokens/theme-dark.json'; -import sizingBase from './tokens/sizing-base.json'; -import sizingSm from './tokens/sizing-sm.json'; -import sizingLg from './tokens/sizing-lg.json'; -import sizingXlg from './tokens/sizing-xlg.json'; - -import button from './tokens/components/button.json'; +import primitive from './tokens/primitive'; +import semantic from './tokens/semantic'; +import components from './tokens/components'; const presetTokens: Preset = { - primitive, - semantic, - components: { ...components, ...button } + primitive: primitive as AuraBaseDesignTokens['primitive'], + semantic: semantic as unknown as AuraBaseDesignTokens['semantic'], + components: components as ComponentsDesignTokens }; -if (presetTokens?.semantic) { - presetTokens.semantic.colorScheme = { - light: themeLight, - dark: themeDark - }; -} - -presetTokens.semantic = { ...presetTokens.semantic, ...sizingBase }; - -const semanticLink: Record = presetTokens.semantic; - -function applySizing(semantic: Record, sizing: Record, sizeKey: 'sm' | 'lg' | 'xlg') { - Object.keys(sizing).forEach((key) => { - if (semantic[key]) { - semantic[key][sizeKey] = sizing[key]?.root ?? sizing[key]; - } - }); -} - -applySizing(semanticLink, sizingSm, 'sm'); -applySizing(semanticLink, sizingLg, 'lg'); -applySizing(semanticLink, sizingXlg, 'xlg'); - export default presetTokens; diff --git a/src/prime-preset/tokens/components-default.json b/src/prime-preset/tokens/components-default.json deleted file mode 100644 index 5d8c8ce..0000000 --- a/src/prime-preset/tokens/components-default.json +++ /dev/null @@ -1,3362 +0,0 @@ -{ - "accordion": { - "header": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "activeColor": "{text.color}", - "activeHoverColor": "{text.hoverColor}", - "borderColor": "{transparent}", - "padding": "1rem 0 1rem 0", - "fontWeight": "{fonts.fontWeight.bold}", - "borderRadius": "0", - "borderWidth": "0 0 0 0", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "inset {focus.ring.shadow}" - }, - "toggleIcon": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "activeColor": "{text.color}", - "activeHoverColor": "{text.hoverColor}" - }, - "last": { - "bottomBorderRadius": "{content.borderRadius}", - "activeBottomBorderRadius": "0" - }, - "first": { - "borderWidth": "0", - "topBorderRadius": "{content.borderRadius}" - } - }, - "root": { - "transitionDuration": "{formField.transitionDuration}" - }, - "panel": { - "borderWidth": "0.0625rem", - "borderColor": "{formField.borderColor}" - }, - "colorScheme": { - "light": { - "header": { - "background": "{transparent}", - "hoverBackground": "{transparent}", - "activeBackground": "{transparent}", - "activeHoverBackground": "{transparent}" - } - } - }, - "content": { - "borderWidth": "1px 0 0 0", - "borderColor": "{transparent}", - "background": "{transparent}", - "color": "{text.color}", - "padding": "0 0 1rem 1.75rem" - } - }, - "autocomplete": { - "colorScheme": { - "light": { - "chip": { - "focusBackground": "{chip.colorScheme.light.root.background}", - "focusColor": "{chip.colorScheme.light.root.color}" - }, - "dropdown": { - "background": "{formField.background}", - "hoverBackground": "{formField.background}", - "activeBackground": "{formField.background}", - "color": "{formField.color}", - "hoverColor": "{formField.color}", - "activeColor": "{formField.color}" - } - } - }, - "extend": { - "extOption": { - "gap": "0.4375rem" - }, - "extOptionGroup": { - "gap": "0.4375rem" - } - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "filledHoverBackground": "{formField.filledHoverBackground}", - "filledFocusBackground": "{formField.filledFocusBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "focusBorderColor": "{formField.focusBorderSecondaryColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{formField.color}", - "disabledColor": "{formField.disabledColor}", - "placeholderColor": "{formField.placeholderColor}", - "invalidPlaceholderColor": "{formField.invalidPlaceholderColor}", - "shadow": "{formField.shadow}", - "paddingX": "{formField.paddingX}", - "paddingY": "{formField.paddingY}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}" - }, - "overlay": { - "background": "{overlay.select.background}", - "borderColor": "{overlay.select.borderColor}", - "borderRadius": "{overlay.select.borderRadius}", - "color": "{overlay.select.color}", - "shadow": "{overlay.select.shadow}" - }, - "list": { - "padding": "{list.padding}", - "gap": "{list.gap}" - }, - "option": { - "focusBackground": "{list.option.focusBackground}", - "selectedBackground": "{list.option.selectedBackground}", - "selectedFocusBackground": "{list.option.selectedFocusBackground}", - "color": "{list.option.color}", - "focusColor": "{list.option.focusColor}", - "selectedColor": "{list.option.selectedColor}", - "selectedFocusColor": "{list.option.selectedFocusColor}", - "padding": "{list.option.padding}", - "borderRadius": "{list.option.borderRadius}" - }, - "optionGroup": { - "background": "{list.optionGroup.background}", - "color": "{list.optionGroup.color}", - "fontWeight": "{fonts.fontWeight.demibold}", - "padding": "{list.optionGroup.padding}" - }, - "dropdown": { - "width": "100%", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "activeBorderColor": "{formField.focusBorderSecondaryColor}", - "borderRadius": "{formField.borderRadius}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.focusRing.shadow}" - }, - "sm": { - "width": "1.75rem" - }, - "lg": { - "width": "2.625rem" - } - }, - "chip": { - "borderRadius": "{chip.root.borderRadius}" - }, - "emptyMessage": { - "padding": "{list.option.padding}" - } - }, - "avatar": { - "extend": { - "borderColor": "{formField.borderColor}" - }, - "root": { - "width": "1.75rem", - "height": "1.75rem", - "fontSize": "{fonts.fontSize.base}", - "color": "{text.extend.colorPrimaryStatic}", - "background": "{primary.color}", - "borderRadius": "{borderRadius.md}" - }, - "icon": { - "size": "0.875rem" - }, - "group": { - "borderColor": "{content.background}", - "offset": "-0.75rem" - }, - "lg": { - "width": "2.1875rem", - "height": "2.1875rem", - "fontSize": "{fonts.fontSize.base}", - "icon": { - "size": "0.875rem" - }, - "group": { - "offset": "-1rem" - } - }, - "xl": { - "width": "3.0625rem", - "height": "3.0625rem", - "icon": { - "size": "1.3125rem" - }, - "group": { - "offset": "-1.5rem" - }, - "fontSize": "{fonts.fontSize.base}" - } - }, - "badge": { - "colorScheme": { - "light": { - "primary": { - "color": "{text.extend.colorPrimaryStatic}", - "background": "{primary.color}" - }, - "secondary": { - "color": "{text.extend.colorInverted}", - "background": "{surface.900}" - }, - "success": { - "color": "{success.900}", - "background": "{success.300}" - }, - "info": { - "color": "{info.900}", - "background": "{info.300}" - }, - "warn": { - "color": "{warn.900}", - "background": "{warn.300}" - }, - "danger": { - "color": "{error.900}", - "background": "{error.300}" - } - } - }, - "extend": { - "extDot": { - "success": { - "background": "{colors.solid.green.400}" - }, - "info": { - "background": "{info.400}" - }, - "warn": { - "background": "{warn.400}" - }, - "danger": { - "background": "{error.400}" - }, - "lg": { - "size": "0.65625rem" - }, - "xlg": { - "size": "0.875rem" - } - } - }, - "root": { - "borderRadius": "{borderRadius.xl}", - "padding": "0.46875rem", - "fontSize": "{fonts.fontSize.xs}", - "fontWeight": "{fonts.fontWeight.regular}", - "minWidth": "1.3125rem", - "height": "1.3125rem" - }, - "dot": { - "size": "0.4375rem" - }, - "sm": { - "fontSize": "{fonts.fontSize.xs}", - "minWidth": "0", - "height": "0" - }, - "lg": { - "fontSize": "{fonts.fontSize.xs}", - "minWidth": "1.53125rem", - "height": "1.53125rem" - }, - "xl": { - "fontSize": "{fonts.fontSize.xs}", - "minWidth": "1.75rem", - "height": "1.75rem" - } - }, - "breadcrumb": { - "extend": { - "hoverBackground": "{surface.100}" - }, - "root": { - "padding": "0.21875rem", - "background": "{transparent}", - "gap": "0", - "transitionDuration": "{formField.transitionDuration}" - }, - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - }, - "item": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "borderRadius": "{borderRadius.xs}", - "gap": "{navigation.item.gap}", - "icon": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}" - } - }, - "separator": { - "color": "{text.color}" - } - }, - "button": { - "extend": { - "disabledBackground": "{formField.disabledBackground}", - "extOutlined": { - "danger": { - "focusBackground": "{transparent}" - }, - "warn": { - "focusBackground": "{transparent}" - }, - "info": { - "focusBackground": "{transparent}" - }, - "help": { - "focusBackground": "{transparent}" - }, - "success": { - "focusBackground": "{transparent}" - } - }, - "disabledColor": "{formField.disabledColor}", - "extText": { - "danger": { - "focusBackground": "{transparent}" - }, - "warn": { - "focusBackground": "{transparent}" - }, - "info": { - "focusBackground": "{transparent}" - }, - "help": { - "focusBackground": "{transparent}" - }, - "success": { - "focusBackground": "{transparent}" - } - }, - "extLink": { - "background": "{transparent}", - "colorHover": "{text.hoverColor}", - "paddingX": "0", - "paddingY": "0.21875rem", - "sm": { - "iconOnlyWidth": "0.875rem" - }, - "base": { - "iconOnlyWidth": "1.34375rem" - }, - "lg": { - "iconOnlyWidth": "1.53125rem" - }, - "xlg": { - "iconOnlyWidth": "1.75rem" - } - }, - "extSm": { - "borderRadius": "{borderRadius.md}", - "gap": "0.4375rem" - }, - "extLg": { - "borderRadius": "{borderRadius.lg}", - "gap": "0.65625rem" - }, - "extXlg": { - "borderRadius": "{borderRadius.lg}", - "gap": "0.65625rem", - "iconOnlyWidth": "3.5625rem", - "paddingX": "1.3125rem", - "paddingY": "1.09375rem" - }, - "borderWidth": "0.0625rem" - }, - "colorScheme": { - "light": { - "root": { - "primary": { - "background": "{primary.color}", - "hoverBackground": "{primary.hoverColor}", - "activeBackground": "{primary.color}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{text.extend.colorPrimaryStatic}", - "hoverColor": "{text.extend.colorPrimaryStatic}", - "activeColor": "{text.extend.colorPrimaryStatic}", - "focusRing": { - "color": "{primary.200}", - "shadow": "{focusRing.shadow}" - } - }, - "secondary": { - "background": "{surface.900}", - "hoverBackground": "{surface.800}", - "activeBackground": "{surface.900}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{text.extend.colorInverted}", - "hoverColor": "{text.extend.colorInverted}", - "activeColor": "{text.extend.colorInverted}", - "focusRing": { - "color": "{primary.200}", - "shadow": "{focusRing.shadow}" - } - }, - "contrast": { - "background": "{surface.200}", - "hoverBackground": "{surface.300}", - "activeBackground": "{surface.200}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{text.color}", - "hoverColor": "{text.color}", - "activeColor": "{text.color}", - "focusRing": { - "color": "{primary.200}", - "shadow": "{focusRing.shadow}" - } - }, - "info": { - "background": "{info.300}", - "hoverBackground": "{info.400}", - "activeBackground": "{info.300}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{info.900}", - "hoverColor": "{info.950}", - "activeColor": "{info.900}" - }, - "success": { - "background": "{success.300}", - "hoverBackground": "{success.400}", - "activeBackground": "{success.300}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{success.900}", - "hoverColor": "{success.950}", - "activeColor": "{success.900}" - }, - "warn": { - "background": "{warn.300}", - "hoverBackground": "{warn.400}", - "activeBackground": "{warn.300}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{warn.900}", - "hoverColor": "{warn.950}", - "activeColor": "{warn.900}" - }, - "help": { - "background": "{help.300}", - "hoverBackground": "{help.400}", - "activeBackground": "{help.300}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{help.900}", - "hoverColor": "{help.950}", - "activeColor": "{help.900}" - }, - "danger": { - "background": "{error.300}", - "hoverBackground": "{error.400}", - "activeBackground": "{error.300}", - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "activeBorderColor": "{transparent}", - "color": "{error.900}", - "hoverColor": "{error.950}", - "activeColor": "{error.900}" - } - }, - "outlined": { - "primary": { - "hoverBackground": "{primary.50}", - "activeBackground": "{primary.100}", - "borderColor": "{primary.200}", - "color": "{colors.solid.green.500}" - }, - "success": { - "hoverBackground": "{success.100}", - "activeBackground": "{transparent}", - "borderColor": "{success.600}", - "color": "{success.600}" - }, - "info": { - "hoverBackground": "{info.100}", - "activeBackground": "{transparent}", - "borderColor": "{info.600}", - "color": "{info.600}" - }, - "warn": { - "hoverBackground": "{warn.100}", - "activeBackground": "{transparent}", - "borderColor": "{warn.600}", - "color": "{warn.600}" - }, - "help": { - "hoverBackground": "{help.100}", - "activeBackground": "{transparent}", - "borderColor": "{help.600}", - "color": "{help.600}" - }, - "danger": { - "hoverBackground": "{error.100}", - "activeBackground": "{transparent}", - "borderColor": "{error.600}", - "color": "{error.600}" - } - }, - "text": { - "primary": { - "hoverBackground": "{surface.100}", - "activeBackground": "{transparent}", - "color": "{text.color}" - }, - "success": { - "hoverBackground": "{success.100}", - "activeBackground": "{transparent}", - "color": "{success.600}" - }, - "info": { - "hoverBackground": "{info.100}", - "activeBackground": "{transparent}", - "color": "{info.600}" - }, - "warn": { - "hoverBackground": "{warn.100}", - "activeBackground": "{transparent}", - "color": "{warn.600}" - }, - "help": { - "hoverBackground": "{help.100}", - "activeBackground": "{transparent}", - "color": "{help.600}" - }, - "danger": { - "hoverBackground": "{error.100}", - "activeBackground": "{transparent}", - "color": "{error.600}" - } - }, - "link": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "activeColor": "{text.color}" - } - } - }, - "root": { - "borderRadius": "{borderRadius.md}", - "roundedBorderRadius": "1.75rem", - "gap": "0.4375rem", - "paddingX": "0.875rem", - "paddingY": "0.4375rem", - "iconOnlyWidth": "2.1875rem", - "raisedShadow": "0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12)", - "badgeSize": "1rem", - "transitionDuration": "{formField.transitionDuration}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "offset": "{focusRing.offset}" - }, - "sm": { - "fontSize": "{fonts.fontSize.sm}", - "iconOnlyWidth": "1.75rem", - "paddingX": "0.65625rem", - "paddingY": "0.4375rem" - }, - "lg": { - "fontSize": "{fonts.fontSize.xl}", - "iconOnlyWidth": "3.125rem", - "paddingX": "1.3125rem", - "paddingY": "0.875rem" - }, - "label": { - "fontWeight": "{fonts.fontWeight.demibold}" - } - } - }, - "card": { - "extend": { - "borderColor": "{content.borderColor}" - }, - "root": { - "background": "{content.background}", - "borderRadius": "{borderRadius.lg}", - "color": "{content.color}", - "shadow": "0 .125rem .25rem rgba(0,0,0,.075)" - }, - "body": { - "padding": "0.875rem", - "gap": "0.875rem" - }, - "caption": { - "gap": "0.21875rem" - }, - "title": { - "fontSize": "{fonts.fontSize.lg}", - "fontWeight": "{fonts.fontWeight.demibold}" - }, - "subtitle": { - "color": "{text.mutedColor}" - } - }, - "carousel": { - "colorScheme": { - "light": { - "indicator": { - "background": "{surface.300}", - "hoverBackground": "{surface.400}", - "activeBackground": "{surface.900}" - } - } - }, - "root": { - "transitionDuration": "{transitionDuration}" - }, - "content": { - "gap": "0.4375rem" - }, - "indicatorList": { - "padding": "0.875rem", - "gap": "0.4375rem" - }, - "indicator": { - "width": "0.4375rem", - "height": "0.4375rem", - "borderRadius": "{borderRadius.xl}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{rating.focusRing.shadow}" - } - } - }, - "checkbox": { - "root": { - "borderRadius": "{borderRadius.sm}", - "extend": { - "borderWidth": "0.0625rem" - }, - "width": "1.3125rem", - "height": "1.3125rem", - "background": "{formField.background}", - "checkedBackground": "{surface.900}", - "checkedHoverBackground": "{surface.800}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderPrimaryColor}", - "focusBorderColor": "{formField.focusBorderPrimaryColor}", - "checkedBorderColor": "{surface.900}", - "checkedHoverBorderColor": "{surface.800}", - "checkedFocusBorderColor": "{primary.color}", - "checkedDisabledBorderColor": "{formField.borderColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "shadow": "{formField.shadow}", - "focusRing": { - "focusRing": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - }, - "sm": { - "width": "0.875rem", - "height": "0.875rem" - }, - "lg": { - "width": "1.09375rem", - "height": "1.09375rem" - }, - "transitionDuration": "{formField.transitionDuration}" - }, - "icon": { - "size": "0.875rem", - "color": "{formField.color}", - "checkedColor": "{primary.contrastColor}", - "checkedHoverColor": "{primary.contrastColor}", - "disabledColor": "{formField.disabledColor}", - "sm": { - "size": "0.65625rem" - }, - "lg": { - "size": "1.09375rem" - } - } - }, - "chip": { - "extend": { - "borderColor": "{transparent}" - }, - "root": { - "borderRadius": "{borderRadius.sm}", - "paddingX": "0.4375rem", - "paddingY": "0.21875rem", - "gap": "0.4375rem", - "transitionDuration": "{formField.transitionDuration}" - }, - "colorScheme": { - "light": { - "root": { - "background": "{surface.200}", - "color": "{text.color}" - }, - "icon": { - "color": "{text.color}" - }, - "removeIcon": { - "color": "{text.color}" - } - } - }, - "image": { - "width": "0", - "height": "0" - }, - "icon": { - "size": "0.875rem" - }, - "removeIcon": { - "size": "0.875rem", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{primary.200}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.focusRing.shadow}" - } - } - }, - "confirmdialog": { - "extend": { - "extIcon": { - "success": "{success.500}", - "info": "{info.500}", - "help": "{help.500}", - "warn": "{warn.500}", - "danger": "{error.500}" - } - }, - "icon": { - "size": "1.3125rem", - "color": "{overlay.modal.color}" - }, - "content": { - "gap": "0" - } - }, - "confirmpopup": { - "root": { - "background": "{overlay.popover.background}", - "color": "{overlay.popover.color}", - "shadow": "{overlay.popover.shadow}", - "gutter": "10px", - "arrowOffset": "1.25rem" - }, - "content": { - "padding": "{overlay.popover.padding}", - "gap": "1rem" - }, - "icon": { - "size": "1.5rem", - "color": "{overlay.popover.color}" - }, - "footer": { - "gap": "0.5rem", - "padding": "0 {overlay.popover.padding} {overlay.popover.padding} {overlay.popover.padding}" - } - }, - "contextmenu": { - "root": { - "background": "{content.background}", - "color": "{content.color}", - "shadow": "{overlay.navigation.shadow}" - }, - "list": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - }, - "item": { - "padding": "{navigation.item.padding}", - "gap": "{navigation.item.gap}" - }, - "submenu": { - "mobileIndent": "1.25rem" - } - }, - "datatable": { - "colorScheme": { - "light": { - "root": { - "color": "{text.color}", - "borderColor": "{content.borderColor}" - }, - "header": { - "background": "{surface.50}", - "color": "{text.color}" - }, - "headerCell": { - "background": "{surface.50}", - "hoverBackground": "{surface.100}", - "color": "{text.color}" - }, - "footer": { - "background": "{surface.100}", - "color": "{text.color}" - }, - "footerCell": { - "background": "{content.hoverBackground}", - "color": "{text.color}" - }, - "row": { - "stripedBackground": "{content.hoverBackground}" - }, - "bodyCell": { - "selectedBorderColor": "{content.borderColor}" - } - } - }, - "extended": { - "extHeaderCell": { - "selectedHoverBackground": "{surface.800}" - }, - "extRow": { - "selectedHoverBackground": "{surface.800}", - "stripedHoverBackground": "{surface.100}" - } - }, - "root": { - "transitionDuration": "{transitionDuration}" - }, - "header": { - "borderColor": "{content.borderColor}", - "borderWidth": "1px 0 1px 0", - "padding": "0.875rem", - "sm": { - "padding": "0.4375rem" - }, - "lg": { - "padding": "1.09375rem" - } - }, - "headerCell": { - "selectedBackground": "{highlight.background}", - "borderColor": "{content.borderColor}", - "hoverColor": "{text.hoverColor}", - "selectedColor": "{highlight.color}", - "gap": "0.4375rem", - "padding": "0.875rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "inset {focus.ring.shadow}" - }, - "sm": { - "padding": "0.4375rem" - }, - "lg": { - "padding": "1.09375rem" - } - }, - "columnTitle": { - "fontWeight": "{fonts.fontWeight.bold}" - }, - "row": { - "background": "{content.background}", - "hoverBackground": "{content.hoverBackground}", - "selectedBackground": "{highlight.background}", - "color": "{content.color}", - "hoverColor": "{content.hoverColor}", - "selectedColor": "{highlight.color}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "inset {focus.ring.shadow}" - } - }, - "bodyCell": { - "borderColor": "{content.borderColor}", - "padding": "0.875rem", - "sm": { - "padding": "0.4375rem" - }, - "lg": { - "padding": "1.09375rem" - } - }, - "footerCell": { - "borderColor": "{content.borderColor}", - "padding": "0.875rem", - "sm": { - "padding": "0.4375rem" - }, - "lg": { - "padding": "1.09375rem" - } - }, - "columnFooter": { - "fontWeight": "{fonts.fontWeight.bold}" - }, - "dropPoint": { - "color": "{highlight.background}" - }, - "footer": { - "borderColor": "{content.borderColor}", - "borderWidth": "0 0 1px 0", - "padding": "1rem", - "sm": { - "padding": "0.5rem" - }, - "lg": { - "padding": "1.25rem" - } - }, - "columnResizer": { - "width": "0.4375rem" - }, - "resizeIndicator": { - "width": "1px", - "color": "{highlight.background}" - }, - "sortIcon": { - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "size": "0.875rem" - }, - "loadingIcon": { - "size": "1.75rem" - }, - "rowToggleButton": { - "hoverBackground": "{content.hoverBackground}", - "selectedHoverBackground": "{content.hoverBackground}", - "color": "{text.color}", - "hoverColor": "{text.color}", - "selectedHoverColor": "{text.color}", - "size": "1.75rem", - "borderRadius": "{content.borderRadius}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "filter": { - "inlineGap": "0.4375rem", - "rule": { - "borderColor": "{content.borderColor}" - }, - "constraintList": { - "padding": "{list.padding}", - "gap": "{list.gap}" - }, - "constraint": { - "focusBackground": "{list.option.focusBackground}", - "selectedBackground": "{list.option.selectedBackground}", - "selectedFocusBackground": "{list.option.selectedFocusBackground}", - "color": "{list.option.color}", - "focusColor": "{list.option.focusColor}", - "selectedColor": "{list.option.selectedColor}", - "selectedFocusColor": "{list.option.selectedFocusColor}", - "padding": "{list.option.padding}", - "borderRadius": "{list.option.borderRadius}", - "separator": { - "borderColor": "{content.borderColor}" - } - }, - "overlaySelect": { - "background": "{overlay.select.background}", - "color": "{overlay.select.color}", - "borderColor": "{overlay.select.borderColor}", - "borderRadius": "{overlay.select.borderRadius}", - "shadow": "{overlay.select.shadow}" - }, - "overlayPopover": { - "background": "{overlay.popover.background}", - "color": "{overlay.popover.color}", - "borderColor": "{overlay.select.borderColor}", - "borderRadius": "{overlay.select.borderRadius}", - "shadow": "{overlay.popover.shadow}", - "padding": "{overlay.popover.padding}", - "gap": "{list.gap}" - } - }, - "paginatorTop": { - "borderColor": "{formField.borderColor}", - "borderWidth": "0 0 1px 0" - }, - "paginatorBottom": { - "borderWidth": "0 0 1px 0", - "borderColor": "{content.borderColor}" - } - }, - "dataview": { - "root": { - "borderWidth": "1px", - "borderRadius": "4px", - "padding": "0", - "borderColor": "#ffffff" - }, - "header": { - "borderWidth": "0 0 1px 0", - "padding": "0.875rem 1.125rem", - "borderRadius": "5px 5px 0 0", - "color": "{text.color}" - }, - "content": { - "background": "{content.background}", - "color": "{content.color}", - "borderColor": "#ffffff", - "borderWidth": "0", - "padding": "0", - "borderRadius": "5px" - }, - "footer": { - "background": "{content.background}", - "color": "{content.color}", - "borderWidth": "1px 0 0 0", - "padding": "0.875rem 1.125rem", - "borderRadius": "0 0 5px 5px" - }, - "paginatorTop": { - "borderWidth": "0 0 1px 0" - }, - "paginatorBottom": { - "borderWidth": "1px 0 0 0" - } - }, - "datepicker": { - "colorScheme": { - "light": { - "dropdown": { - "background": "{content.background}", - "hoverBackground": "{navigation.item.focusBackground}", - "activeBackground": "{navigation.item.activeBackground}", - "color": "{navigation.item.color}", - "hoverColor": "{navigation.item.focusColor}", - "activeColor": "{navigation.item.activeColor}" - }, - "today": { - "background": "{content.background}", - "color": "{text.color}" - } - } - }, - "extend": { - "extDate": { - "selectedHoverBackground": "{primary.600}" - }, - "extToday": { - "borderColor": "{content.borderColor}", - "hoverBackground": "{content.hoverBackground}" - }, - "extTimePicker": { - "minWidth": "2.5rem", - "color": "{content.color}" - }, - "extTitle": { - "width": "13.125rem" - } - }, - "panel": { - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "color": "{content.color}", - "borderRadius": "{content.borderRadius}", - "shadow": "{overlay.popover.shadow}", - "padding": "{overlay.popover.padding}" - }, - "header": { - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "color": "{content.color}", - "padding": "0 0 0.5rem 0" - }, - "title": { - "gap": "0.4375rem", - "fontWeight": "{fonts.fontWeight.bold}" - }, - "selectMonth": { - "hoverBackground": "{content.hoverBackground}", - "color": "{content.color}", - "hoverColor": "{content.hoverColor}", - "borderRadius": "{content.borderRadius}", - "padding": "0.375rem 0.625rem" - }, - "dropdown": { - "width": "2.5rem", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.borderColor}", - "activeBorderColor": "{formField.borderColor}", - "borderRadius": "{formField.borderRadius}", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - }, - "sm": { - "width": "0" - }, - "lg": { - "width": "0" - } - }, - "inputIcon": { - "color": "{formField.iconColor}" - }, - "group": { - "borderColor": "{content.borderColor}", - "gap": "{overlay.popover.padding}" - }, - "selectYear": { - "hoverBackground": "{content.hoverBackground}", - "color": "{content.color}", - "hoverColor": "{content.hoverColor}", - "borderRadius": "{content.borderRadius}", - "padding": "0.375rem 0.625rem" - }, - "dayView": { - "margin": "0 0 0 0" - }, - "weekDay": { - "padding": "0.21875rem", - "fontWeight": "{fonts.fontWeight.bold}", - "color": "{content.color}" - }, - "date": { - "hoverBackground": "{content.hoverBackground}", - "selectedBackground": "{primary.500}", - "rangeSelectedBackground": "{highlight.background}", - "color": "{content.color}", - "hoverColor": "{content.color}", - "selectedColor": "{text.extend.colorPrimaryStatic}", - "rangeSelectedColor": "{text.extend.colorSecondaryStatic}", - "width": "1.75rem", - "height": "1.75rem", - "borderRadius": "0.328125rem", - "padding": "0.21875rem", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - }, - "monthView": { - "margin": "0 0 0 0" - }, - "month": { - "padding": "0", - "borderRadius": "0" - }, - "yearView": { - "margin": "0 0 0 0" - }, - "year": { - "padding": "0", - "borderRadius": "0" - }, - "buttonbar": { - "padding": "0 0 0 0", - "borderColor": "{content.borderColor}" - }, - "timePicker": { - "padding": "1.5rem 0.75rem 0.75rem 0.75rem", - "borderColor": "{content.borderColor}", - "gap": "0.4375rem", - "buttonGap": "0.21875rem" - }, - "root": { - "transitionDuration": "{transitionDuration}" - } - }, - "dialog": { - "root": { - "background": "{overlay.modal.background}", - "borderColor": "{overlay.modal.borderColor}", - "color": "{overlay.modal.color}", - "borderRadius": "{overlay.modal.borderRadius}", - "shadow": "{overlay.popover.shadow}" - }, - "header": { - "padding": "{overlay.modal.padding} {overlay.modal.padding} 1rem {overlay.modal.padding}", - "gap": "0" - }, - "title": { - "fontSize": "{fonts.fontSize.xl}", - "fontWeight": "{fonts.fontWeight.demibold}" - }, - "content": { - "padding": "1.3125rem" - }, - "footer": { - "padding": "0 {overlay.modal.padding} {overlay.modal.padding} {overlay.modal.padding}", - "gap": "0.4375rem" - } - }, - "divider": { - "root": { - "borderColor": "{content.borderColor}" - }, - "content": { - "background": "{content.background}", - "color": "{text.mutedColor}" - }, - "horizontal": { - "margin": "1rem 0", - "padding": "0 1rem", - "content": { - "padding": "0 0.5rem" - } - }, - "vertical": { - "margin": "0 1rem", - "padding": "1rem 0", - "content": { - "padding": "0.5rem 0" - } - } - }, - "drawer": { - "extend": { - "borderRadius": "{overlay.popover.borderRadius}", - "extHeader": { - "gap": "0.4375rem", - "borderColor": "{drawer.root.borderColor}" - }, - "width": "{sizingDrawer.width}" - }, - "root": { - "background": "{overlay.modal.background}", - "borderColor": "{overlay.modal.borderColor}", - "color": "{overlay.modal.color}", - "shadow": "{overlay.modal.shadow}" - }, - "header": { - "padding": "{overlay.modal.padding} {overlay.modal.padding} 14 {overlay.modal.padding} " - }, - "title": { - "fontSize": "{fonts.fontSize.xl}", - "fontWeight": "{fonts.fontWeight.demibold}" - }, - "content": { - "padding": "{overlay.modal.padding}" - }, - "footer": { - "padding": "0 {overlay.modal.padding} {overlay.modal.padding} {overlay.modal.padding} " - } - }, - "fileupload": { - "colorScheme": { - "light": { - "header": { - "background": "{surface.0}", - "color": "{text.color}" - } - } - }, - "extend": { - "extDragNdrop": { - "background": "{surface.0}", - "padding": "0.875rem", - "borderRadius": "{formField.borderRadius}", - "gap": "0.4375rem", - "info": { - "gap": "0.21875rem" - } - }, - "extContent": { - "borderRadius": "{borderRadius.md}", - "highlightBorderDefault": "{formField.borderColor}" - } - }, - "root": { - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "color": "{content.color}", - "borderRadius": "{content.borderRadius}", - "transitionDuration": "{transitionDuration}" - }, - "header": { - "borderColor": "{content.borderColor}", - "borderWidth": "0", - "padding": "0", - "borderRadius": "0", - "gap": "0.4375rem" - }, - "content": { - "highlightBorderColor": "{surface.900}", - "padding": "0", - "gap": "0.4375rem" - }, - "file": { - "padding": "0.4375rem", - "gap": "0.4375rem", - "borderColor": "{formField.borderColor}", - "info": { - "gap": "0.21875rem" - } - }, - "fileList": { - "gap": "0.4375rem" - }, - "progressbar": { - "height": "0.4375rem" - }, - "basic": { - "gap": "0.5rem" - } - }, - "floatlabel": { - "extend": { - "height": "3.5rem", - "iconSize": "{iconSizeLarge}" - }, - "root": { - "color": "{formField.floatLabelColor}", - "focusColor": "{formField.floatLabelFocusColor}", - "activeColor": "{formField.floatLabelActiveColor}", - "invalidColor": "{formField.floatLabelInvalidColor}", - "transitionDuration": "{formField.transitionDuration}", - "positionX": "{formField.paddingX}", - "positionY": "{formField.paddingY}", - "fontWeight": "{fonts.fontWeight.regular}", - "active": { - "fontSize": "{fonts.fontSize.sm}", - "fontWeight": "{fonts.fontWeight.regular}" - } - }, - "over": { - "active": { - "top": "0.5rem" - } - }, - "inside": { - "input": { - "paddingTop": "1.640625rem", - "paddingBottom": "{formField.paddingY}" - }, - "active": { - "top": "{formField.paddingY}" - } - }, - "on": { - "borderRadius": "0", - "active": { - "padding": "0 0.125rem", - "background": "#ffffff" - } - } - }, - "galleria": { - "colorScheme": { - "light": { - "thumbnailContent": { - "background": "{surface.100}" - }, - "thumbnailNavButton": { - "hoverBackground": "{colors.alpha.white.20}", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}" - }, - "indicatorButton": { - "background": "{surface.300}", - "hoverBackground": "{surface.400}" - } - } - }, - "root": { - "borderWidth": "1px", - "borderColor": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "transitionDuration": "{transitionDuration}" - }, - "navButton": { - "background": "{transparent}", - "hoverBackground": "{colors.alpha.white.20}", - "color": "{text.extend.colorInverted}", - "hoverColor": "{text.extend.colorInverted}", - "size": "3.5rem", - "gutter": "0.4375rem", - "prev": { - "borderRadius": "{navigation.item.borderRadius}" - }, - "next": { - "borderRadius": "{navigation.item.borderRadius}" - }, - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "navIcon": { - "size": "1.75rem" - }, - "thumbnailsContent": { - "padding": "0.21875rem" - }, - "thumbnailNavButton": { - "size": "1.75rem", - "borderRadius": "{content.borderRadius}", - "gutter": "0.4375rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "thumbnailNavButtonIcon": { - "size": "0.875rem" - }, - "caption": { - "background": "{colors.alpha.white.50}", - "color": "{text.color}", - "padding": "0.4375rem" - }, - "indicatorList": { - "gap": "0.4375rem", - "padding": "0.875rem" - }, - "indicatorButton": { - "width": "0.4375rem", - "height": "0.4375rem", - "activeBackground": "{surface.900}", - "borderRadius": "{content.borderRadius}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "insetIndicatorList": { - "background": "{colors.alpha.black.50}" - }, - "insetIndicatorButton": { - "background": "{colors.alpha.white.10}", - "hoverBackground": "{colors.alpha.white.20}", - "activeBackground": "{colors.alpha.white.50}" - }, - "closeButton": { - "size": "3.5rem", - "gutter": "0.4375rem", - "background": "{colors.alpha.white.10}", - "hoverBackground": "{colors.alpha.white.20}", - "color": "{text.extend.colorInverted}", - "hoverColor": "{text.extend.colorInverted}", - "borderRadius": "{borderRadius.lg}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "closeButtonIcon": { - "size": "1.75rem" - } - }, - "message": { - "colorScheme": { - "light": { - "success": { - "background": "{success.50}", - "borderColor": "{success.500}", - "color": "{text.color}", - "shadow": "none", - "outlined": { - "color": "{text.color}", - "borderColor": "{success.500}" - }, - "closeButton": { - "hoverBackground": "{success.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "{text.color}" - } - }, - "outlined": { - "root": { - "borderWidth": "0" - }, - "closeButton": { - "hoverBackground": "#ffffff", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "outlined": { - "color": "#ffffff", - "borderColor": "#ffffff" - }, - "simple": { - "color": "#ffffff" - } - }, - "simple": { - "content": { - "padding": "0" - } - }, - "warn": { - "background": "{warn.50}", - "borderColor": "{warn.500}", - "color": "{text.color}", - "shadow": "none", - "outlined": { - "color": "{text.color}", - "borderColor": "{warn.500}" - }, - "closeButton": { - "hoverBackground": "{warn.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "{text.color}" - } - }, - "error": { - "background": "{error.50}", - "borderColor": "{error.500}", - "color": "{text.color}", - "shadow": "none", - "outlined": { - "color": "{text.color}", - "borderColor": "{error.500}" - }, - "closeButton": { - "hoverBackground": "{error.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "{text.color}" - } - }, - "secondary": { - "borderColor": "#ffffff", - "shadow": "none", - "closeButton": { - "hoverBackground": "#ffffff", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "#ffffff" - }, - "outlined": { - "color": "#ffffff", - "borderColor": "#ffffff" - } - }, - "contrast": { - "borderColor": "#ffffff", - "shadow": "none", - "closeButton": { - "hoverBackground": "#ffffff", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "#ffffff" - }, - "outlined": { - "color": "#ffffff", - "borderColor": "#ffffff" - } - }, - "info": { - "background": "{info.50}", - "borderColor": "{info.500}", - "color": "{text.color}", - "shadow": "none", - "outlined": { - "color": "{text.color}", - "borderColor": "{info.500}" - }, - "closeButton": { - "hoverBackground": "{info.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - }, - "simple": { - "color": "{text.color}" - } - } - } - }, - "extend": { - "width": "{sizingMessage.width}", - "extText": { - "gap": "0.21875rem" - }, - "extInfo": { - "color": "{info.500}", - "closeButton": { - "color": "{info.500}", - "borderColor": "{info.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extAccentLine": { - "width": "0.21875rem" - }, - "extCloseButton": { - "width": "0.0625rem" - }, - "extSuccess": { - "color": "{success.500}", - "closeButton": { - "color": "{success.500}", - "borderColor": "{success.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extWarn": { - "color": "{warn.500}", - "closeButton": { - "color": "{warn.500}", - "borderColor": "{warn.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extError": { - "color": "{error.500}", - "closeButton": { - "color": "{error.500}", - "borderColor": "{error.500}" - }, - "caption": { - "color": "{text.color}" - } - } - }, - "root": { - "borderRadius": "{content.borderRadius}", - "borderWidth": "0.0625rem", - "transitionDuration": "{transitionDuration}" - }, - "content": { - "padding": "0.875rem", - "gap": "0.875rem", - "sm": { - "padding": "0.875rem" - }, - "lg": { - "padding": "0.875rem" - } - }, - "text": { - "fontSize": "{fonts.fontSize.base}", - "fontWeight": "{fonts.fontWeight.bold}", - "sm": { - "fontSize": "{fonts.fontSize.base}" - }, - "lg": { - "fontSize": "{fonts.fontSize.base}" - } - }, - "icon": { - "size": "1.96875rem", - "sm": { - "size": "1.96875rem" - }, - "lg": { - "size": "1.96875rem" - } - }, - "closeButton": { - "width": "1.75rem", - "height": "1.75rem", - "borderRadius": "0.65625rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "offset": "{focusRing.offset}" - } - }, - "closeIcon": { - "size": "0.875rem", - "sm": { - "size": "0.875rem" - }, - "lg": { - "size": "0.875rem" - } - } - }, - "inputgroup": { - "colorScheme": { - "light": { - "addon": { - "background": "{transparent}", - "borderColor": "{formField.borderColor}", - "color": "{text.mutedColor}" - } - } - }, - "addon": { - "borderRadius": "{formField.borderRadius}", - "padding": "0.65625rem", - "minWidth": "2.1875rem" - } - }, - "inputnumber": { - "colorScheme": { - "light": { - "button": { - "background": "{transparent}", - "hoverBackground": "{content.hoverBackground}", - "activeBackground": "{transparent}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.borderColor}", - "activeBorderColor": "{formField.borderColor}", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "activeColor": "{text.color}" - } - } - }, - "extend": { - "extButton": { - "height": "2.1875rem" - } - }, - "transitionDuration": { - "transitionDuration": "{formField.transitionDuration}" - }, - "button": { - "width": "2.1875rem", - "borderRadius": "{formField.borderRadius}", - "verticalPadding": "{formField.paddingY}" - } - }, - "inputotp": { - "extend": { - "height": "2.1875rem" - }, - "root": { - "gap": "0.4375rem" - }, - "input": { - "width": "2.1875rem" - }, - "sm": { - "width": "0" - }, - "lg": { - "width": "0" - } - }, - "inputtext": { - "extend": { - "readonlyBackground": "{formField.readonlyBackground}", - "iconSize": "{iconSizeMedium}", - "extXlg": { - "fontSize": "{sizingInputtext.root.fontSize}", - "paddingX": "{sizingInputtext.root.paddingX}", - "paddingY": "{sizingInputtext.root.paddingY}" - } - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "filledHoverBackground": "{formField.filledHoverBackground}", - "filledFocusBackground": "{formField.filledFocusBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "focusBorderColor": "{formField.focusBorderSecondaryColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{text.color}", - "disabledColor": "{formField.disabledColor}", - "placeholderColor": "{formField.placeholderColor}", - "invalidPlaceholderColor": "{formField.invalidPlaceholderColor}", - "shadow": "{formField.shadow}", - "paddingX": "{sizingInputtext.root.paddingX}", - "paddingY": "{sizingInputtext.root.paddingY}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}", - "sm": { - "fontSize": "{sizingInputtext.root.fontSize}", - "paddingX": "{sizingInputtext.root.paddingX}", - "paddingY": "{sizingInputtext.root.paddingY}" - }, - "lg": { - "fontSize": "{sizingInputtext.root.fontSize}", - "paddingX": "{sizingInputtext.root.paddingX}", - "paddingY": "{sizingInputtext.root.paddingY}" - }, - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - } - }, - "listbox": { - "colorScheme": { - "light": { - "option": { - "stripedBackground": "{surface.50}" - } - } - }, - "extend": { - "extOption": { - "label": { - "gap": "0.21875rem" - }, - "caption": { - "color": "{text.mutedColor}", - "stripedColor": "{text.mutedColor}" - } - } - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "borderColor": "{formField.borderColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{formField.color}", - "disabledColor": "{formField.disabledColor}", - "shadow": "{formField.shadow}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}" - }, - "list": { - "padding": "{list.padding}", - "gap": "{list.gap}", - "header": { - "padding": "{list.header.padding}" - } - }, - "option": { - "focusBackground": "{list.option.focusBackground}", - "selectedBackground": "{list.option.selectedBackground}", - "selectedFocusBackground": "{list.option.selectedFocusBackground}", - "color": "{list.option.color}", - "focusColor": "{list.option.focusColor}", - "selectedColor": "{list.option.selectedColor}", - "selectedFocusColor": "{list.option.selectedFocusColor}", - "padding": "{list.option.padding}", - "borderRadius": "{list.option.borderRadius}" - }, - "optionGroup": { - "background": "{list.optionGroup.background}", - "color": "{list.optionGroup.color}", - "fontWeight": "{fonts.fontWeight.demibold}", - "padding": "{list.option.padding}" - }, - "checkmark": { - "color": "{list.option.color}", - "gutterStart": "-0.5rem", - "gutterEnd": "0.5rem" - }, - "emptyMessage": { - "padding": "{list.option.padding}" - } - }, - "megamenu": { - "colorScheme": { - "light": { - "root": { - "background": "{transparent}" - } - } - }, - "extend": { - "extItem": { - "caption": { - "color": "{text.mutedColor}", - "gap": "0.21875rem" - } - } - }, - "root": { - "borderColor": "{transparent}", - "borderRadius": "{content.borderRadius}", - "color": "{content.color}", - "gap": "0.21875rem", - "transitionDuration": "{transitionDuration}", - "verticalOrientation": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - }, - "horizontalOrientation": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - } - }, - "baseItem": { - "borderRadius": "{content.borderRadius}", - "padding": "{navigation.item.padding}" - }, - "item": { - "focusBackground": "{navigation.item.focusBackground}", - "activeBackground": "{navigation.item.activeBackground}", - "color": "{navigation.item.color}", - "focusColor": "{navigation.item.focusColor}", - "activeColor": "{navigation.item.activeColor}", - "padding": "{navigation.item.padding}", - "borderRadius": "{navigation.item.borderRadius}", - "gap": "{navigation.item.gap}", - "icon": { - "color": "{navigation.item.icon.color}", - "focusColor": "{navigation.item.icon.focusColor}", - "activeColor": "{navigation.item.icon.activeColor}" - } - }, - "overlay": { - "padding": "0.21875rem", - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "color": "{content.color}", - "shadow": "{overlay.navigation.shadow}", - "gap": "0" - }, - "submenu": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - }, - "submenuLabel": { - "padding": "{navigation.submenuLabel.padding}", - "background": "{navigation.submenuLabel.background}", - "color": "{navigation.submenuLabel.color}", - "Number": "{fonts.fontWeight.demibold}" - }, - "submenuIcon": { - "size": "{navigation.submenuIcon.size}", - "color": "{navigation.submenuIcon.color}", - "focusColor": "{navigation.submenuIcon.focusColor}", - "activeColor": "{navigation.submenuIcon.activeColor}" - }, - "separator": { - "borderColor": "{content.borderColor}" - }, - "mobileButton": { - "borderRadius": "{navigation.item.borderRadius}", - "size": "1.75rem", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "hoverBackground": "{content.hoverBackground}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - } - }, - "menu": { - "extend": { - "paddingX": "0.21875rem", - "paddingY": "0.21875rem", - "extItem": { - "caption": { - "color": "{text.mutedColor}", - "gap": "0.21875rem" - } - } - }, - "root": { - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "color": "{content.color}", - "borderRadius": "{content.borderRadius}", - "shadow": "{overlay.navigation.shadow}", - "transitionDuration": "{transitionDuration}" - }, - "list": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - }, - "item": { - "focusBackground": "{navigation.item.focusBackground}", - "color": "{navigation.item.color}", - "focusColor": "{navigation.item.focusColor}", - "padding": "{navigation.item.padding}", - "borderRadius": "{navigation.item.borderRadius}", - "gap": "{navigation.item.gap}", - "icon": { - "color": "{navigation.item.icon.color}", - "focusColor": "{navigation.item.icon.focusColor}" - } - }, - "submenuLabel": { - "padding": "{navigation.submenuLabel.padding}", - "fontWeight": "{fonts.fontWeight.demibold}", - "background": "{navigation.submenuLabel.background}", - "color": "{navigation.submenuLabel.color}" - }, - "separator": { - "borderColor": "{content.borderColor}" - } - }, - "menubar": { - "extend": { - "extItem": { - "caption": { - "color": "{text.mutedColor}", - "gap": "0.21875rem" - } - }, - "extSubmenuLabel": { - "padding": "{navigation.submenuLabel.padding}", - "fontWeight": "{fonts.fontWeight.demibold}", - "background": "{navigation.submenuLabel.background}", - "color": "{navigation.submenuLabel.color}" - } - }, - "colorScheme": { - "light": { - "root": { - "background": "{transparent}" - } - } - }, - "root": { - "borderColor": "{transparent}", - "borderRadius": "{navigation.item.borderRadius}", - "color": "{content.color}", - "gap": "0.21875rem", - "padding": "{navigation.list.padding}", - "transitionDuration": "{transitionDuration}" - }, - "baseItem": { - "borderRadius": "{navigation.item.borderRadius}", - "padding": "0.5rem 0.75rem" - }, - "item": { - "focusBackground": "{navigation.item.focusBackground}", - "activeBackground": "{navigation.item.activeBackground}", - "color": "{navigation.item.color}", - "focusColor": "{navigation.item.focusColor}", - "activeColor": "{navigation.item.activeColor}", - "padding": "{navigation.item.padding}", - "borderRadius": "{navigation.item.borderRadius}", - "gap": "{navigation.item.gap}", - "icon": { - "color": "{navigation.item.icon.color}", - "focusColor": "{navigation.item.icon.focusColor}", - "activeColor": "{navigation.item.icon.activeColor}" - } - }, - "submenu": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}", - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "shadow": "{overlay.navigation.shadow}", - "mobileIndent": "0.65625rem", - "icon": { - "size": "{navigation.submenuIcon.size}", - "color": "{navigation.submenuIcon.color}", - "focusColor": "{navigation.submenuIcon.focusColor}", - "activeColor": "{navigation.submenuIcon.activeColor}" - } - }, - "separator": { - "borderColor": "{content.borderColor}" - }, - "mobileButton": { - "borderRadius": "{navigation.item.borderRadius}", - "size": "1.75rem", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "hoverBackground": "{content.hoverBackground}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - } - }, - "metergroup": { - "extend": { - "extLabel": { - "color": "{text.mutedColor}" - } - }, - "root": { - "borderRadius": "{content.borderRadius}", - "gap": "0.65625rem" - }, - "meters": { - "size": "0.4375rem", - "background": "{content.borderColor}" - }, - "label": { - "gap": "0.4375rem" - }, - "labelMarker": { - "size": "0.4375rem" - }, - "labelIcon": { - "size": "0.875rem" - }, - "labelList": { - "verticalGap": "0.4375rem", - "horizontalGap": "0.65625rem" - } - }, - "multiselect": { - "extend": { - "paddingX": "0.3125rem", - "paddingY": "0.3125rem" - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "filledHoverBackground": "{formField.filledHoverBackground}", - "filledFocusBackground": "{formField.filledFocusBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "focusBorderColor": "{formField.focusBorderSecondaryColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{formField.color}", - "disabledColor": "{formField.disabledColor}", - "placeholderColor": "{formField.placeholderColor}", - "invalidPlaceholderColor": "{formField.invalidPlaceholderColor}", - "shadow": "{formField.shadow}", - "paddingX": "{formField.paddingX}", - "paddingY": "{formField.paddingY}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}", - "sm": { - "fontSize": "{formField.sm.fontSize}", - "paddingX": "{formField.sm.paddingY}", - "paddingY": "{formField.sm.paddingY}" - }, - "lg": { - "fontSize": "{formField.lg.fontSize}", - "paddingX": "{formField.lg.paddingX}", - "paddingY": "{formField.lg.paddingY}" - }, - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - }, - "dropdown": { - "width": "0.75rem", - "color": "{formField.iconColor}" - }, - "overlay": { - "background": "{datatable.filter.overlaySelect.background}", - "borderColor": "{overlay.select.borderColor}", - "borderRadius": "{datatable.filter.overlaySelect.borderRadius}", - "color": "{datatable.filter.overlaySelect.color}", - "shadow": "{overlay.select.shadow}" - }, - "readonlyBackground": "{formField.readonlyBackground}", - "list": { - "padding": "{list.padding}", - "header": { - "padding": "{list.header.padding}" - }, - "gap": "{list.gap}" - }, - "option": { - "focusBackground": "{list.option.focusBackground}", - "selectedBackground": "{list.option.selectedBackground}", - "selectedFocusBackground": "{list.option.selectedFocusBackground}", - "color": "{list.option.color}", - "focusColor": "{list.option.focusColor}", - "selectedColor": "{list.option.selectedColor}", - "selectedFocusColor": "{list.option.selectedFocusColor}", - "padding": "{list.option.padding}", - "borderRadius": "{list.option.borderRadius}", - "gap": "0.4375rem" - }, - "optionGroup": { - "background": "{list.optionGroup.background}", - "color": "{list.optionGroup.color}", - "fontWeight": "{fonts.fontWeight.demibold}", - "padding": "{list.optionGroup.padding}" - }, - "clearIcon": { - "color": "{formField.iconColor}" - }, - "chip": { - "borderRadius": "{borderRadius.sm}" - }, - "emptyMessage": { - "padding": "{list.option.padding}" - } - }, - "paginator": { - "root": { - "padding": "0 0.5rem", - "gap": "0.4375rem", - "borderRadius": "{content.borderRadius}", - "background": "{transparent}", - "color": "{content.color}", - "transitionDuration": "{transitionDuration}" - }, - "currentPageReport": { - "color": "{text.mutedColor}" - }, - "navButton": { - "background": "{transparent}", - "hoverBackground": "{content.hoverBackground}", - "selectedBackground": "{highlight.background}", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}", - "selectedColor": "{text.extend.colorInverted}", - "width": "2.1875rem", - "height": "2.1875rem", - "borderRadius": "{content.borderRadius}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "focus": "{focusRing.shadow}" - } - }, - "jumpToPageInput": { - "maxWidth": "4.375rem" - } - }, - "panelmenu": { - "extend": { - "extPanel": { - "gap": "0.21875rem" - }, - "extItem": { - "activeBackground": "{navigation.item.activeBackground}", - "activeColor": "{navigation.item.activeColor}", - "caption": { - "color": "{text.mutedColor}", - "gap": "0.21875rem" - } - } - }, - "root": { - "gap": "0.21875rem", - "transitionDuration": "{transitionDuration}" - }, - "panel": { - "background": "{transparent}", - "borderColor": "{transparent}", - "borderWidth": "0.0625rem", - "color": "{content.color}", - "padding": "0.21875rem", - "borderRadius": "{content.borderRadius}", - "first": { - "borderWidth": "1px 1px 0 1px", - "topBorderRadius": "{content.borderRadius}" - }, - "last": { - "borderWidth": "0 1px 1px 1px", - "topBorderRadius": "{content.borderRadius}" - } - }, - "item": { - "focusBackground": "{navigation.item.focusBackground}", - "color": "{navigation.item.color}", - "focusColor": "{navigation.item.focusColor}", - "gap": "0.4375rem", - "padding": "{navigation.item.padding}", - "borderRadius": "{navigation.item.borderRadius}", - "icon": { - "color": "{navigation.item.icon.color}", - "focusColor": "{navigation.item.icon.focusColor}" - } - }, - "submenu": { - "indent": "0.65625rem" - }, - "separator": { - "borderColor": "{content.borderColor}" - }, - "submenuIcon": { - "color": "{navigation.submenuIcon.color}", - "focusColor": "{navigation.submenuIcon.focusColor}" - } - }, - "password": { - "colorScheme": { - "light": { - "strength": { - "weakBackground": "{error.500}", - "mediumBackground": "{warn.500}", - "strongBackground": "{success.600}" - } - } - }, - "meter": { - "background": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "height": "0.4375rem" - }, - "icon": { - "color": "{text.color}" - }, - "overlay": { - "background": "{overlay.popover.background}", - "borderColor": "{overlay.popover.borderColor}", - "borderRadius": "{overlay.popover.borderRadius}", - "color": "{overlay.popover.color}", - "padding": "{overlay.popover.padding}", - "shadow": "{overlay.popover.shadow}" - }, - "content": { - "gap": "0.4375rem" - } - }, - "popover": { - "root": { - "background": "{overlay.popover.background}", - "borderColor": "{datatable.filter.overlayPopover.borderColor}", - "color": "{overlay.popover.color}", - "borderRadius": "{overlay.popover.borderRadius}", - "shadow": "{overlay.popover.shadow}", - "gutter": "0.21875rem", - "arrowOffset": "1.25rem" - }, - "content": { - "padding": "{overlay.popover.padding}" - } - }, - "progressbar": { - "label": { - "color": "{text.extend.colorPrimaryStatic}", - "fontSize": "{fonts.fontSize.xs}", - "fontWeight": "{fonts.fontWeight.regular}" - }, - "root": { - "background": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "height": "0.875rem" - }, - "value": { - "background": "{primary.color}" - } - }, - "progressspinner": { - "colorScheme": { - "light": { - "root": { - "colorOne": "{success.500}", - "colorTwo": "{info.500}", - "colorThree": "{error.500}", - "colorFour": "{warn.500}" - } - } - } - }, - "radiobutton": { - "root": { - "width": "1.3125rem", - "height": "1.3125rem", - "background": "{formField.background}", - "checkedBackground": "{surface.900}", - "checkedHoverBackground": "{surface.800}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderPrimaryColor}", - "focusBorderColor": "{formField.borderColor}", - "checkedBorderColor": "{surface.900}", - "checkedHoverBorderColor": "{formField.hoverBorderPrimaryColor}", - "checkedFocusBorderColor": "{formField.focusBorderPrimaryColor}", - "checkedDisabledBorderColor": "{formField.borderColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "shadow": "{formField.shadow}", - "transitionDuration": "{formField.transitionDuration}" - }, - "focusRing": { - "width": "0.21875rem", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{formField.focusRing.shadow}" - }, - "sm": { - "width": "0.875rem", - "height": "0.875rem" - }, - "lg": { - "width": "1.09375rem", - "height": "1.09375rem" - }, - "icon": { - "size": "0.75rem", - "checkedColor": "{text.extend.colorInverted}", - "checkedHoverColor": "{text.extend.colorInverted}", - "disabledColor": "{text.mutedColor}", - "sm": { - "size": "0" - }, - "lg": { - "size": "0" - } - } - }, - "rating": { - "root": { - "gap": "0.4375rem", - "transitionDuration": "{formField.transitionDuration}" - }, - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - }, - "icon": { - "size": "1.3125rem", - "color": "{surface.500}", - "hoverColor": "{warn.500}", - "activeColor": "{warn.500}" - } - }, - "ripple": { - "colorScheme": { - "light": { - "root": { - "background": "rgba(255, 255, 255, 0.0100)" - } - } - } - }, - "scrollpanel": { - "colorScheme": { - "light": { - "bar": { - "background": "{surface.300}" - } - } - }, - "root": { - "transitionDuration": "{transitionDuration}" - }, - "bar": { - "size": "0.4375rem", - "borderRadius": "{borderRadius.sm}", - "focusRing": { - "width": "0", - "style": "{focusRing.style}", - "color": "#ffffff", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - } - }, - "select": { - "extend": { - "extOption": { - "background": "{list.option.background}", - "gap": "0.4375rem" - }, - "extOptionGroup": { - "gap": "0.4375rem" - }, - "readonlyBackground": "{formField.readonlyBackground}" - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "filledHoverBackground": "{formField.filledHoverBackground}", - "filledFocusBackground": "{formField.filledFocusBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "focusBorderColor": "{formField.focusBorderSecondaryColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{text.color}", - "disabledColor": "{formField.disabledColor}", - "placeholderColor": "{formField.placeholderColor}", - "invalidPlaceholderColor": "{formField.invalidPlaceholderColor}", - "shadow": "{formField.shadow}", - "paddingX": "{sizingSelect.root.paddingX}", - "paddingY": "{sizingSelect.root.paddingY}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}", - "sm": { - "fontSize": "{sizingSelect.root.fontSize}", - "paddingX": "{sizingSelect.root.paddingX}", - "paddingY": "{sizingSelect.root.paddingY}" - }, - "lg": { - "fontSize": "{sizingSelect.root.fontSize}", - "paddingX": "{sizingSelect.root.paddingX}", - "paddingY": "{sizingSelect.root.paddingY}" - }, - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - }, - "dropdown": { - "width": "2.5rem", - "color": "{formField.iconColor}" - }, - "overlay": { - "background": "{overlay.select.background}", - "borderColor": "{overlay.select.borderColor}", - "borderRadius": "{overlay.select.borderRadius}", - "color": "{overlay.select.color}", - "shadow": "{overlay.select.shadow}" - }, - "list": { - "padding": "{list.padding}", - "gap": "{list.gap}", - "header": { - "padding": "{list.header.padding}" - } - }, - "option": { - "focusBackground": "{list.option.focusBackground}", - "selectedBackground": "{list.option.selectedBackground}", - "selectedFocusBackground": "{list.option.selectedFocusBackground}", - "color": "{list.option.color}", - "focusColor": "{list.option.focusColor}", - "selectedColor": "{list.option.selectedColor}", - "selectedFocusColor": "{list.option.selectedFocusColor}", - "padding": "{list.option.padding}", - "borderRadius": "{list.option.borderRadius}" - }, - "optionGroup": { - "background": "{list.optionGroup.background}", - "color": "{list.optionGroup.color}", - "fontWeight": "{fonts.fontWeight.demibold}", - "padding": "{list.option.padding}" - }, - "clearIcon": { - "color": "{formField.iconColor}" - }, - "checkmark": { - "color": "{list.option.color}", - "gutterStart": "-0.5rem", - "gutterEnd": "0.5rem" - }, - "emptyMessage": { - "padding": "{list.option.padding}" - } - }, - "selectbutton": { - "colorScheme": { - "light": { - "root": { - "invalidBorderColor": "{formField.invalidBorderColor}" - } - } - }, - "extend": { - "background": "{surface.200}" - }, - "root": { - "borderRadius": "{borderRadius.rounded}" - } - }, - "skeleton": { - "colorScheme": { - "light": { - "root": { - "background": "{surface.200}", - "animationBackground": "{surface.100}" - } - } - }, - "root": { - "borderRadius": "{content.borderRadius}" - } - }, - "slider": { - "colorScheme": { - "light": { - "handle": { - "content": { - "background": "{surface.0}" - } - } - } - }, - "root": { - "transitionDuration": "{formField.transitionDuration}" - }, - "track": { - "background": "{content.borderColor}", - "borderRadius": "{content.borderRadius}", - "size": "0.21875rem" - }, - "range": { - "background": "{surface.900}" - }, - "handle": { - "width": "1.09375rem", - "height": "1.09375rem", - "borderRadius": "{borderRadius.xl}", - "background": "{surface.900}", - "hoverBackground": "{surface.900}", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - }, - "content": { - "borderRadius": "{borderRadius.xl}", - "hoverBackground": "{surface.900}", - "width": "0.65625rem", - "height": "0.65625rem", - "shadow": "none" - } - } - }, - "splitter": { - "colorScheme": { - "light": { - "handle": { - "background": "{surface.900}" - } - } - }, - "gutter": { - "background": "{surface.100}" - }, - "root": { - "background": "{content.background}", - "borderColor": "{content.borderColor}", - "color": "{content.color}", - "transitionDuration": "{transitionDuration}" - }, - "handle": { - "size": "0.21875rem", - "borderRadius": "{content.borderRadius}", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - } - }, - "stepper": { - "extend": { - "extCaption": { - "gap": "0.21875rem" - }, - "extStepNumber": { - "invalidBackground": "{error.400}", - "invalidColor": "{error.900}", - "invalidBorderColor": "{error.400}" - } - }, - "root": { - "transitionDuration": "{transitionDuration}" - }, - "separator": { - "background": "{content.borderColor}", - "activeBackground": "{formField.focusBorderPrimaryColor}", - "margin": "0 0 0 1.625rem", - "size": "0.0625rem" - }, - "step": { - "padding": "0.4375rem", - "gap": "0.4375rem" - }, - "stepHeader": { - "padding": "0", - "borderRadius": "0", - "gap": "0.4375rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "stepTitle": { - "color": "{text.color}", - "activeColor": "{text.color}", - "fontWeight": "{fonts.fontWeight.regular}" - }, - "stepNumber": { - "background": "{content.background}", - "activeBackground": "{primary.color}", - "borderColor": "{content.borderColor}", - "activeBorderColor": "{primary.color}", - "color": "{text.color}", - "activeColor": "{text.extend.colorPrimaryStatic}", - "size": "1.3125rem", - "fontSize": "{fonts.fontSize.base}", - "fontWeight": "{fonts.fontWeight.bold}", - "borderRadius": "{content.borderRadius}", - "shadow": "none" - }, - "steppanels": { - "padding": "0.875rem" - }, - "steppanel": { - "background": "{content.background}", - "color": "{content.color}", - "padding": "0", - "indent": "0" - } - }, - "steps": { - "itemLink": { - "gap": "0.5rem" - }, - "itemLabel": { - "fontWeight": "{fonts.fontWeight.regular}" - }, - "itemNumber": { - "background": "{content.background}", - "size": "2.25rem", - "fontSize": "{fonts.fontSize.base}", - "fontWeight": "{fonts.fontWeight.bold}", - "borderRadius": "50%", - "shadow": "none" - } - }, - "tabs": { - "colorScheme": { - "light": { - "navButton": { - "shadow": "0px 0px 10px 50px rgba(255, 255, 255, 0.6)" - }, - "tab": { - "background": "{transparent}", - "hoverBackground": "{transparent}", - "activeBackground": "{transparent}" - } - } - }, - "root": { - "transitionDuration": "{transitionDuration}" - }, - "tablist": { - "borderWidth": "0 0 2px 0", - "background": "{transparent}", - "borderColor": "{content.borderColor}" - }, - "tab": { - "borderWidth": "0", - "borderColor": "{content.borderColor}", - "hoverBorderColor": "{content.borderColor}", - "activeBorderColor": "{formField.focusBorderPrimaryColor}", - "color": "{text.mutedColor}", - "hoverColor": "{text.color}", - "activeColor": "{text.color}", - "padding": "0.875rem", - "fontWeight": "{fonts.fontWeight.demibold}", - "margin": "0 0 -1px 0", - "gap": "0.4375rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "tabpanel": { - "background": "{transparent}", - "color": "{text.color}", - "padding": "0.875rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "navButton": { - "background": "{content.background}", - "color": "{content.color}", - "hoverColor": "{content.hoverColor}", - "width": "1.3125rem", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "activeBar": { - "height": "0.125rem", - "bottom": "-1", - "background": "{content.color}" - } - }, - "toast": { - "colorScheme": { - "light": { - "info": { - "background": "{info.50}", - "borderColor": "{info.500}", - "color": "{text.color}", - "detailColor": "{text.color}", - "shadow": "{overlay.popover.shadow}", - "closeButton": { - "hoverBackground": "{info.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - } - }, - "success": { - "background": "{success.50}", - "borderColor": "{success.500}", - "color": "{text.color}", - "detailColor": "{text.color}", - "shadow": "{overlay.popover.shadow}", - "closeButton": { - "hoverBackground": "{success.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - } - }, - "warn": { - "background": "{warn.50}", - "borderColor": "{warn.500}", - "color": "{text.color}", - "detailColor": "{text.color}", - "shadow": "{overlay.popover.shadow}", - "closeButton": { - "hoverBackground": "{warn.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - } - }, - "error": { - "background": "{error.50}", - "borderColor": "{error.500}", - "color": "{text.color}", - "detailColor": "{text.color}", - "shadow": "{overlay.popover.shadow}", - "closeButton": { - "hoverBackground": "{error.200}", - "focusRing": { - "color": "{focusRing.color}", - "shadow": "none" - } - } - }, - "secondary": { - "shadow": "{overlay.popover.shadow}" - }, - "contrast": { - "shadow": "{overlay.popover.shadow}" - } - } - }, - "extend": { - "extInfo": { - "color": "{info.500}", - "closeButton": { - "color": "{info.500}", - "borderColor": "{info.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extAccentLine": { - "width": "0.21875rem" - }, - "extCloseButton": { - "width": "0.0625rem" - }, - "extSuccess": { - "color": "{success.500}", - "closeButton": { - "color": "{success.500}", - "borderColor": "{success.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extWarn": { - "color": "{warn.500}", - "closeButton": { - "color": "{warn.500}", - "borderColor": "{warn.500}" - }, - "caption": { - "color": "{text.color}" - } - }, - "extError": { - "color": "{error.500}", - "closeButton": { - "color": "{error.500}", - "borderColor": "{error.500}" - }, - "caption": { - "color": "{text.color}" - } - } - }, - "root": { - "width": "{sizingToast.width}", - "borderWidth": "0.0625rem", - "borderRadius": "{content.borderRadius}", - "transitionDuration": "{transitionDuration}" - }, - "icon": { - "size": "1.96875rem" - }, - "content": { - "padding": "0.875rem", - "gap": "0.875rem" - }, - "text": { - "gap": "0.21875rem" - }, - "summary": { - "fontWeight": "{fonts.fontWeight.bold}", - "fontSize": "{fonts.fontSize.base}" - }, - "detail": { - "fontWeight": "{fonts.fontWeight.regular}", - "fontSize": "{fonts.fontSize.sm}" - }, - "closeButton": { - "width": "1.75rem", - "height": "1.75rem", - "borderRadius": "{borderRadius.md}", - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "offset": "{focusRing.offset}" - } - }, - "closeIcon": { - "size": "0.875rem" - } - }, - "tag": { - "colorScheme": { - "light": { - "primary": { - "background": "{primary.500}", - "color": "{text.color}" - }, - "secondary": { - "background": "{surface.200}", - "color": "{text.color}" - }, - "success": { - "background": "{success.400}", - "color": "{success.900}" - }, - "info": { - "background": "{info.300}", - "color": "{info.900}" - }, - "warn": { - "background": "{warn.300}", - "color": "{warn.900}" - }, - "danger": { - "background": "{error.300}", - "color": "{error.900}" - } - } - }, - "root": { - "fontSize": "{fonts.fontSize.xs}", - "fontWeight": "{fonts.fontWeight.regular}", - "padding": "0.285rem 0.5rem", - "gap": "0.21875rem", - "borderRadius": "{borderRadius.sm}", - "roundedBorderRadius": "{borderRadius.xl}" - }, - "icon": { - "size": "0.765625rem" - } - }, - "textarea": { - "extend": { - "readonlyBackground": "{formField.readonlyBackground}" - }, - "root": { - "background": "{formField.background}", - "disabledBackground": "{formField.disabledBackground}", - "filledBackground": "{formField.filledBackground}", - "filledHoverBackground": "{formField.filledHoverBackground}", - "filledFocusBackground": "{formField.filledFocusBackground}", - "borderColor": "{formField.borderColor}", - "hoverBorderColor": "{formField.hoverBorderSecondaryColor}", - "focusBorderColor": "{formField.focusBorderSecondaryColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "color": "{formField.color}", - "disabledColor": "{formField.disabledColor}", - "placeholderColor": "{formField.placeholderColor}", - "invalidPlaceholderColor": "{formField.invalidPlaceholderColor}", - "shadow": "{formField.shadow}", - "paddingX": "{formField.paddingX}", - "paddingY": "{formField.paddingY}", - "borderRadius": "{formField.borderRadius}", - "transitionDuration": "{formField.transitionDuration}", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - } - }, - "sm": { - "fontSize": "{fonts.fontSize.base}", - "paddingX": "{formField.sm.paddingX}", - "paddingY": "{formField.sm.paddingY}" - }, - "lg": { - "fontSize": "{fonts.fontSize.base}", - "paddingX": "{formField.lg.paddingX}", - "paddingY": "{formField.lg.paddingY}" - } - }, - "tieredmenu": { - "extend": { - "extSubmenu": { - "borderColor": "{content.borderColor}", - "background": "{content.background}" - }, - "extItem": { - "caption": { - "gap": "0.21875rem", - "color": "{text.mutedColor}" - } - } - }, - "root": { - "background": "{transparent}", - "borderColor": "{transparent}", - "color": "{content.color}", - "borderRadius": "{content.borderRadius}", - "shadow": "{overlay.navigation.shadow}", - "transitionDuration": "{transitionDuration}" - }, - "list": { - "padding": "{navigation.list.padding}", - "gap": "{navigation.list.gap}" - }, - "item": { - "focusBackground": "{navigation.item.focusBackground}", - "activeBackground": "{navigation.item.activeBackground}", - "color": "{navigation.item.color}", - "focusColor": "{navigation.item.focusColor}", - "activeColor": "{navigation.item.activeColor}", - "padding": "{navigation.item.padding}", - "borderRadius": "{navigation.item.borderRadius}", - "gap": "{navigation.item.gap}", - "icon": { - "color": "{navigation.item.icon.color}", - "focusColor": "{navigation.item.icon.focusColor}", - "activeColor": "{navigation.item.icon.activeColor}" - } - }, - "submenu": { - "mobileIndent": "0.65625rem" - }, - "separator": { - "borderColor": "{content.borderColor}" - } - }, - "timeline": { - "event": { - "minHeight": "2.65625rem" - }, - "vertical": { - "eventContent": { - "padding": "0 1rem" - } - }, - "horizontal": { - "eventContent": { - "padding": "1rem 0" - } - }, - "eventMarker": { - "size": "0.875rem", - "borderRadius": "{content.borderRadius}", - "borderWidth": "0.21875rem", - "background": "{content.background}", - "borderColor": "{primary.color}", - "content": { - "borderRadius": "{content.borderRadius}", - "size": "0.65625rem", - "background": "{transparent}", - "insetShadow": "none" - } - }, - "eventConnector": { - "color": "{content.borderColor}", - "size": "0.0625rem" - } - }, - "togglebutton": { - "colorScheme": { - "light": { - "root": { - "background": "{surface.200}" - } - } - }, - "extend": { - "gap": "0.65625rem", - "extXlg": { - "padding": "1.25rem 1.5rem", - "iconOnlyWidth": "3.5625rem" - }, - "iconOnlyWidth": "2.1875rem", - "extSm": { - "iconOnlyWidth": "1.875rem" - }, - "hoverBorderColor": "{surface.300}", - "checkedHoverColor": "{text.extend.colorInverted}", - "checkedHoverBackground": "{surface.800}", - "checkedHoverBorderColor": "{surface.800}", - "extLg": { - "iconOnlyWidth": "3.125rem" - } - }, - "root": { - "padding": "0.5rem 1rem", - "borderRadius": "{borderRadius.rounded}", - "gap": "0.4375rem", - "fontWeight": "{fonts.fontWeight.demibold}", - "hoverBackground": "{surface.300}", - "borderColor": "{surface.200}", - "color": "{text.color}", - "hoverColor": "{text.color}", - "checkedBackground": "{surface.900}", - "checkedColor": "{text.extend.colorInverted}", - "checkedBorderColor": "{surface.900}", - "disabledBackground": "{formField.disabledBackground}", - "disabledBorderColor": "{formField.disabledBackground}", - "disabledColor": "{formField.disabledColor}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{formField.focusRing.color}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - }, - "sm": { - "fontSize": "{formField.sm.fontSize}", - "padding": "0.75rem 0.25rem" - }, - "lg": { - "fontSize": "{formField.sm.fontSize}", - "padding": "1rem 1.5rem" - }, - "transitionDuration": "{formField.transitionDuration}" - }, - "icon": { - "color": "{text.color}", - "hoverColor": "{text.color}", - "checkedColor": "{text.extend.colorInverted}", - "disabledColor": "{formField.disabledColor}" - }, - "content": { - "checkedBackground": "{transparent}", - "checkedShadow": "none", - "padding": "0", - "borderRadius": "0", - "sm": { - "padding": "0" - }, - "lg": { - "padding": "0" - } - } - }, - "toggleswitch": { - "colorScheme": { - "light": { - "root": { - "background": "{surface.400}", - "hoverBackground": "{surface.500}", - "disabledBackground": "{formField.disabledBackground}", - "checkedBackground": "{surface.900}", - "checkedHoverBackground": "{surface.500}" - }, - "handle": { - "background": "{formField.backgroundHandler}", - "hoverBackground": "{formField.backgroundHandler}", - "disabledBackground": "{formField.disabledColor}", - "checkedBackground": "{surface.0}", - "checkedHoverBackground": "{surface.0}", - "color": "{text.color}", - "hoverColor": "{text.color}", - "checkedColor": "{text.color}", - "checkedHoverColor": "{text.color}" - } - } - }, - "root": { - "width": "2.1875rem", - "height": "1.3125rem", - "borderRadius": "{borderRadius.xl}", - "gap": "0.125rem", - "borderWidth": "0", - "shadow": "none", - "focusRing": { - "width": "{formField.focusRing.width}", - "style": "{formField.focusRing.style}", - "color": "{primary.200}", - "offset": "{formField.focusRing.offset}", - "shadow": "{formField.shadow}" - }, - "borderColor": "{transparent}", - "hoverBorderColor": "{transparent}", - "checkedBorderColor": "{transparent}", - "checkedHoverBorderColor": "{transparent}", - "invalidBorderColor": "{formField.invalidBorderColor}", - "transitionDuration": "{formField.transitionDuration}", - "slideDuration": "0.2s" - }, - "handle": { - "borderRadius": "6.25rem", - "size": "1.09375rem" - } - }, - "tooltip": { - "colorScheme": { - "light": { - "root": { - "background": "{surface.900}", - "color": "{text.extend.colorInverted}" - } - } - }, - "root": { - "maxWidth": "14.875rem", - "gutter": "0.21875rem", - "shadow": "{overlay.popover.shadow}", - "padding": "0.5rem 1rem", - "borderRadius": "{overlay.popover.borderRadius}" - } - }, - "tree": { - "root": { - "background": "{content.background}", - "color": "{content.color}", - "padding": "1rem", - "gap": "2px", - "indent": "1rem" - }, - "node": { - "padding": "0.375rem 0.625rem", - "color": "{text.color}", - "selectedColor": "{text.extend.colorInverted}", - "gap": "0.25rem" - }, - "nodeIcon": { - "selectedColor": "{text.extend.colorInverted}" - }, - "nodeToggleButton": { - "borderRadius": "50%", - "size": "1.75rem", - "selectedHoverBackground": "{surface.900}" - }, - "loadingIcon": { - "size": "2rem" - }, - "filter": { - "margin": "0 0 0.5rem 0" - } - }, - "overlaybadge": { - "root": { - "outline": { - "width": "0", - "color": "{transparent}" - } - } - } -} diff --git a/src/prime-preset/tokens/components.ts b/src/prime-preset/tokens/components.ts new file mode 100644 index 0000000..865adf1 --- /dev/null +++ b/src/prime-preset/tokens/components.ts @@ -0,0 +1,3716 @@ +import { buttonCss } from './components/button'; + +export default { + accordion: { + extend: { + extHeader: { + iconSize: '{controls.iconOnly.300}', + gap: '{controls.gap.100}', + }, + }, + colorScheme: { + light: { + header: { + background: '{transparent}', + hoverBackground: '{transparent}', + activeBackground: '{transparent}', + activeHoverBackground: '{transparent}', + }, + }, + }, + header: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + activeColor: '{text.color}', + activeHoverColor: '{text.hoverColor}', + borderColor: '{transparent}', + padding: '{navigation.padding.300} 0 {navigation.padding.300} 0', + fontWeight: '{fonts.fontWeight.bold}', + borderRadius: '{borderRadius.none}', + borderWidth: '{borderWidth.none}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: 'inset {focus.ring.shadow}', + }, + toggleIcon: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + activeColor: '{text.color}', + activeHoverColor: '{text.hoverColor}', + }, + last: { + bottomBorderRadius: '{borderRadius.none}', + activeBottomBorderRadius: '{borderRadius.none}', + }, + first: { + borderWidth: '{borderWidth.none}', + topBorderRadius: '{borderRadius.none}', + }, + }, + root: { + transitionDuration: '{controls.transitionDuration}', + }, + panel: { + borderWidth: + '{borderWidth.none} {borderWidth.none} {navigation.width.200} {borderWidth.none}', + borderColor: '{form.borderColor}', + }, + content: { + borderWidth: + '{content.borderWidth} {borderWidth.none} {borderWidth.none} {borderWidth.none}', + borderColor: '{transparent}', + background: '{transparent}', + color: '{text.color}', + padding: + '0 {content.padding.400} {content.padding.300} {content.padding.400}', + }, + }, + autocomplete: { + extend: { + extOption: { + gap: '{form.gap.200}', + }, + extOptionGroup: { + gap: '{form.gap.200}', + }, + }, + colorScheme: { + light: { + chip: { + focusBackground: '{chip.colorScheme.light.root.background}', + focusColor: '{chip.colorScheme.light.root.color}', + }, + dropdown: { + background: '{form.background}', + hoverBackground: '{form.background}', + activeBackground: '{form.background}', + color: '{form.color}', + hoverColor: '{form.color}', + activeColor: '{form.color}', + }, + }, + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + filledHoverBackground: '{form.filledHoverBackground}', + filledFocusBackground: '{form.filledFocusBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + focusBorderColor: '{form.focusBorderSecondaryColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{form.color}', + disabledColor: '{form.disabledColor}', + placeholderColor: '{form.placeholderColor}', + invalidPlaceholderColor: '{form.invalidPlaceholderColor}', + shadow: '0', + paddingX: '{form.padding.300}', + paddingY: '{form.padding.300}', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + focusRing: { + width: '{focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + }, + overlay: { + background: '{overlay.select.background}', + borderColor: '{overlay.select.borderColor}', + borderRadius: '{overlay.select.borderRadius}', + color: '{overlay.select.color}', + shadow: '{form.shadow}', + }, + list: { + padding: '{list.padding}', + gap: '{list.gap.100}', + }, + option: { + focusBackground: '{list.option.focusBackground}', + selectedBackground: '{list.option.selectedBackground}', + selectedFocusBackground: '{list.option.selectedFocusBackground}', + color: '{list.option.color}', + focusColor: '{list.option.focusColor}', + selectedColor: '{list.option.selectedColor}', + selectedFocusColor: '{list.option.selectedFocusColor}', + padding: '{list.option.padding}', + borderRadius: '{list.option.borderRadius}', + }, + optionGroup: { + background: '{list.optionGroup.background}', + color: '{list.optionGroup.color}', + fontWeight: '{fonts.fontWeight.demibold}', + padding: '{list.optionGroup.padding}', + }, + dropdown: { + width: '{form.width.full}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + activeBorderColor: '{form.focusBorderSecondaryColor}', + borderRadius: '{form.borderRadius.200}', + focusRing: { + width: '{focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + sm: { + width: '{form.width.200}', + }, + lg: { + width: '{form.width.400}', + }, + }, + chip: { + borderRadius: '{chip.root.borderRadius}', + }, + emptyMessage: { + padding: '{list.option.padding}', + }, + }, + avatar: { + extend: { + borderColor: '{form.borderColor}', + circle: { + borderRadius: '{media.borderRadius.max}', + }, + }, + root: { + width: '{media.size.300}', + height: '{media.size.300}', + fontSize: '{fonts.fontSize.200}', + color: '{text.extend.colorPrimaryStatic}', + background: '{primary.color}', + borderRadius: '{media.borderRadius.200}', + }, + icon: { + size: '{media.icon.size.100}', + }, + group: { + borderColor: '{content.background}', + offset: '{media.padding.300}', + }, + lg: { + width: '{media.size.400}', + height: '{media.size.400}', + fontSize: '{fonts.fontSize.300}', + icon: { + size: '{media.icon.size.100}', + }, + group: { + offset: '{media.padding.300}', + }, + }, + xl: { + width: '{media.size.500}', + height: '{media.size.500}', + icon: { + size: '{media.icon.size.200}', + }, + group: { + offset: '{media.padding.600}', + }, + fontSize: '{fonts.fontSize.500}', + }, + }, + badge: { + extend: { + extDot: { + success: { + background: '{colors.solid.green.400}', + }, + info: { + background: '{info.400}', + }, + warn: { + background: '{warn.400}', + }, + danger: { + background: '{error.400}', + }, + lg: { + size: '{feedback.width.400}', + }, + xlg: { + size: '{feedback.width.500}', + }, + }, + ext: { + padding: '0rem', + }, + }, + colorScheme: { + light: { + primary: { + color: '{text.extend.colorPrimaryStatic}', + background: '{primary.color}', + }, + secondary: { + color: '{text.extend.colorInverted}', + background: '{surface.900}', + }, + success: { + color: '{success.900}', + background: '{success.300}', + }, + info: { + color: '{info.900}', + background: '{info.300}', + }, + warn: { + color: '{warn.900}', + background: '{warn.300}', + }, + danger: { + color: '{error.900}', + background: '{error.300}', + }, + }, + }, + root: { + borderRadius: '{feedback.width.300}', + padding: '{feedback.padding.100}', + fontSize: '{fonts.fontSize.100}', + fontWeight: '{fonts.fontWeight.regular}', + minWidth: '{feedback.width.600}', + height: '{feedback.height.500}', + }, + dot: { + size: '{feedback.width.300}', + }, + sm: { + fontSize: '{fonts.fontSize.100}', + minWidth: '0rem', + height: '0rem', + }, + lg: { + fontSize: '{fonts.fontSize.100}', + minWidth: '{feedback.width.650}', + height: '{feedback.height.600}', + }, + xl: { + fontSize: '{fonts.fontSize.100}', + minWidth: '{feedback.width.700}', + height: '{feedback.height.650}', + }, + }, + breadcrumb: { + extend: { + hoverBackground: '{surface.100}', + iconSize: '{navigation.size.300}', + extItem: { + padding: '{navigation.padding.100}', + }, + }, + root: { + padding: '0rem', + background: '{transparent}', + gap: '0rem', + transitionDuration: '{form.transitionDuration}', + }, + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + item: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + borderRadius: '{navigation.borderRadius}', + gap: '{navigation.item.gap}', + icon: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + }, + }, + separator: { + color: '{text.color}', + }, + }, + button: { + extend: { + disabledBackground: '{form.disabledBackground}', + extOutlined: { + danger: { + focusBackground: '{transparent}', + }, + warn: { + focusBackground: '{transparent}', + }, + info: { + focusBackground: '{transparent}', + }, + help: { + focusBackground: '{transparent}', + }, + success: { + focusBackground: '{transparent}', + }, + }, + disabledColor: '{form.disabledColor}', + extText: { + danger: { + focusBackground: '{transparent}', + }, + warn: { + focusBackground: '{transparent}', + }, + info: { + focusBackground: '{transparent}', + }, + help: { + focusBackground: '{transparent}', + }, + success: { + focusBackground: '{transparent}', + }, + }, + extLink: { + background: '{transparent}', + colorHover: '{text.hoverColor}', + paddingX: '0rem', + paddingY: '{controls.padding.100}', + sm: { + iconOnlyWidth: '{controls.iconOnly.200}', + }, + base: { + iconOnlyWidth: '{controls.iconOnly.400}', + }, + lg: { + iconOnlyWidth: '{controls.iconOnly.500}', + }, + xlg: { + iconOnlyWidth: '{controls.iconOnly.600}', + }, + }, + extSm: { + borderRadius: '{controls.borderRadius.100}', + gap: '{controls.gap.100}', + }, + extLg: { + borderRadius: '{controls.borderRadius.200}', + gap: '{controls.gap.200}', + height: '{controls.iconOnly.850}', + }, + extXlg: { + borderRadius: '{controls.borderRadius.200}', + gap: '{controls.gap.200}', + iconOnlyWidth: '{controls.iconOnly.900}', + paddingX: '{controls.padding.600}', + paddingY: '{controls.padding.500}', + height: '{controls.iconOnly.900}', + }, + borderWidth: '{controls.width.100}', + iconSize: { + sm: '{controls.iconOnly.200}', + md: '{controls.iconOnly.300}', + lg: '{controls.iconOnly.400}', + }, + }, + colorScheme: { + light: { + root: { + primary: { + background: '{primary.color}', + hoverBackground: '{primary.hoverColor}', + activeBackground: '{primary.activeColor}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + secondary: { + background: '{surface.900}', + hoverBackground: '{surface.800}', + activeBackground: '{surface.700}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorInverted}', + hoverColor: '{text.extend.colorInverted}', + activeColor: '{text.extend.colorInverted}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + contrast: { + background: '{surface.200}', + hoverBackground: '{surface.300}', + activeBackground: '{surface.400}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.color}', + hoverColor: '{text.color}', + activeColor: '{text.color}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + info: { + background: '{info.300}', + hoverBackground: '{info.400}', + activeBackground: '{info.500}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{info.900}', + hoverColor: '{info.950}', + activeColor: '{info.900}', + }, + success: { + background: '{success.300}', + hoverBackground: '{success.400}', + activeBackground: '{success.500}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{success.900}', + hoverColor: '{success.950}', + activeColor: '{success.900}', + }, + warn: { + background: '{warn.300}', + hoverBackground: '{warn.400}', + activeBackground: '{warn.500}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{warn.900}', + hoverColor: '{warn.950}', + activeColor: '{warn.900}', + }, + help: { + background: '{help.300}', + hoverBackground: '{help.400}', + activeBackground: '{help.500}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{help.900}', + hoverColor: '{help.950}', + activeColor: '{help.900}', + }, + danger: { + background: '{error.300}', + hoverBackground: '{error.400}', + activeBackground: '{error.500}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{error.900}', + hoverColor: '{error.950}', + activeColor: '{error.900}', + }, + }, + outlined: { + primary: { + hoverBackground: '{primary.hoverBackground}', + activeBackground: '{primary.activeBackground}', + borderColor: '{primary.borderColor}', + color: '{primary.color}', + }, + success: { + hoverBackground: '{success.100}', + activeBackground: '{success.200}', + borderColor: '{success.600}', + color: '{success.600}', + }, + info: { + hoverBackground: '{info.100}', + activeBackground: '{info.200}', + borderColor: '{info.600}', + color: '{info.600}', + }, + warn: { + hoverBackground: '{warn.100}', + activeBackground: '{warn.200}', + borderColor: '{warn.600}', + color: '{warn.600}', + }, + help: { + hoverBackground: '{help.100}', + activeBackground: '{help.200}', + borderColor: '{help.600}', + color: '{help.600}', + }, + danger: { + hoverBackground: '{error.100}', + activeBackground: '{error.200}', + borderColor: '{error.600}', + color: '{error.600}', + }, + }, + text: { + primary: { + hoverBackground: '{surface.100}', + activeBackground: '{surface.200}', + color: '{text.color}', + }, + success: { + hoverBackground: '{success.100}', + activeBackground: '{success.200}', + color: '{success.600}', + }, + info: { + hoverBackground: '{info.100}', + activeBackground: '{info.200}', + color: '{info.600}', + }, + warn: { + hoverBackground: '{warn.100}', + activeBackground: '{warn.200}', + color: '{warn.600}', + }, + help: { + hoverBackground: '{help.100}', + activeBackground: '{help.200}', + color: '{help.600}', + }, + danger: { + hoverBackground: '{error.100}', + activeBackground: '{error.200}', + color: '{error.600}', + }, + }, + link: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + activeColor: '{text.mutedColor}', + }, + }, + dark: { + root: { + primary: { + background: '{primary.color}', + hoverBackground: '{primary.hoverColor}', + activeBackground: '{primary.activeColor}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + secondary: { + background: '{surface.200}', + hoverBackground: '{surface.300}', + activeBackground: '{surface.400}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{surface.950}', + hoverColor: '{surface.950}', + activeColor: '{surface.950}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + contrast: { + background: '{surface.950}', + hoverBackground: '{surface.900}', + activeBackground: '{surface.800}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{surface.0}', + hoverColor: '{surface.0}', + activeColor: '{surface.0}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + info: { + background: '{info.500}', + hoverBackground: '{info.400}', + activeBackground: '{info.300}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + }, + success: { + background: '{success.500}', + hoverBackground: '{success.400}', + activeBackground: '{success.300}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + }, + warn: { + background: '{warn.500}', + hoverBackground: '{warn.400}', + activeBackground: '{warn.300}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + }, + help: { + background: '{help.500}', + hoverBackground: '{help.400}', + activeBackground: '{help.300}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + }, + danger: { + background: '{error.500}', + hoverBackground: '{error.400}', + activeBackground: '{error.300}', + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + activeBorderColor: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + hoverColor: '{text.extend.colorPrimaryStatic}', + activeColor: '{text.extend.colorPrimaryStatic}', + }, + }, + outlined: { + primary: { + hoverBackground: '{primary.hoverBackground}', + activeBackground: '{primary.activeBackground}', + borderColor: '{primary.borderColor}', + color: '{primary.color}', + }, + success: { + hoverBackground: '{success.950}', + activeBackground: '{success.900}', + borderColor: '{success.500}', + color: '{success.500}', + }, + info: { + hoverBackground: '{info.950}', + activeBackground: '{info.900}', + borderColor: '{info.500}', + color: '{info.500}', + }, + warn: { + hoverBackground: '{warn.950}', + activeBackground: '{warn.900}', + borderColor: '{warn.500}', + color: '{warn.500}', + }, + help: { + hoverBackground: '{help.950}', + activeBackground: '{help.900}', + borderColor: '{help.500}', + color: '{help.500}', + }, + danger: { + hoverBackground: '{error.950}', + activeBackground: '{error.900}', + borderColor: '{error.500}', + color: '{error.500}', + }, + }, + text: { + primary: { + hoverBackground: '{surface.800}', + activeBackground: '{surface.700}', + color: '{text.color}', + }, + success: { + hoverBackground: '{success.950}', + activeBackground: '{success.900}', + color: '{success.500}', + }, + info: { + hoverBackground: '{info.950}', + activeBackground: '{info.900}', + color: '{info.500}', + }, + warn: { + hoverBackground: '{warn.950}', + activeBackground: '{warn.900}', + color: '{warn.500}', + }, + help: { + hoverBackground: '{help.950}', + activeBackground: '{help.900}', + color: '{help.500}', + }, + danger: { + hoverBackground: '{error.950}', + activeBackground: '{error.900}', + color: '{error.500}', + }, + }, + link: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + activeColor: '{text.mutedColor}', + }, + }, + }, + root: { + borderRadius: '{controls.borderRadius.100}', + roundedBorderRadius: '{controls.borderRadius.max}', + gap: '{controls.gap.100}', + fontSize: '{fonts.fontSize.200}', + paddingX: '{controls.padding.400}', + paddingY: '{controls.padding.200}', + iconOnlyWidth: '{controls.iconOnly.700}', + raisedShadow: 'none', + badgeSize: '{feedback.width.500}', + transitionDuration: '{controls.transitionDuration}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + offset: '{focusRing.offset}', + }, + sm: { + fontSize: '{fonts.fontSize.200}', + iconOnlyWidth: '{controls.iconOnly.600}', + paddingX: '{controls.padding.300}', + paddingY: '{controls.padding.200}', + }, + lg: { + fontSize: '{fonts.fontSize.500}', + iconOnlyWidth: '{controls.iconOnly.850}', + paddingX: '{controls.padding.600}', + paddingY: '{controls.padding.400}', + }, + label: { + fontWeight: '{fonts.fontWeight.demibold}', + }, + }, + css: buttonCss, + }, + card: { + extend: { + borderColor: '{content.borderColor}', + borderWidth: '{content.borderWidth}', + }, + root: { + background: '{content.background}', + borderRadius: '{content.gap.400}', + color: '{content.color}', + }, + body: { + padding: '{content.padding.300}', + gap: '{content.gap.400}', + }, + caption: { + gap: '{content.gap.100}', + }, + title: { + fontSize: '{fonts.fontSize.400}', + fontWeight: '{fonts.fontWeight.demibold}', + }, + subtitle: { + color: '{text.mutedColor}', + }, + }, + carousel: { + colorScheme: { + light: { + indicator: { + background: '{surface.300}', + hoverBackground: '{surface.400}', + activeBackground: '{surface.900}', + }, + }, + }, + root: { + transitionDuration: '{media.transitionDuration}', + }, + content: { + gap: '{media.gap.200}', + }, + indicatorList: { + padding: '{media.padding.400}', + gap: '{media.gap.200}', + }, + indicator: { + width: '{controls.iconOnly.100}', + height: '{controls.iconOnly.100}', + borderRadius: '{media.borderRadius.400}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + checkbox: { + root: { + borderRadius: '{form.borderRadius.100}', + extend: { + borderWidth: '{form.borderWidth}', + }, + width: '{form.size.400}', + height: '{form.size.400}', + background: '{form.background}', + checkedBackground: '{surface.900}', + checkedHoverBackground: '{surface.800}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderPrimaryColor}', + focusBorderColor: '{form.focusBorderPrimaryColor}', + checkedBorderColor: '{surface.900}', + checkedHoverBorderColor: '{surface.800}', + checkedFocusBorderColor: '{primary.color}', + checkedDisabledBorderColor: '{form.borderColor}', + invalidBorderColor: '{form.invalidBorderColor}', + shadow: '0', + focusRing: { + focusRing: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + sm: { + width: '{form.size.200}', + height: '{form.size.200}', + }, + lg: { + width: '{form.size.350}', + height: '{form.size.350}', + }, + transitionDuration: '{form.transitionDuration}', + }, + icon: { + size: '{form.icon.300}', + color: '{form.color}', + checkedColor: '{primary.contrastColor}', + checkedHoverColor: '{primary.contrastColor}', + disabledColor: '{form.disabledColor}', + sm: { + size: '{form.icon.200}', + }, + lg: { + size: '{form.icon.400}', + }, + }, + }, + chip: { + extend: { + borderColor: '{transparent}', + borderWidth: '{controls.width.100}', + }, + root: { + borderRadius: '{media.borderRadius.100}', + paddingX: '{media.padding.200}', + paddingY: '{media.padding.100}', + gap: '{media.gap.200}', + transitionDuration: '{media.transitionDuration}', + }, + colorScheme: { + light: { + root: { + background: '{surface.200}', + color: '{text.color}', + }, + icon: { + color: '{text.color}', + }, + removeIcon: { + color: '{text.color}', + }, + }, + }, + image: { + width: '0rem', + height: '0rem', + }, + icon: { + size: '{media.icon.size.100}', + }, + removeIcon: { + size: '{media.icon.size.100}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + confirmdialog: { + extend: { + extIcon: { + success: '{success.500}', + info: '{info.500}', + help: '{help.500}', + warn: '{warn.500}', + danger: '{error.500}', + }, + }, + icon: { + size: '{overlay.icon.size.200}', + color: '{overlay.modal.color}', + }, + content: { + gap: '0rem', + }, + }, + confirmpopup: { + root: { + background: '{overlay.popover.background}', + color: '{overlay.popover.color}', + shadow: '{overlay.popover.shadow}', + gutter: '{overlay.gap.300}', + arrowOffset: '{overlay.modal.padding.200}', + }, + content: { + padding: '{overlay.popover.padding.100}', + gap: '{overlay.gap.400}', + }, + icon: { + size: '{overlay.icon.size.200}', + color: '{overlay.popover.color}', + }, + footer: { + gap: '{overlay.gap.200}', + padding: + '0 {overlay.popover.padding} {overlay.popover.padding} {overlay.popover.padding}', + }, + }, + contextmenu: { + root: { + background: '{content.background}', + color: '{content.color}', + shadow: '{navigation.shadow}', + }, + list: { + padding: '{navigation.list.padding.md} 0', + gap: '{navigation.list.gap}', + }, + item: { + padding: '{navigation.item.padding}', + gap: '{navigation.item.gap}', + }, + submenu: { + mobileIndent: '{navigation.submenu.padding}', + }, + }, + datatable: { + colorScheme: { + light: { + root: { + color: '{text.color}', + borderColor: '{content.borderColor}', + }, + header: { + background: '{surface.50}', + color: '{text.color}', + }, + headerCell: { + background: '{surface.50}', + hoverBackground: '{surface.100}', + color: '{text.color}', + }, + footer: { + background: '{surface.100}', + color: '{text.color}', + }, + footerCell: { + background: '{content.hoverBackground}', + color: '{text.color}', + }, + row: { + stripedBackground: '{content.hoverBackground}', + }, + bodyCell: { + selectedBorderColor: '{content.borderColor}', + }, + }, + }, + extended: { + extHeaderCell: { + selectedHoverBackground: '{surface.800}', + }, + extRow: { + selectedHoverBackground: '{surface.800}', + stripedHoverBackground: '{surface.100}', + }, + }, + root: { + transitionDuration: '{data.transitionDuration}', + }, + header: { + borderColor: '{content.borderColor}', + borderWidth: '{data.width.100} 0 {data.width.100} 0', + padding: '{data.padding.400}', + sm: { + padding: '{data.padding.200}', + }, + lg: { + padding: '{data.padding.500}', + }, + }, + headerCell: { + selectedBackground: '{highlight.background}', + borderColor: '{content.borderColor}', + hoverColor: '{text.extend.colorInverted}', + selectedColor: '{highlight.color}', + gap: '{data.gap.200}', + padding: '{data.padding.400}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: 'inset {focus.ring.shadow}', + }, + sm: { + padding: '{data.padding.200}', + }, + lg: { + padding: '{data.padding.500}', + }, + }, + columnTitle: { + fontWeight: '{fonts.fontWeight.bold}', + }, + row: { + background: '{content.background}', + hoverBackground: '{content.hoverBackground}', + selectedBackground: '{highlight.background}', + color: '{content.color}', + hoverColor: '{content.hoverColor}', + selectedColor: '{highlight.color}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: 'inset {focus.ring.shadow}', + }, + }, + bodyCell: { + borderColor: '{content.borderColor}', + padding: '{data.padding.400}', + sm: { + padding: '{data.padding.200}', + }, + lg: { + padding: '{data.padding.500}', + }, + }, + footerCell: { + borderColor: '{content.borderColor}', + padding: '{data.padding.400}', + sm: { + padding: '{data.padding.200}', + }, + lg: { + padding: '{data.padding.500}', + }, + }, + columnFooter: { + fontWeight: '{fonts.fontWeight.bold}', + }, + dropPoint: { + color: '{highlight.background}', + }, + footer: { + borderColor: '{content.borderColor}', + borderWidth: '0 0 {data.width.100} 0', + padding: '{data.padding.400}', + sm: { + padding: '{data.padding.200}', + }, + lg: { + padding: '{data.padding.500}', + }, + }, + columnResizer: { + width: '{data.width.300}', + }, + resizeIndicator: { + width: '{data.width.100}', + color: '{highlight.background}', + }, + sortIcon: { + color: '{text.color}', + hoverColor: '{text.hoverColor}', + size: '{data.icon.size.100}', + }, + loadingIcon: { + size: '{data.icon.size.500}', + }, + rowToggleButton: { + hoverBackground: '{content.hoverBackground}', + selectedHoverBackground: '{content.hoverBackground}', + color: '{text.color}', + hoverColor: '{text.color}', + selectedHoverColor: '{text.color}', + size: '{data.icon.size.500}', + borderRadius: '{content.borderRadius}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + filter: { + inlineGap: '{data.gap.200}', + rule: { + borderColor: '{content.borderColor}', + }, + constraintList: { + padding: '{list.padding}', + gap: '{list.gap.100}', + }, + constraint: { + focusBackground: '{list.option.focusBackground}', + selectedBackground: '{list.option.selectedBackground}', + selectedFocusBackground: '{list.option.selectedFocusBackground}', + color: '{list.option.color}', + focusColor: '{list.option.focusColor}', + selectedColor: '{list.option.selectedColor}', + selectedFocusColor: '{list.option.selectedFocusColor}', + padding: '{list.option.padding}', + borderRadius: '{list.option.borderRadius}', + separator: { + borderColor: '{content.borderColor}', + }, + }, + overlaySelect: { + background: '{overlay.select.background}', + color: '{overlay.select.color}', + borderColor: '{overlay.select.borderColor}', + borderRadius: '{overlay.select.borderRadius}', + shadow: '{overlay.select.shadow}', + }, + overlayPopover: { + background: '{overlay.popover.background}', + color: '{overlay.popover.color}', + borderColor: '{overlay.select.borderColor}', + borderRadius: '{overlay.select.borderRadius}', + shadow: '{overlay.popover.shadow}', + padding: '{overlay.popover.padding.100}', + gap: '{list.gap.100}', + }, + }, + paginatorTop: { + borderColor: '{form.borderColor}', + borderWidth: '0 0 {data.width.100} 0', + }, + paginatorBottom: { + borderWidth: '0 0 {data.width.100} 0', + borderColor: '{content.borderColor}', + }, + }, + dataview: { + root: { + borderWidth: '{data.width.100}', + borderRadius: '{data.borderRadius}', + padding: '0rem', + borderColor: '{content.borderColor}', + }, + header: { + borderWidth: '0 0 {data.width.100} 0', + padding: '{data.padding.200} {data.padding.300}', + borderRadius: '0 0 0 0', + color: '{text.color}', + }, + content: { + background: '{content.background}', + color: '{content.color}', + borderColor: '{content.borderColor}', + borderWidth: '0rem', + padding: '0rem', + borderRadius: '0', + }, + footer: { + background: '{surface.100}', + color: '{text.color}', + borderWidth: '{data.width.100} 0 0 0', + padding: '{data.padding.200} {data.padding.300}', + borderRadius: '0 0 0 0', + }, + paginatorTop: { + borderWidth: '0 0 {data.width.100} 0', + }, + paginatorBottom: { + borderWidth: '{data.width.100} 0 0 0', + }, + }, + datepicker: { + extend: { + extDate: { + selectedHoverBackground: '{surface.800}', + }, + extToday: { + hoverBackground: '{content.hoverBackground}', + borderColor: '{content.activeBorderColor}', + }, + extTitle: { + width: '{form.width.500}', + }, + extTimePicker: { + minWidth: '{form.width.400}', + color: '{content.color}', + }, + }, + colorScheme: { + light: { + dropdown: { + background: '{content.background}', + hoverBackground: '{navigation.item.focusBackground}', + activeBackground: '{navigation.item.activeBackground}', + color: '{navigation.item.color}', + hoverColor: '{navigation.item.focusColor}', + activeColor: '{navigation.item.activeColor}', + }, + today: { + background: '{transparent}', + color: '{text.extend.colorPrimaryStatic}', + }, + }, + }, + panel: { + background: '{content.background}', + borderColor: '{content.borderColor}', + color: '{content.color}', + borderRadius: '{content.borderRadius}', + shadow: '{overlay.popover.shadow}', + padding: '0rem', + }, + header: { + background: '{content.background}', + borderColor: '{content.borderColor}', + color: '{content.color}', + padding: '{overlay.popover.padding.100}', + }, + title: { + gap: '{form.gap.200}', + fontWeight: '{fonts.fontWeight.bold}', + }, + selectMonth: { + hoverBackground: '{content.hoverBackground}', + color: '{content.color}', + hoverColor: '{content.hoverColor}', + borderRadius: '{content.borderRadius}', + padding: '{form.padding.200}', + }, + inputIcon: { + color: '{form.floatLabelColor}', + }, + dropdown: { + width: '{form.width.300}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.borderColor}', + activeBorderColor: '{form.borderColor}', + borderRadius: '{form.borderRadius.200}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + sm: { + width: '0rem', + }, + lg: { + width: '0rem', + }, + }, + group: { + borderColor: '{content.borderColor}', + gap: '{overlay.popover.padding.100}', + }, + selectYear: { + hoverBackground: '{content.hoverBackground}', + color: '{content.color}', + hoverColor: '{content.hoverColor}', + borderRadius: '{content.borderRadius}', + padding: '{overlay.select.padding}', + }, + dayView: { + margin: '{overlay.popover.padding.100}', + }, + weekDay: { + padding: '{form.padding.100}', + fontWeight: '{fonts.fontWeight.bold}', + color: '{content.color}', + }, + date: { + hoverBackground: '{content.hoverBackground}', + selectedBackground: '{highlight.background}', + rangeSelectedBackground: '{list.option.focusBackground}', + color: '{content.color}', + hoverColor: '{content.color}', + selectedColor: '{text.extend.colorInverted}', + rangeSelectedColor: '{text.color}', + width: '{form.size.500}', + height: '{form.size.500}', + borderRadius: '{form.borderRadius.100}', + padding: '{form.padding.100}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + monthView: { + margin: '0 0 0 0', + }, + month: { + padding: '0', + borderRadius: '0rem', + }, + yearView: { + margin: '0 0 0 0', + }, + year: { + padding: '0', + borderRadius: '0rem', + }, + buttonbar: { + padding: '{overlay.popover.padding.100}', + borderColor: '{content.borderColor}', + }, + timePicker: { + padding: '{form.padding.300}', + borderColor: '{content.borderColor}', + gap: '{form.gap.200}', + buttonGap: '{form.gap.100}', + }, + root: { + transitionDuration: '{form.transitionDuration}', + }, + }, + dialog: { + extend: { + borderWidth: '{overlay.borderWidth}', + backdrop: '{overlay.modal.backdrop}', + }, + root: { + background: '{overlay.modal.background}', + borderColor: '{overlay.modal.borderColor}', + color: '{overlay.modal.color}', + borderRadius: '{overlay.modal.borderRadius}', + shadow: '{overlay.popover.shadow}', + }, + header: { + padding: + '{overlay.modal.padding.300} {overlay.modal.padding.300} 1rem {overlay.modal.padding.300}', + gap: '{overlay.gap.200}', + }, + title: { + fontSize: '{fonts.fontSize.500}', + fontWeight: '{fonts.fontWeight.demibold}', + }, + content: { + padding: '{content.padding.400}', + }, + footer: { + padding: + '0 {overlay.modal.padding.md} {overlay.modal.padding.md} {overlay.modal.padding.md}', + gap: '{content.gap.200}', + }, + }, + divider: { + colorScheme: { + light: { + content: { + background: '{content.background}', + color: '{text.mutedColor}', + }, + borderColor: '{content.borderColor}', + }, + }, + extend: { + content: { + gap: '{content.gap.200}', + }, + iconSize: '{media.icon.size.100}', + }, + horizontal: { + margin: '{content.padding.300} 0', + padding: '0 {content.padding.300}', + content: { + padding: '0 {content.padding.200}', + }, + }, + vertical: { + margin: '0 {content.padding.300}', + padding: '{content.padding.300} 0', + content: { + padding: '{content.padding.200} 0', + }, + }, + }, + drawer: { + extend: { + borderRadius: '{overlay.popover.borderRadius}', + borderWidth: '{overlay.borderWidth}', + width: '{overlay.width}', + extHeader: { + gap: '{overlay.gap.200}', + borderColor: '{drawer.root.borderColor}', + }, + padding: '{overlay.drawer.padding}', + scale: '0.125rem', + backdrop: '{overlay.modal.backdrop}', + }, + root: { + background: '{overlay.modal.background}', + borderColor: '{overlay.modal.borderColor}', + color: '{overlay.modal.color}', + shadow: '{overlay.modal.shadow}', + }, + header: { + padding: + '{overlay.modal.padding.300} {overlay.modal.padding.300} {overlay.modal.padding.100} {overlay.modal.padding.300} ', + }, + title: { + fontSize: '{fonts.fontSize.500}', + fontWeight: '{fonts.fontWeight.demibold}', + }, + content: { + padding: '{overlay.modal.padding.300}', + }, + footer: { + padding: + '0 {overlay.modal.padding.300} {overlay.modal.padding.300} {overlay.modal.padding.300} ', + }, + }, + fileupload: { + extend: { + extDragNdrop: { + background: '{surface.0}', + borderRadius: '{form.borderRadius.200}', + iconSize: '{form.size.500}', + padding: '{form.padding.400}', + info: { + gap: '{form.gap.100}', + }, + }, + extFile: { + iconSize: '{form.size.350}', + }, + extContent: { + borderRadius: '{content.borderRadius}', + highlightBorderDefault: '{form.borderColor}', + }, + }, + colorScheme: { + light: { + header: { + background: '{surface.0}', + color: '{text.color}', + }, + }, + }, + root: { + background: '{content.background}', + borderColor: '{content.borderColor}', + color: '{content.color}', + borderRadius: '{content.borderRadius}', + transitionDuration: '{form.transitionDuration}', + }, + header: { + borderColor: '{content.borderColor}', + borderWidth: '0rem', + padding: '0rem', + borderRadius: '0rem', + gap: '{content.gap.200}', + }, + content: { + highlightBorderColor: '{surface.900}', + padding: '0rem', + gap: '{content.gap.200}', + }, + file: { + padding: '{content.padding.200}', + gap: '{content.gap.200}', + borderColor: '{form.borderColor}', + info: { + gap: '{content.gap.100}', + }, + }, + fileList: { + gap: '{content.gap.200}', + }, + progressbar: { + height: '{feedback.height.100}', + }, + basic: { + gap: '{content.gap.200}', + }, + }, + floatlabel: { + extend: { + height: '{form.size.800}', + iconSize: '{form.icon.400}', + }, + root: { + color: '{form.floatLabelColor}', + focusColor: '{form.floatLabelFocusColor}', + activeColor: '{form.floatLabelActiveColor}', + invalidColor: '{form.floatLabelInvalidColor}', + transitionDuration: '{form.transitionDuration}', + positionX: '{form.padding.300}', + positionY: '{form.padding.300}', + fontWeight: '{fonts.fontWeight.regular}', + active: { + fontSize: '{fonts.fontSize.100}', + fontWeight: '{fonts.fontWeight.regular}', + }, + }, + over: { + active: { + top: '{form.padding.400}', + }, + }, + inside: { + input: { + paddingTop: '{form.padding.700}', + paddingBottom: '{form.padding.300}', + }, + active: { + top: '{form.padding.300}', + }, + }, + on: { + borderRadius: '0rem', + active: { + padding: '0 {form.padding.100}', + background: '{form.background}', + }, + }, + }, + galleria: { + extend: { + backdrop: '{overlay.modal.backdrop}', + }, + colorScheme: { + light: { + thumbnailContent: { + background: '{surface.100}', + }, + thumbnailNavButton: { + hoverBackground: '{colors.alpha.white.200}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + }, + indicatorButton: { + background: '{surface.300}', + hoverBackground: '{surface.400}', + }, + }, + }, + root: { + borderWidth: '{content.borderWidth}', + borderColor: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + transitionDuration: '{media.transitionDuration}', + }, + navButton: { + background: '{transparent}', + hoverBackground: '{colors.alpha.white.200}', + color: '{text.extend.colorInverted}', + hoverColor: '{text.extend.colorInverted}', + size: '{media.size.600}', + gutter: '{media.gap.200}', + prev: { + borderRadius: '{navigation.item.borderRadius}', + }, + next: { + borderRadius: '{navigation.item.borderRadius}', + }, + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + navIcon: { + size: '{media.icon.size.300}', + }, + thumbnailsContent: { + padding: '{media.padding.100}', + }, + thumbnailNavButton: { + size: '{media.size.300}', + borderRadius: '{content.borderRadius}', + gutter: '{media.gap.200}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + thumbnailNavButtonIcon: { + size: '{media.icon.size.100}', + }, + caption: { + background: '{colors.alpha.white.500}', + color: '{text.color}', + padding: '{media.gap.200}', + }, + indicatorList: { + gap: '{media.gap.200}', + padding: '{media.padding.400}', + }, + indicatorButton: { + width: '{media.size.200}', + height: '{media.size.200}', + activeBackground: '{surface.900}', + borderRadius: '{content.borderRadius}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + insetIndicatorList: { + background: '{colors.alpha.black.500}', + }, + insetIndicatorButton: { + background: '{colors.alpha.white.100}', + hoverBackground: '{colors.alpha.white.200}', + activeBackground: '{colors.alpha.white.500}', + }, + closeButton: { + size: '{media.size.600}', + gutter: '{media.gap.200}', + background: '{colors.alpha.white.100}', + hoverBackground: '{colors.alpha.white.200}', + color: '{text.extend.colorInverted}', + hoverColor: '{text.extend.colorInverted}', + borderRadius: '{controls.borderRadius.200}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + closeButtonIcon: { + size: '{media.icon.size.300}', + }, + }, + inputgroup: { + extend: { + borderWidth: '{form.borderWidth}', + iconSize: '{form.icon.300}', + }, + colorScheme: { + light: { + addon: { + background: '{form.background}', + borderColor: '{form.borderColor}', + color: '{text.mutedColor}', + }, + }, + }, + addon: { + borderRadius: '{form.borderRadius.200}', + padding: '{form.padding.300}', + minWidth: '{form.width.300}', + }, + }, + inputnumber: { + extend: { + borderWidth: '{form.borderWidth}', + extButton: { + height: '{form.size.600}', + iconSize: '{form.icon.300}', + }, + }, + colorScheme: { + light: { + button: { + background: '{content.background}', + hoverBackground: '{content.hoverBackground}', + activeBackground: '{transparent}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.borderColor}', + activeBorderColor: '{form.borderColor}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + activeColor: '{text.color}', + }, + }, + }, + transitionDuration: { + transitionDuration: '{form.transitionDuration}', + }, + button: { + width: '{form.width.300}', + borderRadius: '{form.borderRadius.200}', + verticalPadding: '{form.padding.300}', + }, + }, + inputotp: { + extend: { + height: '{form.size.600}', + borderWidth: '{form.borderWidth}', + }, + root: { + gap: '{form.gap.200}', + }, + input: { + width: '{form.width.400}', + }, + sm: { + width: '0rem', + }, + lg: { + width: '0rem', + }, + }, + inputtext: { + extend: { + readonlyBackground: '{form.readonlyBackground}', + iconSize: '{form.icon.300}', + borderWidth: '{form.borderWidth}', + extXlg: { + fontSize: '{form.fontSize}', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + }, + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + filledHoverBackground: '{form.filledHoverBackground}', + filledFocusBackground: '{form.filledFocusBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + focusBorderColor: '{form.focusBorderSecondaryColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{text.color}', + disabledColor: '{form.disabledColor}', + placeholderColor: '{form.placeholderColor}', + invalidPlaceholderColor: '{form.invalidPlaceholderColor}', + shadow: '0', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + sm: { + fontSize: '{form.fontSize}', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + }, + lg: { + fontSize: '{form.fontSize}', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + }, + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + }, + }, + listbox: { + extend: { + extOption: { + label: { + gap: '{list.gap.100}', + }, + caption: { + color: '{text.mutedColor}', + stripedColor: '{text.mutedColor}', + }, + gap: '{list.gap.200}', + }, + }, + colorScheme: { + light: { + option: { + stripedBackground: '{surface.50}', + }, + }, + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + borderColor: '{form.borderColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{form.color}', + disabledColor: '{form.disabledColor}', + shadow: '0', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + }, + list: { + padding: '{list.padding}', + gap: '{list.gap.100}', + header: { + padding: '{list.header.padding}', + }, + }, + option: { + focusBackground: '{list.option.focusBackground}', + selectedBackground: '{list.option.selectedBackground}', + selectedFocusBackground: '{list.option.selectedFocusBackground}', + color: '{list.option.color}', + focusColor: '{list.option.focusColor}', + selectedColor: '{list.option.selectedColor}', + selectedFocusColor: '{list.option.selectedFocusColor}', + padding: '{list.option.padding}', + borderRadius: '{list.option.borderRadius}', + }, + optionGroup: { + background: '{list.optionGroup.background}', + color: '{list.optionGroup.color}', + fontWeight: '{fonts.fontWeight.demibold}', + padding: '{list.option.padding}', + }, + checkmark: { + color: '{list.option.color}', + gutterStart: '-{list.gap.200}', + gutterEnd: '{list.gap.200}', + }, + emptyMessage: { + padding: '{list.option.padding}', + }, + }, + megamenu: { + extend: { + extItem: { + caption: { + color: '{text.mutedColor}', + gap: '{content.gap.100}', + }, + }, + iconSize: '{navigation.submenuIcon.size}', + }, + colorScheme: { + light: { + root: { + background: '{transparent}', + }, + }, + }, + root: { + borderColor: '{transparent}', + borderRadius: '{content.borderRadius}', + color: '{content.color}', + gap: '{content.gap.100}', + transitionDuration: '{form.transitionDuration}', + verticalOrientation: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + }, + horizontalOrientation: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + }, + }, + baseItem: { + borderRadius: '{content.borderRadius}', + padding: '{navigation.item.padding}', + }, + item: { + focusBackground: '{navigation.item.focusBackground}', + activeBackground: '{navigation.item.activeBackground}', + color: '{navigation.item.color}', + focusColor: '{navigation.item.focusColor}', + activeColor: '{navigation.item.activeColor}', + padding: '{navigation.item.padding}', + borderRadius: '{navigation.item.borderRadius}', + gap: '{navigation.item.gap}', + icon: { + color: '{navigation.item.icon.color}', + focusColor: '{navigation.item.icon.focusColor}', + activeColor: '{navigation.item.icon.activeColor}', + }, + }, + overlay: { + padding: '{content.padding.100}', + background: '{content.background}', + borderColor: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + color: '{content.color}', + shadow: '{navigation.shadow}', + gap: '0rem', + }, + submenu: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + }, + submenuLabel: { + padding: '{navigation.submenuLabel.padding}', + background: '{navigation.submenuLabel.background}', + color: '{navigation.submenuLabel.color}', + }, + submenuIcon: { + size: '{navigation.submenuIcon.size}', + color: '{navigation.submenuIcon.color}', + focusColor: '{navigation.submenuIcon.focusColor}', + activeColor: '{navigation.submenuIcon.activeColor}', + }, + separator: { + borderColor: '{content.borderColor}', + }, + mobileButton: { + borderRadius: '{navigation.item.borderRadius}', + size: '{controls.iconOnly.600}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + hoverBackground: '{content.hoverBackground}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + menu: { + extend: { + paddingX: '0.25rem', + iconSize: '{navigation.submenuIcon.size}', + paddingY: '0.25rem', + extItem: { + caption: { + gap: '{content.gap.100}', + }, + activeBackground: '{navigation.item.activeBackground}', + activeColor: '{navigation.item.activeColor}', + }, + }, + colorScheme: { + light: { + extend: { + extItem: { + caption: { + color: '{text.mutedColor}', + }, + icon: { + activeColor: '{navigation.item.icon.activeColor}', + }, + }, + }, + root: { + background: '{content.background}', + borderColor: '{content.borderColor}', + color: '{content.color}', + }, + item: { + focusBackground: '{navigation.item.focusBackground}', + color: '{navigation.item.color}', + focusColor: '{navigation.item.focusColor}', + icon: { + color: '{navigation.item.icon.color}', + focusColor: '{navigation.item.icon.focusColor}', + }, + }, + }, + }, + root: { + borderRadius: '{content.borderRadius}', + shadow: '{navigation.shadow}', + transitionDuration: '{form.transitionDuration}', + }, + list: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + }, + submenuLabel: { + padding: '{navigation.submenuLabel.padding}', + fontWeight: '{fonts.fontWeight.demibold}', + background: '{navigation.submenuLabel.background}', + color: '{navigation.submenuLabel.color}', + }, + separator: { + borderColor: '{content.borderColor}', + }, + item: { + padding: '{navigation.item.padding}', + borderRadius: '{navigation.item.borderRadius}', + gap: '{navigation.item.gap}', + }, + }, + menubar: { + extend: { + iconSize: '{navigation.submenuIcon.size}', + extItem: { + caption: { + color: '{text.mutedColor}', + gap: '{content.padding.100}', + }, + }, + extSubmenuLabel: { + padding: '{navigation.submenuLabel.padding}', + fontWeight: '{fonts.fontWeight.demibold}', + background: '{navigation.submenuLabel.background}', + color: '{navigation.submenuLabel.color}', + }, + }, + colorScheme: { + light: { + root: { + background: '{transparent}', + }, + }, + }, + root: { + borderColor: '{transparent}', + borderRadius: '{navigation.item.borderRadius}', + color: '{content.color}', + gap: '{content.padding.100}', + padding: '{navigation.list.padding.100}', + transitionDuration: '{form.transitionDuration}', + }, + baseItem: { + borderRadius: '{navigation.item.borderRadius}', + padding: '{navigation.item.padding}', + }, + item: { + focusBackground: '{navigation.item.focusBackground}', + activeBackground: '{navigation.item.activeBackground}', + color: '{navigation.item.color}', + focusColor: '{navigation.item.focusColor}', + activeColor: '{navigation.item.activeColor}', + padding: '{navigation.item.padding}', + borderRadius: '{navigation.item.borderRadius}', + gap: '{navigation.item.gap}', + icon: { + color: '{navigation.item.icon.color}', + focusColor: '{navigation.item.icon.focusColor}', + activeColor: '{navigation.item.icon.activeColor}', + }, + }, + submenu: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + background: '{content.background}', + borderColor: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + shadow: '{navigation.shadow}', + mobileIndent: '{navigation.padding.200}', + icon: { + size: '{navigation.submenuIcon.size}', + color: '{navigation.submenuIcon.color}', + focusColor: '{navigation.submenuIcon.focusColor}', + activeColor: '{navigation.submenuIcon.activeColor}', + }, + }, + separator: { + borderColor: '{content.borderColor}', + }, + mobileButton: { + borderRadius: '{navigation.item.borderRadius}', + size: '{controls.iconOnly.600}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + hoverBackground: '{content.hoverBackground}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + message: { + extend: { + width: '{messages.width}', + extText: { + gap: '{feedback.gap.100}', + }, + extInfo: { + color: '{info.500}', + closeButton: { + color: '{info.500}', + borderColor: '{info.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extAccentLine: { + width: '{feedback.width.200}', + }, + extCloseButton: { + width: '{feedback.width.100}', + }, + extSuccess: { + color: '{success.500}', + closeButton: { + color: '{success.500}', + borderColor: '{success.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extWarn: { + color: '{warn.500}', + closeButton: { + color: '{warn.500}', + borderColor: '{warn.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extError: { + color: '{error.500}', + closeButton: { + color: '{error.500}', + borderColor: '{error.500}', + }, + caption: { + color: '{text.color}', + }, + }, + }, + colorScheme: { + light: { + success: { + background: '{success.50}', + borderColor: '{success.500}', + color: '{text.color}', + shadow: 'none', + outlined: { + color: '{text.color}', + borderColor: '{success.500}', + }, + closeButton: { + hoverBackground: '{success.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + simple: { + color: '{text.color}', + }, + }, + outlined: { + root: { + borderWidth: '0rem', + }, + closeButton: { + hoverBackground: '{transparent}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + outlined: { + color: '{transparent}', + borderColor: '{transparent}', + }, + simple: { + color: '{transparent}', + }, + }, + simple: { + content: { + padding: '0rem', + }, + }, + warn: { + background: '{warn.50}', + borderColor: '{warn.500}', + color: '{text.color}', + shadow: 'none', + outlined: { + color: '{text.color}', + borderColor: '{warn.500}', + }, + closeButton: { + hoverBackground: '{warn.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + simple: { + color: '{text.color}', + }, + }, + error: { + background: '{error.50}', + borderColor: '{error.500}', + color: '{text.color}', + shadow: 'none', + outlined: { + color: '{text.color}', + borderColor: '{error.500}', + }, + closeButton: { + hoverBackground: '{error.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + simple: { + color: '{text.color}', + }, + }, + secondary: { + borderColor: '{transparent}', + shadow: 'none', + closeButton: { + hoverBackground: '{transparent}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + simple: { + color: '{transparent}', + }, + outlined: { + color: '{transparent}', + borderColor: '{transparent}', + }, + }, + contrast: { + borderColor: '{transparent}', + shadow: 'none', + closeButton: { + hoverBackground: '{transparent}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + simple: { + color: '{transparent}', + }, + outlined: { + color: '{transparent}', + borderColor: '{transparent}', + }, + }, + info: { + background: '{info.50}', + borderColor: '{info.500}', + color: '{text.color}', + shadow: 'none', + closeButton: { + hoverBackground: '{info.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + outlined: { + color: '{text.color}', + borderColor: '{info.500}', + }, + simple: { + color: '{text.color}', + }, + }, + }, + }, + root: { + borderRadius: '{content.borderRadius}', + borderWidth: '{feedback.width.100}', + transitionDuration: '{feedback.transitionDuration}', + }, + content: { + padding: '{feedback.padding.200}', + gap: '{feedback.gap.400}', + sm: { + padding: '{feedback.padding.200}', + }, + lg: { + padding: '{feedback.padding.200}', + }, + }, + text: { + fontSize: '{fonts.fontSize.300}', + fontWeight: '{fonts.fontWeight.bold}', + sm: { + fontSize: '{fonts.fontSize.300}', + }, + lg: { + fontSize: '{fonts.fontSize.300}', + }, + }, + icon: { + size: '{feedback.icon.size.500}', + sm: { + size: '{feedback.icon.size.500}', + }, + lg: { + size: '{feedback.icon.size.500}', + }, + }, + closeButton: { + width: '{controls.iconOnly.600}', + height: '{controls.iconOnly.600}', + borderRadius: '{controls.borderRadius.100}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + offset: '{focusRing.offset}', + }, + }, + closeIcon: { + size: '{feedback.icon.size.200}', + sm: { + size: '{feedback.icon.size.200}', + }, + lg: { + size: '{feedback.icon.size.200}', + }, + }, + }, + metergroup: { + extend: { + extLabel: { + color: '{text.mutedColor}', + }, + }, + root: { + borderRadius: '{content.borderRadius}', + gap: '{feedback.gap.300}', + }, + meters: { + size: '{feedback.height.100}', + background: '{content.borderColor}', + }, + label: { + gap: '{feedback.gap.100}', + }, + labelMarker: { + size: '{feedback.icon.size.100}', + }, + labelIcon: { + size: '{feedback.icon.size.200}', + }, + labelList: { + verticalGap: '{feedback.gap.200}', + horizontalGap: '{feedback.gap.300}', + }, + }, + multiselect: { + colorScheme: { + overlay: { + background: '{overlay.select.background}', + borderColor: '{overlay.select.borderColor}', + color: '{overlay.select.color}', + }, + option: { + focusBackground: '{list.option.focusBackground}', + selectedBackground: '{list.option.selectedBackground}', + selectedFocusBackground: '{list.option.selectedFocusBackground}', + color: '{list.option.color}', + focusColor: '{list.option.focusColor}', + selectedColor: '{list.option.selectedColor}', + selectedFocusColor: '{list.option.selectedFocusColor}', + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + filledHoverBackground: '{form.filledHoverBackground}', + filledFocusBackground: '{form.filledFocusBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + focusBorderColor: '{form.focusBorderSecondaryColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{form.color}', + disabledColor: '{form.disabledColor}', + placeholderColor: '{form.placeholderColor}', + invalidPlaceholderColor: '{form.invalidPlaceholderColor}', + focusRing: { + color: '{form.focusRing.color}', + }, + }, + dropdown: { + color: '{form.floatLabelColor}', + }, + optionGroup: { + background: '{list.optionGroup.background}', + color: '{list.optionGroup.color}', + }, + clearIcon: { + color: '{form.floatLabelColor}', + }, + }, + extend: { + paddingX: '0.3571rem', + paddingY: '0.3571rem', + borderWidth: '{form.borderWidth}', + iconSize: '{form.icon.300}', + width: '{form.width}', + readonlyBackground: '{form.readonlyBackground}', + }, + root: { + shadow: '0', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + sm: { + fontSize: '{fonts.fontSize.300}', + paddingX: '{form.padding.200}', + paddingY: '{form.padding.200}', + }, + lg: { + fontSize: '{fonts.fontSize.300}', + paddingX: '{form.padding.400}', + paddingY: '{form.padding.400}', + }, + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + }, + dropdown: { + width: '{form.width.300}', + }, + overlay: { + borderRadius: '{overlay.select.borderRadius}', + shadow: '{overlay.select.shadow}', + }, + list: { + padding: '{list.padding}', + header: { + padding: '{list.header.padding}', + }, + gap: '{list.gap.100}', + }, + chip: { + borderRadius: '{form.borderRadius.100}', + }, + option: { + padding: '{list.option.padding}', + borderRadius: '{list.option.borderRadius}', + gap: '{list.gap.200}', + }, + optionGroup: { + fontWeight: '{fonts.fontWeight.demibold}', + padding: '{list.optionGroup.padding}', + }, + emptyMessage: { + padding: '{list.option.padding}', + }, + }, + paginator: { + root: { + padding: '0 {data.padding.200}', + gap: '{data.gap.200}', + borderRadius: '{content.borderRadius}', + background: '{transparent}', + color: '{content.color}', + transitionDuration: '{data.transitionDuration}', + }, + currentPageReport: { + color: '{text.mutedColor}', + }, + navButton: { + background: '{transparent}', + hoverBackground: '{content.hoverBackground}', + selectedBackground: '{highlight.background}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + selectedColor: '{text.extend.colorInverted}', + width: '{data.icon.size.700}', + height: '{data.icon.size.700}', + borderRadius: '{content.borderRadius}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + focus: '{focusRing.shadow}', + }, + }, + jumpToPageInput: { + maxWidth: '{data.width.400}', + }, + }, + panelmenu: { + extend: { + extPanel: { + gap: '{content.gap.100}', + }, + iconSize: '{navigation.submenuIcon.size}', + extItem: { + activeBackground: '{navigation.item.activeBackground}', + activeColor: '{navigation.item.activeColor}', + caption: { + color: '{text.mutedColor}', + gap: '{content.gap.100}', + }, + }, + }, + root: { + gap: '{content.gap.100}', + transitionDuration: '{form.transitionDuration}', + }, + panel: { + background: '{transparent}', + borderColor: '{transparent}', + borderWidth: '{navigation.width.100}', + color: '{content.color}', + padding: '{content.padding.100}', + borderRadius: '{content.borderRadius}', + first: { + borderWidth: + '{navigation.width.100} {navigation.width.100} 0 {navigation.width.100}', + topBorderRadius: '{content.borderRadius}', + }, + last: { + borderWidth: + '0 {navigation.width.100} {navigation.width.100} {navigation.width.100}', + topBorderRadius: '{content.borderRadius}', + }, + }, + item: { + focusBackground: '{navigation.item.focusBackground}', + color: '{navigation.item.color}', + focusColor: '{navigation.item.focusColor}', + gap: '{navigation.item.gap}', + padding: '{navigation.item.padding}', + borderRadius: '{navigation.item.borderRadius}', + icon: { + color: '{navigation.item.icon.color}', + focusColor: '{navigation.item.icon.focusColor}', + }, + }, + submenu: { + indent: '{navigation.padding.400}', + }, + separator: { + borderColor: '{content.borderColor}', + }, + submenuIcon: { + color: '{navigation.submenuIcon.color}', + focusColor: '{navigation.submenuIcon.focusColor}', + }, + }, + password: { + extend: { + borderWidth: '{form.borderWidth}', + }, + colorScheme: { + light: { + strength: { + weakBackground: '{error.500}', + mediumBackground: '{warn.500}', + strongBackground: '{success.600}', + }, + icon: { + color: '{form.placeholderColor}', + }, + }, + }, + meter: { + background: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + height: '{feedback.height.100}', + }, + overlay: { + background: '{overlay.popover.background}', + borderColor: '{overlay.popover.borderColor}', + borderRadius: '{overlay.popover.borderRadius}', + color: '{overlay.popover.color}', + padding: '{overlay.popover.padding.100}', + shadow: '{overlay.popover.shadow}', + }, + content: { + gap: '{content.gap.200}', + }, + }, + popover: { + extend: { + borderWidth: '{overlay.borderWidth}', + arrow: { + width: '{overlay.popover.width.200}', + height: '{overlay.popover.width.100}', + }, + }, + root: { + background: '{overlay.popover.background}', + borderColor: '{overlay.popover.borderColor}', + color: '{overlay.popover.color}', + borderRadius: '{overlay.popover.borderRadius}', + shadow: '{overlay.popover.shadow}', + gutter: '{overlay.gap.100}', + arrowOffset: '{overlay.popover.padding.200}', + }, + content: { + padding: '{overlay.popover.padding.100}', + }, + }, + progressbar: { + label: { + color: '{text.extend.colorPrimaryStatic}', + fontSize: '{fonts.fontSize.100}', + fontWeight: '{fonts.fontWeight.regular}', + }, + root: { + background: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + height: '{feedback.height.300}', + }, + value: { + background: '{primary.color}', + }, + }, + progressspinner: { + extend: { + small: '{feedback.width.500}', + medium: '{feedback.width.700}', + large: '{feedback.width.800}', + xlarge: '{feedback.width.900}', + }, + colorScheme: { + light: { + root: { + colorOne: '{success.500}', + colorTwo: '{info.500}', + colorThree: '{error.500}', + colorFour: '{warn.500}', + }, + }, + }, + root: { + borderWidth: '{feedback.width.200}', + }, + }, + radiobutton: { + root: { + width: '{form.size.400}', + height: '{form.size.400}', + background: '{form.background}', + checkedBackground: '{surface.900}', + checkedHoverBackground: '{surface.800}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderPrimaryColor}', + focusBorderColor: '{form.borderColor}', + checkedBorderColor: '{surface.900}', + checkedHoverBorderColor: '{form.hoverBorderPrimaryColor}', + checkedFocusBorderColor: '{form.focusBorderPrimaryColor}', + checkedDisabledBorderColor: '{form.borderColor}', + invalidBorderColor: '{form.invalidBorderColor}', + shadow: '0', + transitionDuration: '{form.transitionDuration}', + }, + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + sm: { + width: '{form.size.300}', + height: '{form.size.300}', + }, + lg: { + width: '{form.size.350}', + height: '{form.size.350}', + }, + icon: { + size: '{form.icon.200}', + checkedColor: '{text.extend.colorInverted}', + checkedHoverColor: '{text.extend.colorInverted}', + disabledColor: '{text.mutedColor}', + sm: { + size: '{form.icon.100}', + }, + lg: { + size: '{form.icon.300}', + }, + }, + }, + rating: { + root: { + gap: '{form.gap.200}', + transitionDuration: '{form.transitionDuration}', + }, + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + icon: { + size: '{form.icon.500}', + color: '{surface.500}', + hoverColor: '{warn.500}', + activeColor: '{warn.500}', + }, + }, + ripple: { + colorScheme: { + light: { + root: { + background: 'rgba(255, 255, 255, 0.0100)', + }, + }, + }, + }, + scrollpanel: { + colorScheme: { + light: { + bar: { + background: '{surface.300}', + }, + }, + }, + root: { + transitionDuration: '{media.transitionDuration}', + }, + bar: { + size: '{media.size.200}', + borderRadius: '{media.borderRadius.100}', + focusRing: { + width: '0rem', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + select: { + extend: { + extOption: { + background: '{list.option.background}', + gap: '{list.gap.200}', + }, + extOptionGroup: { + gap: '{list.gap.200}', + }, + readonlyBackground: '{form.readonlyBackground}', + borderWidth: '{form.borderWidth}', + iconSize: '{form.icon.300}', + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + filledHoverBackground: '{form.filledHoverBackground}', + filledFocusBackground: '{form.filledFocusBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + focusBorderColor: '{form.focusBorderSecondaryColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{text.color}', + disabledColor: '{form.disabledColor}', + placeholderColor: '{form.placeholderColor}', + invalidPlaceholderColor: '{form.invalidPlaceholderColor}', + shadow: '0', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + sm: { + fontSize: '{form.fontSize}', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + }, + lg: { + fontSize: '{form.fontSize}', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + }, + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + }, + dropdown: { + width: '{form.width.300}', + color: '{form.iconColor}', + }, + overlay: { + background: '{overlay.select.background}', + borderColor: '{overlay.select.borderColor}', + borderRadius: '{overlay.select.borderRadius}', + color: '{overlay.select.color}', + shadow: '{overlay.select.shadow}', + }, + list: { + padding: '{list.padding}', + gap: '{list.gap.100}', + header: { + padding: '{list.header.padding}', + }, + }, + option: { + focusBackground: '{list.option.focusBackground}', + selectedBackground: '{list.option.selectedBackground}', + selectedFocusBackground: '{list.option.selectedFocusBackground}', + color: '{list.option.color}', + focusColor: '{list.option.focusColor}', + selectedColor: '{list.option.selectedColor}', + selectedFocusColor: '{list.option.selectedFocusColor}', + padding: '{list.option.padding}', + borderRadius: '{list.option.borderRadius}', + }, + optionGroup: { + background: '{list.optionGroup.background}', + color: '{list.optionGroup.color}', + fontWeight: '{fonts.fontWeight.demibold}', + padding: '{list.option.padding}', + }, + clearIcon: { + color: '{form.iconColor}', + }, + checkmark: { + color: '{list.option.color}', + gutterStart: '-{form.padding.200}', + gutterEnd: '{form.padding.200}', + }, + emptyMessage: { + padding: '{list.option.padding}', + }, + }, + selectbutton: { + extend: { + gap: '{form.gap.100}', + paddingX: '{controls.padding.100}', + paddingY: '{controls.padding.100}', + checkedBackground: '{form.background}', + iconSize: { + sm: '{controls.iconOnly.200}', + md: '{controls.iconOnly.300}', + lg: '{controls.iconOnly.400}', + xlg: '{controls.iconOnly.500}', + }, + checkedBorderColor: '{form.background}', + checkedColor: '{form.color}', + ext: { + borderRadius: '{borderRadius.200}', + }, + }, + colorScheme: { + light: { + root: { + invalidBorderColor: '{form.invalidBorderColor}', + }, + extend: { + background: '{surface.200}', + }, + }, + }, + root: { + borderRadius: '{form.borderRadius.200}', + }, + }, + skeleton: { + extend: { + minWidth: '{feedback.width.700}', + height: '{feedback.height.650}', + }, + colorScheme: { + light: { + root: { + background: '{surface.200}', + animationBackground: '{surface.100}', + }, + }, + }, + root: { + borderRadius: '{content.borderRadius}', + }, + }, + slider: { + colorScheme: { + handle: { + content: { + background: '{surface.0}', + }, + }, + }, + root: { + transitionDuration: '{form.transitionDuration}', + }, + track: { + background: '{content.borderColor}', + borderRadius: '{content.borderRadius}', + size: '{form.size.150}', + }, + range: { + background: '{surface.900}', + }, + handle: { + width: '{form.size.350}', + height: '{form.size.350}', + borderRadius: '{form.borderRadius.300}', + background: '{surface.900}', + hoverBackground: '{surface.900}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + content: { + borderRadius: '{form.borderRadius.300}', + hoverBackground: '{surface.900}', + width: '{form.size.250}', + height: '{form.size.250}', + shadow: 'none', + }, + }, + }, + splitter: { + colorScheme: { + light: { + handle: { + background: '{surface.900}', + }, + }, + }, + gutter: { + background: '{surface.100}', + }, + root: { + background: '{content.background}', + borderColor: '{content.borderColor}', + color: '{content.color}', + transitionDuration: '{controls.transitionDuration}', + }, + handle: { + size: '{form.size.150}', + borderRadius: '{content.borderRadius}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + }, + stepper: { + extend: { + extCaption: { + gap: '{feedback.gap.100}', + }, + extStepNumber: { + invalidBackground: '{error.400}', + invalidColor: '{error.900}', + invalidBorderColor: '{error.400}', + borderWidth: '{feedback.width.100}', + iconSize: '{feedback.icon.size.300}', + }, + }, + root: { + transitionDuration: '{feedback.transitionDuration}', + }, + separator: { + background: '{content.borderColor}', + activeBackground: '{form.focusBorderPrimaryColor}', + margin: '0 0 0 1.625rem', + size: '{form.size.100}', + }, + step: { + padding: '{feedback.padding.100}', + gap: '{feedback.gap.200}', + }, + stepHeader: { + padding: '0rem', + borderRadius: '0rem', + gap: '{feedback.gap.200}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + stepTitle: { + color: '{text.color}', + activeColor: '{text.color}', + fontWeight: '{fonts.fontWeight.regular}', + }, + stepNumber: { + background: '{content.background}', + activeBackground: '{primary.color}', + borderColor: '{content.borderColor}', + activeBorderColor: '{primary.color}', + color: '{text.color}', + activeColor: '{text.extend.colorPrimaryStatic}', + size: '{form.size.400}', + fontSize: '{fonts.fontSize.300}', + fontWeight: '{fonts.fontWeight.bold}', + borderRadius: '{form.borderRadius.300}', + shadow: 'none', + }, + steppanels: { + padding: '{feedback.padding.200}', + }, + steppanel: { + background: '{content.background}', + color: '{content.color}', + padding: '0rem', + indent: '0rem', + }, + }, + steps: { + itemLink: { + gap: '{form.gap.200}', + }, + itemLabel: { + fontWeight: '{fonts.fontWeight.regular}', + }, + itemNumber: { + background: '{content.background}', + size: '{form.size.500}', + fontSize: '{fonts.fontSize.300}', + fontWeight: '{fonts.fontWeight.bold}', + borderRadius: '{form.borderRadius.300}', + shadow: 'none', + }, + }, + tabs: { + colorScheme: { + light: { + navButton: { + shadow: 'none', + }, + tab: { + background: '{transparent}', + hoverBackground: '{transparent}', + activeBackground: '{transparent}', + }, + }, + }, + root: { + transitionDuration: '{data.transitionDuration}', + }, + tablist: { + borderWidth: '0 0 {data.width.100} 0', + background: '{transparent}', + borderColor: '{content.borderColor}', + }, + tab: { + borderWidth: '0', + borderColor: '{content.borderColor}', + hoverBorderColor: '{content.borderColor}', + activeBorderColor: '{content.activeBorderColor}', + color: '{text.mutedColor}', + hoverColor: '{text.color}', + activeColor: '{text.color}', + padding: '{content.padding.300}', + fontWeight: '{fonts.fontWeight.demibold}', + margin: '0', + gap: '{content.gap.200}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + tabpanel: { + background: '{transparent}', + color: '{text.color}', + padding: '{spacing.4x}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + navButton: { + background: '{content.background}', + color: '{content.color}', + hoverColor: '{content.hoverColor}', + width: '{controls.iconOnly.400}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + }, + activeBar: { + height: '0.18rem', + bottom: '-0.18rem', + background: '{content.color}', + }, + }, + toast: { + extend: { + extInfo: { + color: '{info.500}', + closeButton: { + color: '{info.500}', + borderColor: '{info.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extAccentLine: { + width: '{feedback.width.200}', + }, + extCloseButton: { + width: '{feedback.width.100}', + }, + extSuccess: { + color: '{success.500}', + closeButton: { + color: '{success.500}', + borderColor: '{success.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extWarn: { + color: '{warn.500}', + closeButton: { + color: '{warn.500}', + borderColor: '{warn.500}', + }, + caption: { + color: '{text.color}', + }, + }, + extError: { + color: '{error.500}', + closeButton: { + color: '{error.500}', + borderColor: '{error.500}', + }, + caption: { + color: '{text.color}', + }, + }, + }, + colorScheme: { + light: { + info: { + background: '{info.50}', + borderColor: '{info.500}', + color: '{text.color}', + detailColor: '{text.color}', + shadow: '{overlay.popover.shadow}', + closeButton: { + hoverBackground: '{info.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + }, + success: { + background: '{success.50}', + borderColor: '{success.500}', + color: '{text.color}', + detailColor: '{text.color}', + shadow: '{overlay.popover.shadow}', + closeButton: { + hoverBackground: '{success.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + }, + warn: { + background: '{warn.50}', + borderColor: '{warn.500}', + color: '{text.color}', + detailColor: '{text.color}', + shadow: '{overlay.popover.shadow}', + closeButton: { + hoverBackground: '{warn.200}', + focusRing: { + color: '{focusRing.color}', + shadow: 'none', + }, + }, + }, + error: { + background: '{error.50}', + borderColor: '{error.500}', + color: '{text.color}', + detailColor: '{text.color}', + shadow: '{overlay.popover.shadow}', + closeButton: { + hoverBackground: '{error.200}', + focusRing: { + color: '{focusRing.color}', + shadow: '{focusRing.shadow}', + }, + }, + }, + secondary: { + shadow: '{overlay.popover.shadow}', + }, + contrast: { + shadow: '{overlay.popover.shadow}', + }, + }, + }, + root: { + width: '{messages.width}', + borderWidth: '{feedback.width.100}', + borderRadius: '{content.borderRadius}', + transitionDuration: '{feedback.transitionDuration}', + }, + icon: { + size: '{feedback.icon.size.500}', + }, + content: { + padding: '{feedback.padding.200}', + gap: '{feedback.gap.400}', + }, + text: { + gap: '{feedback.gap.100}', + }, + summary: { + fontWeight: '{fonts.fontWeight.bold}', + fontSize: '{fonts.fontSize.300}', + }, + detail: { + fontWeight: '{fonts.fontWeight.regular}', + fontSize: '{fonts.fontSize.200}', + }, + closeButton: { + width: '{feedback.icon.size.400}', + height: '{feedback.icon.size.400}', + borderRadius: '{controls.borderRadius.100}', + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + offset: '{focusRing.offset}', + }, + }, + closeIcon: { + size: '{feedback.icon.size.200}', + }, + }, + tag: { + colorScheme: { + light: { + primary: { + background: '{primary.selectedBackground}', + color: '{text.color}', + }, + secondary: { + background: '{surface.200}', + color: '{text.color}', + }, + success: { + background: '{success.400}', + color: '{success.900}', + }, + info: { + background: '{info.300}', + color: '{info.900}', + }, + warn: { + background: '{warn.300}', + color: '{warn.900}', + }, + danger: { + background: '{error.300}', + color: '{error.900}', + }, + }, + }, + root: { + fontSize: '{fonts.fontSize.100}', + fontWeight: '{fonts.fontWeight.regular}', + padding: '{media.padding.100} {media.padding.200}', + gap: '{media.gap.100}', + borderRadius: '{media.size.200}', + roundedBorderRadius: '{media.borderRadius.400}', + }, + icon: { + size: '{media.icon.size.100}', + }, + }, + textarea: { + extend: { + readonlyBackground: '{form.readonlyBackground}', + borderWidth: '{form.borderWidth}', + iconSize: '{form.icon.300}', + minHeight: '{form.size.900}', + }, + root: { + background: '{form.background}', + disabledBackground: '{form.disabledBackground}', + filledBackground: '{form.filledBackground}', + filledHoverBackground: '{form.filledHoverBackground}', + filledFocusBackground: '{form.filledFocusBackground}', + borderColor: '{form.borderColor}', + hoverBorderColor: '{form.hoverBorderSecondaryColor}', + focusBorderColor: '{form.focusBorderSecondaryColor}', + invalidBorderColor: '{form.invalidBorderColor}', + color: '{form.color}', + disabledColor: '{form.disabledColor}', + placeholderColor: '{form.placeholderColor}', + invalidPlaceholderColor: '{form.invalidPlaceholderColor}', + shadow: '0', + paddingX: '{form.paddingX}', + paddingY: '{form.paddingY}', + borderRadius: '{form.borderRadius.200}', + transitionDuration: '{form.transitionDuration}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + }, + sm: { + fontSize: '{fonts.fontSize.300}', + paddingX: '{form.padding.200}', + paddingY: '{form.padding.200}', + }, + lg: { + fontSize: '{fonts.fontSize.300}', + paddingX: '{form.padding.400}', + paddingY: '{form.padding.400}', + }, + }, + tieredmenu: { + extend: { + extSubmenu: { + borderColor: '{content.borderColor}', + background: '{content.background}', + }, + iconSize: '{navigation.submenuIcon.size}', + extItem: { + caption: { + gap: '{content.gap.100}', + color: '{text.mutedColor}', + }, + }, + }, + root: { + background: '{content.background}', + borderColor: '{transparent}', + color: '{content.color}', + borderRadius: '{content.borderRadius}', + shadow: '{navigation.shadow}', + transitionDuration: '{feedback.transitionDuration}', + }, + list: { + padding: '{navigation.list.padding.100}', + gap: '{navigation.list.gap}', + }, + item: { + focusBackground: '{navigation.item.focusBackground}', + activeBackground: '{navigation.item.activeBackground}', + color: '{navigation.item.color}', + focusColor: '{navigation.item.focusColor}', + activeColor: '{navigation.item.activeColor}', + padding: '{navigation.item.padding}', + borderRadius: '{navigation.item.borderRadius}', + gap: '{navigation.item.gap}', + icon: { + color: '{navigation.item.icon.color}', + focusColor: '{navigation.item.icon.focusColor}', + activeColor: '{navigation.item.icon.activeColor}', + }, + }, + submenu: { + mobileIndent: '{overlay.popover.padding.100}', + }, + separator: { + borderColor: '{content.borderColor}', + }, + }, + timeline: { + extend: { + extEvent: { + gap: '{feedback.gap.100}', + }, + }, + event: { + minHeight: '{feedback.height.900}', + }, + vertical: { + eventContent: { + padding: '0 {feedback.padding.500}', + }, + }, + horizontal: { + eventContent: { + padding: '{feedback.padding.500} 0', + }, + }, + eventMarker: { + size: '{feedback.width.500}', + borderRadius: '{content.borderRadius}', + borderWidth: '{feedback.width.200}', + background: '{content.background}', + borderColor: '{primary.color}', + content: { + borderRadius: '{content.borderRadius}', + size: '{feedback.width.400}', + background: '{transparent}', + insetShadow: 'none', + }, + }, + eventConnector: { + color: '{content.borderColor}', + size: '{feedback.width.100}', + }, + }, + togglebutton: { + extend: { + ext: { + gap: '{form.gap.300}', + }, + iconSize: { + sm: '{controls.iconOnly.200}', + md: '{controls.iconOnly.300}', + lg: '{controls.iconOnly.400}', + }, + iconOnlyWidth: '{form.size.600}', + hoverBorderColor: '{surface.300}', + checkedHoverColor: '{text.extend.colorInverted}', + checkedHoverBackground: '{surface.800}', + checkedHoverBorderColor: '{surface.800}', + extXlg: { + padding: '{form.padding.500} {form.padding.500}', + iconOnlyWidth: '4.0714rem', + }, + extSm: { + iconOnlyWidth: '2.1429rem', + }, + extLg: { + iconOnlyWidth: '3.5714rem', + }, + }, + colorScheme: { + light: { + root: { + background: '{surface.200}', + hoverBackground: '{surface.300}', + borderColor: '{surface.200}', + color: '{text.color}', + hoverColor: '{text.color}', + checkedBackground: '{surface.900}', + checkedColor: '{text.extend.colorInverted}', + checkedBorderColor: '{surface.900}', + disabledBackground: '{form.disabledBackground}', + disabledBorderColor: '{form.disabledBackground}', + disabledColor: '{form.disabledColor}', + invalidBorderColor: '{form.invalidBorderColor}', + }, + icon: { + color: '{text.color}', + hoverColor: '{text.color}', + checkedColor: '{text.extend.colorInverted}', + disabledColor: '{form.disabledColor}', + }, + content: { + checkedBackground: '{transparent}', + }, + }, + }, + root: { + padding: '{form.padding.200} {form.padding.400}', + borderRadius: '{form.borderRadius.300}', + gap: '{form.gap.200}', + fontWeight: '{fonts.fontWeight.demibold}', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '{focusRing.shadow}', + }, + sm: { + fontSize: '{fonts.fontSize.200}', + padding: '{form.padding.100} {form.padding.300}', + }, + lg: { + fontSize: '{fonts.fontSize.500}', + padding: '{form.padding.400} {form.padding.600}', + }, + transitionDuration: '{form.transitionDuration}', + }, + content: { + checkedShadow: 'none', + padding: '0rem', + borderRadius: '0rem', + sm: { + padding: '0rem', + }, + lg: { + padding: '0rem', + }, + }, + }, + toggleswitch: { + colorScheme: { + light: { + root: { + background: '{surface.400}', + hoverBackground: '{surface.500}', + disabledBackground: '{form.disabledBackground}', + checkedBackground: '{surface.900}', + checkedHoverBackground: '{surface.800}', + }, + handle: { + background: '{form.backgroundHandler}', + hoverBackground: '{form.backgroundHandler}', + disabledBackground: '{form.disabledColor}', + checkedBackground: '{surface.0}', + checkedHoverBackground: '{surface.0}', + color: '{text.color}', + hoverColor: '{text.color}', + checkedColor: '{text.color}', + checkedHoverColor: '{text.color}', + }, + }, + }, + root: { + width: '{form.size.600}', + height: '{form.size.400}', + borderRadius: '{form.borderRadius.300}', + gap: '{form.gap.100}', + borderWidth: '{form.borderWidth}', + shadow: 'none', + focusRing: { + width: '{form.focusRing.width}', + style: '{form.focusRing.style}', + color: '{form.focusRing.color}', + offset: '{form.focusRing.offset}', + shadow: '0', + }, + borderColor: '{transparent}', + hoverBorderColor: '{transparent}', + checkedBorderColor: '{transparent}', + checkedHoverBorderColor: '{transparent}', + invalidBorderColor: '{form.invalidBorderColor}', + transitionDuration: '{form.transitionDuration}', + slideDuration: '{form.transitionDuration}', + }, + handle: { + borderRadius: '{form.borderRadius.300}', + size: '{form.size.300}', + }, + }, + tooltip: { + colorScheme: { + light: { + root: { + background: '{surface.900}', + color: '{text.extend.colorInverted}', + }, + }, + }, + root: { + maxWidth: '{overlay.width}', + gutter: '{feedback.gap.100}', + shadow: '{overlay.popover.shadow}', + padding: '{feedback.padding.100} {feedback.padding.200} ', + borderRadius: '{overlay.popover.borderRadius}', + }, + }, + tree: { + root: { + background: '{content.background}', + color: '{content.color}', + padding: '{data.padding.400}', + gap: '{data.gap.100}', + indent: '{data.padding.400}', + }, + node: { + padding: '{data.padding.200} {data.padding.300}', + color: '{text.color}', + selectedColor: '{text.extend.colorInverted}', + gap: '{data.gap.100}', + }, + nodeIcon: { + selectedColor: '{text.extend.colorInverted}', + }, + nodeToggleButton: { + borderRadius: '{data.borderRadius}', + size: '{data.icon.size.400}', + selectedHoverBackground: '{surface.900}', + }, + loadingIcon: { + size: '{data.icon.size.100}', + }, + filter: { + margin: '0 0 {data.padding.200} 0', + }, + }, + overlaybadge: { + root: { + outline: { + width: '0rem', + color: '{transparent}', + }, + }, + }, +}; diff --git a/src/prime-preset/tokens/components/button.json b/src/prime-preset/tokens/components/button.json deleted file mode 100644 index 347c037..0000000 --- a/src/prime-preset/tokens/components/button.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "button": { - "css": "" - } -} diff --git a/src/prime-preset/tokens/components/button.ts b/src/prime-preset/tokens/components/button.ts new file mode 100644 index 0000000..2a5c586 --- /dev/null +++ b/src/prime-preset/tokens/components/button.ts @@ -0,0 +1,157 @@ +/** + * Кастомная CSS-стилизация для компонента p-button. + * Публикует extend-токены как CSS-переменные и применяет глобальные стили. + * Подключается в components.ts: `import { buttonCss } from './components/button'` + */ +export const buttonCss = ({ dt }: { dt: (token: string) => string }): string => ` + /* ─── Button extend: публикуем кастомные переменные в :root ─── */ + :root { + --p-button-extend-disabled-background: ${dt('button.extend.disabledBackground')}; + --p-button-extend-disabled-color: ${dt('button.extend.disabledColor')}; + --p-button-extend-border-width: ${dt('button.extend.borderWidth')}; + --p-button-extend-icon-size-sm: ${dt('button.extend.iconSize.sm')}; + --p-button-extend-icon-size-md: ${dt('button.extend.iconSize.md')}; + --p-button-extend-icon-size-lg: ${dt('button.extend.iconSize.lg')}; + --p-button-extend-ext-link-padding-x: ${dt('button.extend.extLink.paddingX')}; + --p-button-extend-ext-link-padding-y: ${dt('button.extend.extLink.paddingY')}; + --p-button-extend-ext-link-color-hover: ${dt('button.extend.extLink.colorHover')}; + --p-button-extend-ext-link-sm-icon-only-width: ${dt('button.extend.extLink.sm.iconOnlyWidth')}; + --p-button-extend-ext-link-base-icon-only-width: ${dt('button.extend.extLink.base.iconOnlyWidth')}; + --p-button-extend-ext-link-lg-icon-only-width: ${dt('button.extend.extLink.lg.iconOnlyWidth')}; + --p-button-extend-ext-link-xlg-icon-only-width: ${dt('button.extend.extLink.xlg.iconOnlyWidth')}; + --p-button-extend-ext-sm-border-radius: ${dt('button.extend.extSm.borderRadius')}; + --p-button-extend-ext-sm-gap: ${dt('button.extend.extSm.gap')}; + --p-button-extend-ext-lg-border-radius: ${dt('button.extend.extLg.borderRadius')}; + --p-button-extend-ext-lg-gap: ${dt('button.extend.extLg.gap')}; + --p-button-extend-ext-lg-height: ${dt('button.extend.extLg.height')}; + --p-button-extend-ext-xlg-border-radius: ${dt('button.extend.extXlg.borderRadius')}; + --p-button-extend-ext-xlg-gap: ${dt('button.extend.extXlg.gap')}; + --p-button-extend-ext-xlg-icon-only-width: ${dt('button.extend.extXlg.iconOnlyWidth')}; + --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.p-component .p-button-label { + font-family: var(--p-fonts-font-family-heading, 'TT Fellows', sans-serif); + } + + /* ─── Размеры иконок ─── */ + .p-button .p-button-icon { + font-size: var(--p-button-extend-icon-size-md); + } + .p-button.p-button-sm .p-button-icon { + font-size: var(--p-button-extend-icon-size-sm); + } + .p-button.p-button-lg .p-button-icon { + font-size: var(--p-button-extend-icon-size-lg); + } + .p-button-xlg.p-button .p-button-icon, + .p-button-link.p-button-xlg .p-button-icon { + font-size: var(--p-button-extend-icon-size-lg); + } + + /* ─── Disabled / loading ─── */ + .p-button:is(.p-disabled, :disabled, .p-button-loading) { + mix-blend-mode: inherit; + opacity: var(--p-opacity-1000); + color: var(--p-button-extend-disabled-color); + background: var(--p-button-extend-disabled-background); + border-color: var(--p-button-extend-disabled-background); + } + .p-button.p-button-outlined:is(.p-disabled, :disabled, .p-button-loading) { + color: var(--p-button-extend-disabled-color); + background: transparent; + border-color: transparent; + } + .p-button.p-button-text:is(.p-disabled, :disabled, .p-button-loading) { + color: var(--p-button-extend-disabled-color); + background: transparent; + border-color: transparent; + } + .p-button.p-button-link:is(.p-disabled, :disabled, .p-button-loading) { + color: var(--p-button-extend-disabled-color); + background: transparent; + border-color: transparent; + } + + /* ─── 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); + } + .p-button-link.p-button { + width: min-content; + } + .p-button-link.p-button.p-button-xlg { + font-size: var(--p-fonts-font-size-600); + } + .p-button.p-button-link:not(:disabled):hover { + color: var(--p-button-extend-ext-link-color-hover); + } + .p-button.p-button-link:not(:disabled):hover .p-button-label { + text-decoration: none; + } + + /* ─── Icon-only link кнопки ─── */ + .p-button-link.p-button-icon-only { + width: var(--p-button-extend-ext-link-base-icon-only-width); + height: var(--p-button-extend-ext-link-base-icon-only-width); + } + .p-button-link.p-button-icon-only.p-button-sm { + width: var(--p-button-extend-ext-link-sm-icon-only-width); + height: var(--p-button-extend-ext-link-sm-icon-only-width); + } + .p-button-link.p-button-icon-only.p-button-lg { + width: var(--p-button-extend-ext-link-lg-icon-only-width); + height: var(--p-button-extend-ext-link-lg-icon-only-width); + } + + /* ─── Line-height ─── */ + .p-button-sm { + line-height: var(--p-fonts-line-height-250); + } + .p-button:is(.p-button-lg, .p-button-xlg) { + line-height: var(--p-fonts-line-height-550); + } + + /* ─── Border-radius для lg / xlg ─── */ + .p-button:is(.p-button-lg, .p-button-xlg):not(.p-button-rounded) { + border-radius: var(--p-button-extend-ext-lg-border-radius); + } + .p-button-xlg.p-button:not(.p-button-rounded) { + border-radius: var(--p-button-extend-ext-xlg-border-radius); + } + + /* ─── Padding / font-size / height для lg ─── */ + .p-button-lg.p-button:not(.p-button-icon-only):not(.p-button-link) { + padding: var(--p-button-lg-padding-y) var(--p-button-lg-padding-x); + font-size: var(--p-button-lg-font-size); + height: var(--p-controls-icon-only-850); + } + + /* ─── Padding / font-size / height для xlg ─── */ + .p-button-xlg.p-button:not(.p-button-icon-only):not(.p-button-link) { + padding: var(--p-button-extend-ext-xlg-padding-y) var(--p-button-extend-ext-xlg-padding-x); + font-size: var(--p-fonts-font-size-500); + height: var(--p-controls-icon-only-900); + } + + /* ─── Icon-only размеры ─── */ + .p-button-icon-only { + width: var(--p-button-icon-only-width); + height: var(--p-button-icon-only-width); + } + .p-button-sm.p-button-icon-only { + width: var(--p-button-sm-icon-only-width); + height: var(--p-button-sm-icon-only-width); + } + .p-button-lg.p-button-icon-only { + width: var(--p-button-lg-icon-only-width); + height: var(--p-button-lg-icon-only-width); + } + .p-button-xlg.p-button-icon-only { + width: var(--p-button-extend-ext-xlg-icon-only-width); + height: var(--p-button-extend-ext-xlg-icon-only-width); + } +`; diff --git a/src/prime-preset/tokens/primitive-default.json b/src/prime-preset/tokens/primitive-default.json deleted file mode 100644 index 6dc1c0f..0000000 --- a/src/prime-preset/tokens/primitive-default.json +++ /dev/null @@ -1,377 +0,0 @@ -{ - "colors": { - "alpha": { - "white": { - "10": "rgba(255, 255, 255, 0.1000)", - "20": "rgba(255, 255, 255, 0.2000)", - "30": "rgba(255, 255, 255, 0.3000)", - "40": "rgba(255, 255, 255, 0.4000)", - "50": "rgba(255, 255, 255, 0.5000)", - "60": "rgba(255, 255, 255, 0.6000)", - "70": "rgba(255, 255, 255, 0.7000)", - "80": "rgba(255, 255, 255, 0.8000)", - "90": "rgba(255, 255, 255, 0.9000)", - "100": "#ffffff" - }, - "black": { - "10": "rgba(0, 0, 0, 0.1000)", - "20": "rgba(0, 0, 0, 0.2000)", - "30": "rgba(0, 0, 0, 0.3000)", - "40": "rgba(0, 0, 0, 0.4000)", - "50": "rgba(0, 0, 0, 0.5000)", - "60": "rgba(0, 0, 0, 0.6000)", - "70": "rgba(0, 0, 0, 0.7000)", - "80": "rgba(0, 0, 0, 0.8000)", - "90": "rgba(0, 0, 0, 0.9000)", - "100": "#000000" - } - }, - "solid": { - "purple": { - "50": "#faf5ff", - "100": "#f3e8ff", - "200": "#e9d5ff", - "300": "#d8b4fe", - "400": "#c084fc", - "500": "#a855f7", - "600": "#9333ea", - "700": "#7e22ce", - "800": "#6b21a8", - "900": "#581c87", - "950": "#3b0764" - }, - "fuchsia": { - "50": "#fdf4ff", - "100": "#fae8ff", - "200": "#f5d0fe", - "300": "#f0abfc", - "400": "#e879f9", - "500": "#d946ef", - "600": "#c026d3", - "700": "#a21caf", - "800": "#86198f", - "900": "#701a75", - "950": "#4a044e" - }, - "pink": { - "50": "#fdf2f8", - "100": "#fce7f3", - "200": "#fbcfe8", - "300": "#f9a8d4", - "400": "#f472b6", - "500": "#ec4899", - "600": "#db2777", - "700": "#be185d", - "800": "#9d174d", - "900": "#831843", - "950": "#500724" - }, - "rose": { - "50": "#fff1f2", - "100": "#ffe4e6", - "200": "#fecdd3", - "300": "#fda4af", - "400": "#fb7185", - "500": "#f43f5e", - "600": "#e11d48", - "700": "#be123c", - "800": "#9f1239", - "900": "#881337", - "950": "#4c0519" - }, - "teal": { - "50": "#f0fdfa", - "100": "#ccfbf1", - "200": "#99f6e4", - "300": "#5eead4", - "400": "#2dd4bf", - "500": "#14b8a6", - "600": "#0d9488", - "700": "#0f766e", - "800": "#115e59", - "900": "#134e4a", - "950": "#042f2e" - }, - "cyan": { - "50": "#ecfeff", - "100": "#cffafe", - "200": "#a5f3fc", - "300": "#67e8f9", - "400": "#22d3ee", - "500": "#06b6d4", - "600": "#0891b2", - "700": "#0e7490", - "800": "#155e75", - "900": "#164e63", - "950": "#083344" - }, - "sky": { - "50": "#f0f9ff", - "100": "#e0f2fe", - "200": "#bae6fd", - "300": "#7dd3fc", - "400": "#38bdf8", - "500": "#0ea5e9", - "600": "#0284c7", - "700": "#0369a1", - "800": "#075985", - "900": "#0c4a6e", - "950": "#082f49" - }, - "blue": { - "50": "#fafdff", - "100": "#f0f9ff", - "200": "#d4ecfe", - "300": "#aad7fb", - "400": "#77baf4", - "500": "#4496e8", - "600": "#1e76cd", - "700": "#18538d", - "800": "#123a61", - "900": "#0e2a45", - "950": "#0c243b" - }, - "indigo": { - "50": "#eef2ff", - "100": "#e0e7ff", - "200": "#c7d2fe", - "300": "#a5b4fc", - "400": "#818cf8", - "500": "#6366f1", - "600": "#4f46e5", - "700": "#4338ca", - "800": "#3730a3", - "900": "#312e81", - "950": "#1e1b4b" - }, - "violet": { - "50": "#fcfaff", - "100": "#f6f0ff", - "200": "#e5d4fe", - "300": "#cbaafb", - "400": "#b284f5", - "500": "#a265ec", - "600": "#9457ea", - "700": "#48188d", - "800": "#321261", - "900": "#240e45", - "950": "#1f0c3b" - }, - "emerald": { - "50": "#ecfdf5", - "100": "#d1fae5", - "200": "#a7f3d0", - "300": "#6ee7b7", - "400": "#34d399", - "500": "#10b981", - "600": "#059669", - "700": "#047857", - "800": "#065f46", - "900": "#064e3b", - "950": "#022c22" - }, - "green": { - "50": "#fafffb", - "100": "#f0fff3", - "200": "#d4fedc", - "300": "#aafbb7", - "400": "#77f48a", - "500": "#44e858", - "600": "#1dc831", - "700": "#168322", - "800": "#12611b", - "900": "#0e4514", - "950": "#0c3b11" - }, - "lime": { - "50": "#f7fee7", - "100": "#ecfccb", - "200": "#d9f99d", - "300": "#bef264", - "400": "#a3e635", - "500": "#84cc16", - "600": "#65a30d", - "700": "#4d7c0f", - "800": "#3f6212", - "900": "#365314", - "950": "#1a2e05" - }, - "red": { - "50": "#fffafa", - "100": "#fff0f0", - "200": "#fed4d4", - "300": "#fbacaa", - "400": "#f47f77", - "500": "#e85244", - "600": "#db3424", - "700": "#8d2218", - "800": "#611912", - "900": "#45120e", - "950": "#3b100c" - }, - "orange": { - "50": "#fffbfa", - "100": "#fff3f0", - "200": "#ffddd5", - "300": "#ffbca9", - "400": "#ff9273", - "500": "#fe6434", - "600": "#d53f0b", - "700": "#a83107", - "800": "#752506", - "900": "#561c05", - "950": "#4b1905" - }, - "amber": { - "50": "#fffbeb", - "100": "#fef3c7", - "200": "#fde68a", - "300": "#fcd34d", - "400": "#fbbf24", - "500": "#f59e0b", - "600": "#d97706", - "700": "#b45309", - "800": "#92400e", - "900": "#78350f", - "950": "#451a03" - }, - "yellow": { - "50": "#fffdfa", - "100": "#fff9f0", - "200": "#ffeed4", - "300": "#fddeaa", - "400": "#facb75", - "500": "#f5b83d", - "600": "#dc9710", - "700": "#9d6d0e", - "800": "#6d4c0b", - "900": "#4f3709", - "950": "#453008" - }, - "slate": { - "50": "#f8fafc", - "100": "#f1f5f9", - "200": "#e2e8f0", - "300": "#cbd5e1", - "400": "#94a3b8", - "500": "#64748b", - "600": "#475569", - "700": "#334155", - "800": "#1e293b", - "900": "#0f172a", - "950": "#020617" - }, - "gray": { - "50": "#f9fafb", - "100": "#f3f4f6", - "200": "#e5e7eb", - "300": "#d1d5db", - "400": "#9ca3af", - "500": "#6b7280", - "600": "#4b5563", - "700": "#374151", - "800": "#1f2937", - "900": "#111827", - "950": "#030712" - }, - "zinc": { - "50": "#fafafa", - "100": "#f0f0f1", - "200": "#e2e2e4", - "300": "#cecfd2", - "400": "#a2a5a9", - "500": "#85888e", - "600": "#6d7076", - "700": "#56595f", - "800": "#404348", - "900": "#2b2e33", - "950": "#181a1f" - }, - "neutral": { - "50": "#fafafa", - "100": "#f5f5f5", - "200": "#e5e5e5", - "300": "#d4d4d4", - "400": "#a3a3a3", - "500": "#737373", - "600": "#525252", - "700": "#404040", - "800": "#262626", - "900": "#171717", - "950": "#0a0a0a" - }, - "stone": { - "50": "#fafaf9", - "100": "#f5f5f4", - "200": "#e7e5e4", - "300": "#d6d3d1", - "400": "#a8a29e", - "500": "#78716c", - "600": "#57534e", - "700": "#44403c", - "800": "#292524", - "900": "#1c1917", - "950": "#0c0a09" - } - } - }, - "borderRadius": { - "none": "0", - "xs": "0.21875rem", - "sm": "0.4375rem", - "md": "0.65625rem", - "lg": "0.875rem", - "xl": "1.3125rem", - "rounded": "62.4375rem" - }, - "fonts": { - "fontFamily": { - "heading": "TT Fellows", - "base": "PT Sans" - }, - "fontWeight": { - "regular": "25rem", - "medium": "31.25rem", - "demibold": "37.5rem", - "bold": "43.75rem" - }, - "fontSize": { - "xs": "0.65625rem", - "sm": "0.765625rem", - "base": "0.875rem", - "lg": "0.984375rem", - "xl": "1.09375rem", - "2xl": "1.3125rem", - "3xl": "1.640625rem", - "4xl": "1.96875rem", - "5xl": "2.625rem", - "6xl": "3.28125rem", - "7xl": "3.9375rem", - "8xl": "5.25rem" - }, - "lineHeight": { - "10": "0.6875rem", - "15": "0.75rem", - "20": "0.8125rem", - "25": "0.875rem", - "30": "0.9375rem", - "35": "1rem", - "40": "1.125rem", - "45": "1.25rem", - "50": "1.3125rem", - "55": "1.375rem", - "60": "1.5rem", - "65": "1.625rem", - "70": "2rem", - "75": "2.0625rem", - "80": "2.4375rem", - "85": "2.9375rem", - "auto": "auto" - } - }, - "opacity": { - "0": "0", - "50": "0.03125rem", - "100": "0.0625rem" - } -} diff --git a/src/prime-preset/tokens/primitive.ts b/src/prime-preset/tokens/primitive.ts new file mode 100644 index 0000000..da002b6 --- /dev/null +++ b/src/prime-preset/tokens/primitive.ts @@ -0,0 +1,480 @@ +export default { + colors: { + alpha: { + white: { + '100': 'rgba(255, 255, 255, 0.1000)', + '200': 'rgba(255, 255, 255, 0.2000)', + '300': 'rgba(255, 255, 255, 0.3000)', + '400': 'rgba(255, 255, 255, 0.4000)', + '500': 'rgba(255, 255, 255, 0.5000)', + '600': 'rgba(255, 255, 255, 0.6000)', + '700': 'rgba(255, 255, 255, 0.7000)', + '800': 'rgba(255, 255, 255, 0.8000)', + '900': 'rgba(255, 255, 255, 0.9000)', + '1000': '#ffffff', + }, + black: { + '100': 'rgba(0, 0, 0, 0.1000)', + '200': 'rgba(0, 0, 0, 0.2000)', + '300': 'rgba(0, 0, 0, 0.3000)', + '400': 'rgba(0, 0, 0, 0.4000)', + '500': 'rgba(0, 0, 0, 0.5000)', + '600': 'rgba(0, 0, 0, 0.6000)', + '700': 'rgba(0, 0, 0, 0.7000)', + '800': 'rgba(0, 0, 0, 0.8000)', + '900': 'rgba(0, 0, 0, 0.9000)', + '1000': '#000000', + }, + }, + solid: { + purple: { + '50': '#faf5ff', + '100': '#f3e8ff', + '200': '#e9d5ff', + '300': '#d8b4fe', + '400': '#c084fc', + '500': '#a855f7', + '600': '#9333ea', + '700': '#7e22ce', + '800': '#6b21a8', + '900': '#581c87', + '950': '#3b0764', + }, + fuchsia: { + '50': '#fdf4ff', + '100': '#fae8ff', + '200': '#f5d0fe', + '300': '#f0abfc', + '400': '#e879f9', + '500': '#d946ef', + '600': '#c026d3', + '700': '#a21caf', + '800': '#86198f', + '900': '#701a75', + '950': '#4a044e', + }, + pink: { + '50': '#fdf2f8', + '100': '#fce7f3', + '200': '#fbcfe8', + '300': '#f9a8d4', + '400': '#f472b6', + '500': '#ec4899', + '600': '#db2777', + '700': '#be185d', + '800': '#9d174d', + '900': '#831843', + '950': '#500724', + }, + rose: { + '50': '#fff1f2', + '100': '#ffe4e6', + '200': '#fecdd3', + '300': '#fda4af', + '400': '#fb7185', + '500': '#f43f5e', + '600': '#e11d48', + '700': '#be123c', + '800': '#9f1239', + '900': '#881337', + '950': '#4c0519', + }, + teal: { + '50': '#f0fdfa', + '100': '#ccfbf1', + '200': '#99f6e4', + '300': '#5eead4', + '400': '#2dd4bf', + '500': '#14b8a6', + '600': '#0d9488', + '700': '#0f766e', + '800': '#115e59', + '900': '#134e4a', + '950': '#042f2e', + }, + cyan: { + '50': '#ecfeff', + '100': '#cffafe', + '200': '#a5f3fc', + '300': '#67e8f9', + '400': '#22d3ee', + '500': '#06b6d4', + '600': '#0891b2', + '700': '#0e7490', + '800': '#155e75', + '900': '#164e63', + '950': '#013138', + }, + sky: { + '50': '#f0f9ff', + '100': '#e0f2fe', + '200': '#bae6fd', + '300': '#7dd3fc', + '400': '#38bdf8', + '500': '#0ea5e9', + '600': '#0284c7', + '700': '#0369a1', + '800': '#075985', + '900': '#0c4a6e', + '950': '#082f49', + }, + blue: { + '50': '#fafdff', + '100': '#f0f9ff', + '200': '#d4ecfe', + '300': '#aad7fb', + '400': '#77baf4', + '500': '#4496e8', + '600': '#1e76cd', + '700': '#18538d', + '800': '#123a61', + '900': '#0e2a45', + '950': '#0c243b', + }, + indigo: { + '50': '#eef2ff', + '100': '#e0e7ff', + '200': '#c7d2fe', + '300': '#a5b4fc', + '400': '#818cf8', + '500': '#6366f1', + '600': '#4f46e5', + '700': '#4338ca', + '800': '#3730a3', + '900': '#312e81', + '950': '#1e1b4b', + }, + violet: { + '50': '#fcfaff', + '100': '#f6f0ff', + '200': '#e5d4fe', + '300': '#cbaafb', + '400': '#b284f5', + '500': '#a265ec', + '600': '#9457ea', + '700': '#48188d', + '800': '#321261', + '900': '#240e45', + '950': '#1f0c3b', + }, + emerald: { + '50': '#ecfdf5', + '100': '#d1fae5', + '200': '#a7f3d0', + '300': '#6ee7b7', + '400': '#34d399', + '500': '#10b981', + '600': '#059669', + '700': '#047857', + '800': '#065f46', + '900': '#064e3b', + '950': '#022c22', + }, + green: { + '50': '#fafffb', + '100': '#f0fff3', + '200': '#d4fedc', + '300': '#aafbb7', + '400': '#77f48a', + '500': '#44e858', + '600': '#1dc831', + '700': '#168322', + '800': '#12611b', + '900': '#0e4514', + '950': '#0c3b11', + }, + lime: { + '50': '#f7fee7', + '100': '#ecfccb', + '200': '#d9f99d', + '300': '#bef264', + '400': '#a3e635', + '500': '#84cc16', + '600': '#65a30d', + '700': '#4d7c0f', + '800': '#3f6212', + '900': '#365314', + '950': '#1a2e05', + }, + red: { + '50': '#fffafa', + '100': '#fff0f0', + '200': '#fed4d4', + '300': '#fbacaa', + '400': '#f47f77', + '500': '#e85244', + '600': '#db3424', + '700': '#8d2218', + '800': '#611912', + '900': '#45120e', + '950': '#3b100c', + }, + orange: { + '50': '#fffbfa', + '100': '#fff3f0', + '200': '#ffddd5', + '300': '#ffbca9', + '400': '#ff9273', + '500': '#fe6434', + '600': '#d53f0b', + '700': '#a83107', + '800': '#752506', + '900': '#561c05', + '950': '#4b1905', + }, + amber: { + '50': '#fffbeb', + '100': '#fef3c7', + '200': '#fde68a', + '300': '#fcd34d', + '400': '#fbbf24', + '500': '#f59e0b', + '600': '#d97706', + '700': '#b45309', + '800': '#92400e', + '900': '#78350f', + '950': '#451a03', + }, + yellow: { + '50': '#fffdfa', + '100': '#fff9f0', + '200': '#ffeed4', + '300': '#fddeaa', + '400': '#facb75', + '500': '#f5b83d', + '600': '#dc9710', + '700': '#9d6d0e', + '800': '#6d4c0b', + '900': '#4f3709', + '950': '#453008', + }, + slate: { + '50': '#f8fafc', + '100': '#f1f5f9', + '200': '#e2e8f0', + '300': '#cbd5e1', + '400': '#94a3b8', + '500': '#64748b', + '600': '#475569', + '700': '#334155', + '800': '#1e293b', + '900': '#0f172a', + '950': '#020617', + }, + gray: { + '50': '#f9fafb', + '100': '#f3f4f6', + '200': '#e5e7eb', + '300': '#d1d5db', + '400': '#9ca3af', + '500': '#6b7280', + '600': '#4b5563', + '700': '#374151', + '800': '#1f2937', + '900': '#111827', + '950': '#030712', + }, + zinc: { + '50': '#fafafa', + '100': '#f0f0f1', + '200': '#e2e2e4', + '300': '#cecfd2', + '400': '#a2a5a9', + '500': '#85888e', + '600': '#6d7076', + '700': '#56595f', + '800': '#404348', + '900': '#2b2e33', + '950': '#181a1f', + }, + neutral: { + '50': '#fafafa', + '100': '#f5f5f5', + '200': '#e5e5e5', + '300': '#d4d4d4', + '400': '#a3a3a3', + '500': '#737373', + '600': '#525252', + '700': '#404040', + '800': '#262626', + '900': '#171717', + '950': '#0a0a0a', + }, + stone: { + '50': '#fafaf9', + '100': '#f5f5f4', + '200': '#e7e5e4', + '300': '#d6d3d1', + '400': '#a8a29e', + '500': '#78716c', + '600': '#57534e', + '700': '#44403c', + '800': '#292524', + '900': '#1c1917', + '950': '#0c0a09', + }, + }, + }, + borderRadius: { + '100': '0.25rem', + '200': '0.5rem', + '300': '0.75rem', + '400': '1rem', + '500': '1.5rem', + none: '0rem', + max: '71.3571rem', + }, + borderWidth: { + '100': '0.0714rem', + '200': '0.1429rem', + '300': '0.25rem', + none: '0rem', + }, + fonts: { + fontFamily: { + heading: 'TT Fellows', + base: 'PT Sans', + }, + fontWeight: { + regular: '400', + medium: '500', + demibold: '600', + bold: '700', + }, + fontSize: { + '100': '0.75rem', + '200': '0.875rem', + '300': '1rem', + '400': '1.125rem', + '500': '1.25rem', + '600': '1.5rem', + '650': '1.875rem', + '700': '2.25rem', + '750': '3rem', + '800': '3.75rem', + '900': '4.5rem', + '1000': '6rem', + }, + lineHeight: { + '100': '0.7857rem', + '150': '0.8571rem', + '200': '0.9286rem', + '250': '1rem', + '300': '1.0714rem', + '350': '1.1429rem', + '400': '1.2857rem', + '450': '1.4286rem', + '500': '1.5rem', + '550': '1.5714rem', + '600': '1.7143rem', + '700': '1.8571rem', + '800': '2.2857rem', + '850': '2.3571rem', + '900': '2.7857rem', + '1000': '3.3571rem', + auto: 'auto', + }, + }, + spacing: { + none: '0rem', + '1x': '0.25rem', + '2x': '0.5rem', + '3x': '0.75rem', + '4x': '1rem', + '5x': '1.25rem', + '6x': '1.5rem', + '7x': '1.75rem', + '8x': '2rem', + '9x': '2.25rem', + '10x': '2.5rem', + '11x': '2.75rem', + '12x': '3rem', + '14x': '3.5rem', + '16x': '4rem', + '20x': '5rem', + '24x': '6rem', + '28x': '7rem', + '32x': '8rem', + '36x': '9rem', + '40x': '10rem', + }, + sizing: { + none: '0rem', + min: '0.0714rem', + '1x': '0.25rem', + '2x': '0.5rem', + '3x': '0.75rem', + '4x': '1rem', + '5x': '1.25rem', + '6x': '1.5rem', + '7x': '1.75rem', + '8x': '2rem', + '9x': '2.25rem', + '10x': '2.5rem', + '11x': '2.75rem', + '12x': '3rem', + '14x': '3.5rem', + '16x': '4rem', + '20x': '5rem', + '24x': '6rem', + '28x': '7rem', + '32x': '8rem', + '36x': '9rem', + '40x': '10rem', + '44x': '11rem', + '48x': '12rem', + '52x': '13rem', + '56x': '14rem', + '60x': '15rem', + '64x': '16rem', + '68x': '17rem', + '72x': '18rem', + '76x': '19rem', + '80x': '20rem', + '84x': '21rem', + '88x': '22rem', + '92x': '23rem', + '96x': '24rem', + '100x': '25rem', + '104x': '26rem', + '108x': '27rem', + '112x': '28rem', + '116x': '29rem', + '120x': '30rem', + '124x': '34rem', + '128x': '45rem', + '132x': '50rem', + '136x': '54rem', + '140x': '58rem', + '144x': '60rem', + max: '100%', + }, + shadows: { + '100': '0 0 0.1rem {colors.alpha.black.200}', + '200': '0 0 0.25rem {colors.alpha.black.200}', + '300': '0 0.1rem 0.25rem {colors.alpha.black.200}', + '400': '0 0.25rem 0.5rem {colors.alpha.black.200}', + '500': '0 0.5rem 1rem 0 {colors.alpha.black.200}', + none: 'none', + }, + transition: { + easing: { + linear: 'linear', + in: 'cubic-bezier(0.55, 0.06, 0.7, 0.2)', + out: 'cubic-bezier(0.2, 0.6, 0.4, 1)', + inOut: 'cubic-bezier(0.65, 0.05, 0.35, 1)', + }, + duration: { + '100': '140ms', + '200': '180ms', + '300': '240ms', + '400': '320ms', + '500': '400ms', + }, + }, + opacity: { + '250': '0.25', + '500': '0.5', + '1000': '1', + }, +}; diff --git a/src/prime-preset/tokens/semantic-default.json b/src/prime-preset/tokens/semantic-default.json deleted file mode 100644 index 2167ac2..0000000 --- a/src/prime-preset/tokens/semantic-default.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "list": { - "padding": "0.21875rem", - "gap": "0.21875rem", - "header": { - "padding": "1rem 1rem 0 1rem" - }, - "option": { - "padding": "0.5rem 0.75rem", - "borderRadius": "0.4375rem" - }, - "optionGroup": { - "padding": "0.5rem 0.75rem", - "fontWeight": "{fonts.fontWeight.demibold}" - } - }, - "focusRing": { - "width": "0.21875rem", - "style": "none", - "color": "#ffffff", - "offset": "0", - "shadow": "0 0 0 0.25rem {primary.200}" - }, - "primary": { - "50": "{colors.solid.green.50}", - "100": "{colors.solid.green.100}", - "200": "{colors.solid.green.200}", - "300": "{colors.solid.green.300}", - "400": "{colors.solid.green.400}", - "500": "{colors.solid.green.500}", - "600": "{colors.solid.green.600}", - "700": "{colors.solid.green.700}", - "800": "{colors.solid.green.800}", - "900": "{colors.solid.green.900}", - "950": "{colors.solid.green.950}" - }, - "formField": { - "paddingX": "0.65625rem", - "paddingY": "0.65625rem", - "borderRadius": "{borderRadius.md}", - "transitionDuration": "{transitionDuration}", - "sm": { - "fontSize": "{fonts.fontSize.base}", - "paddingX": "0.0390625rem", - "paddingY": "0.03125rem" - }, - "lg": { - "fontSize": "{fonts.fontSize.base}", - "paddingX": "0.0546875rem", - "paddingY": "0.046875rem" - }, - "focusRing": { - "width": "{focusRing.width}", - "style": "{focusRing.style}", - "color": "{focusRing.color}", - "offset": "{focusRing.offset}", - "shadow": "{focusRing.shadow}" - } - }, - "content": { - "borderRadius": "{borderRadius.md}" - }, - "mask": { - "transitionDuration": "{transitionDuration}" - }, - "navigation": { - "list": { - "padding": "0.21875rem", - "gap": "0.21875rem" - }, - "item": { - "padding": "0.625rem 1rem", - "borderRadius": "{borderRadius.sm}", - "gap": "0.4375rem" - }, - "submenuLabel": { - "padding": "0.625rem 1rem", - "fontWeight": "{fonts.fontWeight.demibold}" - }, - "submenuIcon": { - "size": "1.09375rem" - } - }, - "overlay": { - "select": { - "borderRadius": "{borderRadius.md}", - "shadow": "0 3.5px 7px 0 rgba(0, 0, 0, 0.2)" - }, - "popover": { - "borderRadius": "{borderRadius.sm}", - "padding": "0.65625rem", - "shadow": "0 1px 3px rgba(0, 0, 0, 0.1)" - }, - "modal": { - "borderRadius": "{borderRadius.xl}", - "padding": "1.3125rem", - "shadow": "0 1px 3px rgba(0, 0, 0, 0.3)" - }, - "navigation": { - "shadow": "0 2px 12px 0 rgba(0, 0, 0, 0.1)" - } - }, - "transitionDuration": "0.2s", - "iconSizeMedium": "0.875rem", - "iconSizeLarge": "1.09375rem", - "anchorGutter": "0.125rem", - "opacity": { - "default": "{opacity.100}", - "muted": "{opacity.50}", - "disabled": "{opacity.0}" - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/semantic.ts b/src/prime-preset/tokens/semantic.ts new file mode 100644 index 0000000..31365dc --- /dev/null +++ b/src/prime-preset/tokens/semantic.ts @@ -0,0 +1,838 @@ +export default { + list: { + padding: '{spacing.1x}', + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + }, + header: { + padding: '{spacing.4x} {spacing.4x} 0 {spacing.4x}', + }, + option: { + padding: '{spacing.2x} {spacing.3x}', + borderRadius: '{borderRadius.200}', + }, + optionGroup: { + padding: '{spacing.2x} {spacing.3x}', + fontWeight: '{fonts.fontWeight.demibold}', + }, + }, + focusRing: { + width: '{borderWidth.300}', + style: 'none', + color: '{focusRing.extend.success}', + offset: '0rem', + }, + form: { + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + '500': '{spacing.5x}', + '600': '{spacing.6x}', + '700': '{spacing.7x}', + }, + borderRadius: { + '100': '{borderRadius.200}', + '200': '{borderRadius.300}', + '300': '{borderRadius.max}', + }, + borderWidth: '{borderWidth.100}', + icon: { + '100': '{sizing.2x}', + '200': '{sizing.3x}', + '300': '{sizing.4x}', + '400': '{sizing.5x}', + '500': '{sizing.6x}', + }, + transitionDuration: '{transition.duration.200}', + size: { + '100': '{sizing.min}', + '150': '{sizing.1x}', + '200': '{sizing.2x}', + '250': '{sizing.3x}', + '300': '{sizing.4x}', + '350': '{sizing.5x}', + '400': '{sizing.6x}', + '500': '{sizing.8x}', + '600': '{sizing.10x}', + '700': '{sizing.12x}', + '800': '{sizing.16x}', + '900': '{sizing.20x}', + }, + width: '{sizing.68x}', + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + }, + focusRing: { + width: '{focusRing.width}', + style: '{focusRing.style}', + color: '{focusRing.color}', + offset: '{focusRing.offset}', + }, + sm: { + width: '{sizing.60x}', + fontSize: '{fonts.fontSize.300}', + paddingX: '{spacing.3x}', + paddingY: '{spacing.3x}', + }, + fontSize: '{fonts.fontSize.300}', + paddingX: '{spacing.4x}', + paddingY: '{spacing.4x}', + lg: { + width: '{sizing.76x}', + fontSize: '{fonts.fontSize.300}', + paddingX: '{spacing.5x}', + paddingY: '{spacing.5x}', + }, + xlg: { + width: '{sizing.84x}', + fontSize: '{fonts.fontSize.300}', + paddingX: '{spacing.6x}', + paddingY: '{spacing.6x}', + }, + }, + content: { + borderRadius: '{borderRadius.300}', + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.4x}', + '400': '{spacing.6x}', + '500': '{spacing.7x}', + }, + borderWidth: '{sizing.min}', + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + }, + }, + navigation: { + width: { + '100': '{borderWidth.100}', + '200': '{borderWidth.300}', + }, + borderRadius: '{borderRadius.100}', + padding: { + '100': '{spacing.1x}', + '200': '{spacing.3x}', + '300': '{spacing.4x}', + '400': '{spacing.6x}', + }, + size: { + '100': '{sizing.1x}', + '200': '{sizing.2x}', + '300': '{sizing.5x}', + '400': '{sizing.8x}', + '500': '{sizing.16x}', + }, + submenu: { + padding: '{spacing.5x}', + }, + list: { + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + }, + gap: '{spacing.1x}', + }, + item: { + padding: '{spacing.2x} {spacing.3x}', + borderRadius: '{borderRadius.200}', + gap: '{spacing.2x}', + }, + submenuLabel: { + padding: '{spacing.2x} {spacing.3x}', + fontWeight: '{fonts.fontWeight.demibold}', + }, + submenuIcon: { + size: '{fonts.fontSize.500}', + }, + }, + overlay: { + mask: { + transitionDuration: '{transition.duration.200}', + }, + select: { + borderRadius: '{borderRadius.300}', + padding: '{spacing.1x}', + }, + borderWidth: '{borderWidth.100}', + icon: { + size: { + '100': '{sizing.4x}', + '200': '{sizing.6x}', + '300': '{sizing.7x}', + '400': '{sizing.8x}', + '500': '{sizing.9x}', + }, + }, + popover: { + borderRadius: '{borderRadius.200}', + width: { + '100': '{sizing.2x}', + '200': '{sizing.3x}', + }, + padding: { + '100': '{spacing.3x}', + '200': '{spacing.5x}', + }, + }, + modal: { + borderRadius: '{borderRadius.500}', + padding: { + '100': '{spacing.4x}', + '200': '{spacing.5x}', + '300': '{spacing.6x}', + }, + }, + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + }, + width: '{sizing.100x}', + drawer: { + padding: '{spacing.2x}', + }, + sm: { + width: '{sizing.80x}', + }, + lg: { + width: '{sizing.120x}', + }, + xlg: { + width: '{sizing.128x}', + }, + }, + feedback: { + transitionDuration: '{transition.duration.200}', + width: { + '100': '{sizing.min}', + '200': '{sizing.1x}', + '300': '{sizing.2x}', + '400': '{sizing.3x}', + '500': '{sizing.4x}', + '550': '{sizing.5x}', + '600': '{sizing.6x}', + '650': '{sizing.7x}', + '700': '{sizing.8x}', + '800': '{sizing.12x}', + '900': '{sizing.16x}', + }, + icon: { + size: { + '100': '{sizing.2x}', + '200': '{sizing.4x}', + '300': '{sizing.6x}', + '350': '{sizing.7x}', + '400': '{sizing.8x}', + '500': '{sizing.9x}', + }, + }, + padding: { + '100': '{spacing.2x}', + '200': '{spacing.4x}', + }, + height: { + '100': '{sizing.2x}', + '200': '{sizing.3x}', + '300': '{sizing.4x}', + '400': '{sizing.5x}', + '500': '{sizing.6x}', + '600': '{sizing.7x}', + '650': '{sizing.8x}', + '700': '{sizing.9x}', + '750': '{sizing.10x}', + '800': '{sizing.11x}', + '850': '{sizing.12x}', + '900': '{sizing.16x}', + }, + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + }, + }, + data: { + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + '500': '{spacing.5x}', + }, + icon: { + size: { + '100': '{sizing.4x}', + '200': '{sizing.5x}', + '300': '{sizing.6x}', + '400': '{sizing.7x}', + '500': '{sizing.8x}', + '600': '{sizing.9x}', + '700': '{sizing.10x}', + }, + }, + transitionDuration: '{transition.duration.200}', + borderWidth: '{borderWidth.none}', + borderRadius: '{borderRadius.100}', + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + }, + width: { + '100': '{sizing.min}', + '200': '{sizing.1x}', + '300': '{sizing.2x}', + '400': '{sizing.20x}', + }, + }, + media: { + size: { + '100': '{sizing.1x}', + '200': '{sizing.2x}', + '300': '{sizing.8x}', + '400': '{sizing.10x}', + '500': '{sizing.14x}', + '600': '{sizing.16x}', + }, + borderRadius: { + '100': '{borderRadius.200}', + '200': '{borderRadius.300}', + '300': '{borderRadius.400}', + '400': '{borderRadius.500}', + max: '{borderRadius.max}', + }, + icon: { + size: { + '100': '{sizing.4x}', + '200': '{sizing.6x}', + '300': '{sizing.8x}', + }, + }, + transitionDuration: '{transition.duration.200}', + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + '500': '{spacing.5x}', + '600': '{spacing.6x}', + }, + gap: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + }, + }, + controls: { + iconOnly: { + '100': '{sizing.2x}', + '200': '{sizing.4x}', + '300': '{sizing.5x}', + '400': '{sizing.6x}', + '500': '{sizing.7x}', + '600': '{sizing.8x}', + '700': '{sizing.10x}', + '800': '{sizing.11x}', + '850': '{sizing.14x}', + '900': '{sizing.16x}', + }, + borderRadius: { + '100': '{borderRadius.300}', + '200': '{borderRadius.400}', + max: '{borderRadius.max}', + }, + transitionDuration: '{transition.duration.200}', + padding: { + '100': '{spacing.1x}', + '200': '{spacing.2x}', + '300': '{spacing.3x}', + '400': '{spacing.4x}', + '500': '{spacing.5x}', + '600': '{spacing.6x}', + }, + gap: { + '100': '{spacing.2x}', + '200': '{spacing.3x}', + '300': '{spacing.4x}', + }, + width: { + '100': '{sizing.min}', + }, + }, + colorScheme: { + light: { + success: { + '50': '{colors.solid.green.50}', + '100': '{colors.solid.green.100}', + '200': '{colors.solid.green.200}', + '300': '{colors.solid.green.300}', + '400': '{colors.solid.green.400}', + '500': '{colors.solid.green.500}', + '600': '{colors.solid.green.600}', + '700': '{colors.solid.green.700}', + '800': '{colors.solid.green.800}', + '900': '{colors.solid.green.900}', + '950': '{colors.solid.green.950}', + }, + info: { + '50': '{colors.solid.blue.50}', + '100': '{colors.solid.blue.100}', + '200': '{colors.solid.blue.200}', + '300': '{colors.solid.blue.300}', + '400': '{colors.solid.blue.400}', + '500': '{colors.solid.blue.500}', + '600': '{colors.solid.blue.600}', + '700': '{colors.solid.blue.700}', + '800': '{colors.solid.blue.800}', + '900': '{colors.solid.blue.900}', + '950': '{colors.solid.blue.950}', + }, + warn: { + '50': '{colors.solid.yellow.50}', + '100': '{colors.solid.yellow.100}', + '200': '{colors.solid.yellow.200}', + '300': '{colors.solid.yellow.300}', + '400': '{colors.solid.yellow.400}', + '500': '{colors.solid.yellow.500}', + '600': '{colors.solid.yellow.600}', + '700': '{colors.solid.yellow.700}', + '800': '{colors.solid.yellow.800}', + '900': '{colors.solid.yellow.900}', + '950': '{colors.solid.yellow.950}', + }, + transparent: 'rgba(255, 255, 255, 0.0001)', + help: { + '50': '{colors.solid.purple.50}', + '100': '{colors.solid.purple.100}', + '200': '{colors.solid.purple.200}', + '300': '{colors.solid.purple.300}', + '400': '{colors.solid.purple.400}', + '500': '{colors.solid.purple.500}', + '600': '{colors.solid.purple.600}', + '700': '{colors.solid.purple.700}', + '800': '{colors.solid.purple.800}', + '900': '{colors.solid.purple.900}', + '950': '{colors.solid.purple.950}', + }, + error: { + '50': '{colors.solid.red.50}', + '100': '{colors.solid.red.100}', + '200': '{colors.solid.red.200}', + '300': '{colors.solid.red.300}', + '400': '{colors.solid.red.400}', + '500': '{colors.solid.red.500}', + '600': '{colors.solid.red.600}', + '700': '{colors.solid.red.700}', + '800': '{colors.solid.red.800}', + '900': '{colors.solid.red.900}', + '950': '{colors.solid.red.950}', + }, + surface: { + '0': '{colors.alpha.white.1000}', + '50': '{colors.solid.zinc.50}', + '100': '{colors.solid.zinc.100}', + '200': '{colors.solid.zinc.200}', + '300': '{colors.solid.zinc.300}', + '400': '{colors.solid.zinc.400}', + '500': '{colors.solid.zinc.500}', + '600': '{colors.solid.zinc.600}', + '700': '{colors.solid.zinc.700}', + '800': '{colors.solid.zinc.800}', + '900': '{colors.solid.zinc.900}', + '950': '{colors.solid.zinc.950}', + }, + primary: { + color: '{colors.solid.green.500}', + contrastColor: '{colors.alpha.white.1000}', + hoverColor: '{colors.solid.green.600}', + activeColor: '{colors.solid.green.700}', + hoverBackground: '{colors.solid.green.50}', + activeBackground: '{colors.solid.green.100}', + borderColor: '{colors.solid.green.200}', + selectedBackground: '{colors.solid.green.500}', + selectedHoverBackground: '{colors.solid.green.600}', + }, + highlight: { + background: '{colors.solid.zinc.900}', + focusBackground: '{colors.solid.zinc.800}', + color: '{colors.alpha.white.1000}', + focusColor: '{colors.alpha.white.1000}', + }, + focusRing: { + shadow: '{shadows.200}', + extend: { + invalid: '{colors.solid.red.200}', + success: '{colors.solid.green.200}', + warning: '{colors.solid.yellow.200}', + info: '{colors.solid.blue.200}', + }, + }, + mask: { + background: '{colors.alpha.black.400}', + color: '{surface.200}', + }, + form: { + background: '{colors.alpha.white.1000}', + disabledBackground: '{colors.solid.zinc.200}', + readonlyBackground: '{colors.solid.zinc.100}', + filledBackground: '{colors.alpha.white.1000}', + filledHoverBackground: '{colors.alpha.white.1000}', + filledFocusBackground: '{colors.alpha.white.1000}', + borderColor: '{colors.solid.zinc.300}', + hoverBorderPrimaryColor: '{colors.solid.zinc.900}', + focusBorderPrimaryColor: '{colors.solid.zinc.900}', + hoverBorderSecondaryColor: '{colors.solid.green.600}', + focusBorderSecondaryColor: '{colors.solid.green.600}', + invalidBorderColor: '{colors.solid.red.400}', + color: '{colors.solid.zinc.950}', + disabledColor: '{colors.solid.zinc.500}', + placeholderColor: '{colors.solid.zinc.500}', + invalidPlaceholderColor: '{colors.solid.red.600}', + floatLabelColor: '{colors.solid.zinc.500}', + floatLabelFocusColor: '{colors.solid.zinc.500}', + floatLabelActiveColor: '{colors.solid.zinc.500}', + floatLabelInvalidColor: '{form.invalidPlaceholderColor}', + iconColor: '{colors.solid.zinc.950}', + backgroundHandler: '{colors.alpha.white.1000}', + shadow: '{shadows.200}', + }, + text: { + color: '{colors.solid.zinc.900}', + extend: { + colorPrimaryStatic: '{colors.solid.zinc.900}', + colorSecondaryStatic: '{colors.alpha.white.1000}', + colorInverted: '{colors.alpha.white.1000}', + }, + hoverColor: '{colors.solid.zinc.700}', + primaryColor: '{colors.solid.green.600}', + hoverPrimaryColor: '{colors.solid.green.700}', + secondaryColor: '{colors.solid.zinc.600}', + hoverSecondaryColor: '{colors.solid.zinc.400}', + mutedColor: '{colors.solid.zinc.500}', + hoverMutedColor: '{colors.solid.zinc.300}', + disabledColor: '{colors.solid.zinc.300}', + infoColor: '{colors.solid.blue.600}', + successColor: '{colors.solid.green.700}', + dangerColor: '{colors.solid.red.600}', + warningColor: '{colors.solid.yellow.600}', + helpColor: '{colors.solid.purple.600}', + }, + content: { + background: '{colors.alpha.white.1000}', + hoverBackground: '{colors.solid.zinc.100}', + borderColor: '{colors.solid.zinc.200}', + activeBorderColor: '{colors.solid.zinc.800}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + shadow: '{shadows.400}', + }, + list: { + option: { + background: '{colors.alpha.white.1000}', + focusBackground: '{colors.solid.zinc.100}', + selectedBackground: '{colors.solid.zinc.900}', + selectedFocusBackground: '{colors.solid.zinc.700}', + color: '{text.color}', + focusColor: '{text.color}', + selectedColor: '{text.extend.colorInverted}', + selectedFocusColor: '{text.extend.colorInverted}', + icon: { + color: '{text.color}', + focusColor: '{text.color}', + }, + }, + optionGroup: { + background: '{colors.alpha.white.1000}', + color: '{text.mutedColor}', + }, + }, + overlay: { + select: { + background: '{colors.alpha.white.1000}', + borderColor: '{colors.solid.zinc.200}', + color: '{text.color}', + shadow: '0 0.25rem 0.5rem {colors.alpha.black.200}', + }, + popover: { + background: '{colors.alpha.white.1000}', + borderColor: '{form.borderColor}', + color: '{text.color}', + shadow: '{shadows.400}', + }, + modal: { + background: '{colors.alpha.white.1000}', + backdrop: '{colors.alpha.black.300}', + borderColor: '{colors.solid.zinc.200}', + color: '{text.color}', + shadow: '{shadows.200}', + }, + }, + navigation: { + submenuLabel: { + background: 'rgba(255, 255, 255, 0.0000)', + color: '{text.mutedColor}', + }, + submenuIcon: { + color: '{colors.solid.zinc.900}', + focusColor: '{colors.solid.zinc.900}', + activeColor: '{colors.alpha.white.1000}', + }, + item: { + focusBackground: '{colors.solid.zinc.100}', + activeBackground: '{colors.solid.zinc.900}', + color: '{colors.solid.zinc.900}', + focusColor: '{colors.solid.zinc.900}', + icon: { + color: '{colors.solid.zinc.900}', + focusColor: '{colors.solid.zinc.900}', + activeColor: '{colors.alpha.white.1000}', + }, + activeColor: '{colors.alpha.white.1000}', + }, + shadow: '{shadows.400}', + }, + }, + dark: { + success: { + '50': '{colors.solid.green.950}', + '100': '{colors.solid.green.900}', + '200': '{colors.solid.green.800}', + '300': '{colors.solid.green.700}', + '400': '{colors.solid.green.600}', + '500': '{colors.solid.green.500}', + '600': '{colors.solid.green.400}', + '700': '{colors.solid.green.300}', + '800': '{colors.solid.green.200}', + '900': '{colors.solid.green.100}', + '950': '{colors.solid.green.50}', + }, + info: { + '50': '{colors.solid.blue.950}', + '100': '{colors.solid.blue.900}', + '200': '{colors.solid.blue.800}', + '300': '{colors.solid.blue.700}', + '400': '{colors.solid.blue.600}', + '500': '{colors.solid.blue.500}', + '600': '{colors.solid.blue.400}', + '700': '{colors.solid.blue.300}', + '800': '{colors.solid.blue.200}', + '900': '{colors.solid.blue.100}', + '950': '{colors.solid.blue.50}', + }, + warn: { + '50': '{colors.solid.yellow.950}', + '100': '{colors.solid.yellow.900}', + '200': '{colors.solid.yellow.800}', + '300': '{colors.solid.yellow.700}', + '400': '{colors.solid.yellow.600}', + '500': '{colors.solid.yellow.500}', + '600': '{colors.solid.yellow.400}', + '700': '{colors.solid.yellow.300}', + '800': '{colors.solid.yellow.200}', + '900': '{colors.solid.yellow.100}', + '950': '{colors.solid.yellow.50}', + }, + transparent: 'rgba(0, 0, 0, 0.0001)', + help: { + '50': '{colors.solid.purple.950}', + '100': '{colors.solid.purple.900}', + '200': '{colors.solid.purple.800}', + '300': '{colors.solid.purple.700}', + '400': '{colors.solid.purple.600}', + '500': '{colors.solid.purple.500}', + '600': '{colors.solid.purple.400}', + '700': '{colors.solid.purple.300}', + '800': '{colors.solid.purple.200}', + '900': '{colors.solid.purple.100}', + '950': '{colors.solid.purple.50}', + }, + error: { + '50': '{colors.solid.red.950}', + '100': '{colors.solid.red.900}', + '200': '{colors.solid.red.800}', + '300': '{colors.solid.red.700}', + '400': '{colors.solid.red.600}', + '500': '{colors.solid.red.500}', + '600': '{colors.solid.red.400}', + '700': '{colors.solid.red.300}', + '800': '{colors.solid.red.200}', + '900': '{colors.solid.red.100}', + '950': '{colors.solid.red.50}', + }, + surface: { + '0': '{colors.alpha.black.1000}', + '50': '{colors.solid.zinc.950}', + '100': '{colors.solid.zinc.900}', + '200': '{colors.solid.zinc.800}', + '300': '{colors.solid.zinc.700}', + '400': '{colors.solid.zinc.600}', + '500': '{colors.solid.zinc.500}', + '600': '{colors.solid.zinc.400}', + '700': '{colors.solid.zinc.300}', + '800': '{colors.solid.zinc.200}', + '900': '{colors.solid.zinc.100}', + '950': '{colors.solid.zinc.50}', + }, + primary: { + color: '{colors.solid.green.500}', + contrastColor: '{colors.solid.zinc.900}', + hoverColor: '{colors.solid.green.400}', + activeColor: '{colors.solid.green.300}', + hoverBackground: '{colors.solid.green.950}', + activeBackground: '{colors.solid.green.900}', + borderColor: '{colors.solid.green.800}', + selectedBackground: '{colors.solid.green.500}', + selectedHoverBackground: '{colors.solid.green.600}', + }, + highlight: { + background: '{colors.solid.zinc.100}', + focusBackground: '{colors.solid.zinc.200}', + color: '{colors.solid.zinc.900}', + focusColor: '{colors.solid.zinc.900}', + }, + focusRing: { + shadow: '{shadows.200}', + extend: { + invalid: '{colors.solid.red.800}', + success: '{colors.solid.green.800}', + warning: '{colors.solid.yellow.800}', + info: '{colors.solid.blue.800}', + }, + }, + mask: { + background: '{colors.alpha.black.600}', + color: '{surface.800}', + }, + form: { + background: '{colors.solid.zinc.950}', + disabledBackground: '{colors.solid.zinc.800}', + readonlyBackground: '{colors.solid.zinc.900}', + filledBackground: '{colors.solid.zinc.950}', + filledHoverBackground: '{colors.solid.zinc.950}', + filledFocusBackground: '{colors.solid.zinc.950}', + borderColor: '{colors.solid.zinc.700}', + hoverBorderPrimaryColor: '{colors.solid.zinc.100}', + focusBorderPrimaryColor: '{colors.solid.zinc.100}', + hoverBorderSecondaryColor: '{colors.solid.green.400}', + focusBorderSecondaryColor: '{colors.solid.green.400}', + invalidBorderColor: '{colors.solid.red.600}', + color: '{colors.alpha.white.1000}', + disabledColor: '{colors.solid.zinc.500}', + placeholderColor: '{colors.solid.zinc.500}', + invalidPlaceholderColor: '{colors.solid.red.400}', + floatLabelColor: '{colors.solid.zinc.500}', + floatLabelFocusColor: '{colors.solid.zinc.500}', + floatLabelActiveColor: '{colors.solid.zinc.500}', + floatLabelInvalidColor: '{form.invalidPlaceholderColor}', + iconColor: '{colors.alpha.white.1000}', + backgroundHandler: '{colors.alpha.white.1000}', + shadow: '{shadows.200}', + }, + text: { + color: '{colors.alpha.white.1000}', + extend: { + colorPrimaryStatic: '{colors.solid.zinc.900}', + colorSecondaryStatic: '{colors.alpha.white.1000}', + colorInverted: '{colors.solid.zinc.900}', + }, + hoverColor: '{colors.solid.zinc.300}', + primaryColor: '{colors.solid.green.400}', + hoverPrimaryColor: '{colors.solid.green.300}', + secondaryColor: '{colors.solid.zinc.400}', + hoverSecondaryColor: '{colors.solid.zinc.600}', + mutedColor: '{colors.solid.zinc.500}', + hoverMutedColor: '{colors.solid.zinc.700}', + disabledColor: '{colors.solid.zinc.700}', + infoColor: '{colors.solid.blue.400}', + successColor: '{colors.solid.green.400}', + dangerColor: '{colors.solid.red.400}', + warningColor: '{colors.solid.yellow.400}', + helpColor: '{colors.solid.purple.400}', + }, + content: { + background: '{colors.solid.zinc.900}', + hoverBackground: '{colors.solid.zinc.800}', + borderColor: '{colors.solid.zinc.800}', + activeBorderColor: '{colors.solid.zinc.200}', + color: '{text.color}', + hoverColor: '{text.hoverColor}', + shadow: '{shadows.400}', + }, + list: { + option: { + background: '{colors.solid.zinc.900}', + focusBackground: '{colors.solid.zinc.800}', + selectedBackground: '{colors.solid.zinc.100}', + selectedFocusBackground: '{colors.solid.zinc.300}', + color: '{text.color}', + focusColor: '{text.color}', + selectedColor: '{text.extend.colorInverted}', + selectedFocusColor: '{text.extend.colorInverted}', + icon: { + color: '{text.color}', + focusColor: '{text.color}', + }, + }, + optionGroup: { + background: '{colors.solid.zinc.900}', + color: '{text.mutedColor}', + }, + }, + overlay: { + select: { + background: '{colors.solid.zinc.900}', + borderColor: '{colors.solid.zinc.800}', + color: '{text.color}', + shadow: '{shadows.400}', + }, + popover: { + background: '{colors.solid.zinc.900}', + borderColor: '{form.borderColor}', + color: '{text.color}', + shadow: '{shadows.400}', + }, + modal: { + background: '{colors.solid.zinc.900}', + backdrop: '{colors.alpha.black.300}', + borderColor: '{colors.solid.zinc.800}', + color: '{text.color}', + shadow: '{shadows.200}', + }, + }, + navigation: { + submenuLabel: { + background: 'rgba(255, 255, 255, 0.0000)', + color: '{text.mutedColor}', + }, + submenuIcon: { + color: '{colors.solid.zinc.100}', + focusColor: '{colors.solid.zinc.100}', + activeColor: '{colors.solid.zinc.900}', + }, + item: { + focusBackground: '{colors.solid.zinc.900}', + activeBackground: '{colors.solid.zinc.100}', + color: '{colors.alpha.white.1000}', + focusColor: '{colors.alpha.white.1000}', + icon: { + color: '{colors.alpha.white.1000}', + focusColor: '{colors.alpha.white.1000}', + activeColor: '{colors.solid.zinc.900}', + }, + activeColor: '{colors.solid.zinc.900}', + }, + shadow: '{shadows.400}', + }, + }, + }, +}; diff --git a/src/prime-preset/tokens/sizing-base.json b/src/prime-preset/tokens/sizing-base.json deleted file mode 100644 index cb9c0f3..0000000 --- a/src/prime-preset/tokens/sizing-base.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "sizingInputtext": { - "root": { - "fontSize": "0.875rem", - "paddingX": "0.875rem", - "paddingY": "0.875rem" - } - }, - "sizingSelect": { - "root": { - "fontSize": "0.875rem", - "paddingX": "0.875rem", - "paddingY": "0.875rem" - } - }, - "sizingDialog": { - "extra": { - "minWidth": "21.875rem" - } - }, - "sizingMessage": { - "width": "21.875rem" - }, - "sizingToast": { - "width": "21.875rem" - }, - "sizingDrawer": { - "width": "21.875rem" - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/sizing-lg.json b/src/prime-preset/tokens/sizing-lg.json deleted file mode 100644 index 9e2f0d6..0000000 --- a/src/prime-preset/tokens/sizing-lg.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "sizingInputtext": { - "root": { - "fontSize": "0.875rem", - "paddingX": "1.09375rem", - "paddingY": "1.09375rem" - } - }, - "sizingSelect": { - "root": { - "fontSize": "0.875rem", - "paddingX": "1.09375rem", - "paddingY": "1.09375rem" - } - }, - "sizingDialog": { - "extra": { - "minWidth": "26.25rem" - } - }, - "sizingMessage": { - "width": "26.25rem" - }, - "sizingToast": { - "width": "26.25rem" - }, - "sizingDrawer": { - "width": "26.25rem" - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/sizing-sm.json b/src/prime-preset/tokens/sizing-sm.json deleted file mode 100644 index 8118b77..0000000 --- a/src/prime-preset/tokens/sizing-sm.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "sizingInputtext": { - "root": { - "fontSize": "0.875rem", - "paddingX": "0.65625rem", - "paddingY": "0.65625rem" - } - }, - "sizingSelect": { - "root": { - "fontSize": "0.875rem", - "paddingX": "0.65625rem", - "paddingY": "0.65625rem" - } - }, - "sizingDialog": { - "extra": { - "minWidth": "17.5rem" - } - }, - "sizingMessage": { - "width": "17.5rem" - }, - "sizingToast": { - "width": "17.5rem" - }, - "sizingDrawer": { - "width": "17.5rem" - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/sizing-xlg.json b/src/prime-preset/tokens/sizing-xlg.json deleted file mode 100644 index 8dc3516..0000000 --- a/src/prime-preset/tokens/sizing-xlg.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "sizingInputtext": { - "root": { - "fontSize": "0.875rem", - "paddingX": "1.3125rem", - "paddingY": "1.3125rem" - } - }, - "sizingSelect": { - "root": { - "fontSize": "0.875rem", - "paddingX": "1.3125rem", - "paddingY": "1.3125rem" - } - }, - "sizingDialog": { - "extra": { - "minWidth": "39.375rem" - } - }, - "sizingMessage": { - "width": "39.375rem" - }, - "sizingToast": { - "width": "39.375rem" - }, - "sizingDrawer": { - "width": "39.375rem" - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/theme-dark.json b/src/prime-preset/tokens/theme-dark.json deleted file mode 100644 index 9e1b794..0000000 --- a/src/prime-preset/tokens/theme-dark.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "success": { - "50": "{colors.solid.green.950}", - "100": "{colors.solid.green.900}", - "200": "{colors.solid.green.800}", - "300": "{colors.solid.green.700}", - "400": "{colors.solid.green.600}", - "500": "{colors.solid.green.500}", - "600": "{colors.solid.green.400}", - "700": "{colors.solid.green.300}", - "800": "{colors.solid.green.200}", - "900": "{colors.solid.green.100}", - "950": "{colors.solid.green.50}" - }, - "info": { - "50": "{colors.solid.blue.950}", - "100": "{colors.solid.blue.900}", - "200": "{colors.solid.blue.800}", - "300": "{colors.solid.blue.700}", - "400": "{colors.solid.blue.600}", - "500": "{colors.solid.blue.500}", - "600": "{colors.solid.blue.400}", - "700": "{colors.solid.blue.300}", - "800": "{colors.solid.blue.200}", - "900": "{colors.solid.blue.100}", - "950": "{colors.solid.blue.50}" - }, - "warn": { - "50": "{colors.solid.yellow.950}", - "100": "{colors.solid.yellow.900}", - "200": "{colors.solid.yellow.800}", - "300": "{colors.solid.yellow.700}", - "400": "{colors.solid.yellow.600}", - "500": "{colors.solid.yellow.500}", - "600": "{colors.solid.yellow.400}", - "700": "{colors.solid.yellow.300}", - "800": "{colors.solid.yellow.200}", - "900": "{colors.solid.yellow.100}", - "950": "{colors.solid.yellow.50}" - }, - "transparent": "rgba(0, 0, 0, 0.0001)", - "help": { - "50": "{colors.solid.purple.950}", - "100": "{colors.solid.purple.900}", - "200": "{colors.solid.purple.800}", - "300": "{colors.solid.purple.700}", - "400": "{colors.solid.purple.600}", - "500": "{colors.solid.purple.500}", - "600": "{colors.solid.purple.400}", - "700": "{colors.solid.purple.300}", - "800": "{colors.solid.purple.200}", - "900": "{colors.solid.purple.100}", - "950": "{colors.solid.purple.50}" - }, - "error": { - "50": "{colors.solid.red.950}", - "100": "{colors.solid.red.900}", - "200": "{colors.solid.red.800}", - "300": "{colors.solid.red.700}", - "400": "{colors.solid.red.600}", - "500": "{colors.solid.red.500}", - "600": "{colors.solid.red.400}", - "700": "{colors.solid.red.300}", - "800": "{colors.solid.red.200}", - "900": "{colors.solid.red.100}", - "950": "{colors.solid.red.50}" - }, - "surface": { - "0": "{colors.alpha.black.100}", - "50": "{colors.solid.zinc.950}", - "100": "{colors.solid.zinc.900}", - "200": "{colors.solid.zinc.800}", - "300": "{colors.solid.zinc.700}", - "400": "{colors.solid.zinc.600}", - "500": "{colors.solid.zinc.500}", - "600": "{colors.solid.zinc.400}", - "700": "{colors.solid.zinc.300}", - "800": "{colors.solid.zinc.200}", - "900": "{colors.solid.zinc.100}", - "950": "{colors.solid.zinc.50}" - }, - "primary": { - "color": "{primary.500}", - "contrastColor": "{colors.solid.zinc.900}", - "hoverColor": "{primary.400}", - "activeColor": "{primary.300}" - }, - "highlight": { - "background": "{colors.solid.zinc.100}", - "focusBackground": "{colors.solid.zinc.200}", - "color": "{colors.solid.zinc.900}", - "focusColor": "{colors.solid.zinc.900}" - }, - "focusRing": { - "shadow": "0 0 0 0.2rem {primary.800}", - "extend": { - "invalid": "{colors.solid.red.800}", - "success": "{colors.solid.green.800}", - "warning": "{colors.solid.yellow.800}", - "info": "{colors.solid.blue.800}" - } - }, - "mask": { - "background": "{colors.alpha.black.60}", - "color": "{surface.800}" - }, - "formField": { - "background": "{colors.solid.zinc.950}", - "disabledBackground": "{colors.solid.zinc.800}", - "readonlyBackground": "{colors.solid.zinc.900}", - "filledBackground": "{colors.solid.zinc.950}", - "filledHoverBackground": "{colors.solid.zinc.950}", - "filledFocusBackground": "{colors.solid.zinc.950}", - "borderColor": "{colors.solid.zinc.700}", - "hoverBorderPrimaryColor": "{colors.solid.zinc.100}", - "focusBorderPrimaryColor": "{colors.solid.zinc.100}", - "hoverBorderSecondaryColor": "{colors.solid.green.400}", - "focusBorderSecondaryColor": "{colors.solid.green.400}", - "invalidBorderColor": "{colors.solid.red.600}", - "color": "{colors.alpha.white.100}", - "disabledColor": "{colors.solid.zinc.500}", - "placeholderColor": "{colors.solid.zinc.500}", - "invalidPlaceholderColor": "{colors.solid.red.400}", - "floatLabelColor": "{colors.solid.zinc.500}", - "floatLabelFocusColor": "{colors.solid.zinc.500}", - "floatLabelActiveColor": "{colors.solid.zinc.500}", - "floatLabelInvalidColor": "{formField.invalidPlaceholderColor}", - "iconColor": "{colors.alpha.white.100}", - "shadow": "rgba(255, 255, 255, 0.0000)", - "backgroundHandler": "{colors.alpha.white.100}" - }, - "text": { - "color": "{colors.alpha.white.100}", - "extend": { - "colorPrimaryStatic": "{colors.solid.zinc.900}", - "colorSecondaryStatic": "{colors.alpha.white.100}", - "colorInverted": "{colors.solid.zinc.900}" - }, - "hoverColor": "{colors.solid.zinc.300}", - "mutedColor": "{colors.solid.zinc.500}", - "hoverMutedColor": "{colors.solid.zinc.700}" - }, - "content": { - "background": "{colors.solid.zinc.900}", - "hoverBackground": "{colors.solid.zinc.800}", - "borderColor": "{colors.solid.zinc.800}", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}" - }, - "overlay": { - "select": { - "background": "{colors.solid.zinc.900}", - "borderColor": "{colors.solid.zinc.800}", - "color": "{text.color}" - }, - "popover": { - "background": "{colors.solid.zinc.900}", - "borderColor": "{formField.borderColor}", - "color": "{text.color}", - "shadow": "rgba(24, 26, 31, 0.2000)" - }, - "modal": { - "background": "{colors.solid.zinc.900}", - "borderColor": "{colors.solid.zinc.800}", - "color": "{text.color}" - } - }, - "list": { - "option": { - "background": "{colors.solid.zinc.900}", - "focusBackground": "{colors.solid.zinc.800}", - "selectedBackground": "{colors.solid.zinc.100}", - "selectedFocusBackground": "{colors.solid.zinc.300}", - "color": "{text.color}", - "focusColor": "{text.color}", - "selectedColor": "{text.extend.colorInverted}", - "selectedFocusColor": "{text.extend.colorInverted}", - "icon": { - "color": "{text.color}", - "focusColor": "{text.color}" - } - }, - "surface": "#ffffff", - "optionGroup": { - "background": "{colors.solid.zinc.900}", - "color": "{text.mutedColor}" - } - }, - "navigation": { - "submenuLabel": { - "background": "rgba(255, 255, 255, 0.0000)", - "color": "{text.mutedColor}" - }, - "submenuIcon": { - "color": "{colors.solid.zinc.100}", - "focusColor": "{colors.solid.zinc.100}", - "activeColor": "{colors.solid.zinc.900}" - }, - "item": { - "focusBackground": "{colors.solid.zinc.900}", - "activeBackground": "{colors.solid.zinc.100}", - "color": "{colors.alpha.white.100}", - "focusColor": "{colors.alpha.white.100}", - "activeColor": "{colors.solid.zinc.900}", - "icon": { - "color": "{colors.alpha.white.100}", - "focusColor": "{colors.alpha.white.100}", - "activeColor": "{colors.solid.zinc.900}" - } - } - } -} \ No newline at end of file diff --git a/src/prime-preset/tokens/theme-light.json b/src/prime-preset/tokens/theme-light.json deleted file mode 100644 index d06ada7..0000000 --- a/src/prime-preset/tokens/theme-light.json +++ /dev/null @@ -1,212 +0,0 @@ -{ - "success": { - "50": "{colors.solid.green.50}", - "100": "{colors.solid.green.100}", - "200": "{colors.solid.green.200}", - "300": "{colors.solid.green.300}", - "400": "{colors.solid.green.400}", - "500": "{colors.solid.green.500}", - "600": "{colors.solid.green.600}", - "700": "{colors.solid.green.700}", - "800": "{colors.solid.green.800}", - "900": "{colors.solid.green.900}", - "950": "{colors.solid.green.950}" - }, - "info": { - "50": "{colors.solid.blue.50}", - "100": "{colors.solid.blue.100}", - "200": "{colors.solid.blue.200}", - "300": "{colors.solid.blue.300}", - "400": "{colors.solid.blue.400}", - "500": "{colors.solid.blue.500}", - "600": "{colors.solid.blue.600}", - "700": "{colors.solid.blue.700}", - "800": "{colors.solid.blue.800}", - "900": "{colors.solid.blue.900}", - "950": "{colors.solid.blue.950}" - }, - "warn": { - "50": "{colors.solid.yellow.50}", - "100": "{colors.solid.yellow.100}", - "200": "{colors.solid.yellow.200}", - "300": "{colors.solid.yellow.300}", - "400": "{colors.solid.yellow.400}", - "500": "{colors.solid.yellow.500}", - "600": "{colors.solid.yellow.600}", - "700": "{colors.solid.yellow.700}", - "800": "{colors.solid.yellow.800}", - "900": "{colors.solid.yellow.900}", - "950": "{colors.solid.yellow.950}" - }, - "transparent": "rgba(255, 255, 255, 0.0001)", - "help": { - "50": "{colors.solid.purple.50}", - "100": "{colors.solid.purple.100}", - "200": "{colors.solid.purple.200}", - "300": "{colors.solid.purple.300}", - "400": "{colors.solid.purple.400}", - "500": "{colors.solid.purple.500}", - "600": "{colors.solid.purple.600}", - "700": "{colors.solid.purple.700}", - "800": "{colors.solid.purple.800}", - "900": "{colors.solid.purple.900}", - "950": "{colors.solid.purple.950}" - }, - "error": { - "50": "{colors.solid.red.50}", - "100": "{colors.solid.red.100}", - "200": "{colors.solid.red.200}", - "300": "{colors.solid.red.300}", - "400": "{colors.solid.red.400}", - "500": "{colors.solid.red.500}", - "600": "{colors.solid.red.600}", - "700": "{colors.solid.red.700}", - "800": "{colors.solid.red.800}", - "900": "{colors.solid.red.900}", - "950": "{colors.solid.red.950}" - }, - "surface": { - "0": "{colors.alpha.white.100}", - "50": "{colors.solid.zinc.50}", - "100": "{colors.solid.zinc.100}", - "200": "{colors.solid.zinc.200}", - "300": "{colors.solid.zinc.300}", - "400": "{colors.solid.zinc.400}", - "500": "{colors.solid.zinc.500}", - "600": "{colors.solid.zinc.600}", - "700": "{colors.solid.zinc.700}", - "800": "{colors.solid.zinc.800}", - "900": "{colors.solid.zinc.900}", - "950": "{colors.solid.zinc.950}" - }, - "primary": { - "color": "{primary.500}", - "contrastColor": "{surface.0}", - "hoverColor": "{primary.600}", - "activeColor": "{primary.700}" - }, - "highlight": { - "background": "{colors.solid.zinc.900}", - "focusBackground": "{colors.solid.zinc.800}", - "color": "{colors.alpha.white.100}", - "focusColor": "{colors.alpha.white.100}" - }, - "focusRing": { - "shadow": "0 0 0 0.2rem {primary.200}", - "extend": { - "invalid": "{colors.solid.red.200}", - "success": "{colors.solid.green.200}", - "warning": "{colors.solid.yellow.200}", - "info": "{colors.solid.blue.200}" - } - }, - "mask": { - "background": "{colors.alpha.black.40}", - "color": "{surface.200}" - }, - "formField": { - "background": "{colors.alpha.white.100}", - "disabledBackground": "{colors.solid.zinc.200}", - "readonlyBackground": "{colors.solid.zinc.100}", - "filledBackground": "{colors.alpha.white.100}", - "filledHoverBackground": "{colors.alpha.white.100}", - "filledFocusBackground": "{colors.alpha.white.100}", - "borderColor": "{colors.solid.zinc.300}", - "hoverBorderPrimaryColor": "{colors.solid.zinc.900}", - "focusBorderPrimaryColor": "{colors.solid.zinc.900}", - "hoverBorderSecondaryColor": "{colors.solid.green.600}", - "focusBorderSecondaryColor": "{colors.solid.green.600}", - "invalidBorderColor": "{colors.solid.red.400}", - "color": "{colors.solid.zinc.950}", - "disabledColor": "{colors.solid.zinc.500}", - "placeholderColor": "{colors.solid.zinc.500}", - "invalidPlaceholderColor": "{colors.solid.red.600}", - "floatLabelColor": "{colors.solid.zinc.500}", - "floatLabelFocusColor": "{colors.solid.zinc.500}", - "floatLabelActiveColor": "{colors.solid.zinc.500}", - "floatLabelInvalidColor": "{formField.invalidPlaceholderColor}", - "iconColor": "{colors.solid.zinc.950}", - "shadow": "rgba(0, 0, 0, 0.0000)", - "backgroundHandler": "{colors.alpha.white.100}" - }, - "text": { - "color": "{colors.solid.zinc.900}", - "extend": { - "colorPrimaryStatic": "{colors.solid.zinc.900}", - "colorSecondaryStatic": "{colors.alpha.white.100}", - "colorInverted": "{colors.alpha.white.100}" - }, - "hoverColor": "{colors.solid.zinc.700}", - "mutedColor": "{colors.solid.zinc.500}", - "hoverMutedColor": "{colors.solid.zinc.300}" - }, - "content": { - "background": "{colors.alpha.white.100}", - "hoverBackground": "{colors.solid.zinc.100}", - "borderColor": "{colors.solid.zinc.200}", - "color": "{text.color}", - "hoverColor": "{text.hoverColor}" - }, - "overlay": { - "select": { - "background": "{colors.alpha.white.100}", - "borderColor": "{colors.solid.zinc.200}", - "color": "{text.color}" - }, - "popover": { - "background": "{colors.alpha.white.100}", - "borderColor": "{formField.borderColor}", - "color": "{text.color}", - "shadow": "rgba(24, 26, 31, 0.2000)" - }, - "modal": { - "background": "{colors.alpha.white.100}", - "borderColor": "{colors.solid.zinc.200}", - "color": "{text.color}" - } - }, - "list": { - "option": { - "background": "{colors.alpha.white.100}", - "focusBackground": "{colors.solid.zinc.100}", - "selectedBackground": "{colors.solid.zinc.900}", - "selectedFocusBackground": "{colors.solid.zinc.700}", - "color": "{text.color}", - "focusColor": "{text.color}", - "selectedColor": "{text.extend.colorInverted}", - "selectedFocusColor": "{text.extend.colorInverted}", - "icon": { - "color": "{text.color}", - "focusColor": "{text.color}" - } - }, - "surface": "#ffffff", - "optionGroup": { - "background": "{colors.alpha.white.100}", - "color": "{text.mutedColor}" - } - }, - "navigation": { - "submenuLabel": { - "background": "rgba(255, 255, 255, 0.0000)", - "color": "{text.mutedColor}" - }, - "submenuIcon": { - "color": "{colors.solid.zinc.900}", - "focusColor": "{colors.solid.zinc.900}", - "activeColor": "{colors.alpha.white.100}" - }, - "item": { - "focusBackground": "{colors.solid.zinc.100}", - "activeBackground": "{colors.solid.zinc.900}", - "color": "{colors.solid.zinc.900}", - "focusColor": "{colors.solid.zinc.900}", - "activeColor": "{colors.alpha.white.100}", - "icon": { - "color": "{colors.solid.zinc.900}", - "focusColor": "{colors.solid.zinc.900}", - "activeColor": "{colors.alpha.white.100}" - } - } - } -} \ No newline at end of file diff --git a/src/stories/components/button/button.stories.ts b/src/stories/components/button/button.stories.ts index 80c1166..7df3d34 100644 --- a/src/stories/components/button/button.stories.ts +++ b/src/stories/components/button/button.stories.ts @@ -1,48 +1,388 @@ -import { Meta, moduleMetadata } from '@storybook/angular'; - -import { ButtonModule } from 'primeng/button'; - -import { ButtonBaseComponent, Base } from './examples/button-base.component'; -import { ButtonSizesComponent, Sizes } from './examples/button-sizes.component'; -import { ButtonRoundedComponent, Rounded } from './examples/button-rounded.component'; -import { ButtonOutlinedComponent, Outlined } from './examples/button-outlined.component'; -import { ButtonTextComponent, Text } from './examples/button-text.component'; -import { ButtonIconComponent, Icon } from './examples/button-icon.component'; -import { ButtonDisabledComponent, Disabled } from './examples/button-disabled.component'; -import { ButtonLoadingComponent, Loading } from './examples/button-loading.component'; -import { ButtonBadgeComponent, Badge } from './examples/button-badge.component'; -import { ButtonSeverityComponent, Severity } from './examples/button-severity.component'; -import { CommonModule } from '@angular/common'; - -const meta: Meta = { - title: 'PrimeNG/Button', +import { Meta, StoryObj, moduleMetadata } from '@storybook/angular'; +import { ExtraButtonComponent } from '../../../components/button/button-extra.component'; + +const gridTemplate = (inner: string) => ` +
+ small + base + large + xlarge + ${inner} +
+`; + +const meta: Meta = { + title: 'Prime/Button', + component: ExtraButtonComponent, tags: ['autodocs'], decorators: [ moduleMetadata({ - imports: [ - CommonModule, - ButtonModule, - ButtonBaseComponent, - ButtonSizesComponent, - ButtonRoundedComponent, - ButtonOutlinedComponent, - ButtonTextComponent, - ButtonIconComponent, - ButtonDisabledComponent, - ButtonLoadingComponent, - ButtonBadgeComponent, - ButtonSeverityComponent - ] + imports: [ExtraButtonComponent] }) ], parameters: { docs: { description: { - component: 'Компонент кнопки с различными стилями, состояниями и иконками' - } - } - } + component: + 'Кнопка — базовый интерактивный элемент. [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)', + }, + }, + }, + argTypes: { + label: { + control: 'text', + description: 'Текст кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'Button' }, + type: { summary: 'string' }, + }, + }, + variant: { + control: 'select', + options: ['primary', 'secondary', 'outlined', 'text', 'link'], + description: 'Вариант отображения кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'primary' }, + type: { summary: "'primary' | 'secondary' | 'outlined' | 'text' | 'link'" }, + }, + }, + severity: { + control: 'select', + options: [null, 'success', 'info', 'warning', 'danger'], + description: 'Семантический вариант кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'null' }, + type: { summary: "'success' | 'info' | 'warning' | 'danger' | null" }, + }, + }, + size: { + control: 'select', + options: ['small', 'base', 'large', 'xlarge'], + description: 'Размер кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'base' }, + type: { summary: "'small' | 'base' | 'large' | 'xlarge'" }, + }, + }, + icon: { + control: 'text', + description: 'CSS-класс иконки (например: ti ti-check)', + table: { + category: 'Props', + defaultValue: { summary: '' }, + type: { summary: 'string' }, + }, + }, + iconPos: { + control: 'select', + options: [null, 'prefix', 'postfix'], + description: 'Позиция иконки относительно текста', + table: { + category: 'Props', + defaultValue: { summary: 'null' }, + type: { summary: "'prefix' | 'postfix' | null" }, + }, + }, + iconOnly: { + control: 'boolean', + description: 'Только иконка, без текста', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + rounded: { + control: 'boolean', + description: 'Скруглённая форма кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + disabled: { + control: 'boolean', + description: 'Отключённое состояние', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + loading: { + control: 'boolean', + description: 'Состояние загрузки с индикатором', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + }, }; + export default meta; +type Story = StoryObj; + +// ── Default ────────────────────────────────────────────────────────────────── + +export const ButtonDefault: Story = { + name: 'Button', + args: { + label: 'Button', + }, + parameters: { + docs: { + description: { + story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.', + }, + source: { + code: ``, + }, + }, + }, +}; + +// ── Stories ────────────────────────────────────────────────────────────────── + +export const Sizes: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Button' }, + parameters: { + docs: { + description: { story: 'Все доступные размеры: small, base, large, xlarge.' }, + source: { + code: ` + + + +`, + }, + }, + }, +}; + +export const Icons: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Button', icon: 'ti ti-check' }, + parameters: { + docs: { + description: { story: 'Кнопки с иконками (префикс по умолчанию).' }, + source: { + code: ``, + }, + }, + }, +}; + +export const IconOnly: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { icon: 'ti ti-check' }, + parameters: { + docs: { + description: { story: 'Кнопки без текста, только с иконкой.' }, + source: { + code: ``, + }, + }, + }, +}; + +export const Loading: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Button' }, + parameters: { + docs: { + description: { story: 'Состояние загрузки с индикатором.' }, + source: { + code: ``, + }, + }, + }, +}; -export { Base, Disabled, Loading, Sizes, Rounded, Outlined, Text, Icon, Badge, Severity }; +export const Rounded: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Button' }, + parameters: { + docs: { + description: { story: 'Скруглённая форма кнопок.' }, + source: { + code: ``, + }, + }, + }, +}; + +export const Text: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Button' }, + parameters: { + docs: { + description: { story: 'Текстовый вариант кнопки (без заливки и границ).' }, + source: { + code: ``, + }, + }, + }, +}; + +export const Link: Story = { + render: (args) => ({ + props: args, + template: gridTemplate(` + + + + + `), + }), + args: { label: 'Link Button' }, + parameters: { + docs: { + description: { story: 'Кнопка в виде ссылки.' }, + source: { + code: ``, + }, + }, + }, +}; + +export const Severity: Story = { + render: () => ({ + template: ` +
+ + success + info + warning + danger + + small + + + + + + base + + + + + + large + + + + + + xlarge + + + + +
+ `, + }), + parameters: { + docs: { + description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' }, + source: { + code: ``, + }, + }, + }, +}; + +export const Disabled: Story = { + render: () => ({ + template: ` +
+ + success + info + warning + danger + + default + + + + + + outlined + + + + + + text + + + + +
+ `, + }), + parameters: { + docs: { + description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' }, + source: { + code: ``, + }, + }, + }, +}; diff --git a/src/stories/components/button/examples/button-extra.component.ts b/src/stories/components/button/examples/button-extra.component.ts new file mode 100644 index 0000000..46814e3 --- /dev/null +++ b/src/stories/components/button/examples/button-extra.component.ts @@ -0,0 +1,87 @@ +import { StoryObj } from '@storybook/angular'; + +export { ExtraButtonComponent } from '../../../../../components/button/button-extra.component'; + +export const Extra: StoryObj = { + render: (args) => ({ + props: args, + template: ` +` + }), + args: { + label: 'Button', + variant: 'primary', + severity: null, + size: 'base', + rounded: false, + iconPos: null, + iconOnly: false, + icon: '', + disabled: false, + loading: false + }, + argTypes: { + label: { + control: 'text', + description: 'Текст кнопки' + }, + variant: { + control: 'select', + options: ['primary', 'secondary', 'outlined', 'text', 'link'], + description: 'Вариант отображения кнопки' + }, + severity: { + control: 'select', + options: [null, 'success', 'warning', 'danger', 'info'], + description: 'Цветовая схема кнопки' + }, + size: { + control: 'select', + options: ['small', 'base', 'large', 'xlarge'], + description: 'Размер кнопки' + }, + rounded: { + control: 'boolean', + description: 'Скруглённая форма кнопки' + }, + iconPos: { + control: 'select', + options: [null, 'prefix', 'postfix'], + description: 'Позиция иконки (prefix — слева, postfix — справа)' + }, + iconOnly: { + control: 'boolean', + description: 'Режим кнопки только с иконкой' + }, + icon: { + control: 'text', + description: 'CSS-класс иконки (например: ti ti-check)' + }, + disabled: { + control: 'boolean', + description: 'Отключённое состояние' + }, + loading: { + control: 'boolean', + description: 'Состояние загрузки с индикатором' + } + }, + parameters: { + docs: { + description: { + story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.' + } + } + } +}; diff --git a/src/styles.scss b/src/styles.scss index e6cb491..fae0382 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -3,3 +3,21 @@ @tailwind utilities; @import '@tabler/icons-webfont/dist/tabler-icons.min.css'; + +@font-face { + font-family: 'TT Fellows'; + src: url('./assets/fonts/tt-fellows/TT_Fellows_Regular.woff2') format('woff2'); + font-weight: 400; + font-style: normal; +} + +@font-face { + font-family: 'TT Fellows'; + src: url('./assets/fonts/tt-fellows/TT_Fellows_DemiBold.woff2') format('woff2'); + font-weight: 600; + font-style: normal; +} + +html { + font-size: 14px; +} From 630c16397faf18ac6b8236d94b282e9816cf5c5b Mon Sep 17 00:00:00 2001 From: Danil Khaliulin Date: Thu, 26 Mar 2026 21:10:47 +0700 Subject: [PATCH 3/6] =?UTF-8?q?button:=20=D0=BF=D1=80=D0=BE=D0=BF=D1=81=20?= =?UTF-8?q?badge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- angular.json | 3 + documentation.json | 1300 +++++++++-------- .../button/button-extra.component.ts | 8 +- src/components/button/button.component.scss | 15 + .../components/button/button.stories.ts | 222 ++- .../button/examples/button-extra.component.ts | 90 +- 6 files changed, 890 insertions(+), 748 deletions(-) diff --git a/angular.json b/angular.json index 0cbea1d..1552751 100644 --- a/angular.json +++ b/angular.json @@ -117,5 +117,8 @@ } } } + }, + "cli": { + "analytics": false } } \ No newline at end of file diff --git a/documentation.json b/documentation.json index d00b737..a5b9d48 100644 --- a/documentation.json +++ b/documentation.json @@ -9,7 +9,7 @@ "components": [ { "name": "ButtonBadgeComponent", - "id": "component-ButtonBadgeComponent-c9b005f02f6e55b548ed6d44acdd87fbdf45b61e3a7f18d9d961e78d431b006c05ee81e31efae1ae4ec339fb6b7695b596dedf691d78ee81e927ce08eee82673", + "id": "component-ButtonBadgeComponent-fab33f9afdb48c6fae49d289621dfd7234c7920f7d3f703dac62f523dd0852ba668326634ecf1aaddf69f2b1afbd505312415662d1865b6b360fbd9dec82dafc", "file": "src/stories/components/button/examples/button-badge.component.ts", "encapsulation": [], "entryComponents": [], @@ -18,8 +18,10 @@ "providers": [], "selector": "app-button-badge", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n \n\n \n\n \n\n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -34,26 +36,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" - }, - { - "name": "OverlayBadgeModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\nimport { OverlayBadgeModule } from 'primeng/overlaybadge';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-badge',\n standalone: true,\n imports: [ButtonModule, OverlayBadgeModule],\n template\n})\nexport class ButtonBadgeComponent {}\n\nexport const Badge: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n\n \n\n \n\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-badge',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonBadgeComponent {}\n\nexport const Badge: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonBaseComponent", - "id": "component-ButtonBaseComponent-81242ea4c12e4bd3710ef0ab4cd6263ecce5f5d559192ef040bf30fd20b9ff129d272455cd71793f536ca24f9722d12c4da599572fdc45d6162bc6ffd2e3fa0c", + "id": "component-ButtonBaseComponent-c8c405f4a3866155397528b8d67e747d1937ffdd827b6ac823a7f62bf82334820d309b144e65e531862b26ce7b6b3b20f332282f3e7200aa9077211d9f26a9f5", "file": "src/stories/components/button/examples/button-base.component.ts", "encapsulation": [], "entryComponents": [], @@ -62,8 +59,10 @@ "providers": [], "selector": "app-button-base", "styleUrls": [], - "styles": [], - "template": "`
\n \n \n
\n`", + "styles": [ + "" + ], + "template": "`
\n \n \n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -73,7 +72,7 @@ "defaultValue": "''", "deprecated": false, "deprecationMessage": "", - "line": 41, + "line": 42, "type": "string", "decorators": [] }, @@ -91,7 +90,7 @@ "defaultValue": "''", "deprecated": false, "deprecationMessage": "", - "line": 39, + "line": 40, "type": "string", "decorators": [] }, @@ -100,7 +99,7 @@ "defaultValue": "'left'", "deprecated": false, "deprecationMessage": "", - "line": 40, + "line": 41, "type": "ButtonIconPosition", "decorators": [] }, @@ -122,6 +121,15 @@ "type": "boolean", "decorators": [] }, + { + "name": "outlined", + "defaultValue": "false", + "deprecated": false, + "deprecationMessage": "", + "line": 38, + "type": "boolean", + "decorators": [] + }, { "name": "rounded", "defaultValue": "false", @@ -136,7 +144,7 @@ "defaultValue": "null", "deprecated": false, "deprecationMessage": "", - "line": 42, + "line": 43, "type": "Extract", "decorators": [] }, @@ -145,16 +153,16 @@ "deprecated": false, "deprecationMessage": "", "line": 36, - "type": "\"small\" | \"large\" | \"xlarge\" | undefined", + "type": "\"small\" | \"large\" | undefined", "decorators": [] }, { - "name": "variant", - "defaultValue": "null", + "name": "text", + "defaultValue": "false", "deprecated": false, "deprecationMessage": "", - "line": 38, - "type": "\"outlined\" | \"text\" | \"link\" | null", + "line": 39, + "type": "boolean", "decorators": [] } ], @@ -174,15 +182,15 @@ "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button, ButtonIconPosition } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
\n`;\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [Button],\n template\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | 'xlarge' | undefined;\n @Input() rounded = false;\n @Input() variant: 'outlined' | 'text' | 'link' | null = null;\n @Input() icon: string = '';\n @Input() iconPos: ButtonIconPosition = 'left';\n @Input() badge: string = '';\n @Input() severity: Extract = null;\n}\n\nexport const Default: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button, ButtonIconPosition } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
\n`;\nconst styles = ``;\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | undefined;\n @Input() rounded = false;\n @Input() outlined = false;\n @Input() text = false;\n @Input() icon: string = '';\n @Input() iconPos: ButtonIconPosition = 'left';\n @Input() badge: string = '';\n @Input() severity: Extract = null;\n}\n\nexport const Base: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonDisabledComponent", - "id": "component-ButtonDisabledComponent-68a58df505e94299e8d28d3d882464c07106fc021b1ff9a5b2aa900da697878649bb93a7d3022da8d410db37dd98bee18061262bcf1e065b11b8420b496f2216", + "id": "component-ButtonDisabledComponent-08149394bbd9dbd2d50d65e9a92b7cbac68e072764309fc410968d2ef7c91352a365dc0e14dd6193f13ab6eaa25606e8f505fc0a1c17097427aa69d168736ab8", "file": "src/stories/components/button/examples/button-disabled.component.ts", "encapsulation": [], "entryComponents": [], @@ -191,8 +199,10 @@ "providers": [], "selector": "app-button-disabled", "styleUrls": [], - "styles": [], - "template": "`
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -207,22 +217,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonDisabledComponent {}\n\nexport const Disabled: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonDisabledComponent {}\n\nexport const Disabled: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonIconComponent", - "id": "component-ButtonIconComponent-593709211f63b4521fe1da011a69eb0b10325b97b3079d710c392a135c70c4087d1dbaeedf8335be9925cfea65651eb17bbe1c054f5064dfef72ada6437d537c", + "id": "component-ButtonIconComponent-553ddfe0086eec00020f592a5e46510ee6019a96420a18f0fc74e8ac183c5cd0e7ec864d369e6d9f3b378c09c5553bd2f92f8a6c407390fe601668ef0e6909ca", "file": "src/stories/components/button/examples/button-icon.component.ts", "encapsulation": [], "entryComponents": [], @@ -231,88 +240,10 @@ "providers": [], "selector": "app-button-icon", "styleUrls": [], - "styles": [], - "template": "`
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "ButtonModule", - "type": "module" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonIconComponent {}\n\nexport const Icons: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "", - "extends": [] - }, - { - "name": "ButtonIconOnlyComponent", - "id": "component-ButtonIconOnlyComponent-fd1de76754aa7f8fc48d81d4ca05e7f173032e18879c1ce3a3be46c2f6f02bae7b92f40d2a17085bd004bca0f6cf63fb32ff2fdbcc57868797294c2e1f878fb1", - "file": "src/stories/components/button/examples/button-icon-only.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-icon-only", - "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "ButtonModule", - "type": "module" - } + "styles": [ + "" ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-icon-only',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonIconOnlyComponent {}\n\nexport const IconOnly: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "", - "extends": [] - }, - { - "name": "ButtonLinkComponent", - "id": "component-ButtonLinkComponent-007a470d2943d83647e22b07ab1a166adb2bcf5277a70764dbf493bd57f58eab655647073590a738e950f3a47daabe97c64a32cbfd51889f3aa4bbfac5339690", - "file": "src/stories/components/button/examples/button-link.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-link", - "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "template": "`
\n
\n \n \n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -327,22 +258,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-link',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonLinkComponent {}\n\nexport const Link: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n \n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonIconComponent {}\n\nexport const Icon: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonLoadingComponent", - "id": "component-ButtonLoadingComponent-38ebe46e8e8f5c9b416d26a65e30fdd9fe7157c394ba9d632f9f8a228a63111342eeedfc9f723724dcd8cc7e6a745b43d412fede99d2c8721a1c2652cec7362c", + "id": "component-ButtonLoadingComponent-747831019d46f2ad5ee976a755845a807fe3d6fce93323c22753c42a300535885ea9570f93c580b2377de7ec8a16386caea5d52b5d8c5d87cf9ba97198870ace", "file": "src/stories/components/button/examples/button-loading.component.ts", "encapsulation": [], "entryComponents": [], @@ -351,8 +281,10 @@ "providers": [], "selector": "app-button-loading", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -367,22 +299,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonLoadingComponent {}\n\nexport const Loading: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonLoadingComponent {}\n\nexport const Loading: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonOutlinedComponent", - "id": "component-ButtonOutlinedComponent-a13faff82fc977a14c4c2617748ac67685eeb29cc4d41568bbdb138ee506668f41237e08b7300bfed3ed505f22b2c92024bf893b714db9e69c0d3e51c71e55eb", + "id": "component-ButtonOutlinedComponent-2f780c950280808a263be91edeaa56e63eedc39495be6eca8bb7dcea5d56a09aea77d6cecdb9341715d1e1f7c582df95b46fd1321497a1536e21b716244a4a5a", "file": "src/stories/components/button/examples/button-outlined.component.ts", "encapsulation": [], "entryComponents": [], @@ -391,8 +322,10 @@ "providers": [], "selector": "app-button-outlined", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n \n \n
`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -407,22 +340,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonOutlinedComponent {}\n\nexport const Outlined: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonOutlinedComponent {}\n\nexport const Outlined: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonRoundedComponent", - "id": "component-ButtonRoundedComponent-6bb6041fd5f04e03709f54d657c1deb7a399760fcfa23e48faf81626afbdf66a023798e961b7a9dd6eb2290dfab0d66b85b0693e4153758f0e107194f6f529ba", + "id": "component-ButtonRoundedComponent-75651107f6304e710142aef6f4f68ec0f1069847af847d954b7de576ea710779cec3f802adc8586bc9683100e14432e4c15d5d58fa2f7204d7e2e2d034db308a", "file": "src/stories/components/button/examples/button-rounded.component.ts", "encapsulation": [], "entryComponents": [], @@ -431,8 +363,10 @@ "providers": [], "selector": "app-button-rounded", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -447,22 +381,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonRoundedComponent {}\n\nexport const Rounded: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonRoundedComponent {}\n\nexport const Rounded: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonSeverityComponent", - "id": "component-ButtonSeverityComponent-4224631554907621005b0d851894c01123bd61db2006116292e39193a72529526c066b8a3a0b11fe7a6af30c49f9baf6543c07a8f1fe9fbace37ad0348cf2a9d", + "id": "component-ButtonSeverityComponent-bceea86d34a4ff6c3637b6c4b0dfe628631cbeeacb8537089aaeb500fef8c51fbad4689c06a2de3d51f4f3510bc7520fd634f48cb91995dc93e187ab3099c6e5", "file": "src/stories/components/button/examples/button-severity.component.ts", "encapsulation": [], "entryComponents": [], @@ -471,8 +404,10 @@ "providers": [], "selector": "app-button-severity", "styleUrls": [], - "styles": [], - "template": "`
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -487,22 +422,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonSeverityComponent {}\n\nexport const Severity: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonSeverityComponent {}\n\nexport const Severity: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonSizesComponent", - "id": "component-ButtonSizesComponent-661dba1070924aed1cf4ef49813a1f6a6d907cda1dbe15073344241af94004420dbf3f7107d8d4cf54381532ef87576f0bd782219a05c55c872ac9615e66b4f4", + "id": "component-ButtonSizesComponent-cd17928f6a96e0c2d4319065effc31fa54d37723ef053a6ee42aaac52a553f33c495e79ccd49b3caa116ad0a761224fecf5b2f4bec5e1683dd8aa5f78cc53746", "file": "src/stories/components/button/examples/button-sizes.component.ts", "encapsulation": [], "entryComponents": [], @@ -511,8 +445,10 @@ "providers": [], "selector": "app-button-sizes", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", + "styles": [ + "" + ], + "template": "`
\n
\n \n \n \n \n
\n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], @@ -527,22 +463,21 @@ "standalone": true, "imports": [ { - "name": "ButtonModule", - "type": "module" + "name": "Button" } ], "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonSizesComponent { }\n\nexport const Sizes: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { Button } from 'primeng/button';\n\nconst template = `\n
\n
\n \n \n \n \n
\n
\n`;\n\nconst styles = '';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonSizesComponent {}\n\nexport const Sizes: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", + "stylesData": "\n", "extends": [] }, { "name": "ButtonTextComponent", - "id": "component-ButtonTextComponent-b8472d5ec2f9a7a21c0437842a5b23baa7e24c4a845f0fc5b52a8f2f5775c2686be8685b6806f4825b21f6aaf458393f6fcfd3de779933a6154fdb45c6c2df0d", + "id": "component-ButtonTextComponent-9ec9afa71413a44df8de13324a927aa6ce9c0992a9a509345a5081da321472dde3882151e6e56589f4e751c0c6091d49fb74c41e9cc549be31a6e283b2f0d5c1", "file": "src/stories/components/button/examples/button-text.component.ts", "encapsulation": [], "entryComponents": [], @@ -551,143 +486,14 @@ "providers": [], "selector": "app-button-text", "styleUrls": [], - "styles": [], - "template": "`
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "ButtonModule", - "type": "module" - } + "styles": [ + "" ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { ButtonModule } from 'primeng/button';\n\nconst template = `\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`;\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [ButtonModule],\n template\n})\nexport class ButtonTextComponent {}\n\nexport const Text: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "", - "extends": [] - }, - { - "name": "ExtraButtonComponent", - "id": "component-ExtraButtonComponent-7358754f1ac1c9e3e3f8be731885ba5cdacf6a1995653ef9d32fe869f8caa4a60c9e6bb1bb9b7da84303aba0a6f8c83d9f60d8b6d22267cc9d61e13d4cd9ed87", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "extra-button", - "styleUrls": [], - "styles": [], - "template": "`
\n \n
\n`", + "template": "`
\n \n
\n`", "templateUrl": [], "viewProviders": [], "hostDirectives": [], - "inputsClass": [ - { - "name": "disabled", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 44, - "type": "boolean", - "decorators": [] - }, - { - "name": "icon", - "defaultValue": "''", - "deprecated": false, - "deprecationMessage": "", - "line": 43, - "type": "string", - "decorators": [] - }, - { - "name": "iconOnly", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 42, - "type": "boolean", - "decorators": [] - }, - { - "name": "iconPos", - "defaultValue": "null", - "deprecated": false, - "deprecationMessage": "", - "line": 41, - "type": "ExtraButtonIconPos", - "decorators": [] - }, - { - "name": "label", - "defaultValue": "'Button'", - "deprecated": false, - "deprecationMessage": "", - "line": 36, - "type": "string", - "decorators": [] - }, - { - "name": "loading", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 45, - "type": "boolean", - "decorators": [] - }, - { - "name": "rounded", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 40, - "type": "boolean", - "decorators": [] - }, - { - "name": "severity", - "defaultValue": "null", - "deprecated": false, - "deprecationMessage": "", - "line": 38, - "type": "ExtraButtonSeverity", - "decorators": [] - }, - { - "name": "size", - "defaultValue": "'base'", - "deprecated": false, - "deprecationMessage": "", - "line": 39, - "type": "ExtraButtonSize", - "decorators": [] - }, - { - "name": "variant", - "defaultValue": "'primary'", - "deprecated": false, - "deprecationMessage": "", - "line": 37, - "type": "ExtraButtonVariant", - "decorators": [] - } - ], + "inputsClass": [], "outputsClass": [], "propertiesClass": [], "methodsClass": [], @@ -704,40 +510,11 @@ "description": "", "rawdescription": "\n", "type": "component", - "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\ntype ExtraButtonVariant = 'primary' | 'secondary' | 'outlined' | 'text' | 'link';\ntype ExtraButtonSeverity = 'success' | 'warning' | 'danger' | 'info' | null;\ntype ExtraButtonSize = 'small' | 'base' | 'large' | 'xlarge';\ntype ExtraButtonIconPos = 'prefix' | 'postfix' | null;\n\nconst template = `\n
\n \n
\n`;\n\n@Component({\n selector: 'extra-button',\n standalone: true,\n imports: [Button],\n template\n})\nexport class ExtraButtonComponent {\n @Input() label = 'Button';\n @Input() variant: ExtraButtonVariant = 'primary';\n @Input() severity: ExtraButtonSeverity = null;\n @Input() size: ExtraButtonSize = 'base';\n @Input() rounded = false;\n @Input() iconPos: ExtraButtonIconPos = null;\n @Input() iconOnly = false;\n @Input() icon = '';\n @Input() disabled = false;\n @Input() loading = false;\n\n get primeSize(): 'small' | 'large' | undefined {\n if (this.size === 'small') return 'small';\n if (this.size === 'large') return 'large';\n return undefined;\n }\n\n get primeIconPos(): 'left' | 'right' {\n return this.iconPos === 'postfix' ? 'right' : 'left';\n }\n\n get primeSeverity(): string | null {\n if (this.variant === 'secondary') return 'secondary';\n if (this.severity === 'warning') return 'warn';\n return this.severity;\n }\n}\n\nexport const Extra: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n
`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n};\n", + "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonTextComponent {}\n\nexport const Text: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n};\n", "assetsDirs": [], "styleUrlsData": "", - "stylesData": "", - "extends": [], - "accessors": { - "primeSize": { - "name": "primeSize", - "getSignature": { - "name": "primeSize", - "type": "unknown", - "returnType": "\"small\" | \"large\" | undefined", - "line": 47 - } - }, - "primeIconPos": { - "name": "primeIconPos", - "getSignature": { - "name": "primeIconPos", - "type": "unknown", - "returnType": "\"left\" | \"right\"", - "line": 53 - } - }, - "primeSeverity": { - "name": "primeSeverity", - "getSignature": { - "name": "primeSeverity", - "type": "unknown", - "returnType": "string | null", - "line": 57 - } - } - } + "stylesData": "\n", + "extends": [] } ], "modules": [], @@ -751,17 +528,37 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n}" }, { - "name": "Default", + "name": "Base", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-base.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n}" + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n}" + }, + { + "name": "ButtonDefault", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n name: 'Button',\n args: {\n label: 'Button',\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.',\n },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "Disabled", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { "name": "Disabled", @@ -771,7 +568,7 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n}" }, { "name": "Extra", @@ -784,84 +581,144 @@ "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" }, { - "name": "IconOnly", + "name": "gridTemplate", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n}" + "type": "unknown", + "defaultValue": "(inner: string) => `\n
\n small\n base\n large\n xlarge\n ${inner}\n
\n`" }, { - "name": "Icons", + "name": "Icon", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-icon.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n}" }, { - "name": "Link", + "name": "IconOnly", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-link.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки без текста, только с иконкой.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "Loading", + "name": "Icons", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button', icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки с иконками (префикс по умолчанию).' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "meta", + "name": "Link", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "Meta", - "defaultValue": "{\n title: 'PrimeNG/Button',\n decorators: [\n moduleMetadata({\n imports: [\n CommonModule,\n ButtonModule,\n BadgeModule,\n OverlayBadgeModule,\n ExtraButtonComponent,\n ButtonBaseComponent,\n ButtonSizesComponent,\n ButtonRoundedComponent,\n ButtonTextComponent,\n ButtonLinkComponent,\n ButtonIconComponent,\n ButtonIconOnlyComponent,\n ButtonDisabledComponent,\n ButtonLoadingComponent,\n ButtonBadgeComponent,\n ButtonSeverityComponent\n ]\n })\n ],\n parameters: {\n docs: {\n description: {\n component: 'Кнопка — базовый интерактивный элемент. [PrimeNG Button](https://primeng.org/button), [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Link Button' },\n parameters: {\n docs: {\n description: { story: 'Кнопка в виде ссылки.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "Outlined", + "name": "Loading", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Состояние загрузки с индикатором.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "Rounded", + "name": "Loading", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", + "file": "src/stories/components/button/examples/button-loading.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n}" }, { - "name": "Severity", + "name": "meta", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Meta", + "defaultValue": "{\n title: 'Prime/Button',\n component: ExtraButtonComponent,\n tags: ['autodocs'],\n decorators: [\n moduleMetadata({\n imports: [ExtraButtonComponent]\n })\n ],\n parameters: {\n docs: {\n description: {\n component:\n 'Кнопка — базовый интерактивный элемент. [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)',\n },\n },\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'Button' },\n type: { summary: 'string' },\n },\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'primary' },\n type: { summary: \"'primary' | 'secondary' | 'outlined' | 'text' | 'link'\" },\n },\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'info', 'warning', 'danger'],\n description: 'Семантический вариант кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'success' | 'info' | 'warning' | 'danger' | null\" },\n },\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'base' },\n type: { summary: \"'small' | 'base' | 'large' | 'xlarge'\" },\n },\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)',\n table: {\n category: 'Props',\n defaultValue: { summary: '' },\n type: { summary: 'string' },\n },\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки относительно текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'prefix' | 'postfix' | null\" },\n },\n },\n iconOnly: {\n control: 'boolean',\n description: 'Только иконка, без текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n },\n}" + }, + { + "name": "Outlined", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "Rounded", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Скруглённая форма кнопок.' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "Rounded", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "Severity", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "Severity", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-severity.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "Sizes", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Все доступные размеры: small, base, large, xlarge.' },\n source: {\n code: `\n\n\n\n`,\n },\n },\n },\n}" }, { "name": "Sizes", @@ -871,77 +728,147 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n}" }, { - "name": "template", + "name": "styles", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-badge.component.ts", "deprecated": false, "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`" + "type": "string", + "defaultValue": "''" }, { - "name": "template", + "name": "styles", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-base.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n \n \n
\n`" + "defaultValue": "``" }, { - "name": "template", + "name": "styles", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-disabled.component.ts", "deprecated": false, "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`" + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-loading.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-extra.component.ts", + "file": "src/stories/components/button/examples/button-badge.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n \n
\n`" + "defaultValue": "`\n
\n
\n \n\n \n\n \n\n \n
\n
\n`" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "file": "src/stories/components/button/examples/button-base.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n \n \n
\n`" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", + "file": "src/stories/components/button/examples/button-disabled.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n
\n
\n`" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-link.component.ts", + "file": "src/stories/components/button/examples/button-icon.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n \n \n
\n
\n`" }, { "name": "template", @@ -951,7 +878,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n
\n
\n`" }, { "name": "template", @@ -961,7 +888,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n \n \n
`" }, { "name": "template", @@ -971,7 +898,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n
\n
\n`" }, { "name": "template", @@ -981,7 +908,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`" }, { "name": "template", @@ -991,7 +918,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n \n \n \n
\n
\n`" }, { "name": "template", @@ -1001,7 +928,17 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n \n
\n`" + }, + { + "name": "Text", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Текстовый вариант кнопки (без заливки и границ).' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { "name": "Text", @@ -1011,54 +948,21 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n}" } ], "functions": [], "typealiases": [ { - "name": "ExtraButtonIconPos", + "name": "Story", "ctype": "miscellaneous", "subtype": "typealias", - "rawtype": "\"prefix\" | \"postfix\" | null", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, - { - "name": "ExtraButtonSeverity", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"success\" | \"warning\" | \"danger\" | \"info\" | null", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, - { - "name": "ExtraButtonSize", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"small\" | \"base\" | \"large\" | \"xlarge\"", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, - { - "name": "ExtraButtonVariant", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"primary\" | \"secondary\" | \"outlined\" | \"text\" | \"link\"", - "file": "src/stories/components/button/examples/button-extra.component.ts", + "rawtype": "StoryObj", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", "description": "", - "kind": 193 + "kind": 184 } ], "enumerations": [], @@ -1072,7 +976,17 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с уведомлением или числовым индикатором (OverlayBadge).'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-badge.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", @@ -1082,19 +996,29 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n\n \n\n \n\n \n
\n
\n`" } ], "src/stories/components/button/examples/button-base.component.ts": [ { - "name": "Default", + "name": "Base", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-base.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n variant: null,\n icon: '',\n iconPos: 'left',\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n },\n size: {\n control: 'select',\n options: [null, 'small', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n variant: {\n control: 'select',\n options: [null, 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n iconPos: {\n control: 'select',\n options: ['left', 'right', 'top', 'bottom'],\n description: 'Позиция иконки относительно текста'\n },\n badge: {\n control: 'text',\n description: 'Текст для отображения в виде бейджа на кнопке'\n },\n severity: {\n control: 'select',\n options: [null, 'secondary', 'contrast', 'success', 'info', 'warn', 'help', 'danger'],\n description: 'Семантический вариант кнопки'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.'\n }\n }\n }\n}" + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-base.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "unknown", + "defaultValue": "``" }, { "name": "template", @@ -1104,117 +1028,205 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n \n \n
\n`" + "defaultValue": "`\n
\n \n \n
\n`" } ], - "src/stories/components/button/examples/button-disabled.component.ts": [ + "src/stories/components/button/button.stories.ts": [ + { + "name": "ButtonDefault", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n name: 'Button',\n args: {\n label: 'Button',\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.',\n },\n source: {\n code: ``,\n },\n },\n },\n}" + }, { "name": "Disabled", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Состояние кнопки, при котором взаимодействие с ней заблокировано.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "template", + "name": "gridTemplate", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-extra.component.ts": [ + "defaultValue": "(inner: string) => `\n
\n small\n base\n large\n xlarge\n ${inner}\n
\n`" + }, { - "name": "Extra", + "name": "IconOnly", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-extra.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n
`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки без текста, только с иконкой.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "template", + "name": "Icons", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-extra.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n
\n`" - } - ], - "src/stories/components/button/examples/button-icon-only.component.ts": [ + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button', icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки с иконками (префикс по умолчанию).' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, { - "name": "IconOnly", + "name": "Link", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'В случаях, когда текст не требуется, можно использовать только иконку.'\n }\n }\n }\n}" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Link Button' },\n parameters: {\n docs: {\n description: { story: 'Кнопка в виде ссылки.' },\n source: {\n code: ``,\n },\n },\n },\n}" }, { - "name": "template", + "name": "Loading", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon-only.component.ts", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Состояние загрузки с индикатором.' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "meta", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Meta", + "defaultValue": "{\n title: 'Prime/Button',\n component: ExtraButtonComponent,\n tags: ['autodocs'],\n decorators: [\n moduleMetadata({\n imports: [ExtraButtonComponent]\n })\n ],\n parameters: {\n docs: {\n description: {\n component:\n 'Кнопка — базовый интерактивный элемент. [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)',\n },\n },\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'Button' },\n type: { summary: 'string' },\n },\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'primary' },\n type: { summary: \"'primary' | 'secondary' | 'outlined' | 'text' | 'link'\" },\n },\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'info', 'warning', 'danger'],\n description: 'Семантический вариант кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'success' | 'info' | 'warning' | 'danger' | null\" },\n },\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'base' },\n type: { summary: \"'small' | 'base' | 'large' | 'xlarge'\" },\n },\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)',\n table: {\n category: 'Props',\n defaultValue: { summary: '' },\n type: { summary: 'string' },\n },\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки относительно текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'prefix' | 'postfix' | null\" },\n },\n },\n iconOnly: {\n control: 'boolean',\n description: 'Только иконка, без текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n },\n}" + }, + { + "name": "Rounded", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Скруглённая форма кнопок.' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "Severity", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' },\n source: {\n code: ``,\n },\n },\n },\n}" + }, + { + "name": "Sizes", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Все доступные размеры: small, base, large, xlarge.' },\n source: {\n code: `\n\n\n\n`,\n },\n },\n },\n}" + }, + { + "name": "Text", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/button.stories.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "Story", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Текстовый вариант кнопки (без заливки и границ).' },\n source: {\n code: ``,\n },\n },\n },\n}" } ], - "src/stories/components/button/examples/button-icon.component.ts": [ + "src/stories/components/button/examples/button-disabled.component.ts": [ { - "name": "Icons", + "name": "Disabled", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", + "file": "src/stories/components/button/examples/button-disabled.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки могут содержать иконки слева, справа или быть скруглёнными.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-disabled.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", + "file": "src/stories/components/button/examples/button-disabled.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n \n icon prefix\n icon postfix\n rounded\n\n xlarge\n \n \n \n\n large\n \n \n \n\n base\n \n \n \n\n small\n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n
\n
\n`" } ], - "src/stories/components/button/examples/button-link.component.ts": [ + "src/stories/components/button/examples/button-extra.component.ts": [ { - "name": "Link", + "name": "Extra", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-extra.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n
`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" + } + ], + "src/stories/components/button/examples/button-icon.component.ts": [ + { + "name": "Icon", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-link.component.ts", + "file": "src/stories/components/button/examples/button-icon.component.ts", "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка, стилизованная под ссылку.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-icon.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/examples/button-link.component.ts", + "file": "src/stories/components/button/examples/button-icon.component.ts", "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n \n \n
\n
\n`" } ], "src/stories/components/button/examples/button-loading.component.ts": [ @@ -1226,29 +1238,27 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с индикатором загрузки. Полезно для асинхронных действий.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n}" }, { - "name": "template", + "name": "styles", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-loading.component.ts", "deprecated": false, "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" - } - ], - "src/stories/components/button/button.stories.ts": [ + "type": "string", + "defaultValue": "''" + }, { - "name": "meta", + "name": "template", "ctype": "miscellaneous", "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", + "file": "src/stories/components/button/examples/button-loading.component.ts", "deprecated": false, "deprecationMessage": "", - "type": "Meta", - "defaultValue": "{\n title: 'PrimeNG/Button',\n decorators: [\n moduleMetadata({\n imports: [\n CommonModule,\n ButtonModule,\n BadgeModule,\n OverlayBadgeModule,\n ExtraButtonComponent,\n ButtonBaseComponent,\n ButtonSizesComponent,\n ButtonRoundedComponent,\n ButtonTextComponent,\n ButtonLinkComponent,\n ButtonIconComponent,\n ButtonIconOnlyComponent,\n ButtonDisabledComponent,\n ButtonLoadingComponent,\n ButtonBadgeComponent,\n ButtonSeverityComponent\n ]\n })\n ],\n parameters: {\n docs: {\n description: {\n component: 'Кнопка — базовый интерактивный элемент. [PrimeNG Button](https://primeng.org/button), [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)'\n }\n }\n }\n}" + "type": "unknown", + "defaultValue": "`\n
\n
\n \n
\n
\n`" } ], "src/stories/components/button/examples/button-outlined.component.ts": [ @@ -1260,7 +1270,17 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка с контуром без заливки.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-outlined.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", @@ -1270,7 +1290,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n \n \n
`" } ], "src/stories/components/button/examples/button-rounded.component.ts": [ @@ -1282,7 +1302,17 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Полностью скруглённая форма кнопки.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-rounded.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", @@ -1292,19 +1322,29 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n
\n
\n`" } ], "src/stories/components/button/examples/button-severity.component.ts": [ { - "name": "Severity", + "name": "Severity", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-severity.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "StoryObj", + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", "ctype": "miscellaneous", "subtype": "variable", "file": "src/stories/components/button/examples/button-severity.component.ts", "deprecated": false, "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Цветовые схемы для различных контекстов: success, info, warn, danger.'\n }\n }\n }\n}" + "type": "string", + "defaultValue": "''" }, { "name": "template", @@ -1314,7 +1354,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n \n success\n info\n warn\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`" } ], "src/stories/components/button/examples/button-sizes.component.ts": [ @@ -1326,7 +1366,17 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Все доступные размеры: small, base, large, xlg.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n}" + }, + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-sizes.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" }, { "name": "template", @@ -1336,10 +1386,20 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n
\n \n \n \n \n
\n
\n`" } ], "src/stories/components/button/examples/button-text.component.ts": [ + { + "name": "styles", + "ctype": "miscellaneous", + "subtype": "variable", + "file": "src/stories/components/button/examples/button-text.component.ts", + "deprecated": false, + "deprecationMessage": "", + "type": "string", + "defaultValue": "''" + }, { "name": "template", "ctype": "miscellaneous", @@ -1348,7 +1408,7 @@ "deprecated": false, "deprecationMessage": "", "type": "unknown", - "defaultValue": "`\n
\n
\n size=\"small\"\n size=\"base\"\n size=\"large\"\n class=\"p-button-xlg\"\n\n \n \n \n \n
\n
\n`" + "defaultValue": "`\n
\n \n
\n`" }, { "name": "Text", @@ -1358,57 +1418,24 @@ "deprecated": false, "deprecationMessage": "", "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка без заливки и границ, часто используется в тулбарах или списках.'\n }\n }\n }\n}" + "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n}" } ] }, "groupedFunctions": {}, "groupedEnumerations": {}, "groupedTypeAliases": { - "src/stories/components/button/examples/button-extra.component.ts": [ - { - "name": "ExtraButtonIconPos", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"prefix\" | \"postfix\" | null", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, - { - "name": "ExtraButtonSeverity", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"success\" | \"warning\" | \"danger\" | \"info\" | null", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, - { - "name": "ExtraButtonSize", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "\"small\" | \"base\" | \"large\" | \"xlarge\"", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 193 - }, + "src/stories/components/button/button.stories.ts": [ { - "name": "ExtraButtonVariant", + "name": "Story", "ctype": "miscellaneous", "subtype": "typealias", - "rawtype": "\"primary\" | \"secondary\" | \"outlined\" | \"text\" | \"link\"", - "file": "src/stories/components/button/examples/button-extra.component.ts", + "rawtype": "StoryObj", + "file": "src/stories/components/button/button.stories.ts", "deprecated": false, "deprecationMessage": "", "description": "", - "kind": 193 + "kind": 184 } ] } @@ -1427,188 +1454,201 @@ "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "meta", + "name": "ButtonDefault", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonBadgeComponent", + "filePath": "src/stories/components/button/button.stories.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Disabled", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Badge", + "name": "gridTemplate", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "template", + "name": "IconOnly", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-base.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonBaseComponent", - "coveragePercent": 0, - "coverageCount": "0/11", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-base.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Default", + "name": "Icons", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-base.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "template", + "name": "Link", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonDisabledComponent", + "filePath": "src/stories/components/button/button.stories.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Loading", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Disabled", + "name": "meta", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "template", + "name": "Rounded", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", - "type": "component", - "linktype": "component", - "name": "ExtraButtonComponent", + "filePath": "src/stories/components/button/button.stories.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Severity", "coveragePercent": 0, - "coverageCount": "0/11", + "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Extra", + "name": "Sizes", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "template", + "name": "Text", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "filePath": "src/stories/components/button/button.stories.ts", "type": "type alias", "linktype": "miscellaneous", "linksubtype": "typealias", - "name": "ExtraButtonIconPos", + "name": "Story", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", - "type": "type alias", + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "component", + "linktype": "component", + "name": "ButtonBadgeComponent", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "variable", "linktype": "miscellaneous", - "linksubtype": "typealias", - "name": "ExtraButtonSeverity", + "linksubtype": "variable", + "name": "Badge", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", - "type": "type alias", + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "variable", "linktype": "miscellaneous", - "linksubtype": "typealias", - "name": "ExtraButtonSize", + "linksubtype": "variable", + "name": "styles", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", - "type": "type alias", + "filePath": "src/stories/components/button/examples/button-badge.component.ts", + "type": "variable", "linktype": "miscellaneous", - "linksubtype": "typealias", - "name": "ExtraButtonVariant", + "linksubtype": "variable", + "name": "template", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "filePath": "src/stories/components/button/examples/button-base.component.ts", "type": "component", "linktype": "component", - "name": "ButtonIconOnlyComponent", + "name": "ButtonBaseComponent", + "coveragePercent": 0, + "coverageCount": "0/12", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-base.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Base", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "filePath": "src/stories/components/button/examples/button-base.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "IconOnly", + "name": "styles", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon-only.component.ts", + "filePath": "src/stories/components/button/examples/button-base.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", @@ -1618,26 +1658,36 @@ "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", "type": "component", "linktype": "component", - "name": "ButtonIconComponent", + "name": "ButtonDisabledComponent", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Icons", + "name": "Disabled", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-disabled.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", @@ -1647,26 +1697,46 @@ "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-link.component.ts", + "filePath": "src/stories/components/button/examples/button-extra.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "Extra", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon.component.ts", "type": "component", "linktype": "component", - "name": "ButtonLinkComponent", + "name": "ButtonIconComponent", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-link.component.ts", + "filePath": "src/stories/components/button/examples/button-icon.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", - "name": "Link", + "name": "Icon", "coveragePercent": 0, "coverageCount": "0/1", "status": "low" }, { - "filePath": "src/stories/components/button/examples/button-link.component.ts", + "filePath": "src/stories/components/button/examples/button-icon.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, + { + "filePath": "src/stories/components/button/examples/button-icon.component.ts", "type": "variable", "linktype": "miscellaneous", "linksubtype": "variable", @@ -1694,6 +1764,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-loading.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-loading.component.ts", "type": "variable", @@ -1723,6 +1803,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-outlined.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-outlined.component.ts", "type": "variable", @@ -1752,6 +1842,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-rounded.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-rounded.component.ts", "type": "variable", @@ -1781,6 +1881,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-severity.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-severity.component.ts", "type": "variable", @@ -1810,6 +1920,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-sizes.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-sizes.component.ts", "type": "variable", @@ -1829,6 +1949,16 @@ "coverageCount": "0/1", "status": "low" }, + { + "filePath": "src/stories/components/button/examples/button-text.component.ts", + "type": "variable", + "linktype": "miscellaneous", + "linksubtype": "variable", + "name": "styles", + "coveragePercent": 0, + "coverageCount": "0/1", + "status": "low" + }, { "filePath": "src/stories/components/button/examples/button-text.component.ts", "type": "variable", diff --git a/src/components/button/button-extra.component.ts b/src/components/button/button-extra.component.ts index 483ba4f..28ca386 100644 --- a/src/components/button/button-extra.component.ts +++ b/src/components/button/button-extra.component.ts @@ -1,5 +1,6 @@ import { Component, Input } from '@angular/core'; import { Button } from 'primeng/button'; +import { Badge } from 'primeng/badge'; export type ExtraButtonVariant = 'primary' | 'secondary' | 'outlined' | 'text' | 'link'; export type ExtraButtonSeverity = 'success' | 'warning' | 'danger' | 'info' | null; @@ -9,7 +10,7 @@ export type ExtraButtonIconPos = 'prefix' | 'postfix' | null; @Component({ selector: 'extra-button', standalone: true, - imports: [Button], + imports: [Button, Badge], styleUrl: './button.component.scss', template: ` ` }) @@ -39,6 +42,9 @@ export class ExtraButtonComponent { @Input() icon = ''; @Input() disabled = false; @Input() loading = false; + @Input() badge = ''; + @Input() badgeSeverity: 'success' | 'info' | 'warning' | 'danger' | 'secondary' | 'contrast' | null = null; + @Input() showBadge = false; get primeSize(): 'small' | 'large' | undefined { if (this.size === 'small') return 'small'; diff --git a/src/components/button/button.component.scss b/src/components/button/button.component.scss index e69de29..0716a2c 100644 --- a/src/components/button/button.component.scss +++ b/src/components/button/button.component.scss @@ -0,0 +1,15 @@ +:host ::ng-deep { + .p-button { + position: relative; + overflow: visible; + + .p-badge { + position: absolute; + inset-block-start: 0; + inset-inline-end: 0; + transform: translate(50%, -50%); + transform-origin: 100% 0; + margin: 0; + } + } +} diff --git a/src/stories/components/button/button.stories.ts b/src/stories/components/button/button.stories.ts index 7df3d34..b049f38 100644 --- a/src/stories/components/button/button.stories.ts +++ b/src/stories/components/button/button.stories.ts @@ -1,15 +1,6 @@ import { Meta, StoryObj, moduleMetadata } from '@storybook/angular'; import { ExtraButtonComponent } from '../../../components/button/button-extra.component'; -const gridTemplate = (inner: string) => ` -
- small - base - large - xlarge - ${inner} -
-`; const meta: Meta = { title: 'Prime/Button', @@ -123,16 +114,71 @@ const meta: Meta = { type: { summary: 'boolean' }, }, }, + badge: { + control: 'text', + description: 'Значение бейджа', + table: { + category: 'Props', + defaultValue: { summary: '' }, + type: { summary: 'string' }, + }, + }, + badgeSeverity: { + control: 'select', + options: [null, 'success', 'info', 'warning', 'danger', 'secondary', 'contrast'], + description: 'Цветовая схема бейджа', + table: { + category: 'Props', + defaultValue: { summary: 'null' }, + type: { summary: "'success' | 'info' | 'warning' | 'danger' | 'secondary' | 'contrast' | null" }, + }, + }, + showBadge: { + control: 'boolean', + description: 'Показывать ли бейдж', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + }, + args: { + showBadge: false, + badge: '', + badgeSeverity: null, }, }; +const commonTemplate = ` + +`; + export default meta; type Story = StoryObj; // ── Default ────────────────────────────────────────────────────────────────── -export const ButtonDefault: Story = { - name: 'Button', +export const Default: Story = { + name: 'Default', + render: (args) => ({ + props: args, + template: commonTemplate, + }), args: { label: 'Button', }, @@ -153,14 +199,9 @@ export const ButtonDefault: Story = { export const Sizes: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { label: 'Button' }, + args: { label: 'Button', size: 'large' }, parameters: { docs: { description: { story: 'Все доступные размеры: small, base, large, xlarge.' }, @@ -178,12 +219,7 @@ export const Sizes: Story = { export const Icons: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), args: { label: 'Button', icon: 'ti ti-check' }, parameters: { @@ -199,14 +235,9 @@ export const Icons: Story = { export const IconOnly: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { icon: 'ti ti-check' }, + args: { icon: 'ti ti-check', iconOnly: true }, parameters: { docs: { description: { story: 'Кнопки без текста, только с иконкой.' }, @@ -220,14 +251,9 @@ export const IconOnly: Story = { export const Loading: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { label: 'Button' }, + args: { label: 'Button', loading: true }, parameters: { docs: { description: { story: 'Состояние загрузки с индикатором.' }, @@ -241,14 +267,9 @@ export const Loading: Story = { export const Rounded: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { label: 'Button' }, + args: { label: 'Button', rounded: true }, parameters: { docs: { description: { story: 'Скруглённая форма кнопок.' }, @@ -262,14 +283,9 @@ export const Rounded: Story = { export const Text: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { label: 'Button' }, + args: { label: 'Button', variant: 'text' }, parameters: { docs: { description: { story: 'Текстовый вариант кнопки (без заливки и границ).' }, @@ -283,14 +299,9 @@ export const Text: Story = { export const Link: Story = { render: (args) => ({ props: args, - template: gridTemplate(` - - - - - `), + template: commonTemplate, }), - args: { label: 'Link Button' }, + args: { label: 'Link Button', variant: 'link' }, parameters: { docs: { description: { story: 'Кнопка в виде ссылки.' }, @@ -302,41 +313,11 @@ export const Link: Story = { }; export const Severity: Story = { - render: () => ({ - template: ` -
- - success - info - warning - danger - - small - - - - - - base - - - - - - large - - - - - - xlarge - - - - -
- `, + render: (args) => ({ + props: args, + template: commonTemplate, }), + args: { label: 'Button', severity: 'success' }, parameters: { docs: { description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' }, @@ -348,35 +329,11 @@ export const Severity: Story = { }; export const Disabled: Story = { - render: () => ({ - template: ` -
- - success - info - warning - danger - - default - - - - - - outlined - - - - - - text - - - - -
- `, + render: (args) => ({ + props: args, + template: commonTemplate, }), + args: { label: 'Button', disabled: true }, parameters: { docs: { description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' }, @@ -386,3 +343,26 @@ export const Disabled: Story = { }, }, }; + +export const Badge: Story = { + render: (args) => ({ + props: args, + template: commonTemplate, + }), + args: { + label: 'Emails', + badge: '8', + severity: 'success', + badgeSeverity: 'danger', + showBadge: true, + }, + parameters: { + docs: { + description: { story: 'Примеры использования бейджей на кнопках с позиционированием в углу.' }, + source: { + code: ``, + }, + }, + }, +}; + diff --git a/src/stories/components/button/examples/button-extra.component.ts b/src/stories/components/button/examples/button-extra.component.ts index 46814e3..e2fa0b7 100644 --- a/src/stories/components/button/examples/button-extra.component.ts +++ b/src/stories/components/button/examples/button-extra.component.ts @@ -1,6 +1,6 @@ import { StoryObj } from '@storybook/angular'; -export { ExtraButtonComponent } from '../../../../../components/button/button-extra.component'; +export { ExtraButtonComponent } from '../../../../components/button/button-extra.component'; export const Extra: StoryObj = { render: (args) => ({ @@ -17,65 +17,44 @@ export const Extra: StoryObj = { [icon]="icon" [disabled]="disabled" [loading]="loading" + [badge]="badge" + [badgeSeverity]="badgeSeverity" + [showBadge]="showBadge" >` }), args: { label: 'Button', - variant: 'primary', - severity: null, - size: 'base', - rounded: false, - iconPos: null, - iconOnly: false, - icon: '', - disabled: false, - loading: false + showBadge: false }, argTypes: { - label: { - control: 'text', - description: 'Текст кнопки' - }, + label: { control: 'text' }, variant: { control: 'select', - options: ['primary', 'secondary', 'outlined', 'text', 'link'], - description: 'Вариант отображения кнопки' + options: ['primary', 'secondary', 'outlined', 'text', 'link'] }, severity: { control: 'select', - options: [null, 'success', 'warning', 'danger', 'info'], - description: 'Цветовая схема кнопки' + options: [null, 'success', 'warning', 'danger', 'info'] }, size: { control: 'select', - options: ['small', 'base', 'large', 'xlarge'], - description: 'Размер кнопки' - }, - rounded: { - control: 'boolean', - description: 'Скруглённая форма кнопки' + options: ['small', 'base', 'large', 'xlarge'] }, + rounded: { control: 'boolean' }, iconPos: { control: 'select', - options: [null, 'prefix', 'postfix'], - description: 'Позиция иконки (prefix — слева, postfix — справа)' - }, - iconOnly: { - control: 'boolean', - description: 'Режим кнопки только с иконкой' - }, - icon: { - control: 'text', - description: 'CSS-класс иконки (например: ti ti-check)' + options: [null, 'prefix', 'postfix'] }, - disabled: { - control: 'boolean', - description: 'Отключённое состояние' + iconOnly: { control: 'boolean' }, + icon: { control: 'text' }, + disabled: { control: 'boolean' }, + loading: { control: 'boolean' }, + badge: { control: 'text' }, + badgeSeverity: { + control: 'select', + options: [null, 'success', 'warning', 'danger', 'info', 'secondary', 'contrast'] }, - loading: { - control: 'boolean', - description: 'Состояние загрузки с индикатором' - } + showBadge: { control: 'boolean' } }, parameters: { docs: { @@ -85,3 +64,32 @@ export const Extra: StoryObj = { } } }; + +export const Badge: StoryObj = { + render: (args) => ({ + props: args, + template: ` +` + }), + args: { + label: 'Emails', + badge: '8', + badgeSeverity: 'danger', + showBadge: true, + severity: 'success' + }, + parameters: { + docs: { + description: { + story: 'Пример кнопки с бейджем для отображения уведомлений или счётчиков.' + } + } + } +}; + From c70bdb2f274798a42129868ce32261bb1b455149 Mon Sep 17 00:00:00 2001 From: Danil Khaliulin Date: Thu, 26 Mar 2026 21:31:43 +0700 Subject: [PATCH 4/6] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BF=D1=81=D1=8B=20flui?= =?UTF-8?q?d,=20ariaLabel,=20autofocus,=20tabindex?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../button/button-extra.component.ts | 11 +++- .../components/button/button.stories.ts | 53 +++++++++++++++++++ .../button/examples/button-extra.component.ts | 18 ++++++- 3 files changed, 79 insertions(+), 3 deletions(-) diff --git a/src/components/button/button-extra.component.ts b/src/components/button/button-extra.component.ts index 28ca386..ef68005 100644 --- a/src/components/button/button-extra.component.ts +++ b/src/components/button/button-extra.component.ts @@ -21,13 +21,17 @@ export type ExtraButtonIconPos = 'prefix' | 'postfix' | null; [styleClass]="size === 'xlarge' ? 'p-button-xlg' : ''" [rounded]="rounded" [outlined]="variant === 'outlined'" - [text]="variant === 'text'" + [text]="variant === 'text' || text" [link]="variant === 'link'" [icon]="icon" [iconPos]="primeIconPos" [severity]="primeSeverity" [badge]="showBadge ? (badge || ' ') : null" [badgeSeverity]="badgeSeverity" + [fluid]="fluid" + [ariaLabel]="ariaLabel" + [autofocus]="autofocus" + [tabindex]="tabindex" >
` }) @@ -45,6 +49,11 @@ export class ExtraButtonComponent { @Input() badge = ''; @Input() badgeSeverity: 'success' | 'info' | 'warning' | 'danger' | 'secondary' | 'contrast' | null = null; @Input() showBadge = false; + @Input() fluid = false; + @Input() ariaLabel: string | undefined = undefined; + @Input() autofocus = false; + @Input() tabindex: number | undefined = undefined; + @Input() text = false; get primeSize(): 'small' | 'large' | undefined { if (this.size === 'small') return 'small'; diff --git a/src/stories/components/button/button.stories.ts b/src/stories/components/button/button.stories.ts index b049f38..e84c0cc 100644 --- a/src/stories/components/button/button.stories.ts +++ b/src/stories/components/button/button.stories.ts @@ -142,11 +142,59 @@ const meta: Meta = { type: { summary: 'boolean' }, }, }, + fluid: { + control: 'boolean', + description: 'Растягивать ли кнопку на всю ширину контейнера', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + ariaLabel: { + control: 'text', + description: 'Метка для экранных дикторов', + table: { + category: 'Props', + defaultValue: { summary: 'undefined' }, + type: { summary: 'string' }, + }, + }, + autofocus: { + control: 'boolean', + description: 'Автофокус при загрузке', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, + tabindex: { + control: 'number', + description: 'Порядок фокуса', + table: { + category: 'Props', + defaultValue: { summary: 'undefined' }, + type: { summary: 'number' }, + }, + }, + text: { + control: 'boolean', + description: 'Текстовый вариант кнопки', + table: { + category: 'Props', + defaultValue: { summary: 'false' }, + type: { summary: 'boolean' }, + }, + }, }, args: { showBadge: false, badge: '', badgeSeverity: null, + fluid: false, + autofocus: false, + text: false, }, }; @@ -165,6 +213,11 @@ const commonTemplate = ` [badge]="badge" [badgeSeverity]="badgeSeverity" [showBadge]="showBadge" + [fluid]="fluid" + [ariaLabel]="ariaLabel" + [autofocus]="autofocus" + [tabindex]="tabindex" + [text]="text" > `; diff --git a/src/stories/components/button/examples/button-extra.component.ts b/src/stories/components/button/examples/button-extra.component.ts index e2fa0b7..dfacded 100644 --- a/src/stories/components/button/examples/button-extra.component.ts +++ b/src/stories/components/button/examples/button-extra.component.ts @@ -20,11 +20,19 @@ export const Extra: StoryObj = { [badge]="badge" [badgeSeverity]="badgeSeverity" [showBadge]="showBadge" + [fluid]="fluid" + [ariaLabel]="ariaLabel" + [autofocus]="autofocus" + [tabindex]="tabindex" + [text]="text" >` }), args: { label: 'Button', - showBadge: false + showBadge: false, + fluid: false, + autofocus: false, + text: false }, argTypes: { label: { control: 'text' }, @@ -54,9 +62,15 @@ export const Extra: StoryObj = { control: 'select', options: [null, 'success', 'warning', 'danger', 'info', 'secondary', 'contrast'] }, - showBadge: { control: 'boolean' } + showBadge: { control: 'boolean' }, + fluid: { control: 'boolean' }, + ariaLabel: { control: 'text' }, + autofocus: { control: 'boolean' }, + tabindex: { control: 'number' }, + text: { control: 'boolean' } }, parameters: { + docs: { description: { story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.' From 1e7db4f1cf9753f3402d12df6b516be145ae6ef5 Mon Sep 17 00:00:00 2001 From: Danil Khaliulin Date: Thu, 26 Mar 2026 21:33:03 +0700 Subject: [PATCH 5/6] =?UTF-8?q?=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2=20=D0=BE=D1=82=20mcp?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .playwright-mcp/console-2026-03-20T05-59-04-766Z.log | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .playwright-mcp/console-2026-03-20T05-59-04-766Z.log diff --git a/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log b/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log deleted file mode 100644 index 567be13..0000000 --- a/.playwright-mcp/console-2026-03-20T05-59-04-766Z.log +++ /dev/null @@ -1 +0,0 @@ -[ 388ms] [ERROR] Failed to load resource: the server responded with a status of 404 () @ https://raw.githubusercontent.com/cdek-it/vue-ui-kit/storybook-update/src/assets/style/vars/_colors.scss:0 From 18e19a7175b5311086db0b8ee96b90fb7f5e819c Mon Sep 17 00:00:00 2001 From: Danil Khaliulin Date: Thu, 26 Mar 2026 21:49:35 +0700 Subject: [PATCH 6/6] =?UTF-8?q?=D0=B8=D0=B3=D0=BD=D0=BE=D1=80=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=B0=20documentation.json?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 +- documentation.json | 1984 -------------------------------------------- 2 files changed, 3 insertions(+), 1987 deletions(-) delete mode 100644 documentation.json diff --git a/.gitignore b/.gitignore index 9276a2c..808f9bd 100644 --- a/.gitignore +++ b/.gitignore @@ -52,6 +52,6 @@ api-generator/typedoc.json # файлы в этим папках компилятся и должны создаваться при сборке src/assets/components/themes -./storybook-static -./debug-storybook.log -./documentation.json +/storybook-static +/debug-storybook.log +/documentation.json diff --git a/documentation.json b/documentation.json deleted file mode 100644 index a5b9d48..0000000 --- a/documentation.json +++ /dev/null @@ -1,1984 +0,0 @@ -{ - "pipes": [], - "interfaces": [], - "injectables": [], - "guards": [], - "interceptors": [], - "classes": [], - "directives": [], - "components": [ - { - "name": "ButtonBadgeComponent", - "id": "component-ButtonBadgeComponent-fab33f9afdb48c6fae49d289621dfd7234c7920f7d3f703dac62f523dd0852ba668326634ecf1aaddf69f2b1afbd505312415662d1865b6b360fbd9dec82dafc", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-badge", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n\n \n\n \n\n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n\n \n\n \n\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-badge',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonBadgeComponent {}\n\nexport const Badge: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonBaseComponent", - "id": "component-ButtonBaseComponent-c8c405f4a3866155397528b8d67e747d1937ffdd827b6ac823a7f62bf82334820d309b144e65e531862b26ce7b6b3b20f332282f3e7200aa9077211d9f26a9f5", - "file": "src/stories/components/button/examples/button-base.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-base", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n \n \n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [ - { - "name": "badge", - "defaultValue": "''", - "deprecated": false, - "deprecationMessage": "", - "line": 42, - "type": "string", - "decorators": [] - }, - { - "name": "disabled", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 34, - "type": "boolean", - "decorators": [] - }, - { - "name": "icon", - "defaultValue": "''", - "deprecated": false, - "deprecationMessage": "", - "line": 40, - "type": "string", - "decorators": [] - }, - { - "name": "iconPos", - "defaultValue": "'left'", - "deprecated": false, - "deprecationMessage": "", - "line": 41, - "type": "ButtonIconPosition", - "decorators": [] - }, - { - "name": "label", - "defaultValue": "''", - "deprecated": false, - "deprecationMessage": "", - "line": 33, - "type": "string", - "decorators": [] - }, - { - "name": "loading", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 35, - "type": "boolean", - "decorators": [] - }, - { - "name": "outlined", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 38, - "type": "boolean", - "decorators": [] - }, - { - "name": "rounded", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 37, - "type": "boolean", - "decorators": [] - }, - { - "name": "severity", - "defaultValue": "null", - "deprecated": false, - "deprecationMessage": "", - "line": 43, - "type": "Extract", - "decorators": [] - }, - { - "name": "size", - "deprecated": false, - "deprecationMessage": "", - "line": 36, - "type": "\"small\" | \"large\" | undefined", - "decorators": [] - }, - { - "name": "text", - "defaultValue": "false", - "deprecated": false, - "deprecationMessage": "", - "line": 39, - "type": "boolean", - "decorators": [] - } - ], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component, Input } from '@angular/core';\nimport { Button, ButtonIconPosition } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
\n`;\nconst styles = ``;\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | undefined;\n @Input() rounded = false;\n @Input() outlined = false;\n @Input() text = false;\n @Input() icon: string = '';\n @Input() iconPos: ButtonIconPosition = 'left';\n @Input() badge: string = '';\n @Input() severity: Extract = null;\n}\n\nexport const Base: StoryObj = {\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonDisabledComponent", - "id": "component-ButtonDisabledComponent-08149394bbd9dbd2d50d65e9a92b7cbac68e072764309fc410968d2ef7c91352a365dc0e14dd6193f13ab6eaa25606e8f505fc0a1c17097427aa69d168736ab8", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-disabled", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonDisabledComponent {}\n\nexport const Disabled: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonIconComponent", - "id": "component-ButtonIconComponent-553ddfe0086eec00020f592a5e46510ee6019a96420a18f0fc74e8ac183c5cd0e7ec864d369e6d9f3b378c09c5553bd2f92f8a6c407390fe601668ef0e6909ca", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-icon", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n \n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n \n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonIconComponent {}\n\nexport const Icon: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonLoadingComponent", - "id": "component-ButtonLoadingComponent-747831019d46f2ad5ee976a755845a807fe3d6fce93323c22753c42a300535885ea9570f93c580b2377de7ec8a16386caea5d52b5d8c5d87cf9ba97198870ace", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-loading", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonLoadingComponent {}\n\nexport const Loading: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonOutlinedComponent", - "id": "component-ButtonOutlinedComponent-2f780c950280808a263be91edeaa56e63eedc39495be6eca8bb7dcea5d56a09aea77d6cecdb9341715d1e1f7c582df95b46fd1321497a1536e21b716244a4a5a", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-outlined", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n \n \n
`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n \n
`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonOutlinedComponent {}\n\nexport const Outlined: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonRoundedComponent", - "id": "component-ButtonRoundedComponent-75651107f6304e710142aef6f4f68ec0f1069847af847d954b7de576ea710779cec3f802adc8586bc9683100e14432e4c15d5d58fa2f7204d7e2e2d034db308a", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-rounded", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n \n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonRoundedComponent {}\n\nexport const Rounded: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonSeverityComponent", - "id": "component-ButtonSeverityComponent-bceea86d34a4ff6c3637b6c4b0dfe628631cbeeacb8537089aaeb500fef8c51fbad4689c06a2de3d51f4f3510bc7520fd634f48cb91995dc93e187ab3099c6e5", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-severity", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonSeverityComponent {}\n\nexport const Severity: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonSizesComponent", - "id": "component-ButtonSizesComponent-cd17928f6a96e0c2d4319065effc31fa54d37723ef053a6ee42aaac52a553f33c495e79ccd49b3caa116ad0a761224fecf5b2f4bec5e1683dd8aa5f78cc53746", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-sizes", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n
\n \n \n \n \n
\n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { StoryObj } from '@storybook/angular';\nimport { Button } from 'primeng/button';\n\nconst template = `\n
\n
\n \n \n \n \n
\n
\n`;\n\nconst styles = '';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonSizesComponent {}\n\nexport const Sizes: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - }, - { - "name": "ButtonTextComponent", - "id": "component-ButtonTextComponent-9ec9afa71413a44df8de13324a927aa6ce9c0992a9a509345a5081da321472dde3882151e6e56589f4e751c0c6091d49fb74c41e9cc549be31a6e283b2f0d5c1", - "file": "src/stories/components/button/examples/button-text.component.ts", - "encapsulation": [], - "entryComponents": [], - "inputs": [], - "outputs": [], - "providers": [], - "selector": "app-button-text", - "styleUrls": [], - "styles": [ - "" - ], - "template": "`
\n \n
\n`", - "templateUrl": [], - "viewProviders": [], - "hostDirectives": [], - "inputsClass": [], - "outputsClass": [], - "propertiesClass": [], - "methodsClass": [], - "deprecated": false, - "deprecationMessage": "", - "hostBindings": [], - "hostListeners": [], - "standalone": true, - "imports": [ - { - "name": "Button" - } - ], - "description": "", - "rawdescription": "\n", - "type": "component", - "sourceCode": "import { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\nimport { StoryObj } from '@storybook/angular';\n\nconst template = `\n
\n \n
\n`;\nconst styles = '';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [Button],\n template,\n styles\n})\nexport class ButtonTextComponent {}\n\nexport const Text: StoryObj = {\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n};\n", - "assetsDirs": [], - "styleUrlsData": "", - "stylesData": "\n", - "extends": [] - } - ], - "modules": [], - "miscellaneous": { - "variables": [ - { - "name": "Badge", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "Base", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n}" - }, - { - "name": "ButtonDefault", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n name: 'Button',\n args: {\n label: 'Button',\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.',\n },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Disabled", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Disabled", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "Extra", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" - }, - { - "name": "gridTemplate", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "(inner: string) => `\n
\n small\n base\n large\n xlarge\n ${inner}\n
\n`" - }, - { - "name": "Icon", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "IconOnly", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки без текста, только с иконкой.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Icons", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button', icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки с иконками (префикс по умолчанию).' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Link", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Link Button' },\n parameters: {\n docs: {\n description: { story: 'Кнопка в виде ссылки.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Loading", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Состояние загрузки с индикатором.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Loading", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "meta", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Meta", - "defaultValue": "{\n title: 'Prime/Button',\n component: ExtraButtonComponent,\n tags: ['autodocs'],\n decorators: [\n moduleMetadata({\n imports: [ExtraButtonComponent]\n })\n ],\n parameters: {\n docs: {\n description: {\n component:\n 'Кнопка — базовый интерактивный элемент. [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)',\n },\n },\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'Button' },\n type: { summary: 'string' },\n },\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'primary' },\n type: { summary: \"'primary' | 'secondary' | 'outlined' | 'text' | 'link'\" },\n },\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'info', 'warning', 'danger'],\n description: 'Семантический вариант кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'success' | 'info' | 'warning' | 'danger' | null\" },\n },\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'base' },\n type: { summary: \"'small' | 'base' | 'large' | 'xlarge'\" },\n },\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)',\n table: {\n category: 'Props',\n defaultValue: { summary: '' },\n type: { summary: 'string' },\n },\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки относительно текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'prefix' | 'postfix' | null\" },\n },\n },\n iconOnly: {\n control: 'boolean',\n description: 'Только иконка, без текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n },\n}" - }, - { - "name": "Outlined", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "Rounded", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Скруглённая форма кнопок.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Rounded", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "Severity", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Severity", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "Sizes", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Все доступные размеры: small, base, large, xlarge.' },\n source: {\n code: `\n\n\n\n`,\n },\n },\n },\n}" - }, - { - "name": "Sizes", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "``" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n\n \n\n \n\n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n \n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n \n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n \n
`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n \n \n \n
\n
\n`" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n
\n`" - }, - { - "name": "Text", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Текстовый вариант кнопки (без заливки и границ).' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Text", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n}" - } - ], - "functions": [], - "typealiases": [ - { - "name": "Story", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "StoryObj", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 184 - } - ], - "enumerations": [], - "groupedVariables": { - "src/stories/components/button/examples/button-badge.component.ts": [ - { - "name": "Badge", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Badge кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBadgeComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-badge.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n\n \n\n \n\n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-base.component.ts": [ - { - "name": "Base", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n\n`\n }),\n args: {\n label: 'Base button',\n disabled: false,\n loading: false,\n size: null,\n rounded: false,\n outlined: false,\n text: false,\n icon: '',\n iconPos: null,\n badge: '',\n severity: null\n },\n argTypes: {\n label: {\n description: 'Текст кнопки.'\n },\n disabled: {\n description: 'При наличии указывает, что компонент должен быть отключен.'\n },\n loading: {\n description: 'Находится ли кнопка в состоянии загрузки.'\n },\n // TODO Добавить xlarge после фикса в либе.\n size: {\n description: 'Определяет размер кнопки.',\n control: { type: 'select' },\n options: [null, 'small', 'large'],\n table: {\n type: { summary: `'small' | 'large' | null` } // <-- тип в документации\n }\n },\n rounded: {\n description: 'При наличии делает кнопку с закругленными краями.'\n },\n outlined: {\n description: 'При наличии делает кнопку с контуром без фона.'\n },\n text: {\n description: 'При наличии делает кнопку текстовой без фона и границ.'\n },\n icon: {\n description: 'Имя иконки для отображения в кнопке.'\n },\n iconPos: {\n description: 'Позиция иконки относительно текста.',\n control: { type: 'select' },\n options: [null, 'left', 'right'],\n table: {\n type: { summary: `'left' | 'right' | null` }\n }\n },\n badge: {\n description: 'Текст для отображения в виде бейджа на кнопке.'\n },\n severity: {\n description: 'Определяет цветовую схему кнопки.',\n control: { type: 'select' },\n options: [null, 'success', 'info', 'warn', 'primary', 'help', 'danger'],\n table: {\n type: {\n summary: `'success' | 'info' | 'warn' | 'primary' | 'help' | 'danger' | null`\n }\n }\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Стандартная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-base',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonBaseComponent {\n @Input() label = '';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() size: 'small' | 'large' | null = null;\n @Input() rounded = false;\n}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "``" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-base.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n \n
\n`" - } - ], - "src/stories/components/button/button.stories.ts": [ - { - "name": "ButtonDefault", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n name: 'Button',\n args: {\n label: 'Button',\n },\n parameters: {\n docs: {\n description: {\n story: 'Базовый пример компонента. Используйте Controls для интерактивного изменения пропсов.',\n },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Disabled", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n default\n \n \n \n \n\n outlined\n \n \n \n \n\n text\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Состояние кнопки, при котором взаимодействие заблокировано.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "gridTemplate", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "(inner: string) => `\n
\n small\n base\n large\n xlarge\n ${inner}\n
\n`" - }, - { - "name": "IconOnly", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки без текста, только с иконкой.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Icons", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button', icon: 'ti ti-check' },\n parameters: {\n docs: {\n description: { story: 'Кнопки с иконками (префикс по умолчанию).' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Link", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Link Button' },\n parameters: {\n docs: {\n description: { story: 'Кнопка в виде ссылки.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Loading", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Состояние загрузки с индикатором.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "meta", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Meta", - "defaultValue": "{\n title: 'Prime/Button',\n component: ExtraButtonComponent,\n tags: ['autodocs'],\n decorators: [\n moduleMetadata({\n imports: [ExtraButtonComponent]\n })\n ],\n parameters: {\n docs: {\n description: {\n component:\n 'Кнопка — базовый интерактивный элемент. [Figma Design](https://www.figma.com/design/HOLKdvQJ8jCLeX17s9d0Yf/UI-Kit--DS--v2.0?node-id=160-5223)',\n },\n },\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'Button' },\n type: { summary: 'string' },\n },\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'primary' },\n type: { summary: \"'primary' | 'secondary' | 'outlined' | 'text' | 'link'\" },\n },\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'info', 'warning', 'danger'],\n description: 'Семантический вариант кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'success' | 'info' | 'warning' | 'danger' | null\" },\n },\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'base' },\n type: { summary: \"'small' | 'base' | 'large' | 'xlarge'\" },\n },\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)',\n table: {\n category: 'Props',\n defaultValue: { summary: '' },\n type: { summary: 'string' },\n },\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки относительно текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'null' },\n type: { summary: \"'prefix' | 'postfix' | null\" },\n },\n },\n iconOnly: {\n control: 'boolean',\n description: 'Только иконка, без текста',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором',\n table: {\n category: 'Props',\n defaultValue: { summary: 'false' },\n type: { summary: 'boolean' },\n },\n },\n },\n}" - }, - { - "name": "Rounded", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Скруглённая форма кнопок.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Severity", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: () => ({\n template: `\n
\n \n success\n info\n warning\n danger\n\n small\n \n \n \n \n\n base\n \n \n \n \n\n large\n \n \n \n \n\n xlarge\n \n \n \n \n
\n `,\n }),\n parameters: {\n docs: {\n description: { story: 'Цветовые схемы для различных контекстов: success, info, warning, danger.' },\n source: {\n code: ``,\n },\n },\n },\n}" - }, - { - "name": "Sizes", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Все доступные размеры: small, base, large, xlarge.' },\n source: {\n code: `\n\n\n\n`,\n },\n },\n },\n}" - }, - { - "name": "Text", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "Story", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: gridTemplate(`\n \n \n \n \n `),\n }),\n args: { label: 'Button' },\n parameters: {\n docs: {\n description: { story: 'Текстовый вариант кнопки (без заливки и границ).' },\n source: {\n code: ``,\n },\n },\n },\n}" - } - ], - "src/stories/components/button/examples/button-disabled.component.ts": [ - { - "name": "Disabled", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Disabled кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-disabled',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonDisabledComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-disabled.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-extra.component.ts": [ - { - "name": "Extra", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-extra.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: (args) => ({\n props: args,\n template: `\n
`\n }),\n args: {\n label: 'Button',\n variant: 'primary',\n severity: null,\n size: 'base',\n rounded: false,\n iconPos: null,\n iconOnly: false,\n icon: '',\n disabled: false,\n loading: false\n },\n argTypes: {\n label: {\n control: 'text',\n description: 'Текст кнопки'\n },\n variant: {\n control: 'select',\n options: ['primary', 'secondary', 'outlined', 'text', 'link'],\n description: 'Вариант отображения кнопки'\n },\n severity: {\n control: 'select',\n options: [null, 'success', 'warning', 'danger', 'info'],\n description: 'Цветовая схема кнопки'\n },\n size: {\n control: 'select',\n options: ['small', 'base', 'large', 'xlarge'],\n description: 'Размер кнопки'\n },\n rounded: {\n control: 'boolean',\n description: 'Скруглённая форма кнопки'\n },\n iconPos: {\n control: 'select',\n options: [null, 'prefix', 'postfix'],\n description: 'Позиция иконки (prefix — слева, postfix — справа)'\n },\n iconOnly: {\n control: 'boolean',\n description: 'Режим кнопки только с иконкой'\n },\n icon: {\n control: 'text',\n description: 'CSS-класс иконки (например: ti ti-check)'\n },\n disabled: {\n control: 'boolean',\n description: 'Отключённое состояние'\n },\n loading: {\n control: 'boolean',\n description: 'Состояние загрузки с индикатором'\n }\n },\n parameters: {\n docs: {\n description: {\n story: 'Интерактивный пример с пропсами, соответствующими Figma-компоненту Button.'\n }\n }\n }\n}" - } - ], - "src/stories/components/button/examples/button-icon.component.ts": [ - { - "name": "Icon", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с иконками'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-icon',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonIconComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-icon.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n \n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-loading.component.ts": [ - { - "name": "Loading", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопка в состоянии загрузки'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-loading',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonLoadingComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-loading.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-outlined.component.ts": [ - { - "name": "Outlined", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Outlined кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-outlined',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonOutlinedComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-outlined.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n \n
`" - } - ], - "src/stories/components/button/examples/button-rounded.component.ts": [ - { - "name": "Rounded", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Скругленная кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-rounded',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonRoundedComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-rounded.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-severity.component.ts": [ - { - "name": "Severity", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки с разным Severity'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-severity',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSeverityComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-severity.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n \n \n \n
\n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-sizes.component.ts": [ - { - "name": "Sizes", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Кнопки разных размеров'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-sizes',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonSizesComponent {}\n `\n }\n }\n }\n}" - }, - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-sizes.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n
\n \n \n \n \n
\n
\n`" - } - ], - "src/stories/components/button/examples/button-text.component.ts": [ - { - "name": "styles", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "string", - "defaultValue": "''" - }, - { - "name": "template", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "unknown", - "defaultValue": "`\n
\n \n
\n`" - }, - { - "name": "Text", - "ctype": "miscellaneous", - "subtype": "variable", - "file": "src/stories/components/button/examples/button-text.component.ts", - "deprecated": false, - "deprecationMessage": "", - "type": "StoryObj", - "defaultValue": "{\n render: () => ({\n template: ``\n }),\n parameters: {\n docs: {\n description: {\n story: 'Text кнопка'\n },\n source: {\n language: 'ts',\n code: `\nimport { Component } from '@angular/core';\nimport { Button } from 'primeng/button';\n\n@Component({\n selector: 'app-button-text',\n standalone: true,\n imports: [\n Button\n ],\n template: ${template},\n styles: ${styles}\n})\nexport class ButtonTextComponent {}\n `\n }\n }\n }\n}" - } - ] - }, - "groupedFunctions": {}, - "groupedEnumerations": {}, - "groupedTypeAliases": { - "src/stories/components/button/button.stories.ts": [ - { - "name": "Story", - "ctype": "miscellaneous", - "subtype": "typealias", - "rawtype": "StoryObj", - "file": "src/stories/components/button/button.stories.ts", - "deprecated": false, - "deprecationMessage": "", - "description": "", - "kind": 184 - } - ] - } - }, - "routes": { - "name": "", - "kind": "module", - "children": [] - }, - "coverage": { - "count": 0, - "status": "low", - "files": [ - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "ButtonDefault", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Disabled", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "gridTemplate", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "IconOnly", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Icons", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Link", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Loading", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "meta", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Rounded", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Severity", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Sizes", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Text", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/button.stories.ts", - "type": "type alias", - "linktype": "miscellaneous", - "linksubtype": "typealias", - "name": "Story", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonBadgeComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Badge", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-badge.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-base.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonBaseComponent", - "coveragePercent": 0, - "coverageCount": "0/12", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-base.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Base", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-base.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-base.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonDisabledComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Disabled", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-disabled.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-extra.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Extra", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonIconComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Icon", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-icon.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-loading.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonLoadingComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-loading.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Loading", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-loading.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-loading.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-outlined.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonOutlinedComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-outlined.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Outlined", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-outlined.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-outlined.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-rounded.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonRoundedComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-rounded.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Rounded", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-rounded.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-rounded.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-severity.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonSeverityComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-severity.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Severity", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-severity.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-severity.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-sizes.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonSizesComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-sizes.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Sizes", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-sizes.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-sizes.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-text.component.ts", - "type": "component", - "linktype": "component", - "name": "ButtonTextComponent", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-text.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "styles", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-text.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "template", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - }, - { - "filePath": "src/stories/components/button/examples/button-text.component.ts", - "type": "variable", - "linktype": "miscellaneous", - "linksubtype": "variable", - "name": "Text", - "coveragePercent": 0, - "coverageCount": "0/1", - "status": "low" - } - ] - } -} \ No newline at end of file