@taiga-ui/core 4.0.0-rc.8 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/components/data-list/data-list.tokens.d.ts +1 -1
  2. package/components/dialog/dialog.component.d.ts +0 -1
  3. package/components/scrollbar/index.d.ts +1 -0
  4. package/components/scrollbar/scrollbar.component.d.ts +1 -0
  5. package/components/scrollbar/scrollbar.options.d.ts +7 -0
  6. package/directives/hint/hint-hover.directive.d.ts +1 -1
  7. package/directives/hint/hint-unstyled.component.d.ts +7 -0
  8. package/directives/hint/hint.component.d.ts +3 -3
  9. package/esm2022/components/button/button.directive.mjs +2 -2
  10. package/esm2022/components/data-list/data-list.tokens.mjs +1 -1
  11. package/esm2022/components/dialog/dialog.component.mjs +5 -6
  12. package/esm2022/components/dialog/dialogs.component.mjs +3 -3
  13. package/esm2022/components/label/label.directive.mjs +2 -2
  14. package/esm2022/components/link/link.directive.mjs +2 -2
  15. package/esm2022/components/notification/notification.directive.mjs +2 -2
  16. package/esm2022/components/root/root.component.mjs +3 -3
  17. package/esm2022/components/scrollbar/index.mjs +2 -1
  18. package/esm2022/components/scrollbar/scrollbar.component.mjs +5 -3
  19. package/esm2022/components/scrollbar/scrollbar.options.mjs +9 -0
  20. package/esm2022/components/textfield/textfield.component.mjs +3 -3
  21. package/esm2022/directives/hint/hint-hover.directive.mjs +2 -2
  22. package/esm2022/directives/hint/hint-unstyled.component.mjs +11 -29
  23. package/esm2022/directives/hint/hint.component.mjs +20 -24
  24. package/esm2022/tokens/number-format.mjs +2 -2
  25. package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
  26. package/fesm2022/taiga-ui-core-components-button.mjs.map +1 -1
  27. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  28. package/fesm2022/taiga-ui-core-components-dialog.mjs +6 -7
  29. package/fesm2022/taiga-ui-core-components-dialog.mjs.map +1 -1
  30. package/fesm2022/taiga-ui-core-components-label.mjs +2 -2
  31. package/fesm2022/taiga-ui-core-components-label.mjs.map +1 -1
  32. package/fesm2022/taiga-ui-core-components-link.mjs +2 -2
  33. package/fesm2022/taiga-ui-core-components-link.mjs.map +1 -1
  34. package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
  35. package/fesm2022/taiga-ui-core-components-notification.mjs.map +1 -1
  36. package/fesm2022/taiga-ui-core-components-root.mjs +2 -2
  37. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  38. package/fesm2022/taiga-ui-core-components-scrollbar.mjs +13 -4
  39. package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
  40. package/fesm2022/taiga-ui-core-components-textfield.mjs +2 -2
  41. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  42. package/fesm2022/taiga-ui-core-directives-hint.mjs +56 -80
  43. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +1 -1
  44. package/fesm2022/taiga-ui-core-tokens.mjs +1 -1
  45. package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
  46. package/package.json +5 -5
  47. package/styles/components/button.less +50 -26
  48. package/styles/components/icon.less +2 -2
  49. package/styles/components/icons.less +3 -3
  50. package/styles/components/label.less +2 -4
  51. package/styles/components/link.less +5 -4
  52. package/styles/components/notification.less +47 -33
  53. package/styles/components/textfield.less +286 -0
  54. package/styles/mixins/mixins.less +2 -10
  55. package/styles/mixins/picker.less +23 -23
  56. package/styles/theme/appearance/icon.less +2 -2
  57. package/styles/theme/appearance/status.less +10 -10
  58. package/styles/theme/wrapper.less +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-core-tokens.mjs","sources":["../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/assets-path.ts","../../../projects/core/tokens/common-icons.ts","../../../projects/core/tokens/date-format.ts","../../../projects/core/tokens/day-type-handler.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icon-resolver.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/spin-icons.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_REDUCED_MOTION = tuiCreateTokenFromFactory(\n () =>\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\n .matches ?? false,\n);\n","import {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_REDUCED_MOTION} from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const TUI_ANIMATIONS_SPEED = tuiCreateTokenFromFactory<number>(() =>\n inject(TUI_REDUCED_MOTION) ? 0 : 1,\n);\n","import type {ValueProvider} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ASSETS_PATH = tuiCreateToken('assets/taiga-ui/icons');\n\nexport function tuiAssetsPathProvider(useValue: string): ValueProvider {\n return {\n provide: TUI_ASSETS_PATH,\n useValue,\n };\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nconst COMMON_ICONS: TuiCommonIcons = {\n check: '@tui.check',\n close: '@tui.x',\n error: '@tui.circle-alert',\n more: '@tui.chevron-right',\n};\n\nexport interface TuiCommonIcons {\n readonly check: string;\n readonly close: string;\n readonly error: string;\n readonly more: string;\n}\n\nexport const TUI_COMMON_ICONS = tuiCreateToken(COMMON_ICONS);\n\nexport function tuiCommonIconsProvider(icons: Partial<TuiCommonIcons>): Provider {\n return tuiProvideOptions(TUI_COMMON_ICONS, icons, COMMON_ICONS);\n}\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport type {TuiDateMode} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\n/**\n * Formatting configuration for displayed dates\n */\nexport interface TuiDateFormatSettings {\n /**\n * Date format mode.\n */\n readonly mode: TuiDateMode;\n /**\n * Separator between date segments\n * @example 10.02 ('.' by default)\n */\n readonly separator: string;\n}\n\nexport const TUI_DEFAULT_DATE_FORMAT: TuiDateFormatSettings = {\n mode: 'DMY',\n separator: '.',\n};\n\n/**\n * Formatting configuration for displayed dates\n */\nexport const TUI_DATE_FORMAT: InjectionToken<Observable<TuiDateFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_DATE_FORMAT));\n\nexport function tuiDateFormatProvider(options: Partial<TuiDateFormatSettings>): Provider {\n return {\n provide: TUI_DATE_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_DATE_FORMAT]],\n useFactory: (\n parent: Observable<TuiDateFormatSettings> | null,\n ): Observable<TuiDateFormatSettings> =>\n (parent || of(TUI_DEFAULT_DATE_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import type {TuiDay} from '@taiga-ui/cdk/date-time';\nimport type {TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * Token for adding data-type attribute to calendar cell\n */\nexport const TUI_DAY_TYPE_HANDLER = tuiCreateToken<TuiHandler<TuiDay, string>>((day) =>\n day.isWeekend ? 'weekend' : 'weekday',\n);\n","import {TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * The first day of the week index\n */\nexport const TUI_FIRST_DAY_OF_WEEK = tuiCreateToken<0 | 1 | 2 | 3 | 4 | 5 | 6>(\n TuiDayOfWeek.Monday,\n);\n","import {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiExtractI18n} from '@taiga-ui/i18n/utils';\n\n/**\n * Localized months names\n */\nexport const TUI_MONTHS = tuiCreateTokenFromFactory(tuiExtractI18n('months'));\n\n/**\n * i18n 'close' word\n */\nexport const TUI_CLOSE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('close'));\n\n/**\n * i18n 'Nothing found' message\n */\nexport const TUI_NOTHING_FOUND_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('nothingFoundMessage'),\n);\n\n/**\n * i18n of error message\n */\nexport const TUI_DEFAULT_ERROR_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('defaultErrorMessage'),\n);\n\n/**\n * spin i18n texts\n */\nexport const TUI_SPIN_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('spinTexts'));\n\n/**\n * calendars i18n texts\n */\nexport const TUI_SHORT_WEEK_DAYS = tuiCreateTokenFromFactory(\n tuiExtractI18n('shortWeekDays'),\n);\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_START = tuiCreateToken('');\nexport const TUI_ICON_END = tuiCreateToken('');\n","import type {FactoryProvider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_STARTS = tuiCreateToken<Record<string, string>>({});\n\nexport function tuiIconsProvider(icons: Record<string, string>): FactoryProvider {\n return {\n provide: TUI_ICON_STARTS,\n useFactory: () => ({\n ...(inject(TUI_ICON_STARTS, {skipSelf: true, optional: true}) || {}),\n ...Object.fromEntries(\n Object.entries(icons).map(([key, value]) => [\n key,\n `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(value)}`,\n ]),\n ),\n }),\n };\n}\n","import type {Provider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_ASSETS_PATH} from './assets-path';\nimport {TUI_ICON_STARTS} from './icons';\n\nexport const TUI_ICON_START_RESOLVER = tuiCreateTokenFromFactory<\n TuiStringHandler<string>\n>(() => {\n const path = inject(TUI_ASSETS_PATH);\n\n return (icon) =>\n !icon || icon.includes('/')\n ? icon\n : `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;\n});\n\nexport function tuiInjectIconResolver(): TuiStringHandler<string> {\n const icons = inject(TUI_ICON_STARTS);\n const resolver = inject(TUI_ICON_START_RESOLVER);\n\n return (icon) => icons[icon] || resolver(icon);\n}\n\nexport function tuiIconResolverProvider(useValue: TuiStringHandler<string>): Provider {\n return {\n provide: TUI_ICON_START_RESOLVER,\n useValue,\n };\n}\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiMedia {\n readonly desktopLarge: number;\n readonly desktopSmall: number;\n readonly mobile: number;\n readonly tablet?: number;\n}\n\n/**\n * Token for media constant\n */\nexport const TUI_MEDIA = tuiCreateToken<TuiMedia>({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport type {TuiRounding} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\nexport type TuiDecimalMode = 'always' | 'not-zero' | 'pad';\nexport type TuiDecimalSymbol = ',' | '.';\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport interface TuiNumberFormatSettings {\n /**\n * Number of digits of decimal part.\n * @note Use `Infinity` to keep untouched.\n */\n readonly precision: number;\n /**\n * Separator between the integer and the decimal part.\n * @example 0,42 (',' by default)\n */\n readonly decimalSeparator: TuiDecimalSymbol;\n /**\n * Rounding method.\n */\n readonly rounding: TuiRounding;\n /**\n * Separator between thousands.\n * @example 360 000 (' ' by default)\n */\n readonly thousandSeparator: string;\n /**\n * Decimal part display mode. ('not-zero' by default)\n */\n readonly decimalMode: TuiDecimalMode;\n}\n\nexport const TUI_DEFAULT_NUMBER_FORMAT: TuiNumberFormatSettings = {\n precision: NaN,\n decimalSeparator: ',',\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n rounding: 'truncate',\n decimalMode: 'pad',\n};\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport const TUI_NUMBER_FORMAT: InjectionToken<Observable<TuiNumberFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_NUMBER_FORMAT));\n\nexport function tuiNumberFormatProvider(\n options: Partial<TuiNumberFormatSettings>,\n): Provider {\n return {\n provide: TUI_NUMBER_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_NUMBER_FORMAT]],\n useFactory: (\n parent: Observable<TuiNumberFormatSettings> | null,\n ): Observable<TuiNumberFormatSettings> =>\n (parent || of(TUI_DEFAULT_NUMBER_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_SCROLL_REF = tuiCreateTokenFromFactory(\n () => new ElementRef(inject(DOCUMENT).documentElement),\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {merge, share, switchMap, takeUntil} from 'rxjs';\n\n/**\n * A stream of possible selection changes\n */\nexport const TUI_SELECTION_STREAM = tuiCreateTokenFromFactory<Observable<unknown>>(() => {\n const doc = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(doc, 'selectionchange'),\n tuiTypedFromEvent(doc, 'mouseup'),\n tuiTypedFromEvent(doc, 'mousedown').pipe(\n switchMap(() =>\n tuiTypedFromEvent(doc, 'mousemove').pipe(\n takeUntil(tuiTypedFromEvent(doc, 'mouseup')),\n ),\n ),\n ),\n tuiTypedFromEvent(doc, 'keydown'),\n tuiTypedFromEvent(doc, 'keyup'),\n ).pipe(share());\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiSpinIcons {\n readonly decrement: string;\n readonly increment: string;\n}\n\nexport const TUI_SPIN_ICONS = tuiCreateToken<TuiSpinIcons>({\n decrement: '@tui.chevron-left',\n increment: '@tui.chevron-right',\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_THEME = tuiCreateToken('Taiga UI');\n","import type {Provider, Type} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiCreateTokenFromFactory, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\n\n/**\n * Viewport accessor\n */\nexport const TUI_VIEWPORT = tuiCreateTokenFromFactory<TuiRectAccessor>(() => {\n const win = inject(WA_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n },\n };\n});\n\nexport function tuiAsViewport(accessor: Type<TuiRectAccessor>): Provider {\n return tuiProvide(TUI_VIEWPORT, accessor);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-core-tokens.mjs","sources":["../../../projects/core/tokens/reduced-motion.ts","../../../projects/core/tokens/animations-speed.ts","../../../projects/core/tokens/assets-path.ts","../../../projects/core/tokens/common-icons.ts","../../../projects/core/tokens/date-format.ts","../../../projects/core/tokens/day-type-handler.ts","../../../projects/core/tokens/first-day-of-week.ts","../../../projects/core/tokens/i18n.ts","../../../projects/core/tokens/icon.ts","../../../projects/core/tokens/icons.ts","../../../projects/core/tokens/icon-resolver.ts","../../../projects/core/tokens/media.ts","../../../projects/core/tokens/number-format.ts","../../../projects/core/tokens/scroll-ref.ts","../../../projects/core/tokens/selection-stream.ts","../../../projects/core/tokens/spin-icons.ts","../../../projects/core/tokens/theme.ts","../../../projects/core/tokens/viewport.ts","../../../projects/core/tokens/taiga-ui-core-tokens.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_REDUCED_MOTION = tuiCreateTokenFromFactory(\n () =>\n inject(DOCUMENT).defaultView?.matchMedia?.('(prefers-reduced-motion: reduce)')\n .matches ?? false,\n);\n","import {inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_REDUCED_MOTION} from './reduced-motion';\n\n/**\n * Speed of all Taiga UI animations. 1 equals 300ms.\n */\nexport const TUI_ANIMATIONS_SPEED = tuiCreateTokenFromFactory<number>(() =>\n inject(TUI_REDUCED_MOTION) ? 0 : 1,\n);\n","import type {ValueProvider} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ASSETS_PATH = tuiCreateToken('assets/taiga-ui/icons');\n\nexport function tuiAssetsPathProvider(useValue: string): ValueProvider {\n return {\n provide: TUI_ASSETS_PATH,\n useValue,\n };\n}\n","import type {Provider} from '@angular/core';\nimport {tuiCreateToken, tuiProvideOptions} from '@taiga-ui/cdk/utils/miscellaneous';\n\nconst COMMON_ICONS: TuiCommonIcons = {\n check: '@tui.check',\n close: '@tui.x',\n error: '@tui.circle-alert',\n more: '@tui.chevron-right',\n};\n\nexport interface TuiCommonIcons {\n readonly check: string;\n readonly close: string;\n readonly error: string;\n readonly more: string;\n}\n\nexport const TUI_COMMON_ICONS = tuiCreateToken(COMMON_ICONS);\n\nexport function tuiCommonIconsProvider(icons: Partial<TuiCommonIcons>): Provider {\n return tuiProvideOptions(TUI_COMMON_ICONS, icons, COMMON_ICONS);\n}\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport type {TuiDateMode} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\n/**\n * Formatting configuration for displayed dates\n */\nexport interface TuiDateFormatSettings {\n /**\n * Date format mode.\n */\n readonly mode: TuiDateMode;\n /**\n * Separator between date segments\n * @example 10.02 ('.' by default)\n */\n readonly separator: string;\n}\n\nexport const TUI_DEFAULT_DATE_FORMAT: TuiDateFormatSettings = {\n mode: 'DMY',\n separator: '.',\n};\n\n/**\n * Formatting configuration for displayed dates\n */\nexport const TUI_DATE_FORMAT: InjectionToken<Observable<TuiDateFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_DATE_FORMAT));\n\nexport function tuiDateFormatProvider(options: Partial<TuiDateFormatSettings>): Provider {\n return {\n provide: TUI_DATE_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_DATE_FORMAT]],\n useFactory: (\n parent: Observable<TuiDateFormatSettings> | null,\n ): Observable<TuiDateFormatSettings> =>\n (parent || of(TUI_DEFAULT_DATE_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import type {TuiDay} from '@taiga-ui/cdk/date-time';\nimport type {TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * Token for adding data-type attribute to calendar cell\n */\nexport const TUI_DAY_TYPE_HANDLER = tuiCreateToken<TuiHandler<TuiDay, string>>((day) =>\n day.isWeekend ? 'weekend' : 'weekday',\n);\n","import {TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\n/**\n * The first day of the week index\n */\nexport const TUI_FIRST_DAY_OF_WEEK = tuiCreateToken<0 | 1 | 2 | 3 | 4 | 5 | 6>(\n TuiDayOfWeek.Monday,\n);\n","import {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {tuiExtractI18n} from '@taiga-ui/i18n/utils';\n\n/**\n * Localized months names\n */\nexport const TUI_MONTHS = tuiCreateTokenFromFactory(tuiExtractI18n('months'));\n\n/**\n * i18n 'close' word\n */\nexport const TUI_CLOSE_WORD = tuiCreateTokenFromFactory(tuiExtractI18n('close'));\n\n/**\n * i18n 'Nothing found' message\n */\nexport const TUI_NOTHING_FOUND_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('nothingFoundMessage'),\n);\n\n/**\n * i18n of error message\n */\nexport const TUI_DEFAULT_ERROR_MESSAGE = tuiCreateTokenFromFactory(\n tuiExtractI18n('defaultErrorMessage'),\n);\n\n/**\n * spin i18n texts\n */\nexport const TUI_SPIN_TEXTS = tuiCreateTokenFromFactory(tuiExtractI18n('spinTexts'));\n\n/**\n * calendars i18n texts\n */\nexport const TUI_SHORT_WEEK_DAYS = tuiCreateTokenFromFactory(\n tuiExtractI18n('shortWeekDays'),\n);\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_START = tuiCreateToken('');\nexport const TUI_ICON_END = tuiCreateToken('');\n","import type {FactoryProvider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_ICON_STARTS = tuiCreateToken<Record<string, string>>({});\n\nexport function tuiIconsProvider(icons: Record<string, string>): FactoryProvider {\n return {\n provide: TUI_ICON_STARTS,\n useFactory: () => ({\n ...(inject(TUI_ICON_STARTS, {skipSelf: true, optional: true}) || {}),\n ...Object.fromEntries(\n Object.entries(icons).map(([key, value]) => [\n key,\n `data:image/svg+xml;charset=UTF-8,${encodeURIComponent(value)}`,\n ]),\n ),\n }),\n };\n}\n","import type {Provider} from '@angular/core';\nimport {inject} from '@angular/core';\nimport type {TuiStringHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TUI_ASSETS_PATH} from './assets-path';\nimport {TUI_ICON_STARTS} from './icons';\n\nexport const TUI_ICON_START_RESOLVER = tuiCreateTokenFromFactory<\n TuiStringHandler<string>\n>(() => {\n const path = inject(TUI_ASSETS_PATH);\n\n return (icon) =>\n !icon || icon.includes('/')\n ? icon\n : `${path}/${icon.replace('@tui.', '').split('.').join('/')}.svg`;\n});\n\nexport function tuiInjectIconResolver(): TuiStringHandler<string> {\n const icons = inject(TUI_ICON_STARTS);\n const resolver = inject(TUI_ICON_START_RESOLVER);\n\n return (icon) => icons[icon] || resolver(icon);\n}\n\nexport function tuiIconResolverProvider(useValue: TuiStringHandler<string>): Provider {\n return {\n provide: TUI_ICON_START_RESOLVER,\n useValue,\n };\n}\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiMedia {\n readonly desktopLarge: number;\n readonly desktopSmall: number;\n readonly mobile: number;\n readonly tablet?: number;\n}\n\n/**\n * Token for media constant\n */\nexport const TUI_MEDIA = tuiCreateToken<TuiMedia>({\n mobile: 768,\n desktopSmall: 1024,\n desktopLarge: 1280,\n});\n","import type {InjectionToken, Provider} from '@angular/core';\nimport {Optional, SkipSelf} from '@angular/core';\nimport {CHAR_NO_BREAK_SPACE} from '@taiga-ui/cdk/constants';\nimport type {TuiRounding} from '@taiga-ui/cdk/types';\nimport {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {map, of} from 'rxjs';\n\nexport type TuiDecimalMode = 'always' | 'not-zero' | 'pad';\nexport type TuiDecimalSymbol = ',' | '.';\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport interface TuiNumberFormatSettings {\n /**\n * Number of digits of decimal part.\n * @note Use `Infinity` to keep untouched.\n */\n readonly precision: number;\n /**\n * Separator between the integer and the decimal part.\n * @example 0,42 (',' by default)\n */\n readonly decimalSeparator: TuiDecimalSymbol;\n /**\n * Rounding method.\n */\n readonly rounding: TuiRounding;\n /**\n * Separator between thousands.\n * @example 360 000 (' ' by default)\n */\n readonly thousandSeparator: string;\n /**\n * Decimal part display mode. ('not-zero' by default)\n */\n readonly decimalMode: TuiDecimalMode;\n}\n\nexport const TUI_DEFAULT_NUMBER_FORMAT: TuiNumberFormatSettings = {\n precision: NaN,\n decimalSeparator: '.',\n thousandSeparator: CHAR_NO_BREAK_SPACE,\n rounding: 'truncate',\n decimalMode: 'pad',\n};\n\n/**\n * Formatting configuration for displayed numbers\n */\nexport const TUI_NUMBER_FORMAT: InjectionToken<Observable<TuiNumberFormatSettings>> =\n tuiCreateToken(of(TUI_DEFAULT_NUMBER_FORMAT));\n\nexport function tuiNumberFormatProvider(\n options: Partial<TuiNumberFormatSettings>,\n): Provider {\n return {\n provide: TUI_NUMBER_FORMAT,\n deps: [[new Optional(), new SkipSelf(), TUI_NUMBER_FORMAT]],\n useFactory: (\n parent: Observable<TuiNumberFormatSettings> | null,\n ): Observable<TuiNumberFormatSettings> =>\n (parent || of(TUI_DEFAULT_NUMBER_FORMAT)).pipe(\n map((format) => ({...format, ...options})),\n ),\n };\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, inject} from '@angular/core';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_SCROLL_REF = tuiCreateTokenFromFactory(\n () => new ElementRef(inject(DOCUMENT).documentElement),\n);\n","import {DOCUMENT} from '@angular/common';\nimport {inject} from '@angular/core';\nimport {tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiCreateTokenFromFactory} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {Observable} from 'rxjs';\nimport {merge, share, switchMap, takeUntil} from 'rxjs';\n\n/**\n * A stream of possible selection changes\n */\nexport const TUI_SELECTION_STREAM = tuiCreateTokenFromFactory<Observable<unknown>>(() => {\n const doc = inject(DOCUMENT);\n\n return merge(\n tuiTypedFromEvent(doc, 'selectionchange'),\n tuiTypedFromEvent(doc, 'mouseup'),\n tuiTypedFromEvent(doc, 'mousedown').pipe(\n switchMap(() =>\n tuiTypedFromEvent(doc, 'mousemove').pipe(\n takeUntil(tuiTypedFromEvent(doc, 'mouseup')),\n ),\n ),\n ),\n tuiTypedFromEvent(doc, 'keydown'),\n tuiTypedFromEvent(doc, 'keyup'),\n ).pipe(share());\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport interface TuiSpinIcons {\n readonly decrement: string;\n readonly increment: string;\n}\n\nexport const TUI_SPIN_ICONS = tuiCreateToken<TuiSpinIcons>({\n decrement: '@tui.chevron-left',\n increment: '@tui.chevron-right',\n});\n","import {tuiCreateToken} from '@taiga-ui/cdk/utils/miscellaneous';\n\nexport const TUI_THEME = tuiCreateToken('Taiga UI');\n","import type {Provider, Type} from '@angular/core';\nimport {inject} from '@angular/core';\nimport {WA_WINDOW} from '@ng-web-apis/common';\nimport {tuiCreateTokenFromFactory, tuiProvide} from '@taiga-ui/cdk/utils/miscellaneous';\nimport type {TuiRectAccessor} from '@taiga-ui/core/classes';\n\n/**\n * Viewport accessor\n */\nexport const TUI_VIEWPORT = tuiCreateTokenFromFactory<TuiRectAccessor>(() => {\n const win = inject(WA_WINDOW);\n\n return {\n type: 'viewport',\n getClientRect() {\n const rect = {\n top: 0,\n left: 0,\n right: win.innerWidth,\n bottom: win.innerHeight,\n width: win.innerWidth,\n height: win.innerHeight,\n x: 0,\n y: 0,\n };\n\n return {\n ...rect,\n toJSON: () => JSON.stringify(rect),\n };\n },\n };\n});\n\nexport function tuiAsViewport(accessor: Type<TuiRectAccessor>): Provider {\n return tuiProvide(TUI_VIEWPORT, accessor);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/core",
3
- "version": "4.0.0-rc.8",
3
+ "version": "4.0.0",
4
4
  "description": "Core library for creating Angular components and applications using Taiga UI",
5
5
  "keywords": [
6
6
  "angular",
@@ -309,11 +309,11 @@
309
309
  "@angular/forms": ">=16.0.0",
310
310
  "@angular/platform-browser": ">=16.0.0",
311
311
  "@angular/router": ">=16.0.0",
312
- "@ng-web-apis/common": "^4.2.0",
313
- "@ng-web-apis/mutation-observer": "^4.2.0",
314
- "@taiga-ui/cdk": "^4.0.0-rc.8",
312
+ "@ng-web-apis/common": "^4.2.1",
313
+ "@ng-web-apis/mutation-observer": "^4.2.1",
314
+ "@taiga-ui/cdk": "^4.0.0",
315
315
  "@taiga-ui/event-plugins": "^4.0.1",
316
- "@taiga-ui/i18n": "^4.0.0-rc.8",
316
+ "@taiga-ui/i18n": "^4.0.0",
317
317
  "@taiga-ui/polymorpheus": "^4.6.4",
318
318
  "rxjs": ">=7.0.0"
319
319
  },
@@ -8,7 +8,7 @@
8
8
  * Plain button design, applicable to both links and buttons
9
9
  *
10
10
  * @attributes
11
- * data-size — size ('xs' | 's' | 'm' | 'l')
11
+ * data-size — size (default: 'l') ('xs' | 's' | 'm' | 'l')
12
12
  *
13
13
  * @example
14
14
  * <button tuiButton>Click me</button>
@@ -18,7 +18,11 @@
18
18
  */
19
19
  [tuiButton],
20
20
  [tuiIconButton] {
21
- --t-gap: 0.125rem;
21
+ --t-size: var(--tui-height-l);
22
+ --t-radius: var(--tui-radius-l);
23
+ --t-gap: 0.25rem;
24
+ --t-padding: 0 1.25rem;
25
+ --t-margin: -0.25rem;
22
26
 
23
27
  .button-base();
24
28
 
@@ -28,6 +32,12 @@
28
32
  padding: var(--t-padding);
29
33
  user-select: none;
30
34
  cursor: pointer;
35
+ font: var(--tui-font-text-m);
36
+ font-weight: bold;
37
+
38
+ &[tuiIcons]::after {
39
+ margin: 0 -0.25rem 0 0.25rem;
40
+ }
31
41
 
32
42
  > .t-loader {
33
43
  .center-all();
@@ -40,14 +50,19 @@
40
50
  &[data-size='xs'] {
41
51
  --t-size: var(--tui-height-xs);
42
52
  --t-radius: var(--tui-radius-xs);
53
+ --t-gap: 0.125rem;
43
54
  --t-padding: 0 0.375rem;
44
55
  --t-margin: -0.125rem;
45
56
 
46
57
  font: var(--tui-font-text-s);
47
58
 
59
+ &::after {
60
+ margin: var(--t-margin);
61
+ }
62
+
48
63
  tui-svg,
49
64
  tui-icon,
50
- &:before {
65
+ &::before {
51
66
  font-size: 1rem;
52
67
  }
53
68
  }
@@ -55,14 +70,19 @@
55
70
  &[data-size='s'] {
56
71
  --t-size: var(--tui-height-s);
57
72
  --t-radius: var(--tui-radius-s);
73
+ --t-gap: 0.125rem;
58
74
  --t-padding: 0 0.625rem;
59
75
  --t-margin: -0.125rem;
60
76
 
61
77
  font: var(--tui-font-text-s);
62
78
 
79
+ &::after {
80
+ margin: var(--t-margin);
81
+ }
82
+
63
83
  tui-svg,
64
84
  tui-icon,
65
- &:not([tuiIconButton][data-appearance='icon']):not([tuiIconButton][data-appearance='link']):before {
85
+ &:not([tuiIconButton][data-appearance='icon']):not([tuiIconButton][data-appearance='link'])::before {
66
86
  font-size: 1rem;
67
87
  }
68
88
  }
@@ -70,41 +90,27 @@
70
90
  &[data-size='m'] {
71
91
  --t-size: var(--tui-height-m);
72
92
  --t-radius: var(--tui-radius-m);
93
+ --t-gap: 0.125rem;
73
94
  --t-padding: 0 1rem;
74
95
  --t-margin: -0.375rem;
75
96
 
76
97
  font: var(--tui-font-text-m);
77
98
  font-weight: bold;
78
99
 
79
- &:after {
100
+ &::after {
101
+ margin: var(--t-margin);
80
102
  margin-inline-end: -0.125rem;
81
103
  }
82
104
  }
83
105
 
84
- &[data-size='l'] {
85
- --t-size: var(--tui-height-l);
86
- --t-radius: var(--tui-radius-l);
87
- --t-padding: 0 1.25rem;
88
- --t-gap: 0.25rem;
89
- --t-margin: -0.25rem;
90
-
91
- font: var(--tui-font-text-m);
92
- font-weight: bold;
93
-
94
- &:after {
95
- margin-inline-start: 0.25rem;
96
- margin-inline-end: -0.25rem;
97
- }
98
- }
99
-
100
106
  &._loading {
101
107
  --tui-disabled-opacity: 1;
102
108
 
103
109
  -webkit-text-fill-color: transparent;
104
110
 
105
111
  > *,
106
- &:before,
107
- &:after {
112
+ &::before,
113
+ &::after {
108
114
  opacity: 0;
109
115
  }
110
116
 
@@ -113,9 +119,27 @@
113
119
  }
114
120
  }
115
121
 
116
- &[tuiIcons]:after {
122
+ &[tuiIcons]::after {
117
123
  font-size: 1rem;
118
124
  }
125
+
126
+ &[tuiButtonVertical] {
127
+ --t-line-height: 1rem;
128
+ --t-margin: 0rem !important;
129
+
130
+ flex-direction: column;
131
+ flex-shrink: 1;
132
+ height: auto;
133
+ padding: 0.75rem;
134
+ gap: 0.375rem;
135
+ min-width: 5rem;
136
+ white-space: pre-line;
137
+ font: var(--tui-font-text-ui-s);
138
+
139
+ & > * {
140
+ max-height: calc(var(--t-line-height) * 2);
141
+ }
142
+ }
119
143
  }
120
144
 
121
145
  [tuiIconButton] {
@@ -124,11 +148,11 @@
124
148
  font-size: 0 !important;
125
149
  padding: 0;
126
150
 
127
- &[data-size='l']:after {
151
+ &[data-size='l']::after {
128
152
  margin: 0;
129
153
  }
130
154
 
131
- &&[style*='--t-icon-start:']:after {
155
+ &&[style*='--t-icon-start:']::after {
132
156
  display: none;
133
157
  }
134
158
  }
@@ -28,8 +28,8 @@ tui-icon {
28
28
  box-sizing: border-box;
29
29
  mask: var(--t-icon-bg) no-repeat center/contain;
30
30
 
31
- &:after,
32
- &[tuiIcons]:after {
31
+ &::after,
32
+ &[tuiIcons]::after {
33
33
  .fullsize();
34
34
 
35
35
  content: '';
@@ -19,8 +19,8 @@
19
19
  --t-icon-start: none;
20
20
  --t-icon-end: none;
21
21
 
22
- &:before,
23
- &:after {
22
+ &::before,
23
+ &::after {
24
24
  content: '';
25
25
  display: var(--t-icon-start);
26
26
  width: 1em;
@@ -31,7 +31,7 @@
31
31
  mask: var(--t-icon-start) no-repeat center/contain;
32
32
  }
33
33
 
34
- &:after {
34
+ &::after {
35
35
  display: var(--t-icon-end);
36
36
  mask: var(--t-icon-end) no-repeat center/contain;
37
37
  }
@@ -8,9 +8,6 @@
8
8
  * Easy to use label ready for horizontal orientation for checkbox/radio/switch
9
9
  * and vertical for input, select and textarea
10
10
  *
11
- * @attributes
12
- * data-orientation — orientation ('horizontal' | 'vertical')
13
- *
14
11
  * @example
15
12
  * <label tuiLabel><input type="checkbox" /> Click me</tui-icon>
16
13
  *
@@ -30,7 +27,8 @@
30
27
  font: var(--tui-font-text-m);
31
28
  }
32
29
 
33
- //TODO: Remove after legacy inputs are dropped
30
+ // TODO: Remove after legacy inputs are dropped
31
+ &:has(tui-textfield),
34
32
  &:has(tui-primitive-textfield),
35
33
  &:has(tui-textarea) {
36
34
  flex-direction: column !important;
@@ -21,6 +21,7 @@
21
21
  border: none;
22
22
  cursor: pointer;
23
23
  font: inherit;
24
+ color: inherit;
24
25
  text-decoration: none dashed currentColor;
25
26
  text-underline-offset: 0.2em;
26
27
  text-decoration-thickness: 0.7px;
@@ -30,16 +31,16 @@
30
31
  --tui-text-secondary: var(--tui-text-primary);
31
32
  }
32
33
 
33
- &:before {
34
+ &::before {
34
35
  margin-inline-end: 0.25rem;
35
36
  }
36
37
 
37
- &:after {
38
+ &::after {
38
39
  margin-inline-start: 0.25rem;
39
40
  }
40
41
 
41
- &[tuiIcons]:before,
42
- &[tuiIcons]:after {
42
+ &[tuiIcons]::before,
43
+ &[tuiIcons]::after {
43
44
  content: '\2060';
44
45
  padding: calc(var(--tui-icon-size, 1rem) / 2);
45
46
  vertical-align: super;
@@ -1,5 +1,26 @@
1
1
  @import '@taiga-ui/core/styles/taiga-ui-local';
2
2
 
3
+ /**
4
+ * @name Notification
5
+ * @selector tui-notification, [tuiNotification]
6
+ *
7
+ * @description
8
+ * A colored rounded block of information with optional icon, title, subtitle and actions
9
+ *
10
+ * @attributes
11
+ * data-size — size (default: 'l') ('s' | 'm' | 'l')
12
+ *
13
+ * @example
14
+ * <tui-notification tuiAppearance data-appearance="error">
15
+ * <span tuiTitle>
16
+ * Error
17
+ * <span tuiSubtitle>Something went wrong</span>
18
+ * </span>
19
+ * </tui-notification>
20
+ *
21
+ * @see-also
22
+ * Icons, Appearance
23
+ */
3
24
  tui-notification,
4
25
  [tuiNotification] {
5
26
  .button-clear();
@@ -8,15 +29,16 @@ tui-notification,
8
29
  display: flex;
9
30
  max-height: 100%;
10
31
  color: var(--tui-text-primary);
11
- font: var(--tui-font-text-s);
12
- border-radius: var(--tui-radius-m);
32
+ gap: 0.5rem;
33
+ padding: 1rem;
34
+ font: var(--tui-font-text-m);
35
+ border-radius: var(--tui-radius-l);
13
36
  box-sizing: border-box;
14
37
  overflow: hidden;
15
38
  text-align: left;
16
39
  text-decoration: none;
17
- border: 0 solid transparent;
18
40
 
19
- &:after {
41
+ &::after {
20
42
  font-size: 1rem;
21
43
  margin: 0 -0.25rem 0 auto;
22
44
  align-self: center;
@@ -26,8 +48,10 @@ tui-notification,
26
48
  &[data-size='s'] {
27
49
  gap: 0.5rem;
28
50
  padding: 0.375rem 0.625rem;
51
+ font: var(--tui-font-text-s);
52
+ border-radius: var(--tui-radius-m);
29
53
 
30
- &:before,
54
+ &::before,
31
55
  tui-icon {
32
56
  font-size: 1rem;
33
57
  margin-top: 0.125rem;
@@ -39,6 +63,10 @@ tui-notification,
39
63
  font-weight: bold;
40
64
  }
41
65
 
66
+ [tuiSubtitle] {
67
+ font: var(--tui-font-text-s);
68
+ }
69
+
42
70
  [tuiSubtitle] + * {
43
71
  gap: 1rem;
44
72
  margin: 0.375rem 0 0.25rem;
@@ -52,8 +80,10 @@ tui-notification,
52
80
  &[data-size='m'] {
53
81
  gap: 0.375rem;
54
82
  padding: 0.75rem;
83
+ font: var(--tui-font-text-s);
84
+ border-radius: var(--tui-radius-m);
55
85
 
56
- &:before,
86
+ &::before,
57
87
  tui-icon {
58
88
  font-size: 1.25rem;
59
89
  }
@@ -63,6 +93,10 @@ tui-notification,
63
93
  font-weight: bold;
64
94
  }
65
95
 
96
+ [tuiSubtitle] {
97
+ font: var(--tui-font-text-s);
98
+ }
99
+
66
100
  [tuiSubtitle] + * {
67
101
  gap: 1rem;
68
102
  margin: 0.625rem 0 0.25rem;
@@ -73,48 +107,28 @@ tui-notification,
73
107
  }
74
108
  }
75
109
 
76
- &[data-size='l'] {
77
- gap: 0.5rem;
78
- padding: 1rem;
79
- font: var(--tui-font-text-m);
80
- border-radius: var(--tui-radius-l);
81
-
82
- [tuiTitle] {
83
- font: var(--tui-font-text-ui-l);
84
- font-weight: bold;
85
- }
86
-
87
- [tuiSubtitle] {
88
- font: var(--tui-font-text-m);
89
-
90
- + * {
91
- gap: 1.25rem;
92
- margin-top: 0.625rem;
93
- }
94
- }
95
-
96
- > [tuiIconButton] {
97
- margin: -0.25rem -0.25rem -0.25rem auto;
98
- }
99
- }
100
-
101
110
  [tuiTitle] {
102
111
  gap: 0.125rem;
112
+ font: var(--tui-font-text-ui-l);
113
+ font-weight: bold;
103
114
  }
104
115
 
105
116
  [tuiSubtitle] {
106
- font: var(--tui-font-text-s);
117
+ font: var(--tui-font-text-m);
107
118
 
108
119
  + * {
109
120
  display: flex;
110
- font: var(--tui-font-text-s);
111
121
  align-items: center;
122
+ gap: 1.25rem;
123
+ margin-top: 0.625rem;
124
+ font: var(--tui-font-text-s);
112
125
  }
113
126
  }
114
127
 
115
128
  > [tuiIconButton] {
116
129
  box-shadow: none !important;
117
130
  background: transparent !important;
131
+ margin: -0.25rem -0.25rem -0.25rem auto;
118
132
  }
119
133
  }
120
134