@cdek-it/angular-ui-kit 0.2.4-test → 0.2.7-test

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 (148) hide show
  1. package/components/accordion/index.d.ts +21 -0
  2. package/components/autocomplete/index.d.ts +65 -0
  3. package/components/avatar/index.d.ts +5 -5
  4. package/components/badge/index.d.ts +5 -5
  5. package/components/breadcrumb/index.d.ts +3 -3
  6. package/components/button/index.d.ts +16 -14
  7. package/components/carousel/index.d.ts +41 -0
  8. package/components/checkbox/index.d.ts +7 -6
  9. package/components/confirm-dialog/index.d.ts +37 -0
  10. package/components/date-picker/index.d.ts +89 -0
  11. package/components/dialog/index.d.ts +16 -9
  12. package/components/divider/index.d.ts +7 -7
  13. package/components/drawer/index.d.ts +33 -0
  14. package/components/galleria/index.d.ts +65 -0
  15. package/components/inputgroup/index.d.ts +17 -0
  16. package/components/inputmask/index.d.ts +43 -0
  17. package/components/inputnumber/index.d.ts +50 -0
  18. package/components/inputotp/index.d.ts +40 -0
  19. package/components/inputtext/index.d.ts +5 -4
  20. package/components/listbox/index.d.ts +43 -0
  21. package/components/megamenu/index.d.ts +10 -10
  22. package/components/menu/index.d.ts +24 -0
  23. package/components/menubar/index.d.ts +16 -0
  24. package/components/message/index.d.ts +19 -0
  25. package/components/metergroup/index.d.ts +9 -8
  26. package/components/paginator/index.d.ts +25 -0
  27. package/components/panelmenu/index.d.ts +19 -0
  28. package/components/password/index.d.ts +54 -0
  29. package/components/popover/index.d.ts +12 -0
  30. package/components/progressbar/index.d.ts +3 -3
  31. package/components/progressspinner/index.d.ts +3 -3
  32. package/components/radiobutton/index.d.ts +7 -6
  33. package/components/rating/index.d.ts +6 -6
  34. package/components/scroll-panel/index.d.ts +11 -0
  35. package/components/select/index.d.ts +78 -0
  36. package/components/skeleton/index.d.ts +5 -5
  37. package/components/slider/index.d.ts +4 -3
  38. package/components/stepper/index.d.ts +25 -0
  39. package/components/tabs/index.d.ts +22 -0
  40. package/components/tag/index.d.ts +3 -3
  41. package/components/textarea/index.d.ts +40 -0
  42. package/components/tieredmenu/index.d.ts +2 -2
  43. package/components/timeline/index.d.ts +17 -5
  44. package/components/toast/index.d.ts +52 -0
  45. package/components/toggleswitch/index.d.ts +26 -0
  46. package/components/tooltip/index.d.ts +5 -5
  47. package/fesm2022/cdek-it-angular-ui-kit-components-accordion.mjs +69 -0
  48. package/fesm2022/cdek-it-angular-ui-kit-components-accordion.mjs.map +1 -0
  49. package/fesm2022/cdek-it-angular-ui-kit-components-autocomplete.mjs +269 -0
  50. package/fesm2022/cdek-it-angular-ui-kit-components-autocomplete.mjs.map +1 -0
  51. package/fesm2022/cdek-it-angular-ui-kit-components-avatar.mjs +7 -5
  52. package/fesm2022/cdek-it-angular-ui-kit-components-avatar.mjs.map +1 -1
  53. package/fesm2022/cdek-it-angular-ui-kit-components-badge.mjs +4 -15
  54. package/fesm2022/cdek-it-angular-ui-kit-components-badge.mjs.map +1 -1
  55. package/fesm2022/cdek-it-angular-ui-kit-components-breadcrumb.mjs +4 -13
  56. package/fesm2022/cdek-it-angular-ui-kit-components-breadcrumb.mjs.map +1 -1
  57. package/fesm2022/cdek-it-angular-ui-kit-components-button.mjs +3 -2
  58. package/fesm2022/cdek-it-angular-ui-kit-components-button.mjs.map +1 -1
  59. package/fesm2022/cdek-it-angular-ui-kit-components-card.mjs +2 -2
  60. package/fesm2022/cdek-it-angular-ui-kit-components-card.mjs.map +1 -1
  61. package/fesm2022/cdek-it-angular-ui-kit-components-carousel.mjs +166 -0
  62. package/fesm2022/cdek-it-angular-ui-kit-components-carousel.mjs.map +1 -0
  63. package/fesm2022/cdek-it-angular-ui-kit-components-checkbox.mjs +3 -2
  64. package/fesm2022/cdek-it-angular-ui-kit-components-checkbox.mjs.map +1 -1
  65. package/fesm2022/cdek-it-angular-ui-kit-components-chip.mjs +4 -3
  66. package/fesm2022/cdek-it-angular-ui-kit-components-chip.mjs.map +1 -1
  67. package/fesm2022/cdek-it-angular-ui-kit-components-confirm-dialog.mjs +192 -0
  68. package/fesm2022/cdek-it-angular-ui-kit-components-confirm-dialog.mjs.map +1 -0
  69. package/fesm2022/cdek-it-angular-ui-kit-components-date-picker.mjs +640 -0
  70. package/fesm2022/cdek-it-angular-ui-kit-components-date-picker.mjs.map +1 -0
  71. package/fesm2022/cdek-it-angular-ui-kit-components-dialog.mjs +28 -10
  72. package/fesm2022/cdek-it-angular-ui-kit-components-dialog.mjs.map +1 -1
  73. package/fesm2022/cdek-it-angular-ui-kit-components-divider.mjs +6 -13
  74. package/fesm2022/cdek-it-angular-ui-kit-components-divider.mjs.map +1 -1
  75. package/fesm2022/cdek-it-angular-ui-kit-components-drawer.mjs +153 -0
  76. package/fesm2022/cdek-it-angular-ui-kit-components-drawer.mjs.map +1 -0
  77. package/fesm2022/cdek-it-angular-ui-kit-components-galleria.mjs +284 -0
  78. package/fesm2022/cdek-it-angular-ui-kit-components-galleria.mjs.map +1 -0
  79. package/fesm2022/cdek-it-angular-ui-kit-components-inputgroup.mjs +64 -0
  80. package/fesm2022/cdek-it-angular-ui-kit-components-inputgroup.mjs.map +1 -0
  81. package/fesm2022/cdek-it-angular-ui-kit-components-inputmask.mjs +164 -0
  82. package/fesm2022/cdek-it-angular-ui-kit-components-inputmask.mjs.map +1 -0
  83. package/fesm2022/cdek-it-angular-ui-kit-components-inputnumber.mjs +267 -0
  84. package/fesm2022/cdek-it-angular-ui-kit-components-inputnumber.mjs.map +1 -0
  85. package/fesm2022/cdek-it-angular-ui-kit-components-inputotp.mjs +148 -0
  86. package/fesm2022/cdek-it-angular-ui-kit-components-inputotp.mjs.map +1 -0
  87. package/fesm2022/cdek-it-angular-ui-kit-components-inputtext.mjs +13 -11
  88. package/fesm2022/cdek-it-angular-ui-kit-components-inputtext.mjs.map +1 -1
  89. package/fesm2022/cdek-it-angular-ui-kit-components-listbox.mjs +172 -0
  90. package/fesm2022/cdek-it-angular-ui-kit-components-listbox.mjs.map +1 -0
  91. package/fesm2022/cdek-it-angular-ui-kit-components-megamenu.mjs +22 -9
  92. package/fesm2022/cdek-it-angular-ui-kit-components-megamenu.mjs.map +1 -1
  93. package/fesm2022/cdek-it-angular-ui-kit-components-menu.mjs +114 -0
  94. package/fesm2022/cdek-it-angular-ui-kit-components-menu.mjs.map +1 -0
  95. package/fesm2022/cdek-it-angular-ui-kit-components-menubar.mjs +88 -0
  96. package/fesm2022/cdek-it-angular-ui-kit-components-menubar.mjs.map +1 -0
  97. package/fesm2022/cdek-it-angular-ui-kit-components-message.mjs +105 -0
  98. package/fesm2022/cdek-it-angular-ui-kit-components-message.mjs.map +1 -0
  99. package/fesm2022/cdek-it-angular-ui-kit-components-metergroup.mjs +4 -3
  100. package/fesm2022/cdek-it-angular-ui-kit-components-metergroup.mjs.map +1 -1
  101. package/fesm2022/cdek-it-angular-ui-kit-components-paginator.mjs +95 -0
  102. package/fesm2022/cdek-it-angular-ui-kit-components-paginator.mjs.map +1 -0
  103. package/fesm2022/cdek-it-angular-ui-kit-components-panelmenu.mjs +69 -0
  104. package/fesm2022/cdek-it-angular-ui-kit-components-panelmenu.mjs.map +1 -0
  105. package/fesm2022/cdek-it-angular-ui-kit-components-password.mjs +258 -0
  106. package/fesm2022/cdek-it-angular-ui-kit-components-password.mjs.map +1 -0
  107. package/fesm2022/cdek-it-angular-ui-kit-components-popover.mjs +48 -0
  108. package/fesm2022/cdek-it-angular-ui-kit-components-popover.mjs.map +1 -0
  109. package/fesm2022/cdek-it-angular-ui-kit-components-progressbar.mjs +4 -15
  110. package/fesm2022/cdek-it-angular-ui-kit-components-progressbar.mjs.map +1 -1
  111. package/fesm2022/cdek-it-angular-ui-kit-components-progressspinner.mjs +3 -2
  112. package/fesm2022/cdek-it-angular-ui-kit-components-progressspinner.mjs.map +1 -1
  113. package/fesm2022/cdek-it-angular-ui-kit-components-radiobutton.mjs +8 -7
  114. package/fesm2022/cdek-it-angular-ui-kit-components-radiobutton.mjs.map +1 -1
  115. package/fesm2022/cdek-it-angular-ui-kit-components-rating.mjs +8 -7
  116. package/fesm2022/cdek-it-angular-ui-kit-components-rating.mjs.map +1 -1
  117. package/fesm2022/cdek-it-angular-ui-kit-components-scroll-panel.mjs +42 -0
  118. package/fesm2022/cdek-it-angular-ui-kit-components-scroll-panel.mjs.map +1 -0
  119. package/fesm2022/cdek-it-angular-ui-kit-components-select.mjs +350 -0
  120. package/fesm2022/cdek-it-angular-ui-kit-components-select.mjs.map +1 -0
  121. package/fesm2022/cdek-it-angular-ui-kit-components-skeleton.mjs +4 -3
  122. package/fesm2022/cdek-it-angular-ui-kit-components-skeleton.mjs.map +1 -1
  123. package/fesm2022/cdek-it-angular-ui-kit-components-slider.mjs +6 -6
  124. package/fesm2022/cdek-it-angular-ui-kit-components-slider.mjs.map +1 -1
  125. package/fesm2022/cdek-it-angular-ui-kit-components-stepper.mjs +227 -0
  126. package/fesm2022/cdek-it-angular-ui-kit-components-stepper.mjs.map +1 -0
  127. package/fesm2022/cdek-it-angular-ui-kit-components-tabs.mjs +83 -0
  128. package/fesm2022/cdek-it-angular-ui-kit-components-tabs.mjs.map +1 -0
  129. package/fesm2022/cdek-it-angular-ui-kit-components-tag.mjs +6 -15
  130. package/fesm2022/cdek-it-angular-ui-kit-components-tag.mjs.map +1 -1
  131. package/fesm2022/cdek-it-angular-ui-kit-components-textarea.mjs +214 -0
  132. package/fesm2022/cdek-it-angular-ui-kit-components-textarea.mjs.map +1 -0
  133. package/fesm2022/cdek-it-angular-ui-kit-components-tieredmenu.mjs +5 -16
  134. package/fesm2022/cdek-it-angular-ui-kit-components-tieredmenu.mjs.map +1 -1
  135. package/fesm2022/cdek-it-angular-ui-kit-components-timeline.mjs +74 -50
  136. package/fesm2022/cdek-it-angular-ui-kit-components-timeline.mjs.map +1 -1
  137. package/fesm2022/cdek-it-angular-ui-kit-components-toast.mjs +106 -0
  138. package/fesm2022/cdek-it-angular-ui-kit-components-toast.mjs.map +1 -0
  139. package/fesm2022/cdek-it-angular-ui-kit-components-toggleswitch.mjs +93 -0
  140. package/fesm2022/cdek-it-angular-ui-kit-components-toggleswitch.mjs.map +1 -0
  141. package/fesm2022/cdek-it-angular-ui-kit-components-tooltip.mjs.map +1 -1
  142. package/fesm2022/cdek-it-angular-ui-kit-providers.mjs +2497 -125
  143. package/fesm2022/cdek-it-angular-ui-kit-providers.mjs.map +1 -1
  144. package/fesm2022/cdek-it-angular-ui-kit-shared.mjs +4 -0
  145. package/fesm2022/cdek-it-angular-ui-kit-shared.mjs.map +1 -0
  146. package/package.json +118 -2
  147. package/shared/index.d.ts +49 -0
  148. package/tailwind/theme.css +461 -0
@@ -546,7 +546,15 @@ var semantic = {
546
546
  "800": "{sizing.16x}",
547
547
  "900": "{sizing.20x}"
548
548
  },
549
- width: "{sizing.68x}",
549
+ width: {
550
+ "100": "{sizing.6x}",
551
+ "200": "{sizing.8x}",
552
+ "300": "{sizing.10x}",
553
+ "350": "{sizing.11x}",
554
+ "400": "{sizing.12x}",
555
+ "500": "{sizing.60x}",
556
+ full: "{sizing.max}"
557
+ },
550
558
  gap: {
551
559
  "100": "{spacing.1x}",
552
560
  "200": "{spacing.2x}",
@@ -1375,7 +1383,7 @@ var components = {
1375
1383
  transitionDuration: "{controls.transitionDuration}"
1376
1384
  },
1377
1385
  panel: {
1378
- borderWidth: "{borderWidth.none} {borderWidth.none} {navigation.width.200} {borderWidth.none}",
1386
+ borderWidth: "{borderWidth.none} {borderWidth.none} {navigation.width.100} {borderWidth.none}",
1379
1387
  borderColor: "{form.borderColor}"
1380
1388
  },
1381
1389
  content: {
@@ -1467,7 +1475,7 @@ var components = {
1467
1475
  padding: "{list.optionGroup.padding}"
1468
1476
  },
1469
1477
  dropdown: {
1470
- width: "{form.width.full}",
1478
+ width: "{form.width.300}",
1471
1479
  borderColor: "{form.borderColor}",
1472
1480
  hoverBorderColor: "{form.hoverBorderSecondaryColor}",
1473
1481
  activeBorderColor: "{form.focusBorderSecondaryColor}",
@@ -2809,10 +2817,20 @@ var components = {
2809
2817
  background: "{overlay.modal.background}",
2810
2818
  borderColor: "{overlay.modal.borderColor}",
2811
2819
  color: "{overlay.modal.color}",
2812
- shadow: "{overlay.modal.shadow}"
2820
+ shadow: "{overlay.modal.shadow}",
2821
+ width: "{overlay.width}"
2822
+ },
2823
+ sm: {
2824
+ width: "{overlay.sm.width}"
2825
+ },
2826
+ lg: {
2827
+ width: "{overlay.lg.width}"
2828
+ },
2829
+ xlg: {
2830
+ width: "{overlay.xlg.width}"
2813
2831
  },
2814
2832
  header: {
2815
- padding: "{overlay.modal.padding.300} {overlay.modal.padding.300} {overlay.modal.padding.100} {overlay.modal.padding.300} "
2833
+ padding: "{overlay.modal.padding.300} {overlay.modal.padding.300} {overlay.modal.padding.200} {overlay.modal.padding.300} "
2816
2834
  },
2817
2835
  title: {
2818
2836
  fontSize: "{fonts.fontSize.500}",
@@ -3095,7 +3113,7 @@ var components = {
3095
3113
  transitionDuration: "{form.transitionDuration}"
3096
3114
  },
3097
3115
  button: {
3098
- width: "{form.width.300}",
3116
+ width: "{form.size.600}",
3099
3117
  borderRadius: "{form.borderRadius.200}",
3100
3118
  verticalPadding: "{form.padding.300}"
3101
3119
  }
@@ -3219,7 +3237,7 @@ var components = {
3219
3237
  optionGroup: {
3220
3238
  background: "{list.optionGroup.background}",
3221
3239
  color: "{list.optionGroup.color}",
3222
- fontWeight: "{fonts.fontWeight.demibold}",
3240
+ fontWeight: "{fonts.fontWeight.regular}",
3223
3241
  padding: "{list.option.padding}"
3224
3242
  },
3225
3243
  checkmark: {
@@ -3377,7 +3395,7 @@ var components = {
3377
3395
  },
3378
3396
  submenuLabel: {
3379
3397
  padding: "{navigation.submenuLabel.padding}",
3380
- fontWeight: "{fonts.fontWeight.demibold}",
3398
+ fontWeight: "{fonts.fontWeight.regular}",
3381
3399
  background: "{navigation.submenuLabel.background}",
3382
3400
  color: "{navigation.submenuLabel.color}"
3383
3401
  },
@@ -3964,6 +3982,16 @@ var components = {
3964
3982
  icon: {
3965
3983
  color: "{form.placeholderColor}"
3966
3984
  }
3985
+ },
3986
+ dark: {
3987
+ strength: {
3988
+ weakBackground: "{error.500}",
3989
+ mediumBackground: "{warn.500}",
3990
+ strongBackground: "{success.600}"
3991
+ },
3992
+ icon: {
3993
+ color: "{form.placeholderColor}"
3994
+ }
3967
3995
  }
3968
3996
  },
3969
3997
  meter: {
@@ -3997,8 +4025,9 @@ var components = {
3997
4025
  color: "{overlay.popover.color}",
3998
4026
  borderRadius: "{overlay.popover.borderRadius}",
3999
4027
  shadow: "{overlay.popover.shadow}",
4000
- gutter: "{overlay.gap.100}",
4001
- arrowOffset: "{overlay.popover.padding.200}"
4028
+ gutter: "{overlay.gap.300}",
4029
+ arrowOffset: "{overlay.popover.padding.200}",
4030
+ arrowLeft: "0px"
4002
4031
  },
4003
4032
  content: {
4004
4033
  padding: "{overlay.popover.padding.100}"
@@ -4167,19 +4196,19 @@ var components = {
4167
4196
  placeholderColor: "{form.placeholderColor}",
4168
4197
  invalidPlaceholderColor: "{form.invalidPlaceholderColor}",
4169
4198
  shadow: "0",
4170
- paddingX: "{form.paddingX}",
4171
- paddingY: "{form.paddingY}",
4199
+ paddingX: "{form.padding.300}",
4200
+ paddingY: "{form.padding.300}",
4172
4201
  borderRadius: "{form.borderRadius.200}",
4173
4202
  transitionDuration: "{form.transitionDuration}",
4174
4203
  sm: {
4175
- fontSize: "{form.fontSize}",
4176
- paddingX: "{form.paddingX}",
4177
- paddingY: "{form.paddingY}"
4204
+ fontSize: "{fonts.fontSize.300}",
4205
+ paddingX: "{form.padding.300}",
4206
+ paddingY: "{form.padding.200}"
4178
4207
  },
4179
4208
  lg: {
4180
- fontSize: "{form.fontSize}",
4181
- paddingX: "{form.paddingX}",
4182
- paddingY: "{form.paddingY}"
4209
+ fontSize: "{fonts.fontSize.300}",
4210
+ paddingX: "{form.padding.300}",
4211
+ paddingY: "{form.padding.400}"
4183
4212
  },
4184
4213
  focusRing: {
4185
4214
  width: "{form.focusRing.width}",
@@ -4221,7 +4250,7 @@ var components = {
4221
4250
  optionGroup: {
4222
4251
  background: "{list.optionGroup.background}",
4223
4252
  color: "{list.optionGroup.color}",
4224
- fontWeight: "{fonts.fontWeight.demibold}",
4253
+ fontWeight: "{fonts.fontWeight.regular}",
4225
4254
  padding: "{list.option.padding}"
4226
4255
  },
4227
4256
  clearIcon: {
@@ -4708,7 +4737,12 @@ var components = {
4708
4737
  readonlyBackground: "{form.readonlyBackground}",
4709
4738
  borderWidth: "{form.borderWidth}",
4710
4739
  iconSize: "{form.icon.300}",
4711
- minHeight: "{form.size.900}"
4740
+ minHeight: "{form.size.900}",
4741
+ extXlg: {
4742
+ fontSize: "{fonts.fontSize.300}",
4743
+ paddingX: "{form.padding.300}",
4744
+ paddingY: "{form.padding.500}"
4745
+ }
4712
4746
  },
4713
4747
  root: {
4714
4748
  background: "{form.background}",
@@ -4725,8 +4759,8 @@ var components = {
4725
4759
  placeholderColor: "{form.placeholderColor}",
4726
4760
  invalidPlaceholderColor: "{form.invalidPlaceholderColor}",
4727
4761
  shadow: "0",
4728
- paddingX: "{form.paddingX}",
4729
- paddingY: "{form.paddingY}",
4762
+ paddingX: "{form.padding.300}",
4763
+ paddingY: "{form.padding.300}",
4730
4764
  borderRadius: "{form.borderRadius.200}",
4731
4765
  transitionDuration: "{form.transitionDuration}",
4732
4766
  focusRing: {
@@ -4735,17 +4769,17 @@ var components = {
4735
4769
  color: "{form.focusRing.color}",
4736
4770
  offset: "{form.focusRing.offset}",
4737
4771
  shadow: "0"
4772
+ },
4773
+ sm: {
4774
+ fontSize: "{fonts.fontSize.300}",
4775
+ paddingX: "{form.padding.300}",
4776
+ paddingY: "{form.padding.200}"
4777
+ },
4778
+ lg: {
4779
+ fontSize: "{fonts.fontSize.300}",
4780
+ paddingX: "{form.padding.300}",
4781
+ paddingY: "{form.padding.400}"
4738
4782
  }
4739
- },
4740
- sm: {
4741
- fontSize: "{fonts.fontSize.300}",
4742
- paddingX: "{form.padding.200}",
4743
- paddingY: "{form.padding.200}"
4744
- },
4745
- lg: {
4746
- fontSize: "{fonts.fontSize.300}",
4747
- paddingX: "{form.padding.400}",
4748
- paddingY: "{form.padding.400}"
4749
4783
  }
4750
4784
  },
4751
4785
  tieredmenu: {
@@ -4863,7 +4897,7 @@ var components = {
4863
4897
  checkedHoverBackground: "{surface.800}",
4864
4898
  checkedHoverBorderColor: "{surface.800}",
4865
4899
  extXlg: {
4866
- padding: "{form.padding.500} {form.padding.500}",
4900
+ padding: "{form.padding.500} {form.padding.600}",
4867
4901
  iconOnlyWidth: "4.0714rem"
4868
4902
  },
4869
4903
  extSm: {
@@ -5366,12 +5400,29 @@ const checkboxCss = ({ dt }) => `
5366
5400
  }
5367
5401
  `;
5368
5402
 
5403
+ const inputmaskCss = ({ dt }) => `
5404
+
5405
+ /* ─── Sizes ─── */
5406
+ input-mask.input-mask-xlg .p-inputtext {
5407
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
5408
+ padding: ${dt('inputtext.extend.extXlg.paddingY')} ${dt('inputtext.extend.extXlg.paddingX')};
5409
+ }
5410
+ `;
5411
+
5369
5412
  const inputtextCss = ({ dt }) => `
5370
5413
 
5371
5414
  /* ─── Базовые стили ─── */
5372
5415
  .p-inputtext {
5373
- border-width: ${dt('inputtext.extend.borderWidth')};
5374
5416
  line-height: ${dt('fonts.lineHeight.250')};
5417
+ font-family: ${dt('fonts.fontFamily.base')};
5418
+ }
5419
+
5420
+ .p-inputtext::placeholder {
5421
+ font-family: ${dt('fonts.fontFamily.base')};
5422
+ }
5423
+
5424
+ .p-floatlabel:has(.p-inputtext) label {
5425
+ font-family: ${dt('fonts.fontFamily.base')};
5375
5426
  }
5376
5427
 
5377
5428
  /* ─── Disabled ─── */
@@ -5452,6 +5503,104 @@ const progressspinnerCss = ({ dt }) => `
5452
5503
  }
5453
5504
  `;
5454
5505
 
5506
+ /**
5507
+ * Кастомная CSS-стилизация для компонента p-password.
5508
+ * Подключается в map-tokens.ts: `import { passwordCss } from './components/password'`
5509
+ */
5510
+ const passwordCss = ({ dt }) => `
5511
+ /* ─── Иконки управления ─── */
5512
+ .p-password-toggle-mask-icon,
5513
+ .p-icon.p-password-toggle-mask-icon.p-password-unmask-icon {
5514
+ cursor: pointer;
5515
+ color: ${dt('password.icon.color')};
5516
+ }
5517
+
5518
+ /* ─── Оверлей и индикатор ─── */
5519
+ .p-password-overlay {
5520
+ border-width: ${dt('password.extend.borderWidth')};
5521
+ }
5522
+
5523
+ .p-password-meter-text {
5524
+ font-family: ${dt('fonts.fontFamily.base')};
5525
+ font-size: ${dt('fonts.fontSize.200')};
5526
+ font-weight: ${dt('fonts.fontWeight.regular')};
5527
+ line-height: ${dt('fonts.lineHeight.250')};
5528
+ color: ${dt('password.overlay.color')};
5529
+ }
5530
+
5531
+ /* ─── Focus ─── */
5532
+ .p-password:has(.p-inputtext:enabled:focus) {
5533
+ box-shadow: 0 0 0 ${dt('inputtext.focusRing.width')} ${dt('inputtext.focusRing.color')};
5534
+ border-radius: ${dt('inputtext.root.borderRadius')};
5535
+ }
5536
+
5537
+ /* ─── Invalid + Focus ─── */
5538
+ .p-password:has(.p-inputtext.p-invalid:focus) {
5539
+ box-shadow: 0 0 0 ${dt('inputtext.focusRing.width')} ${dt('focusRing.extend.invalid')};
5540
+ border-radius: ${dt('inputtext.root.borderRadius')};
5541
+ }
5542
+
5543
+ .p-password:has(.p-inputtext.p-invalid:focus) .p-inputtext {
5544
+ border-color: ${dt('inputtext.root.invalidBorderColor')};
5545
+ }
5546
+
5547
+ /* ─── FloatLabel ─── */
5548
+ .p-floatlabel:has(.p-password) label {
5549
+ font-family: ${dt('fonts.fontFamily.base')};
5550
+ font-weight: ${dt('floatlabel.root.fontWeight')};
5551
+ line-height: ${dt('fonts.lineHeight.250')};
5552
+ color: ${dt('floatlabel.root.color')};
5553
+ }
5554
+
5555
+ .p-floatlabel:has(.p-password) .p-floatlabel-active label {
5556
+ font-weight: ${dt('floatlabel.root.active.fontWeight')};
5557
+ }
5558
+
5559
+ .p-floatlabel-in .p-password .p-inputtext {
5560
+ font-family: ${dt('fonts.fontFamily.base')};
5561
+ padding-block-start: ${dt('floatlabel.in.input.paddingTop')};
5562
+ padding-block-end: ${dt('floatlabel.in.input.paddingBottom')};
5563
+ }
5564
+
5565
+ /* ─── Кастомный контент (правила пароля) ─── */
5566
+ .p-password-rules {
5567
+ display: flex;
5568
+ flex-direction: column;
5569
+ gap: ${dt('password.content.gap')};
5570
+ margin: 0;
5571
+ padding: 0;
5572
+ list-style: none;
5573
+ }
5574
+
5575
+ .p-password-rule {
5576
+ display: flex;
5577
+ align-items: center;
5578
+ gap: ${dt('password.content.gap')};
5579
+ font-family: ${dt('fonts.fontFamily.base')};
5580
+ font-size: ${dt('fonts.fontSize.200')};
5581
+ font-weight: ${dt('fonts.fontWeight.regular')};
5582
+ line-height: ${dt('fonts.lineHeight.250')};
5583
+ color: ${dt('password.overlay.color')};
5584
+ }
5585
+
5586
+ /* ─── Состояния иконок правил ─── */
5587
+ .p-password-rule i {
5588
+ font-size: ${dt('fonts.fontSize.200')};
5589
+ }
5590
+
5591
+ .p-password-rule .ti-circle {
5592
+ color: ${dt('surface.400')};
5593
+ }
5594
+
5595
+ .p-password-rule .ti-circle-check {
5596
+ color: ${dt('password.colorScheme.light.strength.strongBackground')};
5597
+ }
5598
+
5599
+ .p-password-rule .ti-circle-x {
5600
+ color: ${dt('password.colorScheme.light.strength.weakBackground')};
5601
+ }
5602
+ `;
5603
+
5455
5604
  const tagCss = ({ dt }) => `
5456
5605
  .p-tag {
5457
5606
  font-family: ${dt('fonts.fontFamily.base')};
@@ -5459,76 +5608,72 @@ const tagCss = ({ dt }) => `
5459
5608
  }
5460
5609
  `;
5461
5610
 
5462
- const timelineCss = ({ dt }) => `
5611
+ const textareaCss = ({ dt }) => `
5463
5612
 
5464
- /* ─── Типографика ─── */
5465
- .p-timeline {
5613
+ /* --- Base --- */
5614
+ .p-textarea {
5615
+ border-width: ${dt('textarea.extend.borderWidth')};
5616
+ line-height: ${dt('fonts.lineHeight.250')};
5617
+ min-height: ${dt('textarea.extend.minHeight')};
5466
5618
  font-family: ${dt('fonts.fontFamily.base')};
5467
- font-size: ${dt('fonts.fontSize.300')};
5468
- line-height: ${dt('fonts.lineHeight.500')};
5469
- color: ${dt('text.color')};
5470
- }
5471
-
5472
- /* ─── Маркер ─── */
5473
- .p-timeline-event-marker {
5474
- border-width: ${dt('timeline.eventMarker.borderWidth')};
5475
- background: ${dt('timeline.eventMarker.background')};
5476
- border-color: ${dt('timeline.eventMarker.borderColor')};
5477
5619
  }
5478
5620
 
5479
- .p-timeline-event-marker::before {
5480
- background: ${dt('timeline.eventMarker.content.background')};
5621
+ .p-textarea::placeholder {
5622
+ font-family: ${dt('fonts.fontFamily.base')};
5481
5623
  }
5482
5624
 
5483
- /* ─── Коннектор ─── */
5484
- .p-timeline-event-connector {
5485
- background: ${dt('timeline.eventConnector.color')};
5625
+ .p-floatlabel:has(.p-textarea) label {
5626
+ font-family: ${dt('fonts.fontFamily.base')};
5486
5627
  }
5487
5628
 
5488
- /* ─── Стиль линии ─── */
5489
- timeline[data-line="dashed"] .p-timeline-event-connector {
5490
- background: none;
5491
- border-left: ${dt('timeline.eventConnector.size')} dashed ${dt('timeline.eventConnector.color')};
5629
+ /* --- Sizes --- */
5630
+ .p-textarea.p-textarea-xlg {
5631
+ font-size: ${dt('textarea.extend.extXlg.fontSize')};
5632
+ padding: ${dt('textarea.extend.extXlg.paddingY')} ${dt('textarea.extend.extXlg.paddingX')};
5492
5633
  }
5493
5634
 
5494
- timeline[data-line="dotted"] .p-timeline-event-connector {
5495
- background: none;
5496
- border-left: ${dt('timeline.eventConnector.size')} dotted ${dt('timeline.eventConnector.color')};
5635
+ /* --- States --- */
5636
+ .p-textarea:enabled:read-only {
5637
+ background: ${dt('textarea.extend.readonlyBackground')};
5638
+ color: ${dt('textarea.color')};
5497
5639
  }
5498
5640
 
5499
- timeline[data-line="none"] .p-timeline-event-connector {
5500
- background: none;
5641
+ .p-textarea:disabled {
5642
+ background: ${dt('textarea.disabledBackground')};
5643
+ color: ${dt('textarea.disabledColor')};
5644
+ opacity: 1;
5501
5645
  }
5502
5646
 
5503
- /* Горизонтальная ориентация линии */
5504
- timeline[data-line="dashed"] .p-timeline-horizontal .p-timeline-event-connector {
5505
- border-left: none;
5506
- border-top: ${dt('timeline.eventConnector.size')} dashed ${dt('timeline.eventConnector.color')};
5647
+ /* --- Focus --- */
5648
+ .p-textarea:enabled:focus {
5649
+ box-shadow: 0 0 0 ${dt('textarea.focusRing.width')} ${dt('textarea.focusRing.color')};
5507
5650
  }
5508
5651
 
5509
- timeline[data-line="dotted"] .p-timeline-horizontal .p-timeline-event-connector {
5510
- border-left: none;
5511
- border-top: ${dt('timeline.eventConnector.size')} dotted ${dt('timeline.eventConnector.color')};
5652
+ /* --- Invalid + Focus --- */
5653
+ .p-textarea.p-invalid:focus {
5654
+ border-color: ${dt('textarea.invalidBorderColor')};
5655
+ box-shadow: 0 0 0 ${dt('textarea.focusRing.width')} ${dt('focusRing.extend.invalid')};
5512
5656
  }
5513
5657
 
5514
- /* ─── Маркер-иконка (без бордера и фона) ─── */
5515
- .p-timeline-event-marker:has(i) {
5516
- border: none;
5517
- background: none;
5658
+ /* --- ClearButton (showClear) --- */
5659
+ .p-iconfield:has(.p-textarea) {
5660
+ display: block;
5661
+ width: fit-content;
5518
5662
  }
5519
5663
 
5520
- .p-timeline-event-marker:has(i)::before {
5521
- display: none;
5664
+ .p-iconfield:has(.p-textarea) .p-textarea {
5665
+ padding-right: ${dt('form.padding.700')};
5522
5666
  }
5523
5667
 
5524
- /* ─── Кастомный цвет маркера ─── */
5525
- timeline[style*="--timeline-marker-color"] .p-timeline-event-marker {
5526
- border-color: var(--timeline-marker-color);
5668
+ .p-iconfield:has(.p-textarea) .p-inputicon {
5669
+ top: ${dt('form.padding.500')};
5670
+ transform: none;
5671
+ font-size: ${dt('textarea.extend.iconSize')};
5672
+ width: ${dt('textarea.extend.iconSize')};
5673
+ height: ${dt('textarea.extend.iconSize')};
5674
+ cursor: pointer;
5527
5675
  }
5528
5676
 
5529
- timeline[style*="--timeline-marker-color"] .p-timeline-event-marker i {
5530
- color: var(--timeline-marker-color);
5531
- }
5532
5677
  `;
5533
5678
 
5534
5679
  const tooltipCss = ({ dt }) => `
@@ -5541,6 +5686,107 @@ const tooltipCss = ({ dt }) => `
5541
5686
  }
5542
5687
  `;
5543
5688
 
5689
+ const inputgroupCss = ({ dt }) => `
5690
+
5691
+ /* ─── Корректировка flex-layout через Angular-обёртки ─── */
5692
+
5693
+ /*
5694
+ * display: contents делает враппер-элементы прозрачными в layout-дереве:
5695
+ * p-inputgroupaddon и input.p-inputtext становятся прямыми flex-элементами
5696
+ * p-inputgroup. Это позволяет:
5697
+ * - align-items: stretch работать напрямую → правильная высота аддона
5698
+ * - границам быть на одном уровне → нет удвоения top/bottom border
5699
+ * - flex: 1 1 auto; width: 1% на input работать нативно через PrimeNG
5700
+ * CSS-селекторы по-прежнему работают (DOM-дерево не меняется).
5701
+ */
5702
+ .p-inputgroup > input-group-addon {
5703
+ display: contents;
5704
+ }
5705
+
5706
+ .p-inputgroup > input-text {
5707
+ display: contents;
5708
+ }
5709
+
5710
+ /* ─── Корректировка border-radius и границ ─── */
5711
+
5712
+ /*
5713
+ * p-inputgroupaddon является :first-child И :last-child своего прямого родителя
5714
+ * input-group-addon, поэтому PrimeNG добавляет ему оба inline-бордера.
5715
+ * Сбрасываем их и переназначаем по позиции аддона в группе.
5716
+ */
5717
+ .p-inputgroup > input-group-addon > .p-inputgroupaddon {
5718
+ border-radius: 0;
5719
+ border-inline-start: none;
5720
+ border-inline-end: none;
5721
+ }
5722
+
5723
+ /* Первый элемент группы — аддон: левые углы + левая граница */
5724
+ .p-inputgroup > input-group-addon:first-child > .p-inputgroupaddon {
5725
+ border-start-start-radius: ${dt('inputgroup.addon.borderRadius')};
5726
+ border-end-start-radius: ${dt('inputgroup.addon.borderRadius')};
5727
+ border-inline-start: ${dt('inputgroup.extend.borderWidth')} solid ${dt('inputgroup.addon.borderColor')};
5728
+ }
5729
+
5730
+ /* Последний элемент группы — аддон: правые углы + правая граница */
5731
+ .p-inputgroup > input-group-addon:last-child > .p-inputgroupaddon {
5732
+ border-start-end-radius: ${dt('inputgroup.addon.borderRadius')};
5733
+ border-end-end-radius: ${dt('inputgroup.addon.borderRadius')};
5734
+ border-inline-end: ${dt('inputgroup.extend.borderWidth')} solid ${dt('inputgroup.addon.borderColor')};
5735
+ }
5736
+
5737
+ /* Аддон сразу после другого аддона: левая граница как разделитель */
5738
+ .p-inputgroup > input-group-addon + input-group-addon > .p-inputgroupaddon {
5739
+ border-inline-start: ${dt('inputgroup.extend.borderWidth')} solid ${dt('inputgroup.addon.borderColor')};
5740
+ }
5741
+
5742
+ /* Сброс border-radius у input внутри input-text-обёртки */
5743
+ .p-inputgroup > input-text .p-inputtext {
5744
+ border-radius: 0;
5745
+ margin: 0;
5746
+ }
5747
+
5748
+ /* Аддон: только горизонтальные границы (top/bottom), inline-бордеры управляются позиционно */
5749
+ .p-inputgroup > input-group-addon > .p-inputgroupaddon {
5750
+ border-block-start: ${dt('inputgroup.extend.borderWidth')} solid ${dt('inputgroup.addon.borderColor')};
5751
+ border-block-end: ${dt('inputgroup.extend.borderWidth')} solid ${dt('inputgroup.addon.borderColor')};
5752
+ }
5753
+
5754
+ /* Первый элемент группы — input: левые углы */
5755
+ .p-inputgroup > input-text:first-child .p-inputtext {
5756
+ border-start-start-radius: ${dt('inputgroup.addon.borderRadius')};
5757
+ border-end-start-radius: ${dt('inputgroup.addon.borderRadius')};
5758
+ }
5759
+
5760
+ /* Последний элемент группы — input: правые углы */
5761
+ .p-inputgroup > input-text:last-child .p-inputtext {
5762
+ border-start-end-radius: ${dt('inputgroup.addon.borderRadius')};
5763
+ border-end-end-radius: ${dt('inputgroup.addon.borderRadius')};
5764
+ }
5765
+
5766
+ /* ─── Addon в disabled состоянии ─── */
5767
+ .p-inputgroup:has(input[disabled]) .p-inputgroupaddon,
5768
+ .p-inputgroup:has(.p-inputtext[disabled]) .p-inputgroupaddon,
5769
+ .p-inputgroup:has(.p-component[disabled]) .p-inputgroupaddon {
5770
+ background: ${dt('inputtext.root.disabledBackground')};
5771
+ color: ${dt('inputtext.root.disabledColor')};
5772
+ }
5773
+
5774
+ /* ─── Иконка внутри addon ─── */
5775
+ .p-inputgroup .p-inputgroupaddon i {
5776
+ font-size: ${dt('inputgroup.extend.iconSize')};
5777
+ }
5778
+
5779
+ /* ─── Extra Large ─── */
5780
+ .p-inputgroup.p-inputgroup-xlg .p-inputgroupaddon {
5781
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
5782
+ padding: ${dt('inputtext.extend.extXlg.paddingY')} ${dt('inputtext.extend.extXlg.paddingX')};
5783
+ }
5784
+
5785
+ .p-inputgroup.p-inputgroup-xlg .p-inputgroupaddon i {
5786
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
5787
+ }
5788
+ `;
5789
+
5544
5790
  const megamenuCss = ({ dt }) => `
5545
5791
  /* ─── Размер иконок ─── */
5546
5792
  .p-megamenu-submenu-icon,
@@ -5584,52 +5830,2178 @@ const megamenuCss = ({ dt }) => `
5584
5830
  }
5585
5831
  `;
5586
5832
 
5587
- const presetTokens = {
5588
- primitive: tokens.primitive,
5589
- semantic: tokens.semantic,
5590
- components: {
5591
- ...tokens.components,
5592
- avatar: {
5593
- ...tokens.components.avatar,
5594
- css: avatarCss,
5595
- },
5596
- card: {
5597
- ...tokens.components.card,
5598
- css: cardCss,
5599
- },
5600
- checkbox: {
5601
- ...tokens.components.checkbox,
5602
- css: checkboxCss,
5603
- },
5604
- button: {
5605
- ...tokens.components.button,
5606
- css: buttonCss,
5607
- },
5608
- progressspinner: {
5609
- ...tokens.components.progressspinner,
5610
- css: progressspinnerCss,
5611
- },
5612
- inputtext: {
5613
- ...tokens.components.inputtext,
5614
- css: inputtextCss,
5615
- },
5616
- tag: {
5617
- ...tokens.components.tag,
5618
- css: tagCss,
5619
- },
5620
- timeline: {
5621
- ...tokens.components.timeline,
5622
- css: timelineCss,
5623
- },
5624
- tooltip: {
5625
- ...tokens.components.tooltip,
5626
- css: tooltipCss,
5627
- },
5628
- megamenu: {
5629
- ...tokens.components.megamenu,
5630
- css: megamenuCss,
5833
+ const selectCss = ({ dt }) => `
5834
+ /* ─── Базовые стили ─── */
5835
+ .p-select.p-component {
5836
+ width: 100%;
5837
+ border-width: ${dt('select.extend.borderWidth')};
5838
+ line-height: ${dt('fonts.lineHeight.250')};
5839
+ }
5840
+
5841
+ .p-select.p-component .p-select-label,
5842
+ .p-select-option {
5843
+ font-family: ${dt('fonts.fontFamily.base')};
5844
+ }
5845
+
5846
+ /* ─── Focus ─── */
5847
+ .p-select.p-component:not(.p-disabled).p-focus {
5848
+ box-shadow: 0 0 0 ${dt('select.root.focusRing.width')} ${dt('select.root.focusRing.color')};
5849
+ }
5850
+
5851
+ /* ─── Invalid + Focus ─── */
5852
+ .p-select.p-component.p-invalid.p-focus {
5853
+ border-color: ${dt('select.root.invalidBorderColor')};
5854
+ box-shadow: 0 0 0 ${dt('select.root.focusRing.width')} ${dt('focusRing.extend.invalid')};
5855
+ }
5856
+
5857
+ /* ─── Readonly ─── */
5858
+ .p-select.p-component[readonly] {
5859
+ background: ${dt('select.extend.readonlyBackground')};
5860
+ border-color: ${dt('select.root.borderColor')};
5861
+ color: ${dt('select.root.color')};
5862
+ cursor: default;
5863
+ pointer-events: none;
5864
+ }
5865
+
5866
+ .p-select.p-component[readonly] :is(.p-select-dropdown .p-select-dropdown-icon, .p-select-clear-icon) {
5867
+ color: ${dt('select.root.placeholderColor')};
5868
+ }
5869
+
5870
+ /* ─── XLarge ─── */
5871
+ .p-select.p-component.p-select-xlg .p-select-label {
5872
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
5873
+ padding-block: ${dt('inputtext.extend.extXlg.paddingY')};
5874
+ padding-inline: ${dt('inputtext.extend.extXlg.paddingX')};
5875
+ }
5876
+
5877
+ /* ─── FloatLabel ─── */
5878
+ .p-floatlabel:has(.p-select.p-component) label {
5879
+ font-family: ${dt('fonts.fontFamily.base')};
5880
+ font-weight: ${dt('floatlabel.root.fontWeight')};
5881
+ line-height: ${dt('fonts.lineHeight.250')};
5882
+ color: ${dt('floatlabel.root.color')};
5883
+ }
5884
+
5885
+ .p-floatlabel:has(.p-select.p-component) .p-floatlabel-active label {
5886
+ font-weight: ${dt('floatlabel.root.active.fontWeight')};
5887
+ }
5888
+
5889
+ .p-floatlabel-in .p-select.p-component .p-select-label {
5890
+ font-family: ${dt('fonts.fontFamily.base')};
5891
+ padding-block-start: ${dt('floatlabel.in.input.paddingTop')};
5892
+ padding-block-end: ${dt('floatlabel.in.input.paddingBottom')};
5893
+ }
5894
+
5895
+ /* ─── Checkmark: выбранный элемент ─── */
5896
+ .p-select-option:has(.p-select-option-check-icon) {
5897
+ background: ${dt('select.option.selectedBackground')};
5898
+ color: ${dt('select.option.selectedColor')};
5899
+ }
5900
+
5901
+ .p-select-option:has(.p-select-option-check-icon).p-focus {
5902
+ background: ${dt('select.option.selectedFocusBackground')};
5903
+ color: ${dt('select.option.selectedFocusColor')};
5904
+ }
5905
+
5906
+ /* Скрываем PrimeNG SVG, заменяем на tabler-иконку */
5907
+ .p-select-option .p-select-option-check-icon,
5908
+ .p-select-option .p-select-option-blank-icon {
5909
+ display: none;
5910
+ }
5911
+
5912
+ .p-select-option:has(.p-select-option-check-icon)::before,
5913
+ .p-select-option:has(.p-select-option-blank-icon)::before {
5914
+ font-family: 'tabler-icons';
5915
+ content: var(--p-select-checkmark-content, "\\ea5e");
5916
+ font-size: ${dt('select.extend.iconSize')};
5917
+ color: var(--p-select-option-selected-color);
5918
+ flex-shrink: 0;
5919
+ margin-inline-start: ${dt('select.checkmark.gutterStart')};
5920
+ margin-inline-end: ${dt('select.checkmark.gutterEnd')};
5921
+ }
5922
+
5923
+ .p-select-option:has(.p-select-option-check-icon).p-focus::before {
5924
+ color: var(--p-select-option-focus-color);
5925
+ }
5926
+
5927
+ .p-select-option:has(.p-select-option-blank-icon)::before {
5928
+ visibility: hidden;
5929
+ }
5930
+
5931
+ /* ─── Иконки ─── */
5932
+ .p-select.p-component :is(.p-select-dropdown .p-select-dropdown-icon, .p-select-clear-icon, .p-select-loading-icon) {
5933
+ font-size: ${dt('select.extend.iconSize')};
5934
+ width: ${dt('select.extend.iconSize')};
5935
+ height: ${dt('select.extend.iconSize')};
5936
+ color: ${dt('select.root.placeholderColor')};
5937
+ }
5938
+ `;
5939
+
5940
+ const messageCss = ({ dt }) => `
5941
+ /* Основной контейнер message */
5942
+ .p-message {
5943
+ width: ${dt('message.extend.width')};
5944
+ overflow: hidden;
5945
+ position: relative;
5946
+ }
5947
+
5948
+ /* Контент message с приоритизацией align-items */
5949
+ .p-message .p-message-content {
5950
+ display: flex;
5951
+ align-items: flex-start;
5952
+ width: stretch;
5953
+ border-radius: ${dt('message.root.borderRadius')};
5954
+ }
5955
+
5956
+ /* Текстовый блок message */
5957
+ .p-message-text {
5958
+ flex: 1;
5959
+ display: flex;
5960
+ flex-direction: column;
5961
+ gap: ${dt('message.extend.extText.gap')};
5962
+ }
5963
+
5964
+ /* Заголовок message */
5965
+ .p-message-summary {
5966
+ font-family: ${dt('fonts.fontFamily.base')};
5967
+ font-weight: ${dt('message.text.fontWeight')};
5968
+ line-height: ${dt('fonts.lineHeight.250')};
5969
+ font-size: ${dt('message.text.fontSize')};
5970
+ }
5971
+
5972
+ /* Детальное описание message */
5973
+ .p-message .p-message-detail {
5974
+ font-family: ${dt('fonts.fontFamily.base')};
5975
+ font-size: ${dt('fonts.fontSize.200')};
5976
+ line-height: ${dt('fonts.lineHeight.250')};
5977
+ font-weight: ${dt('fonts.fontWeight.regular')};
5978
+ }
5979
+
5980
+ /* Кнопка закрытия message */
5981
+ .p-message .p-message-content .p-message-close-button {
5982
+ width: ${dt('message.closeButton.width')};
5983
+ height: ${dt('message.closeButton.height')};
5984
+ margin: 0;
5985
+ padding: 0;
5986
+ right: 0;
5987
+ }
5988
+
5989
+ /* Общие стили border для кнопки закрытия всех типов message */
5990
+ .p-message-info .p-message-close-button,
5991
+ .p-message-success .p-message-close-button,
5992
+ .p-message-warn .p-message-close-button,
5993
+ .p-message-error .p-message-close-button {
5994
+ border: ${dt('message.extend.extCloseButton.width')} solid;
5995
+ }
5996
+
5997
+ /* Общие стили для акцентной линии всех типов message */
5998
+ .p-message-info .p-message-accent-line,
5999
+ .p-message-success .p-message-accent-line,
6000
+ .p-message-warn .p-message-accent-line,
6001
+ .p-message-error .p-message-accent-line {
6002
+ width: ${dt('message.extend.extAccentLine.width')};
6003
+ position: absolute;
6004
+ left: 0;
6005
+ top: 0;
6006
+ bottom: 0;
6007
+ border-radius: ${dt('message.root.borderRadius')} 0 0 ${dt('message.root.borderRadius')};
6008
+ }
6009
+
6010
+ /* Стили для message типа Info */
6011
+ .p-message-info .p-message-icon {
6012
+ color: ${dt('message.extend.extInfo.color')};
6013
+ }
6014
+
6015
+ .p-message-info .p-message-close-button {
6016
+ color: ${dt('message.extend.extInfo.closeButton.color')};
6017
+ border-color: ${dt('message.extend.extInfo.closeButton.borderColor')};
6018
+ }
6019
+
6020
+ .p-message.p-message-info .p-message-close-button.p-button-text:not(:disabled):hover {
6021
+ background: ${dt('message.colorScheme.light.info.closeButton.hoverBackground')};
6022
+ border-color: ${dt('message.extend.extInfo.closeButton.borderColor')};
6023
+ color: ${dt('message.extend.extInfo.closeButton.color')};
6024
+ }
6025
+
6026
+ .p-message-info .p-message-accent-line {
6027
+ background: ${dt('message.extend.extInfo.color')};
6028
+ }
6029
+
6030
+ /* Стили для message типа Success */
6031
+ .p-message-success .p-message-icon {
6032
+ color: ${dt('message.extend.extSuccess.color')};
6033
+ }
6034
+
6035
+ .p-message-success .p-message-close-button {
6036
+ color: ${dt('message.extend.extSuccess.closeButton.color')};
6037
+ border-color: ${dt('message.extend.extSuccess.closeButton.borderColor')};
6038
+ }
6039
+
6040
+ .p-message.p-message-success .p-message-close-button.p-button-text:not(:disabled):hover {
6041
+ background: ${dt('message.colorScheme.light.success.closeButton.hoverBackground')};
6042
+ border-color: ${dt('message.extend.extSuccess.closeButton.borderColor')};
6043
+ color: ${dt('message.extend.extSuccess.closeButton.color')};
6044
+ }
6045
+
6046
+ .p-message-success .p-message-accent-line {
6047
+ background: ${dt('message.extend.extSuccess.color')};
6048
+ }
6049
+
6050
+ /* Стили для message типа Warn */
6051
+ .p-message-warn .p-message-icon {
6052
+ color: ${dt('message.extend.extWarn.color')};
6053
+ }
6054
+
6055
+ .p-message-warn .p-message-close-button {
6056
+ color: ${dt('message.extend.extWarn.closeButton.color')};
6057
+ border-color: ${dt('message.extend.extWarn.closeButton.borderColor')};
6058
+ }
6059
+
6060
+ .p-message.p-message-warn .p-message-close-button.p-button-text:not(:disabled):hover {
6061
+ background: ${dt('message.colorScheme.light.warn.closeButton.hoverBackground')};
6062
+ border-color: ${dt('message.extend.extWarn.closeButton.borderColor')};
6063
+ color: ${dt('message.extend.extWarn.closeButton.color')};
6064
+ }
6065
+
6066
+ .p-message-warn .p-message-accent-line {
6067
+ background: ${dt('message.extend.extWarn.color')};
6068
+ }
6069
+
6070
+ /* Стили для message типа Error */
6071
+ .p-message-error .p-message-icon {
6072
+ color: ${dt('message.extend.extError.color')};
6073
+ }
6074
+
6075
+ .p-message-error .p-message-close-button {
6076
+ color: ${dt('message.extend.extError.closeButton.color')};
6077
+ border-color: ${dt('message.extend.extError.closeButton.borderColor')};
6078
+ }
6079
+
6080
+ .p-message.p-message-error .p-message-close-button.p-button-text:not(:disabled):hover {
6081
+ background: ${dt('message.colorScheme.light.error.closeButton.hoverBackground')};
6082
+ border-color: ${dt('message.extend.extError.closeButton.borderColor')};
6083
+ color: ${dt('message.extend.extError.closeButton.color')};
6084
+ }
6085
+
6086
+ .p-message-error .p-message-accent-line {
6087
+ background: ${dt('message.extend.extError.color')};
6088
+ }
6089
+ `;
6090
+
6091
+ const inputotpCss = ({ dt }) => `
6092
+ /* Стили границы */
6093
+ .p-inputotp.p-component .p-inputtext {
6094
+ border-width: ${dt('inputotp.extend.borderWidth')};
6095
+ padding-inline: 0;
6096
+ }
6097
+
6098
+ /* ─── Disabled ─── */
6099
+ .p-inputotp.p-component .p-inputtext:disabled {
6100
+ background: ${dt('inputtext.root.disabledBackground')};
6101
+ color: ${dt('inputtext.root.disabledColor')};
6102
+ }
6103
+
6104
+ /* ─── Readonly ─── */
6105
+ .p-inputotp.p-component .p-inputtext:enabled:read-only {
6106
+ background: ${dt('inputtext.extend.readonlyBackground')};
6107
+ color: ${dt('inputtext.root.color')};
6108
+ }
6109
+
6110
+ /* ─── Focus ─── */
6111
+ .p-inputotp.p-component .p-inputtext:enabled:focus {
6112
+ box-shadow: 0 0 0 ${dt('inputtext.focusRing.width')} ${dt('inputtext.focusRing.color')};
6113
+ }
6114
+
6115
+ /* ─── Invalid + Focus ─── */
6116
+ .p-inputotp.p-component .p-inputtext.p-invalid:focus {
6117
+ border-color: ${dt('inputtext.root.invalidBorderColor')};
6118
+ box-shadow: 0 0 0 ${dt('inputtext.focusRing.width')} ${dt('focusRing.extend.invalid')};
6119
+ }
6120
+
6121
+ /* ─── Small ─── */
6122
+ .p-inputotp.p-component .p-inputtext.p-inputtext-sm {
6123
+ padding-block: ${dt('inputtext.root.sm.paddingY')};
6124
+ }
6125
+
6126
+ /* ─── Base ─── */
6127
+ .p-inputotp.p-component .p-inputtext:not(.p-inputtext-sm):not(.p-inputtext-lg):not(.p-inputtext-xlg) {
6128
+ padding-block: ${dt('inputtext.root.paddingY')};
6129
+ }
6130
+
6131
+ /* ─── Large ─── */
6132
+ .p-inputotp.p-component .p-inputtext.p-inputtext-lg {
6133
+ padding-block: ${dt('inputtext.root.lg.paddingY')};
6134
+ }
6135
+
6136
+ /* ─── Extra Large ─── */
6137
+ .p-inputotp.p-component.p-inputotp-xlg .p-inputtext {
6138
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
6139
+ padding-block: ${dt('inputtext.extend.extXlg.paddingY')};
6140
+ }
6141
+ `;
6142
+
6143
+ const carouselCss = ({ dt }) => `
6144
+ .p-carousel .p-carousel-prev-button.p-button-secondary,
6145
+ .p-carousel .p-carousel-next-button.p-button-secondary {
6146
+ background: ${dt('surface.200')};
6147
+ color: ${dt('text.color')};
6148
+ border-color: transparent;
6149
+ }
6150
+
6151
+ .p-carousel .p-carousel-prev-button.p-button-secondary:not(:disabled):hover,
6152
+ .p-carousel .p-carousel-next-button.p-button-secondary:not(:disabled):hover {
6153
+ background: ${dt('surface.300')};
6154
+ color: ${dt('text.color')};
6155
+ }
6156
+
6157
+ .p-carousel .p-carousel-prev-button.p-button-secondary:not(:disabled):active,
6158
+ .p-carousel .p-carousel-next-button.p-button-secondary:not(:disabled):active {
6159
+ background: ${dt('surface.400')};
6160
+ color: ${dt('text.color')};
6161
+ }
6162
+
6163
+ .p-carousel .p-button-icon-only.p-button-rounded {
6164
+ border-radius: ${dt('button.roundedBorderRadius')};
6165
+ }
6166
+
6167
+ .p-carousel .p-carousel-item {
6168
+ padding-inline: calc(${dt('carousel.content.gap')} / 2);
6169
+ }
6170
+
6171
+ /* Убираем visibility:hidden для неактивных слайдов.
6172
+ Отсечение за пределами viewport обеспечивается через overflow:hidden на контейнере карточки. */
6173
+ .p-carousel .p-items-hidden .p-carousel-item {
6174
+ visibility: visible;
6175
+ }
6176
+ `;
6177
+
6178
+ const galleriaCss = ({ dt }) => `
6179
+ /* ─── Подпись к изображению ─── */
6180
+ .p-galleria .p-galleria-caption {
6181
+ background: ${dt('galleria.caption.background')};
6182
+ padding: ${dt('spacing.2x')};
6183
+ }
6184
+
6185
+ /* ─── Кнопки навигации в полноэкранном режиме ─── */
6186
+ .p-galleria-mask.p-overlay-mask .p-galleria-nav-button {
6187
+ top: 0%;
6188
+ }
6189
+
6190
+ .p-galleria-mask.p-overlay-mask .p-galleria-items .p-galleria-nav-button {
6191
+ top: 50%;
6192
+ }
6193
+ `;
6194
+
6195
+ const confirmDialogCss = ({ dt }) => `
6196
+ /* Иконка в заголовке */
6197
+ .p-confirmdialog .p-dialog-title {
6198
+ display: flex;
6199
+ align-items: center;
6200
+ gap: ${dt('dialog.header.gap')};
6201
+ }
6202
+
6203
+ .p-confirmdialog .p-dialog-title i {
6204
+ width: ${dt('confirmdialog.icon.size')};
6205
+ height: ${dt('confirmdialog.icon.size')};
6206
+ font-size: ${dt('confirmdialog.icon.size')};
6207
+ flex-shrink: 0;
6208
+ }
6209
+
6210
+ /* Размеры */
6211
+ .p-confirmdialog.p-dialog {
6212
+ width: ${dt('overlay.width')};
6213
+ }
6214
+
6215
+ .p-confirmdialog-sm.p-dialog {
6216
+ width: ${dt('sizing.80x')};
6217
+ }
6218
+
6219
+ .p-confirmdialog-lg.p-dialog {
6220
+ width: ${dt('sizing.120x')};
6221
+ }
6222
+
6223
+ .p-confirmdialog-xlg.p-dialog {
6224
+ width: ${dt('sizing.128x')};
6225
+ }
6226
+
6227
+ /* Цвета иконок по severity */
6228
+ .p-confirmdialog[data-pc-severity="success"] .p-dialog-title i,
6229
+ .p-confirmdialog.p-confirm-dialog-accept .p-dialog-title i {
6230
+ color: ${dt('confirmdialog.extend.extIcon.success')};
6231
+ }
6232
+
6233
+ .p-confirmdialog[data-pc-severity="info"] .p-dialog-title i,
6234
+ .p-confirmdialog.p-confirm-dialog-info .p-dialog-title i {
6235
+ color: ${dt('confirmdialog.extend.extIcon.info')};
6236
+ }
6237
+
6238
+ .p-confirmdialog[data-pc-severity="warn"] .p-dialog-title i,
6239
+ .p-confirmdialog.p-confirm-dialog-warn .p-dialog-title i {
6240
+ color: ${dt('confirmdialog.extend.extIcon.warn')};
6241
+ }
6242
+
6243
+ .p-confirmdialog[data-pc-severity="help"] .p-dialog-title i,
6244
+ .p-confirmdialog.p-confirm-dialog-help .p-dialog-title i {
6245
+ color: ${dt('confirmdialog.extend.extIcon.help')};
6246
+ }
6247
+
6248
+ .p-confirmdialog[data-pc-severity="danger"] .p-dialog-title i,
6249
+ .p-confirmdialog[data-pc-severity="error"] .p-dialog-title i,
6250
+ .p-confirmdialog.p-confirm-dialog-error .p-dialog-title i {
6251
+ color: ${dt('confirmdialog.extend.extIcon.danger')};
6252
+ }
6253
+ `;
6254
+
6255
+ const drawerCss = ({ dt }) => `
6256
+
6257
+ /* Скругление углов */
6258
+ .p-drawer.p-component {
6259
+ border-radius: ${dt('drawer.extend.borderRadius')};
6260
+ }
6261
+
6262
+ /* Нижняя граница и внутренние отступы заголовка */
6263
+ .p-drawer.p-component .p-drawer-header {
6264
+ border-bottom: 1px solid ${dt('drawer.extend.extHeader.borderColor')};
6265
+ padding: ${dt('overlay.modal.padding.300')} ${dt('overlay.modal.padding.300')} ${dt('overlay.modal.padding.100')} ${dt('overlay.modal.padding.300')};
6266
+ }
6267
+
6268
+ /* Типографика */
6269
+ .p-drawer.p-component .p-drawer-title {
6270
+ font-weight: ${dt('drawer.title.fontWeight')};
6271
+ font-size: ${dt('drawer.title.fontSize')};
6272
+ }
6273
+
6274
+ /* Кнопки действий в заголовке - расстояние между элементами */
6275
+ .p-drawer.p-component .p-drawer-header-actions {
6276
+ gap: ${dt('drawer.extend.extHeader.gap')};
6277
+ }
6278
+
6279
+ /* Внутренние отступы контента и футера */
6280
+ .p-drawer.p-component .p-drawer-content {
6281
+ padding: ${dt('overlay.modal.padding.300')};
6282
+ }
6283
+
6284
+ .p-drawer.p-component .p-drawer-footer {
6285
+ padding: 0 ${dt('overlay.modal.padding.300')} ${dt('overlay.modal.padding.300')} ${dt('overlay.modal.padding.300')};
6286
+ }
6287
+
6288
+ /* Боковые drawer (слева/справа) - базовые размеры и отступы от краев экрана */
6289
+ .p-drawer.p-component.p-drawer-left,
6290
+ .p-drawer.p-component.p-drawer-right {
6291
+ margin: ${dt('drawer.extend.padding')};
6292
+ width: ${dt('drawer.root.width')};
6293
+ height: calc(100% - ${dt('drawer.extend.padding')} * 2);
6294
+ }
6295
+
6296
+ .p-drawer.p-component.p-drawer-left.p-drawer-sm,
6297
+ .p-drawer.p-component.p-drawer-right.p-drawer-sm {
6298
+ width: ${dt('drawer.sm.width')};
6299
+ }
6300
+
6301
+ .p-drawer.p-component.p-drawer-left.p-drawer-lg,
6302
+ .p-drawer.p-component.p-drawer-right.p-drawer-lg {
6303
+ width: ${dt('drawer.lg.width')};
6304
+ }
6305
+
6306
+ .p-drawer.p-component.p-drawer-left.p-drawer-xlg,
6307
+ .p-drawer.p-component.p-drawer-right.p-drawer-xlg {
6308
+ width: ${dt('drawer.xlg.width')};
6309
+ }
6310
+
6311
+ /* Горизонтальные drawer (сверху/снизу) - базовые размеры и отступы от краев экрана */
6312
+ .p-drawer.p-component.p-drawer-top,
6313
+ .p-drawer.p-component.p-drawer-bottom {
6314
+ margin: ${dt('drawer.extend.padding')};
6315
+ width: calc(100% - ${dt('drawer.extend.padding')} * 2);
6316
+ }
6317
+
6318
+ /* Полноэкранный режим — drawer на весь экран, без отступов и без учёта размера */
6319
+ .p-drawer.p-component.p-drawer-full,
6320
+ .p-drawer.p-component.p-drawer-full.p-drawer-sm,
6321
+ .p-drawer.p-component.p-drawer-full.p-drawer-lg,
6322
+ .p-drawer.p-component.p-drawer-full.p-drawer-xlg {
6323
+ margin: 0;
6324
+ width: 100vw;
6325
+ height: 100vh;
6326
+ }
6327
+
6328
+ `;
6329
+
6330
+ /**
6331
+ * Кастомная CSS-стилизация для компонента p-datepicker.
6332
+ * Подключается в map-tokens.ts: `import { datePickerCss } from './components/date-picker'`
6333
+ */
6334
+ const datePickerCss = ({ dt }) => `
6335
+
6336
+ .p-datepicker.p-datepicker {
6337
+ display: inline-flex;
6338
+ position: relative;
6339
+ max-width: fit-content;
6340
+ }
6341
+
6342
+ .p-datepicker-panel.p-datepicker-panel {
6343
+ box-shadow: ${dt('datepicker.panel.shadow')};
6344
+ overflow: hidden;
6345
+ }
6346
+
6347
+ /* Скрываем нативный заголовок с кнопками выбора месяца/года;
6348
+ кастомный заголовок (pTemplate="header") рендерится вне .p-datepicker-calendar */
6349
+ .p-datepicker-calendar .p-datepicker-header {
6350
+ display: none;
6351
+ }
6352
+
6353
+ .p-datepicker-custom-header.p-datepicker-header {
6354
+ gap: ${dt('datepicker.title.gap')};
6355
+ padding: ${dt('datepicker.header.padding')};
6356
+ display: flex;
6357
+ align-items: center;
6358
+ justify-content: space-between;
6359
+ }
6360
+
6361
+ .p-datepicker-title {
6362
+ display: flex;
6363
+ align-items: center;
6364
+ gap: ${dt('datepicker.title.gap')};
6365
+ margin: 0 auto;
6366
+ }
6367
+
6368
+ .p-datepicker-year-select {
6369
+ min-width: ${dt('datepicker.extend.extSelectYear.minWidth')};
6370
+ }
6371
+
6372
+ .p-datepicker-custom-header .p-button.p-button {
6373
+ width: ${dt('datepicker.dropdown.width')};
6374
+ height: ${dt('datepicker.dropdown.width')};
6375
+ padding: 0;
6376
+ display: flex;
6377
+ align-items: center;
6378
+ justify-content: center;
6379
+ }
6380
+
6381
+ .p-datepicker-today.p-datepicker-today > .p-datepicker-day:not(.p-datepicker-day-selected) {
6382
+ border: ${dt('form.borderWidth')} solid ${dt('datepicker.extend.extToday.borderColor')};
6383
+ }
6384
+
6385
+ .p-datepicker-today.p-datepicker-today:hover > .p-datepicker-day:not(.p-datepicker-day-selected),
6386
+ .p-datepicker-day-preview.p-datepicker-day-preview:not(.p-datepicker-day-selected) {
6387
+ background: ${dt('datepicker.extend.extToday.hoverBackground')};
6388
+ }
6389
+
6390
+ .p-datepicker-day-preview.p-datepicker-day-preview:not(.p-datepicker-day-selected) {
6391
+ color: ${dt('datepicker.date.color')};
6392
+ }
6393
+
6394
+ .p-datepicker-day-view.p-datepicker-day-view {
6395
+ width: stretch;
6396
+ border-collapse: separate;
6397
+ table-layout: auto;
6398
+ margin: ${dt('datepicker.dayView.margin')};
6399
+ }
6400
+
6401
+ /* ─── Weekday header text ─── */
6402
+ .p-datepicker-weekday {
6403
+ font-family: ${dt('fonts.fontFamily.base')};
6404
+ font-size: ${dt('fonts.fontSize.300')};
6405
+ font-weight: ${dt('fonts.fontWeight.demibold')};
6406
+ }
6407
+
6408
+ /* ─── Day cell text ─── */
6409
+ .p-datepicker-day {
6410
+ font-family: ${dt('fonts.fontFamily.base')};
6411
+ font-size: ${dt('fonts.fontSize.300')};
6412
+ font-weight: ${dt('fonts.fontWeight.regular')};
6413
+ }
6414
+
6415
+ /* ─── Скрываем нативный time picker (заменён кастомным в footer) ─── */
6416
+ .p-datepicker-time-picker.p-datepicker-time-picker:not(.p-datepicker-time-picker-custom) {
6417
+ display: none;
6418
+ }
6419
+
6420
+ .p-datepicker-buttonbar.p-datepicker-buttonbar .p-button.p-button {
6421
+ background: transparent;
6422
+ color: ${dt('button.colorScheme.light.text.primary.color')};
6423
+ border: 0 none;
6424
+ font-family: ${dt('fonts.fontFamily.heading')};
6425
+ font-weight: ${dt('button.root.label.fontWeight')};
6426
+ transition: background-color ${dt('button.root.transitionDuration')};
6427
+ }
6428
+
6429
+ .p-datepicker-buttonbar.p-datepicker-buttonbar .p-button.p-button:not(:disabled):hover {
6430
+ background: ${dt('button.colorScheme.light.text.primary.hoverBackground')};
6431
+ color: ${dt('button.colorScheme.light.text.primary.color')};
6432
+ }
6433
+
6434
+ .p-datepicker-buttonbar.p-datepicker-buttonbar .p-button.p-button:not(:disabled):active {
6435
+ background: ${dt('button.colorScheme.light.text.primary.activeBackground')};
6436
+ color: ${dt('button.colorScheme.light.text.primary.color')};
6437
+ }
6438
+
6439
+ .p-datepicker-clear-icon {
6440
+ display: flex;
6441
+ align-items: center;
6442
+ inset-inline-end: var(--p-form-field-padding-x);
6443
+ color: ${dt('datepicker.inputIcon.color')};
6444
+ }
6445
+
6446
+ .p-datepicker:has(.p-datepicker-input-icon-container) .p-datepicker-clear-icon {
6447
+ inset-inline-end: calc((var(--p-form-field-padding-x) * 1.5) + var(--p-icon-size));
6448
+ }
6449
+
6450
+ .p-datepicker:has(.p-inputtext-lg) .p-datepicker-dropdown .p-icon,
6451
+ .p-datepicker:has(.p-inputtext-lg) .p-datepicker-input-icon,
6452
+ .p-datepicker:has(.p-inputtext-lg) .p-datepicker-clear-icon .ti-x {
6453
+ font-size: var(--p-form-field-lg-font-size);
6454
+ width: var(--p-form-field-lg-font-size);
6455
+ height: var(--p-form-field-lg-font-size);
6456
+ }
6457
+
6458
+ /* ─── Clear icon: скрываем при пустом значении ─── */
6459
+ .p-datepicker.p-datepicker:not(.p-inputwrapper-filled) .p-datepicker-clear-icon,
6460
+ .p-datepicker.p-datepicker:has(.p-datepicker-input:placeholder-shown) .p-datepicker-clear-icon {
6461
+ display: none;
6462
+ }
6463
+
6464
+ /* ─── Custom time picker (InputNumber без кнопок) ─── */
6465
+ .p-datepicker-time-picker-custom.p-datepicker-time-picker-custom {
6466
+ display: flex;
6467
+ align-items: center;
6468
+ justify-content: center;
6469
+ gap: ${dt('datepicker.timePicker.gap')};
6470
+ padding: ${dt('datepicker.timePicker.padding')};
6471
+ border-top: ${dt('form.borderWidth')} solid ${dt('datepicker.panel.borderColor')};
6472
+ }
6473
+
6474
+ .p-datepicker-time-picker-custom .p-datepicker-time-field {
6475
+ display: flex;
6476
+ flex-direction: column;
6477
+ align-items: center;
6478
+ gap: ${dt('datepicker.timePicker.buttonGap')};
6479
+ width: auto;
6480
+ }
6481
+
6482
+ .p-datepicker-time-picker-custom .p-datepicker-time-label {
6483
+ font-family: ${dt('fonts.fontFamily.heading')};
6484
+ font-size: ${dt('fonts.fontSize.100')};
6485
+ font-weight: ${dt('fonts.fontWeight.regular')};
6486
+ line-height: 1;
6487
+ color: ${dt('datepicker.extend.extTimePicker.color')};
6488
+ }
6489
+
6490
+ .p-datepicker-time-picker-custom .p-inputnumber,
6491
+ .p-datepicker-time-picker-custom .p-datepicker-time-input.p-datepicker-time-input {
6492
+ width: ${dt('datepicker.extend.extTimePicker.minWidth')};
6493
+ text-align: center;
6494
+ }
6495
+
6496
+ .p-datepicker-time-picker-custom .p-datepicker-separator {
6497
+ font-family: ${dt('fonts.fontFamily.heading')};
6498
+ font-size: ${dt('fonts.fontSize.100')};
6499
+ font-weight: ${dt('fonts.fontWeight.regular')};
6500
+ line-height: 1;
6501
+ color: ${dt('datepicker.extend.extTimePicker.color')};
6502
+ margin-top: calc(${dt('fonts.fontSize.100')} + ${dt('datepicker.timePicker.buttonGap')});
6503
+ }
6504
+
6505
+ :is(.p-datepicker-month-select, .p-datepicker-year-select) .p-select-dropdown {
6506
+ color: ${dt('datepicker.inputIcon.color')};
6507
+ }
6508
+
6509
+ :is(.p-datepicker-month-select, .p-datepicker-year-select) .p-select-label {
6510
+ width: ${dt('sizing.24x')};
6511
+ }
6512
+
6513
+ `;
6514
+
6515
+ /**
6516
+ * Кастомная CSS-стилизация для компонента p-accordion.
6517
+ * Подключается в map-tokens.ts: `import { accordionCss } from './tokens/components/accordion'`
6518
+ */
6519
+ const accordionCss = ({ dt }) => `
6520
+ /* ─── Шрифт заголовка ─── */
6521
+ .p-accordionheader {
6522
+ font-family: ${dt('fonts.fontFamily.base')};
6523
+ font-size: ${dt('fonts.fontSize.300')};
6524
+ }
6525
+
6526
+ /* ─── Размер иконки toggle ─── */
6527
+ .p-accordionheader-toggle-icon,
6528
+ .p-accordionpanel:not(.p-disabled).p-accordionpanel-active > .p-accordionheader .p-accordionheader-toggle-icon {
6529
+ width: ${dt('accordion.extend.extHeader.iconSize')};
6530
+ height: ${dt('accordion.extend.extHeader.iconSize')};
6531
+ }
6532
+
6533
+ /* ─── Лэйаут заголовка: иконка + текст ─── */
6534
+ .p-accordionheader > div {
6535
+ display: flex;
6536
+ align-items: center;
6537
+ gap: ${dt('accordion.extend.extHeader.gap')};
6538
+ }
6539
+
6540
+ /* ─── Размер иконки в заголовке ─── */
6541
+ .p-accordionheader > div > i {
6542
+ font-size: ${dt('accordion.extend.extHeader.iconSize')};
6543
+ }
6544
+ `;
6545
+
6546
+ const badgeCss = ({ dt }) => `
6547
+ /* ─── Badge extend: публикуем кастомные переменные в :root ─── */
6548
+ :root {
6549
+ --p-badge-extend-dot-success-background: ${dt('badge.extend.extDot.success.background')};
6550
+ --p-badge-extend-dot-info-background: ${dt('badge.extend.extDot.info.background')};
6551
+ --p-badge-extend-dot-warn-background: ${dt('badge.extend.extDot.warn.background')};
6552
+ --p-badge-extend-dot-danger-background: ${dt('badge.extend.extDot.danger.background')};
6553
+ --p-badge-extend-dot-lg-size: ${dt('badge.extend.extDot.lg.size')};
6554
+ --p-badge-extend-dot-xlg-size: ${dt('badge.extend.extDot.xlg.size')};
6555
+ --p-badge-extend-padding: ${dt('badge.extend.ext.padding')};
6556
+ }
6557
+
6558
+ /* ─── Dot-вариант: бейдж без значения ─── */
6559
+ .p-badge.p-badge-dot {
6560
+ padding: var(--p-badge-extend-padding);
6561
+ }
6562
+
6563
+ .p-badge.p-badge-dot.p-badge-success { background: var(--p-badge-extend-dot-success-background); }
6564
+ .p-badge.p-badge-dot.p-badge-info { background: var(--p-badge-extend-dot-info-background); }
6565
+ .p-badge.p-badge-dot.p-badge-warn { background: var(--p-badge-extend-dot-warn-background); }
6566
+ .p-badge.p-badge-dot.p-badge-danger { background: var(--p-badge-extend-dot-danger-background); }
6567
+
6568
+ .p-badge.p-badge-dot.p-badge-lg { min-width: unset; width: var(--p-badge-extend-dot-lg-size); height: var(--p-badge-extend-dot-lg-size); }
6569
+ .p-badge.p-badge-dot.p-badge-xl { min-width: unset; width: var(--p-badge-extend-dot-xlg-size); height: var(--p-badge-extend-dot-xlg-size); }
6570
+ `;
6571
+
6572
+ /**
6573
+ * Кастомная CSS-стилизация для компонента p-chip.
6574
+ * Публикует extend-токены как CSS-переменные и применяет глобальные стили.
6575
+ * Подключается в map-tokens.ts: `import { chipCss } from './components/chip'`
6576
+ */
6577
+ const chipCss = ({ dt }) => `
6578
+ /* ─── Chip extend: публикуем кастомные переменные в :root ─── */
6579
+ :root {
6580
+ --p-chip-extend-border-color: ${dt('chip.extend.borderColor')};
6581
+ --p-chip-extend-border-width: ${dt('chip.extend.borderWidth')};
6582
+ }
6583
+
6584
+ /* ─── Граница чипа ─── */
6585
+ .p-chip {
6586
+ border: var(--p-chip-extend-border-width) solid var(--p-chip-extend-border-color);
6587
+ }
6588
+
6589
+ /* ─── Типографика лейбла ─── */
6590
+ .p-chip-label {
6591
+ font-family: ${dt('fonts.fontFamily.base')};
6592
+ font-size: ${dt('fonts.fontSize.300')};
6593
+ font-weight: ${dt('fonts.fontWeight.regular')};
6594
+ line-height: ${dt('fonts.lineHeight.400')};
6595
+ }
6596
+
6597
+ /* ─── Сброс уменьшенного padding PrimeNG при наличии кнопки удаления ─── */
6598
+ .p-chip:has(.p-chip-remove-icon) {
6599
+ padding-inline-end: ${dt('chip.root.paddingX')};
6600
+ }
6601
+
6602
+ /* ─── Focus ring иконки удаления ─── */
6603
+ .p-chip-remove-icon:focus-visible {
6604
+ outline: ${dt('chip.removeIcon.focusRing.width')} solid ${dt('focusRing.extend.success')};
6605
+ }
6606
+
6607
+ /* ─── Disabled состояние ─── */
6608
+ .p-chip.p-disabled {
6609
+ opacity: ${dt('opacity.500')};
6610
+ pointer-events: none;
6611
+ }
6612
+
6613
+ .p-chip.p-disabled .p-chip-remove-icon {
6614
+ pointer-events: none;
6615
+ }
6616
+ `;
6617
+
6618
+ const dataTableCss = ({ dt }) => `
6619
+ .p-datatable .p-datatable-thead > tr > th {
6620
+ font-weight: ${dt('datatable.columnTitle.fontWeight')};
6621
+ }
6622
+
6623
+ .p-datatable .p-datatable-tfoot > tr > td {
6624
+ font-weight: ${dt('datatable.columnFooter.fontWeight')};
6625
+ }
6626
+
6627
+ .p-datatable .p-datatable-sort-icon {
6628
+ width: ${dt('datatable.sortIcon.size')};
6629
+ height: ${dt('datatable.sortIcon.size')};
6630
+ }
6631
+
6632
+ .p-datatable .p-datatable-loading-icon {
6633
+ width: ${dt('datatable.loadingIcon.size')};
6634
+ height: ${dt('datatable.loadingIcon.size')};
6635
+ }
6636
+
6637
+ .p-datatable .p-datatable-row-toggle-button {
6638
+ width: ${dt('datatable.rowToggleButton.size')};
6639
+ height: ${dt('datatable.rowToggleButton.size')};
6640
+ }
6641
+
6642
+ .p-datatable .p-datatable-sortable-column:not(.p-datatable-column-sorted):hover {
6643
+ color: ${dt('text.hoverColor')};
6644
+ }
6645
+ `;
6646
+
6647
+ const dialogCss = ({ dt }) => `
6648
+ .p-dialog .p-dialog-title {
6649
+ font-family: ${dt('fonts.fontFamily.heading')};
6650
+ font-size: ${dt('dialog.title.fontSize')};
6651
+ font-weight: ${dt('dialog.title.fontWeight')};
6652
+ line-height: ${dt('fonts.lineHeight.550')};
6653
+ }
6654
+
6655
+ .p-dialog .p-dialog-content {
6656
+ font-family: ${dt('fonts.fontFamily.base')};
6657
+ font-size: ${dt('fonts.fontSize.300')};
6658
+ font-weight: ${dt('fonts.fontWeight.regular')};
6659
+ line-height: ${dt('fonts.lineHeight.500')};
6660
+ }
6661
+
6662
+ .p-dialog .p-dialog-header {
6663
+ border-bottom: ${dt('borderWidth.100')} solid ${dt('dialog.root.borderColor')};
6664
+ display: flex;
6665
+ align-items: center;
6666
+ justify-content: space-between;
6667
+ }
6668
+
6669
+ .p-dialog .p-dialog-header-actions {
6670
+ display: flex;
6671
+ align-items: center;
6672
+ margin-left: auto;
6673
+ }
6674
+
6675
+ .p-dialog .p-dialog-header-actions .p-dialog-close-button.p-button-text:focus-visible,
6676
+ .p-dialog .p-dialog-header-actions .p-dialog-close-button.p-button:focus-visible,
6677
+ .p-dialog .p-button-text:focus-visible,
6678
+ .p-dialog .p-button:focus-visible {
6679
+ outline: 0 none;
6680
+ outline-color: transparent;
6681
+ box-shadow: none;
6682
+ }
6683
+
6684
+ .p-dialog {
6685
+ width: ${dt('overlay.width')};
6686
+ }
6687
+
6688
+ .p-dialog.p-component.p-dialog-sm {
6689
+ width: ${dt('sizing.80x')};
6690
+ }
6691
+
6692
+ .p-dialog.p-component.p-dialog-lg {
6693
+ width: ${dt('sizing.120x')};
6694
+ }
6695
+
6696
+ .p-dialog.p-component.p-dialog-xlg {
6697
+ width: ${dt('sizing.128x')};
6698
+ }
6699
+ `;
6700
+
6701
+ /**
6702
+ * Кастомная CSS-стилизация для компонента p-divider.
6703
+ * Публикует extend-токены как CSS-переменные и применяет глобальные стили.
6704
+ * Подключается в map-tokens.ts: `import { dividerCss } from './components/divider'`
6705
+ */
6706
+ const dividerCss = ({ dt }) => `
6707
+ /* ─── Divider extend: публикуем кастомные переменные в :root ─── */
6708
+ :root {
6709
+ --p-divider-extend-content-gap: ${dt('divider.extend.content.gap')};
6710
+ --p-divider-extend-icon-size: ${dt('divider.extend.iconSize')};
6711
+ }
6712
+
6713
+ /* ─── Контент разделителя ─── */
6714
+ .p-divider-content {
6715
+ display: flex;
6716
+ align-items: center;
6717
+ gap: var(--p-divider-extend-content-gap);
6718
+ font-family: ${dt('fonts.fontFamily.heading')};
6719
+ font-size: ${dt('fonts.fontSize.200')};
6720
+ font-weight: ${dt('fonts.fontWeight.demibold')};
6721
+ }
6722
+
6723
+ .p-divider-content .ti {
6724
+ font-size: var(--p-divider-extend-icon-size);
6725
+ }
6726
+
6727
+ /* ─── Вертикальное выравнивание ─── */
6728
+ .p-divider.p-divider-vertical.p-divider-top .p-divider-content {
6729
+ align-items: flex-start;
6730
+ }
6731
+ .p-divider.p-divider-vertical.p-divider-bottom .p-divider-content {
6732
+ align-items: flex-end;
6733
+ }
6734
+ `;
6735
+
6736
+ const inputnumberCss = ({ dt }) => `
6737
+
6738
+ /* ─── Базовые стили ─── */
6739
+ .p-inputnumber .p-inputnumber-input {
6740
+ font-family: ${dt('fonts.fontFamily.base')};
6741
+ }
6742
+
6743
+ .p-inputnumber .p-inputnumber-input::placeholder {
6744
+ font-family: ${dt('fonts.fontFamily.base')};
6745
+ }
6746
+
6747
+ .p-floatlabel:has(.p-inputnumber) label {
6748
+ font-family: ${dt('fonts.fontFamily.base')};
6749
+ }
6750
+
6751
+ /* ─── Кнопки увеличения/уменьшения ─── */
6752
+ .p-inputnumber-button {
6753
+ border-width: ${dt('inputnumber.extend.borderWidth')};
6754
+ }
6755
+
6756
+ .p-inputnumber-horizontal .p-inputnumber-button {
6757
+ min-height: ${dt('inputnumber.extend.extButton.height')};
6758
+ border: ${dt('inputnumber.extend.borderWidth')} solid ${dt('inputnumber.button.borderColor')};
6759
+ }
6760
+
6761
+ .p-inputnumber-horizontal .p-inputnumber-decrement-button {
6762
+ border-right: none;
6763
+ }
6764
+
6765
+ /* ─── Focus ─── */
6766
+ .p-inputnumber .p-inputnumber-input:enabled:focus {
6767
+ box-shadow: 0 0 0 ${dt('inputtext.focusRing.width')} ${dt('inputtext.focusRing.color')};
6768
+ }
6769
+
6770
+ /* ─── Invalid + Focus ─── */
6771
+ .p-inputnumber.p-invalid .p-inputnumber-input:focus {
6772
+ border-color: ${dt('inputtext.root.invalidBorderColor')};
6773
+ box-shadow: 0 0 0 1px ${dt('inputtext.root.invalidBorderColor')};
6774
+ }
6775
+
6776
+ /* ─── Disabled состояние ─── */
6777
+ .p-inputnumber-horizontal:has(.p-inputnumber-input:disabled) .p-inputnumber-button {
6778
+ background: ${dt('inputtext.root.disabledBackground')};
6779
+ color: ${dt('inputtext.root.disabledColor')};
6780
+ }
6781
+
6782
+ /* ─── FloatLabel: кнопки на полную высоту поля ─── */
6783
+ .p-floatlabel:has(.p-inputnumber-horizontal) .p-inputnumber-button {
6784
+ align-self: stretch;
6785
+ }
6786
+
6787
+ /* ─── Extra Large ─── */
6788
+ .p-inputnumber.p-inputnumber-xlg .p-inputnumber-input {
6789
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
6790
+ padding: ${dt('inputtext.extend.extXlg.paddingY')} ${dt('inputtext.extend.extXlg.paddingX')};
6791
+ }
6792
+ `;
6793
+
6794
+ const listboxCss = ({ dt }) => `
6795
+ /* ─── Listbox extend: публикуем кастомные переменные в :root ─── */
6796
+ :root {
6797
+ --p-listbox-extend-ext-option-gap: ${dt('listbox.extend.extOption.gap')};
6798
+ --p-listbox-extend-ext-option-label-gap: ${dt('listbox.extend.extOption.label.gap')};
6799
+ --p-listbox-extend-ext-option-caption-color: ${dt('listbox.extend.extOption.caption.color')};
6800
+ --p-listbox-extend-ext-option-caption-striped-color: ${dt('listbox.extend.extOption.caption.stripedColor')};
6801
+ }
6802
+
6803
+ /* ─── Расположение элемента списка ─── */
6804
+ .p-listbox-option {
6805
+ display: flex;
6806
+ align-items: center;
6807
+ gap: var(--p-listbox-extend-ext-option-gap);
6808
+ }
6809
+
6810
+ /* Многострочный контент (иконка + label-group): выравнивание по верху */
6811
+ .p-listbox-option:has(.p-listbox-option-label-group) {
6812
+ align-items: flex-start;
6813
+ }
6814
+
6815
+ .p-listbox-option:has(.p-listbox-option-check-icon) {
6816
+ gap: unset;
6817
+ }
6818
+
6819
+ /* ─── Группа: текст + подпись ─── */
6820
+ .p-listbox-option-label-group {
6821
+ display: flex;
6822
+ flex-direction: column;
6823
+ gap: var(--p-listbox-extend-ext-option-label-gap);
6824
+ }
6825
+
6826
+ /* ─── Подпись элемента списка ─── */
6827
+ .p-listbox-option-caption {
6828
+ color: var(--p-listbox-extend-ext-option-caption-color);
6829
+ font-size: ${dt('fonts.fontSize.200')};
6830
+ font-family: ${dt('fonts.fontFamily.heading')};
6831
+ }
6832
+
6833
+ /* ─── Галочка выбора ─── */
6834
+ .p-listbox-check-icon {
6835
+ margin-inline-start: ${dt('listbox.checkmark.gutterStart')};
6836
+ margin-inline-end: ${dt('listbox.checkmark.gutterEnd')};
6837
+ }
6838
+
6839
+ .p-listbox .p-listbox-list .p-listbox-option.p-listbox-option-selected .p-listbox-option-check-icon {
6840
+ color: ${dt('listbox.option.selectedColor')};
6841
+ }
6842
+ `;
6843
+
6844
+ const menuCss = ({ dt }) => `
6845
+ .p-menu.p-component {
6846
+ padding: ${dt('menu.extend.paddingY')} ${dt('menu.extend.paddingX')};
6847
+ }
6848
+
6849
+ .p-menu .p-menu-item-content .p-menu-item-link .p-menu-item-label {
6850
+ font-family: ${dt('fonts.fontFamily.base')};
6851
+ font-size: ${dt('fonts.fontSize.300')};
6852
+ font-weight: ${dt('fonts.fontWeight.regular')};
6853
+ line-height: ${dt('fonts.lineHeight.400')};
6854
+ }
6855
+
6856
+ .p-menu .p-menu-item-content .menu-item-label {
6857
+ display: flex;
6858
+ flex-direction: column;
6859
+ gap: ${dt('menu.extend.extItem.caption.gap')};
6860
+ }
6861
+
6862
+ .p-menu .p-menu-item-content .menu-item-caption {
6863
+ font-family: ${dt('fonts.fontFamily.base')};
6864
+ font-size: ${dt('fonts.fontSize.200')};
6865
+ font-weight: ${dt('fonts.fontWeight.regular')};
6866
+ color: ${dt('menu.colorScheme.light.extend.extItem.caption.color')};
6867
+ }
6868
+
6869
+ .p-menu .p-menu-item:not(.p-disabled) .p-menu-item-content:hover,
6870
+ .p-menu .p-menu-item:not(.p-disabled) .p-menu-item-content:hover .p-menu-item-link,
6871
+ .p-menu .p-menu-item:not(.p-disabled) .p-menu-item-content:hover .p-menu-item-label,
6872
+ .p-menu .p-menu-item:not(.p-disabled) .p-menu-item-content:hover .p-menu-item-icon {
6873
+ background: ${dt('menu.colorScheme.light.item.focusBackground')};
6874
+ color: ${dt('menu.colorScheme.light.item.focusColor')};
6875
+ }
6876
+
6877
+ .p-menu .p-menu-item.p-menuitem-checked > .p-menu-item-content,
6878
+ .p-menu .p-menu-item.p-focus > .p-menu-item-content {
6879
+ background: ${dt('menu.extend.extItem.activeBackground')};
6880
+ color: ${dt('menu.extend.extItem.activeColor')};
6881
+ }
6882
+
6883
+ .p-menu .p-menu-item.p-menuitem-checked > .p-menu-item-content .p-menu-item-link,
6884
+ .p-menu .p-menu-item.p-menuitem-checked > .p-menu-item-content .p-menu-item-label,
6885
+ .p-menu .p-menu-item.p-focus > .p-menu-item-content .p-menu-item-link,
6886
+ .p-menu .p-menu-item.p-focus > .p-menu-item-content .p-menu-item-label {
6887
+ color: ${dt('menu.extend.extItem.activeColor')};
6888
+ }
6889
+
6890
+ .p-menu .p-menu-item.p-menuitem-checked > .p-menu-item-content .p-menu-item-icon,
6891
+ .p-menu .p-menu-item.p-focus > .p-menu-item-content .p-menu-item-icon {
6892
+ color: ${dt('menu.colorScheme.light.extend.extItem.icon.activeColor')};
6893
+ }
6894
+
6895
+ .p-menu .p-menu-item.p-menuitem-checked:not(.p-disabled) > .p-menu-item-content:hover {
6896
+ background: ${dt('menu.colorScheme.light.item.focusBackground')};
6897
+ color: ${dt('menu.colorScheme.light.item.focusColor')};
6898
+ }
6899
+
6900
+ .p-menu .p-menu-item.p-menuitem-checked:not(.p-disabled) > .p-menu-item-content:hover .p-menu-item-icon {
6901
+ color: ${dt('menu.colorScheme.light.item.focusColor')};
6902
+ }
6903
+
6904
+ .p-menu .p-menu-submenu-label {
6905
+ text-transform: uppercase;
6906
+ font-size: ${dt('fonts.fontSize.200')};
6907
+ font-family: ${dt('fonts.fontFamily.heading')};
6908
+ line-height: ${dt('fonts.lineHeight.400')};
6909
+ }
6910
+ `;
6911
+
6912
+ const metergroupCss = ({ dt }) => `
6913
+ .p-metergroup-label-text {
6914
+ font-family: ${dt('fonts.fontFamily.base')};
6915
+ font-size: ${dt('fonts.fontSize.200')};
6916
+ font-weight: ${dt('fonts.fontWeight.regular')};
6917
+ line-height: ${dt('fonts.lineHeight.200')};
6918
+ color: ${dt('metergroup.extend.extLabel.color')};
6919
+ }
6920
+ .p-metergroup-label .p-metergroup-label-text + span {
6921
+ font-family: ${dt('fonts.fontFamily.base')};
6922
+ font-size: ${dt('fonts.fontSize.200')};
6923
+ font-weight: ${dt('fonts.fontWeight.medium')};
6924
+ color: ${dt('text.color')};
6925
+ }
6926
+ .p-metergroup-horizontal .p-metergroup-meter { min-height: 100%; }
6927
+ .p-metergroup-vertical .p-metergroup-meter { min-width: 100%; }
6928
+ `;
6929
+
6930
+ const paginatorCss = ({ dt }) => `
6931
+ /* ─── Current page report ─── */
6932
+ .p-paginator .p-paginator-current {
6933
+ font-family: ${dt('fonts.fontFamily.base')};
6934
+ font-size: ${dt('fonts.fontSize.300')};
6935
+ font-weight: ${dt('fonts.fontWeight.regular')};
6936
+ line-height: ${dt('fonts.lineHeight.250')};
6937
+ color: ${dt('paginator.currentPageReport.color')};
6938
+ }
6939
+
6940
+ /* ─── Page number buttons ─── */
6941
+ .p-paginator .p-paginator-page {
6942
+ font-family: ${dt('fonts.fontFamily.base')};
6943
+ font-size: ${dt('fonts.fontSize.300')};
6944
+ font-weight: ${dt('fonts.fontWeight.regular')};
6945
+ line-height: ${dt('fonts.lineHeight.250')};
6946
+ }
6947
+ `;
6948
+
6949
+ const panelmenuCss = ({ dt }) => `
6950
+ .p-panelmenu {
6951
+ gap: ${dt('panelmenu.extend.extPanel.gap')};
6952
+ }
6953
+
6954
+ .p-panelmenu-panel {
6955
+ padding: ${dt('panelmenu.extend.extPanel.gap')};
6956
+ }
6957
+
6958
+ .p-panelmenu-header-content,
6959
+ .p-panelmenu-item-content {
6960
+ font-size: ${dt('fonts.fontSize.300')};
6961
+ }
6962
+
6963
+ .p-panelmenu-submenu-icon {
6964
+ font-size: ${dt('panelmenu.extend.iconSize')};
6965
+ }
6966
+
6967
+ /* ─── Active & Focused States ─── */
6968
+
6969
+ .p-panelmenu .p-panelmenu-item.p-panelmenu-item-active > .p-panelmenu-item-content,
6970
+ .p-panelmenu .p-panelmenu-item.p-focus > .p-panelmenu-item-content,
6971
+ .p-panelmenu .p-panelmenu-header.p-focus .p-panelmenu-header-content {
6972
+ background: ${dt('panelmenu.extend.extItem.activeBackground')};
6973
+ color: ${dt('panelmenu.extend.extItem.activeColor')};
6974
+ }
6975
+
6976
+ .p-panelmenu .p-panelmenu-item.p-panelmenu-item-active > .p-panelmenu-item-content :is(.p-panelmenu-item-link, .p-panelmenu-item-label, .p-panelmenu-item-icon, .p-panelmenu-submenu-icon),
6977
+ .p-panelmenu .p-panelmenu-item.p-focus > .p-panelmenu-item-content :is(.p-panelmenu-item-link, .p-panelmenu-item-label, .p-panelmenu-item-icon, .p-panelmenu-header-icon, .p-panelmenu-submenu-icon),
6978
+ .p-panelmenu .p-panelmenu-header.p-focus .p-panelmenu-header-content :is(.p-panelmenu-header-link, .p-panelmenu-header-label, .p-panelmenu-submenu-icon, .p-panelmenu-item-icon, .p-panelmenu-header-icon) {
6979
+ color: ${dt('panelmenu.extend.extItem.activeColor')};
6980
+ }
6981
+
6982
+ /* ─── Hover on Active States ─── */
6983
+
6984
+ .p-panelmenu .p-panelmenu-item.p-panelmenu-item-active:not(.p-disabled) > .p-panelmenu-item-content:hover,
6985
+ .p-panelmenu .p-panelmenu-item.p-focus:not(.p-disabled) > .p-panelmenu-item-content:hover,
6986
+ .p-panelmenu .p-panelmenu-header.p-focus .p-panelmenu-header-content:hover {
6987
+ background: ${dt('panelmenu.item.focusBackground')};
6988
+ color: ${dt('panelmenu.item.focusColor')};
6989
+ }
6990
+
6991
+ .p-panelmenu .p-panelmenu-item.p-panelmenu-item-active:not(.p-disabled) > .p-panelmenu-item-content:hover :is(.p-panelmenu-item-link, .p-panelmenu-item-label),
6992
+ .p-panelmenu .p-panelmenu-item.p-focus:not(.p-disabled) > .p-panelmenu-item-content:hover :is(.p-panelmenu-item-link, .p-panelmenu-item-label),
6993
+ .p-panelmenu .p-panelmenu-header.p-focus .p-panelmenu-header-content:hover :is(.p-panelmenu-header-link, .p-panelmenu-header-label) {
6994
+ color: ${dt('panelmenu.item.focusColor')};
6995
+ }
6996
+
6997
+ .p-panelmenu .p-panelmenu-item.p-panelmenu-item-active:not(.p-disabled) > .p-panelmenu-item-content:hover :is(.p-panelmenu-item-icon, .p-panelmenu-submenu-icon),
6998
+ .p-panelmenu .p-panelmenu-item.p-focus:not(.p-disabled) > .p-panelmenu-item-content:hover :is(.p-panelmenu-item-icon, .p-panelmenu-submenu-icon),
6999
+ .p-panelmenu .p-panelmenu-header.p-focus .p-panelmenu-header-content:hover :is(.p-panelmenu-submenu-icon, .p-panelmenu-item-icon) {
7000
+ color: ${dt('panelmenu.item.icon.focusColor')};
7001
+ }
7002
+
7003
+ /* ─── Captions ─── */
7004
+
7005
+ .p-panelmenu .panelmenu-item-label {
7006
+ display: flex;
7007
+ flex-direction: column;
7008
+ gap: ${dt('panelmenu.extend.extItem.caption.gap')};
7009
+ }
7010
+
7011
+ .p-panelmenu .panelmenu-item-caption {
7012
+ font-size: ${dt('fonts.fontSize.200')};
7013
+ line-height: ${dt('fonts.lineHeight.450')};
7014
+ color: ${dt('panelmenu.extend.extItem.caption.color')};
7015
+ }
7016
+ `;
7017
+
7018
+ const progressbarCss = ({ dt }) => `
7019
+ .p-progressbar-label {
7020
+ font-family: ${dt('fonts.fontFamily.base')};
7021
+ }
7022
+ `;
7023
+
7024
+ const radiobuttonCss = ({ dt }) => `
7025
+ /* Focus ring с зеленым цветом для валидных состояний */
7026
+ .p-radiobutton:not(.p-disabled):not(.p-invalid):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box,
7027
+ .p-radiobutton-checked:not(.p-disabled):not(.p-invalid):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box {
7028
+ outline: none;
7029
+ box-shadow: 0 0 0 ${dt('radiobutton.focusRing.width')} ${dt('focusRing.extend.success')};
7030
+ }
7031
+
7032
+ /* Focus ring с красным цветом для состояний с ошибкой */
7033
+ .p-radiobutton.p-invalid .p-radiobutton-box,
7034
+ .p-radiobutton.p-invalid:not(.p-disabled):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box,
7035
+ .p-radiobutton-checked.p-invalid .p-radiobutton-box,
7036
+ .p-radiobutton-checked.p-invalid:not(.p-disabled):has(.p-radiobutton-input:focus-visible) .p-radiobutton-box {
7037
+ box-shadow: 0 0 0 ${dt('radiobutton.focusRing.width')} ${dt('focusRing.extend.invalid')};
7038
+ }
7039
+ `;
7040
+
7041
+ /**
7042
+ * Кастомная CSS-стилизация для компонента p-scrollpanel.
7043
+ * Подключается в map-tokens.ts: `import { scrollPanelCss } from './tokens/components/scroll-panel'`
7044
+ */
7045
+ const scrollPanelCss = ({ dt }) => `
7046
+ /* ─── Полоса прокрутки ─── */
7047
+ .p-scrollpanel-bar {
7048
+ background: ${dt('scrollpanel.bar.background')};
7049
+ border-radius: ${dt('scrollpanel.bar.borderRadius')};
7050
+ transition-duration: ${dt('scrollpanel.root.transitionDuration')};
7051
+ }
7052
+
7053
+ .p-scrollpanel-bar:focus-visible {
7054
+ outline-width: ${dt('scrollpanel.bar.focusRing.width')};
7055
+ outline-style: ${dt('scrollpanel.bar.focusRing.style')};
7056
+ outline-color: ${dt('scrollpanel.bar.focusRing.color')};
7057
+ outline-offset: ${dt('scrollpanel.bar.focusRing.offset')};
7058
+ box-shadow: ${dt('scrollpanel.bar.focusRing.shadow')};
7059
+ }
7060
+ `;
7061
+
7062
+ /**
7063
+ * Кастомная CSS-стилизация для компонента p-skeleton.
7064
+ * Публикует extend-токены как CSS-переменные и применяет минимальную ширину.
7065
+ * Подключается в map-tokens.ts: `import { skeletonCss } from './tokens/components/skeleton'`
7066
+ */
7067
+ const skeletonCss = ({ dt }) => `
7068
+ /* ─── Skeleton extend: публикуем кастомные переменные в :root ─── */
7069
+ :root {
7070
+ --p-skeleton-extend-min-width: ${dt('skeleton.extend.minWidth')};
7071
+ --p-skeleton-extend-height: ${dt('skeleton.extend.height')};
7072
+ }
7073
+
7074
+ /* ─── Минимальная ширина ─── */
7075
+ .p-skeleton {
7076
+ min-width: var(--p-skeleton-extend-min-width);
7077
+ }
7078
+ `;
7079
+
7080
+ /**
7081
+ * Кастомная CSS-стилизация для компонента p-slider.
7082
+ * Подключается в map-tokens.ts: `import { sliderCss } from './components/slider'`
7083
+ */
7084
+ const sliderCss = ({ dt }) => `
7085
+ /* ─── Focus ring ползунка ─── */
7086
+ .p-slider-handle:focus-visible {
7087
+ outline: ${dt('slider.handle.focusRing.width')} ${dt('slider.handle.focusRing.style')} ${dt('focusRing.extend.success')};
7088
+ outline-offset: ${dt('slider.handle.focusRing.offset')};
7089
+ box-shadow: none;
7090
+ }
7091
+ `;
7092
+
7093
+ const stepperCss = ({ dt }) => `
7094
+
7095
+ /* Caption - gap */
7096
+ .p-stepper .p-step-title {
7097
+ display: flex;
7098
+ flex-direction: column;
7099
+ gap: ${dt('stepper.extend.extCaption.gap')};
7100
+ line-height: ${dt('fonts.lineHeight.200')};
7101
+ align-items: flex-start;
7102
+ text-align: left;
7103
+ }
7104
+
7105
+ /* Caption - secondary text */
7106
+ .p-stepper .p-step-title .caption-secondary {
7107
+ display: flex;
7108
+ justify-content: flex-start;
7109
+ font-family: ${dt('fonts.fontFamily.base')};
7110
+ font-size: ${dt('fonts.fontSize.200')};
7111
+ font-weight: ${dt('fonts.fontWeight.regular')};
7112
+ line-height: normal;
7113
+ color: ${dt('text.mutedColor')};
7114
+ }
7115
+
7116
+ /* Номер шага */
7117
+ .p-stepper .p-step-number {
7118
+ font-family: ${dt('fonts.fontFamily.base')};
7119
+ font-size: ${dt('fonts.fontSize.300')};
7120
+ font-weight: ${dt('fonts.fontWeight.medium')};
7121
+ line-height: ${dt('fonts.lineHeight.150')};
7122
+ }
7123
+
7124
+ /* Border для номера шага */
7125
+ .p-stepper .p-step-number.p-step-number {
7126
+ border-width: ${dt('stepper.extend.extStepNumber.borderWidth')};
7127
+ }
7128
+
7129
+ /* Invalid состояние для step-number - только когда активен */
7130
+ .p-stepper .step-invalid.p-step-active .p-step-number {
7131
+ background: ${dt('stepper.extend.extStepNumber.invalidBackground')};
7132
+ color: ${dt('stepper.extend.extStepNumber.invalidColor')};
7133
+ border-color: ${dt('stepper.extend.extStepNumber.invalidBorderColor')};
7134
+ }
7135
+
7136
+ /* Step-number с иконкой */
7137
+ .p-stepper .p-step-number:has(i) {
7138
+ background: ${dt('colorScheme.light.transparent')};
7139
+ border-color: ${dt('colorScheme.light.transparent')};
7140
+ }
7141
+
7142
+ /* Размер иконок в step-number */
7143
+ .p-stepper .p-step-number i {
7144
+ font-size: ${dt('stepper.extend.extStepNumber.iconSize')};
7145
+ }
7146
+
7147
+ /* Активное состояние - иконка в цвет фона */
7148
+ .p-stepper .p-step-active .p-step-number i {
7149
+ color: ${dt('stepper.stepNumber.activeBackground')};
7150
+ }
7151
+
7152
+ /* Прозрачный фон для панелей */
7153
+ .p-stepper .p-steppanel {
7154
+ background: ${dt('colorScheme.light.transparent')};
7155
+ }
7156
+ `;
7157
+
7158
+ const tabsCss = ({ dt }) => `
7159
+
7160
+ /* Переопределение overflow для видимости активной линии */
7161
+ .p-tabs .p-tablist.p-tablist,
7162
+ .p-tabs .p-tablist-content.p-tablist-content,
7163
+ .p-tabs .p-tablist-viewport.p-tablist-viewport {
7164
+ overflow: visible;
7165
+ }
7166
+
7167
+ /* Типографика для label таба */
7168
+ .p-tabs .p-tablist .p-tab.p-tab {
7169
+ display: flex;
7170
+ align-items: center;
7171
+ gap: ${dt('tabs.tab.gap')};
7172
+ font-family: ${dt('fonts.fontFamily.heading')};
7173
+ font-size: ${dt('fonts.fontSize.300')};
7174
+ font-weight: ${dt('fonts.fontWeight.demibold')};
7175
+ }
7176
+
7177
+ /* Стили для tablist с правильной границей */
7178
+ .p-tabs .p-tablist {
7179
+ border-bottom: 0.15rem solid ${dt('tabs.tablist.borderColor')};
7180
+ }
7181
+ `;
7182
+
7183
+ const tieredmenuCss = ({ dt }) => `
7184
+ .p-tieredmenu {
7185
+ width: min-content;
7186
+ }
7187
+
7188
+ .p-tieredmenu-item-content {
7189
+ font-size: ${dt('fonts.fontSize.300')};
7190
+ }
7191
+
7192
+ .p-tieredmenu-submenu-icon {
7193
+ font-size: ${dt('tieredmenu.extend.iconSize')};
7194
+ }
7195
+
7196
+ /* ─── Selected (checked) item ─── */
7197
+
7198
+ .p-tieredmenu .p-tieredmenu-item.p-tieredmenu-item-checked > .p-tieredmenu-item-content {
7199
+ background: ${dt('tieredmenu.item.activeBackground')};
7200
+ color: ${dt('tieredmenu.item.activeColor')};
7201
+ }
7202
+
7203
+ .p-tieredmenu .p-tieredmenu-item.p-tieredmenu-item-checked > .p-tieredmenu-item-content :is(.p-tieredmenu-item-link, .p-tieredmenu-item-label, .p-tieredmenu-item-icon, .p-tieredmenu-submenu-icon) {
7204
+ color: ${dt('tieredmenu.item.activeColor')};
7205
+ }
7206
+
7207
+ /* ─── Hover on selected ─── */
7208
+
7209
+ .p-tieredmenu .p-tieredmenu-item.p-tieredmenu-item-checked:not(.p-disabled) > .p-tieredmenu-item-content:hover {
7210
+ background: ${dt('tieredmenu.item.focusBackground')};
7211
+ color: ${dt('tieredmenu.item.focusColor')};
7212
+ }
7213
+
7214
+ .p-tieredmenu .p-tieredmenu-item.p-tieredmenu-item-checked:not(.p-disabled) > .p-tieredmenu-item-content:hover :is(.p-tieredmenu-item-link, .p-tieredmenu-item-label) {
7215
+ color: ${dt('tieredmenu.item.focusColor')};
7216
+ }
7217
+
7218
+ .p-tieredmenu .p-tieredmenu-item.p-tieredmenu-item-checked:not(.p-disabled) > .p-tieredmenu-item-content:hover :is(.p-tieredmenu-item-icon, .p-tieredmenu-submenu-icon) {
7219
+ color: ${dt('tieredmenu.item.icon.focusColor')};
7220
+ }
7221
+
7222
+ /* ─── Captions ─── */
7223
+
7224
+ .p-tieredmenu .p-tieredmenu-item-caption {
7225
+ display: flex;
7226
+ flex-direction: column;
7227
+ gap: ${dt('tieredmenu.extend.extItem.caption.gap')};
7228
+ }
7229
+
7230
+ .p-tieredmenu .p-tieredmenu-item-caption-text {
7231
+ font-size: ${dt('fonts.fontSize.200')};
7232
+ color: ${dt('tieredmenu.extend.extItem.caption.color')};
7233
+ }
7234
+ `;
7235
+
7236
+ const timelineCss = ({ dt }) => `
7237
+
7238
+ /* ─── Типографика ─── */
7239
+ .p-timeline {
7240
+ font-family: ${dt('fonts.fontFamily.base')};
7241
+ font-size: ${dt('fonts.fontSize.300')};
7242
+ line-height: ${dt('fonts.lineHeight.500')};
7243
+ color: ${dt('text.color')};
7244
+ }
7245
+
7246
+ /* ─── Маркер ─── */
7247
+ .p-timeline-event-marker {
7248
+ border-width: ${dt('timeline.eventMarker.borderWidth')};
7249
+ background: ${dt('timeline.eventMarker.background')};
7250
+ border-color: ${dt('timeline.eventMarker.borderColor')};
7251
+ }
7252
+
7253
+ .p-timeline-event-marker::before {
7254
+ background: ${dt('timeline.eventMarker.content.background')};
7255
+ }
7256
+
7257
+ /* ─── Коннектор ─── */
7258
+ .p-timeline-event-connector {
7259
+ background: ${dt('timeline.eventConnector.color')};
7260
+ }
7261
+
7262
+ /* ─── Стиль линии ─── */
7263
+ timeline[data-line="dashed"] .p-timeline-event-connector {
7264
+ background: none;
7265
+ border-left: ${dt('timeline.eventConnector.size')} dashed ${dt('timeline.eventConnector.color')};
7266
+ }
7267
+
7268
+ timeline[data-line="dotted"] .p-timeline-event-connector {
7269
+ background: none;
7270
+ border-left: ${dt('timeline.eventConnector.size')} dotted ${dt('timeline.eventConnector.color')};
7271
+ }
7272
+
7273
+ timeline[data-line="none"] .p-timeline-event-connector {
7274
+ background: none;
7275
+ }
7276
+
7277
+ /* Горизонтальная ориентация линии */
7278
+ timeline[data-line="dashed"] .p-timeline-horizontal .p-timeline-event-connector {
7279
+ border-left: none;
7280
+ border-top: ${dt('timeline.eventConnector.size')} dashed ${dt('timeline.eventConnector.color')};
7281
+ }
7282
+
7283
+ timeline[data-line="dotted"] .p-timeline-horizontal .p-timeline-event-connector {
7284
+ border-left: none;
7285
+ border-top: ${dt('timeline.eventConnector.size')} dotted ${dt('timeline.eventConnector.color')};
7286
+ }
7287
+
7288
+ /* ─── Маркер-иконка (без бордера и фона) ─── */
7289
+ .p-timeline-event-marker:has(i) {
7290
+ border: none;
7291
+ background: none;
7292
+ }
7293
+
7294
+ .p-timeline-event-marker:has(i)::before {
7295
+ display: none;
7296
+ }
7297
+
7298
+ /* ─── Кастомный цвет маркера ─── */
7299
+ timeline[style*="--timeline-marker-color"] .p-timeline-event-marker {
7300
+ border-color: var(--timeline-marker-color);
7301
+ }
7302
+
7303
+ timeline[style*="--timeline-marker-color"] .p-timeline-event-marker i {
7304
+ color: var(--timeline-marker-color);
7305
+ }
7306
+ `;
7307
+
7308
+ const toastCss = ({ dt }) => `
7309
+ /* Основной контейнер toast-сообщения */
7310
+ .p-toast-message {
7311
+ width: ${dt('toast.root.width')};
7312
+ overflow: hidden;
7313
+ border-width: ${dt('toast.root.borderWidth')};
7314
+ border-radius: ${dt('toast.root.borderRadius')};
7315
+ box-shadow: ${dt('toast.colorScheme.light.info.shadow')};
7316
+ position: relative;
7317
+ }
7318
+
7319
+ /* border-radius для контента toast-сообщения */
7320
+ .p-toast .p-toast-message .p-toast-message-content {
7321
+ border-radius: ${dt('toast.root.borderRadius')};
7322
+ }
7323
+
7324
+ /* Текстовый блок toast */
7325
+ .p-toast-message-text {
7326
+ flex: 1;
7327
+ display: flex;
7328
+ flex-direction: column;
7329
+ gap: ${dt('toast.text.gap')};
7330
+ }
7331
+
7332
+ /* Заголовок toast */
7333
+ .p-toast-summary {
7334
+ font-family: ${dt('fonts.fontFamily.base')};
7335
+ line-height: ${dt('fonts.lineHeight.250')};
7336
+ }
7337
+
7338
+ /* Детальное описание toast */
7339
+ .p-toast-message .p-toast-detail {
7340
+ font-family: ${dt('fonts.fontFamily.base')};
7341
+ line-height: ${dt('fonts.lineHeight.250')};
7342
+ }
7343
+
7344
+ /* Кнопка закрытия toast-сообщения */
7345
+ .p-toast-message .p-toast-message-content .p-toast-close-button {
7346
+ margin: 0;
7347
+ padding: 0;
7348
+ right: 0;
7349
+ }
7350
+
7351
+ /* Общие стили border для кнопки закрытия всех типов toast */
7352
+ .p-toast-message-info .p-toast-close-button,
7353
+ .p-toast-message-success .p-toast-close-button,
7354
+ .p-toast-message-warn .p-toast-close-button,
7355
+ .p-toast-message-error .p-toast-close-button {
7356
+ border: ${dt('toast.extend.extCloseButton.width')} solid;
7357
+ }
7358
+
7359
+ /* Общие стили для акцентной линии всех типов toast */
7360
+ .p-toast-message-info .p-toast-accent-line,
7361
+ .p-toast-message-success .p-toast-accent-line,
7362
+ .p-toast-message-warn .p-toast-accent-line,
7363
+ .p-toast-message-error .p-toast-accent-line {
7364
+ width: ${dt('toast.extend.extAccentLine.width')};
7365
+ position: absolute;
7366
+ left: 0;
7367
+ top: 0;
7368
+ bottom: 0;
7369
+ border-radius: ${dt('toast.root.borderRadius')} 0 0 ${dt('toast.root.borderRadius')};
7370
+ }
7371
+
7372
+ /* Стили для toast типа Info */
7373
+ .p-toast-message-info .p-toast-message-icon {
7374
+ color: ${dt('toast.extend.extInfo.color')};
7375
+ }
7376
+
7377
+ .p-toast-message-info .p-toast-close-button {
7378
+ color: ${dt('toast.extend.extInfo.closeButton.color')};
7379
+ border-color: ${dt('toast.extend.extInfo.closeButton.borderColor')};
7380
+ }
7381
+
7382
+ .p-toast-message.p-toast-message-info .p-toast-close-button.p-button-text:not(:disabled):hover {
7383
+ background: ${dt('toast.colorScheme.light.info.closeButton.hoverBackground')};
7384
+ border-color: ${dt('toast.extend.extInfo.closeButton.borderColor')};
7385
+ color: ${dt('toast.extend.extInfo.closeButton.color')};
7386
+ }
7387
+
7388
+ .p-toast-message-info .p-toast-accent-line {
7389
+ background: ${dt('toast.extend.extInfo.color')};
7390
+ }
7391
+
7392
+ /* Стили для toast типа Success */
7393
+ .p-toast-message-success .p-toast-message-icon {
7394
+ color: ${dt('toast.extend.extSuccess.color')};
7395
+ }
7396
+
7397
+ .p-toast-message-success .p-toast-close-button {
7398
+ color: ${dt('toast.extend.extSuccess.closeButton.color')};
7399
+ border-color: ${dt('toast.extend.extSuccess.closeButton.borderColor')};
7400
+ }
7401
+
7402
+ .p-toast-message.p-toast-message-success .p-toast-close-button.p-button-text:not(:disabled):hover {
7403
+ background: ${dt('toast.colorScheme.light.success.closeButton.hoverBackground')};
7404
+ border-color: ${dt('toast.extend.extSuccess.closeButton.borderColor')};
7405
+ color: ${dt('toast.extend.extSuccess.closeButton.color')};
7406
+ }
7407
+
7408
+ .p-toast-message-success .p-toast-accent-line {
7409
+ background: ${dt('toast.extend.extSuccess.color')};
7410
+ }
7411
+
7412
+ /* Стили для toast типа Warn */
7413
+ .p-toast-message-warn .p-toast-message-icon {
7414
+ color: ${dt('toast.extend.extWarn.color')};
7415
+ }
7416
+
7417
+ .p-toast-message-warn .p-toast-close-button {
7418
+ color: ${dt('toast.extend.extWarn.closeButton.color')};
7419
+ border-color: ${dt('toast.extend.extWarn.closeButton.borderColor')};
7420
+ }
7421
+
7422
+ .p-toast-message.p-toast-message-warn .p-toast-close-button.p-button-text:not(:disabled):hover {
7423
+ background: ${dt('toast.colorScheme.light.warn.closeButton.hoverBackground')};
7424
+ border-color: ${dt('toast.extend.extWarn.closeButton.borderColor')};
7425
+ color: ${dt('toast.extend.extWarn.closeButton.color')};
7426
+ }
7427
+
7428
+ .p-toast-message-warn .p-toast-accent-line {
7429
+ background: ${dt('toast.extend.extWarn.color')};
7430
+ }
7431
+
7432
+ /* Стили для toast типа Error */
7433
+ .p-toast-message-error .p-toast-message-icon {
7434
+ color: ${dt('toast.extend.extError.color')};
7435
+ }
7436
+
7437
+ .p-toast-message-error .p-toast-close-button {
7438
+ color: ${dt('toast.extend.extError.closeButton.color')};
7439
+ border-color: ${dt('toast.extend.extError.closeButton.borderColor')};
7440
+ }
7441
+
7442
+ .p-toast-message.p-toast-message-error .p-toast-close-button.p-button-text:not(:disabled):hover {
7443
+ background: ${dt('toast.colorScheme.light.error.closeButton.hoverBackground')};
7444
+ border-color: ${dt('toast.extend.extError.closeButton.borderColor')};
7445
+ color: ${dt('toast.extend.extError.closeButton.color')};
7446
+ }
7447
+
7448
+ .p-toast-message-error .p-toast-accent-line {
7449
+ background: ${dt('toast.extend.extError.color')};
7450
+ }
7451
+ `;
7452
+
7453
+ const togglebuttonCss = ({ dt }) => `
7454
+
7455
+ /* ─── Типографика ─── */
7456
+ .p-togglebutton.p-component {
7457
+ font-family: ${dt('fonts.fontFamily.heading')};
7458
+ font-weight: ${dt('fonts.fontWeight.demibold')};
7459
+ line-height: ${dt('fonts.lineHeight.500')};
7460
+ }
7461
+
7462
+ /* ─── Hover unchecked ─── */
7463
+ .p-togglebutton:not(:disabled):not(.p-togglebutton-checked):hover {
7464
+ border-color: ${dt('togglebutton.extend.hoverBorderColor')};
7465
+ }
7466
+
7467
+ /* ─── Hover checked ─── */
7468
+ .p-togglebutton.p-togglebutton-checked:hover {
7469
+ background: ${dt('togglebutton.extend.checkedHoverBackground')};
7470
+ border-color: ${dt('togglebutton.extend.checkedHoverBorderColor')};
7471
+ color: ${dt('togglebutton.extend.checkedHoverColor')};
7472
+ }
7473
+
7474
+ /* ─── Small ─── */
7475
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-sm {
7476
+ line-height: ${dt('fonts.lineHeight.300')};
7477
+ }
7478
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-sm .p-togglebutton-label {
7479
+ line-height: ${dt('fonts.lineHeight.250')};
7480
+ }
7481
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-sm .p-togglebutton-icon {
7482
+ font-size: ${dt('togglebutton.extend.iconSize.sm')};
7483
+ }
7484
+
7485
+ /* ─── Base (default) ─── */
7486
+ .p-togglebutton.p-component:not(.p-togglebutton-sm):not(.p-togglebutton-lg):not(.p-togglebutton-xlarge) .p-togglebutton-icon {
7487
+ font-size: ${dt('togglebutton.extend.iconSize.md')};
7488
+ }
7489
+
7490
+ /* ─── Large ─── */
7491
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-lg {
7492
+ line-height: ${dt('fonts.lineHeight.550')};
7493
+ gap: ${dt('togglebutton.root.gap')};
7494
+ }
7495
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-lg .p-togglebutton-content {
7496
+ gap: ${dt('togglebutton.extend.ext.gap')};
7497
+ }
7498
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-lg .p-togglebutton-icon {
7499
+ font-size: ${dt('togglebutton.extend.iconSize.lg')};
7500
+ }
7501
+
7502
+ /* ─── Extra Large ─── */
7503
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-xlarge {
7504
+ padding: ${dt('togglebutton.extend.extXlg.padding')};
7505
+ font-size: ${dt('fonts.fontSize.500')};
7506
+ line-height: ${dt('fonts.lineHeight.550')};
7507
+ display: inline-flex;
7508
+ align-items: center;
7509
+ justify-content: center;
7510
+ gap: ${dt('togglebutton.root.gap')};
7511
+ }
7512
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-xlarge .p-togglebutton-content {
7513
+ gap: ${dt('togglebutton.extend.ext.gap')};
7514
+ }
7515
+ .p-togglebutton.p-togglebutton.p-component.p-togglebutton-xlarge .p-togglebutton-icon {
7516
+ font-size: ${dt('togglebutton.extend.iconSize.lg')};
7517
+ }
7518
+
7519
+ /* ─── Icon-only base ─── */
7520
+ .p-togglebutton.p-togglebutton-icon-only {
7521
+ padding: 0;
7522
+ width: ${dt('togglebutton.extend.iconOnlyWidth')};
7523
+ height: ${dt('togglebutton.extend.iconOnlyWidth')};
7524
+ border-radius: ${dt('togglebutton.root.borderRadius')};
7525
+ }
7526
+ .p-togglebutton.p-togglebutton-icon-only .p-togglebutton-label {
7527
+ display: none;
7528
+ }
7529
+
7530
+ /* ─── Icon-only sm ─── */
7531
+ .p-togglebutton.p-togglebutton-sm.p-togglebutton-icon-only {
7532
+ width: ${dt('togglebutton.extend.extSm.iconOnlyWidth')};
7533
+ height: ${dt('togglebutton.extend.extSm.iconOnlyWidth')};
7534
+ }
7535
+
7536
+ /* ─── Icon-only lg ─── */
7537
+ .p-togglebutton.p-togglebutton-lg.p-togglebutton-icon-only {
7538
+ width: ${dt('togglebutton.extend.extLg.iconOnlyWidth')};
7539
+ height: ${dt('togglebutton.extend.extLg.iconOnlyWidth')};
7540
+ }
7541
+
7542
+ /* ─── Icon-only xlarge ─── */
7543
+ .p-togglebutton.p-togglebutton-xlarge.p-togglebutton-icon-only {
7544
+ width: ${dt('togglebutton.extend.extXlg.iconOnlyWidth')};
7545
+ height: ${dt('togglebutton.extend.extXlg.iconOnlyWidth')};
7546
+ }
7547
+ `;
7548
+
7549
+ const toggleswitchCss = ({ dt }) => `
7550
+ /* Focus ring для валидных состояний */
7551
+ .p-toggleswitch:not(.p-disabled):not(.p-invalid):has(.p-toggleswitch-input:focus-visible) .p-toggleswitch-slider {
7552
+ box-shadow: 0 0 0 ${dt('toggleswitch.root.focusRing.width')} ${dt('focusRing.extend.success')};
7553
+ }
7554
+
7555
+ /* Focus ring для состояния ошибки */
7556
+ .p-toggleswitch.p-invalid:not(.p-disabled):has(.p-toggleswitch-input:focus-visible) .p-toggleswitch-slider {
7557
+ box-shadow: 0 0 0 ${dt('focusRing.width')} ${dt('focusRing.extend.invalid')};
7558
+ }
7559
+ `;
7560
+
7561
+ const autocompleteCss = ({ dt }) => `
7562
+ /* ─── Base ─── */
7563
+ .p-autocomplete {
7564
+ width: 100%;
7565
+ }
7566
+
7567
+ .p-autocomplete:has(input:disabled) .p-autocomplete-input,
7568
+ .p-autocomplete:has(input:disabled) .p-autocomplete-input-multiple,
7569
+ .p-autocomplete:has(input:disabled) .p-autocomplete-dropdown {
7570
+ border-color: ${dt('form.borderColor')};
7571
+ }
7572
+
7573
+ /* ─── Инпут и границы ─── */
7574
+ .p-autocomplete .p-autocomplete-input {
7575
+ width: 100%;
7576
+ padding: ${dt('autocomplete.root.paddingY')} ${dt('autocomplete.root.paddingX')};
7577
+ line-height: ${dt('fonts.lineHeight.250')};
7578
+ }
7579
+
7580
+ /* Монолитный вид: убираем стыкующиеся границы инпута и dropdown-кнопки.
7581
+ border-inline-end-width не перезаписывается hover/focus, т.к. те меняют только border-color. */
7582
+ .p-autocomplete:has(.p-autocomplete-dropdown) .p-autocomplete-input {
7583
+ border-inline-end-width: 0;
7584
+ }
7585
+
7586
+ /* Dropdown: дублируем border-inline-start: 0 с повышенной специфичностью,
7587
+ чтобы наш селектор гарантированно побеждал базовое правило PrimeNG. */
7588
+ .p-autocomplete .p-autocomplete-dropdown {
7589
+ border-inline-start: 0 none;
7590
+ }
7591
+
7592
+ /* ─── States: Hover ─── */
7593
+ .p-autocomplete.p-component:not(:has(input:disabled)):hover .p-inputtext.p-autocomplete-input,
7594
+ .p-autocomplete.p-component:not(:has(input:disabled)):hover .p-autocomplete-dropdown,
7595
+ .p-autocomplete.p-component:not(:has(input:disabled)):has(.p-autocomplete-input:hover) .p-autocomplete-dropdown {
7596
+ border-color: ${dt('form.hoverBorderSecondaryColor')};
7597
+ }
7598
+
7599
+ /* ─── States: Focus ─── */
7600
+ .p-autocomplete:has(.p-autocomplete-input:focus) .p-autocomplete-dropdown {
7601
+ border-color: ${dt('form.focusBorderSecondaryColor')};
7602
+ }
7603
+
7604
+ /* ─── Иконки ─── */
7605
+ .p-autocomplete-clear-icon,
7606
+ .p-autocomplete-dropdown .p-icon {
7607
+ color: var(--p-form-field-icon-color);
7608
+ }
7609
+
7610
+ .p-autocomplete.p-component:has(.p-autocomplete-dropdown) .p-autocomplete-clear-icon {
7611
+ inset-inline-end: ${dt('form.width.300')};
7612
+ }
7613
+
7614
+ /* ─── Multiple: чипсы ─── */
7615
+ .p-autocomplete .p-autocomplete-input-multiple {
7616
+ line-height: ${dt('fonts.lineHeight.250')};
7617
+ padding: ${dt('autocomplete.root.paddingY')} ${dt('autocomplete.root.paddingX')};
7618
+ }
7619
+
7620
+ .p-autocomplete .p-autocomplete-input-multiple:has(.p-autocomplete-chip) {
7621
+ padding: calc(${dt('autocomplete.root.paddingY')} - 5px);
7622
+ }
7623
+
7624
+ .p-autocomplete .p-autocomplete-input-chip {
7625
+ padding-block-start: 0;
7626
+ padding-block-end: 0;
7627
+ }
7628
+
7629
+ .p-autocomplete .p-autocomplete-input-multiple [data-pc-section="input"] {
7630
+ font-family: inherit;
7631
+ font-size: inherit;
7632
+ color: inherit;
7633
+ background: transparent;
7634
+ border: 0 none;
7635
+ outline: 0 none;
7636
+ padding: 0;
7637
+ margin: 0;
7638
+ line-height: inherit;
7639
+ }
7640
+
7641
+ .p-autocomplete .p-autocomplete-chip,
7642
+ .p-autocomplete-option {
7643
+ gap: ${dt('autocomplete.extend.extOption.gap')};
7644
+ }
7645
+
7646
+ .p-autocomplete-option-group {
7647
+ gap: ${dt('autocomplete.extend.extOptionGroup.gap')};
7648
+ }
7649
+
7650
+ .p-chip.p-chip:has(.p-chip-remove-icon) {
7651
+ padding-inline-end: ${dt('chip.root.paddingX')};
7652
+ }
7653
+
7654
+ /* ─── Sizes ─────────────────────────────────────────────────────────────────
7655
+ Повторяем padding-block / padding-inline из PrimeNG inputtext-size классов,
7656
+ но с повышенной специфичностью (.p-autocomplete.p-component + класс размера),
7657
+ чтобы перебить base-padding из .p-autocomplete .p-autocomplete-input выше.
7658
+ ──────────────────────────────────────────────────────────────────────────── */
7659
+
7660
+ /* sm */
7661
+ .p-autocomplete.p-component .p-inputtext-sm.p-autocomplete-input,
7662
+ .p-autocomplete.p-component .p-inputtext-sm.p-autocomplete-input-multiple {
7663
+ font-size: ${dt('inputtext.root.sm.fontSize')};
7664
+ padding-block: ${dt('inputtext.root.sm.paddingY')};
7665
+ padding-inline: ${dt('inputtext.root.sm.paddingX')};
7666
+ }
7667
+
7668
+ .p-autocomplete.p-component .p-inputtext-sm.p-autocomplete-input-multiple:has(.p-autocomplete-chip) {
7669
+ padding-block: calc(${dt('inputtext.root.sm.paddingY')} - 4.75px);
7670
+ padding-inline: calc(${dt('inputtext.root.sm.paddingY')} - 4.75px);
7671
+ }
7672
+
7673
+ /* lg */
7674
+ .p-autocomplete.p-component .p-inputtext-lg.p-autocomplete-input,
7675
+ .p-autocomplete.p-component .p-inputtext-lg.p-autocomplete-input-multiple {
7676
+ font-size: ${dt('inputtext.root.lg.fontSize')};
7677
+ padding-block: ${dt('inputtext.root.lg.paddingY')};
7678
+ padding-inline: ${dt('inputtext.root.lg.paddingX')};
7679
+ }
7680
+
7681
+ .p-autocomplete.p-component .p-inputtext-lg.p-autocomplete-input-multiple:has(.p-autocomplete-chip) {
7682
+ padding-block: calc(${dt('inputtext.root.lg.paddingY')} - 4.75px);
7683
+ padding-inline: calc(${dt('inputtext.root.lg.paddingY')} - 4.75px);
7684
+ }
7685
+
7686
+ /* xlg */
7687
+ .p-autocomplete.p-component .p-inputtext-xlg.p-autocomplete-input,
7688
+ .p-autocomplete.p-component .p-inputtext-xlg.p-autocomplete-input-multiple {
7689
+ font-size: ${dt('inputtext.extend.extXlg.fontSize')};
7690
+ padding-block: ${dt('inputtext.extend.extXlg.paddingY')};
7691
+ padding-inline: ${dt('inputtext.extend.extXlg.paddingX')};
7692
+ }
7693
+
7694
+ .p-autocomplete.p-component .p-inputtext-xlg.p-autocomplete-input-multiple:has(.p-autocomplete-chip) {
7695
+ padding-block: calc(${dt('inputtext.extend.extXlg.paddingY')} - 4.75px);
7696
+ padding-inline: calc(${dt('inputtext.extend.extXlg.paddingY')} - 4.75px);
7697
+ }
7698
+
7699
+ .p-autocomplete.p-component .p-inputtext-xlg .p-autocomplete-chip {
7700
+ padding-top: ${dt('spacing.2x')};
7701
+ padding-bottom: ${dt('spacing.2x')};
7702
+ font-size: ${dt('fonts.fontSize.300')};
7703
+ }
7704
+ `;
7705
+
7706
+ const popoverCss = ({ dt }) => `
7707
+ .p-popover.p-component::before {
7708
+ border-width: 0.73rem;
7709
+ margin-left: -0.86rem;
7710
+ }
7711
+
7712
+ .p-popover.p-component::after {
7713
+ margin-left: calc(-1 * ${dt('popover.extend.arrow.width')});
7714
+ }
7715
+ `;
7716
+
7717
+ const selectbuttonCss = ({ dt }) => `
7718
+ .p-selectbutton.p-component {
7719
+ background: ${dt('selectbutton.colorScheme.light.extend.background')};
7720
+ padding: ${dt('selectbutton.extend.paddingY')} ${dt('selectbutton.extend.paddingX')};
7721
+ gap: ${dt('selectbutton.extend.gap')};
7722
+ font-family: ${dt('fonts.fontFamily.heading')};
7723
+ font-weight: ${dt('fonts.fontWeight.demibold')};
7724
+ }
7725
+
7726
+ .p-selectbutton.p-component .p-togglebutton.p-component {
7727
+ font-family: ${dt('fonts.fontFamily.heading')};
7728
+ font-weight: ${dt('fonts.fontWeight.demibold')};
7729
+ line-height: ${dt('fonts.lineHeight.500')};
7730
+ height: ${dt('controls.iconOnly.700')};
7731
+ border-radius: ${dt('selectbutton.extend.ext.borderRadius')};
7732
+ }
7733
+
7734
+ .p-selectbutton.p-component .p-togglebutton .p-togglebutton-label,
7735
+ .p-selectbutton.p-component .p-togglebutton .p-togglebutton-content > span {
7736
+ line-height: ${dt('fonts.lineHeight.400')};
7737
+ }
7738
+
7739
+ .p-selectbutton.p-component .p-togglebutton.p-togglebutton-checked.p-component,
7740
+ .p-selectbutton.p-component .p-togglebutton.p-togglebutton-checked.p-component:hover {
7741
+ background: ${dt('selectbutton.extend.checkedBackground')};
7742
+ border-radius: ${dt('selectbutton.extend.ext.borderRadius')};
7743
+ border-color: ${dt('selectbutton.extend.checkedBorderColor')};
7744
+ color: ${dt('selectbutton.extend.checkedColor')};
7745
+ }
7746
+
7747
+ .p-selectbutton.p-component .p-togglebutton.p-component:not(:disabled):not(.p-togglebutton-checked):hover {
7748
+ border-radius: ${dt('selectbutton.extend.ext.borderRadius')};
7749
+ border-color: ${dt('togglebutton.extend.hoverBorderColor')};
7750
+ }
7751
+
7752
+ /* Size: small */
7753
+ .p-selectbutton.p-selectbutton-small.p-component .p-togglebutton.p-component {
7754
+ line-height: ${dt('fonts.lineHeight.300')};
7755
+ height: ${dt('controls.iconOnly.600')};
7756
+ }
7757
+
7758
+ .p-selectbutton.p-selectbutton-small.p-component .p-togglebutton .p-togglebutton-label,
7759
+ .p-selectbutton.p-selectbutton-small.p-component .p-togglebutton .p-togglebutton-content > span {
7760
+ line-height: ${dt('fonts.lineHeight.250')};
7761
+ }
7762
+
7763
+ .p-selectbutton.p-selectbutton-small.p-component .p-togglebutton .p-togglebutton-icon,
7764
+ .p-selectbutton.p-selectbutton-small.p-component .p-togglebutton i {
7765
+ font-size: ${dt('selectbutton.extend.iconSize.sm')};
7766
+ }
7767
+
7768
+ /* Size: base */
7769
+ .p-selectbutton.p-component:not(.p-selectbutton-small):not(.p-selectbutton-large):not(.p-selectbutton-xlarge) .p-togglebutton .p-togglebutton-icon,
7770
+ .p-selectbutton.p-component:not(.p-selectbutton-small):not(.p-selectbutton-large):not(.p-selectbutton-xlarge) .p-togglebutton i {
7771
+ font-size: ${dt('selectbutton.extend.iconSize.md')};
7772
+ }
7773
+
7774
+ /* Size: large */
7775
+ .p-selectbutton.p-selectbutton-large.p-component .p-togglebutton.p-component {
7776
+ line-height: ${dt('fonts.lineHeight.550')};
7777
+ height: ${dt('controls.iconOnly.850')};
7778
+ }
7779
+
7780
+ .p-selectbutton.p-selectbutton-large.p-component .p-togglebutton .p-togglebutton-label,
7781
+ .p-selectbutton.p-selectbutton-large.p-component .p-togglebutton .p-togglebutton-content > span {
7782
+ line-height: ${dt('fonts.lineHeight.550')};
7783
+ }
7784
+
7785
+ .p-selectbutton.p-selectbutton-large.p-component .p-togglebutton .p-togglebutton-icon,
7786
+ .p-selectbutton.p-selectbutton-large.p-component .p-togglebutton i {
7787
+ font-size: ${dt('selectbutton.extend.iconSize.lg')};
7788
+ }
7789
+
7790
+ /* Size: xlarge */
7791
+ .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton.p-component {
7792
+ font-size: ${dt('fonts.fontSize.600')};
7793
+ line-height: ${dt('fonts.lineHeight.550')};
7794
+ height: ${dt('controls.iconOnly.900')};
7795
+ }
7796
+
7797
+ .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton .p-togglebutton-label,
7798
+ .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton .p-togglebutton-content > span {
7799
+ line-height: ${dt('fonts.lineHeight.700')};
7800
+ }
7801
+
7802
+ .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton .p-togglebutton-icon,
7803
+ .p-selectbutton.p-selectbutton-xlarge.p-component .p-togglebutton i {
7804
+ font-size: ${dt('selectbutton.extend.iconSize.xlg')};
7805
+ }
7806
+ `;
7807
+
7808
+ const presetTokens = {
7809
+ primitive: tokens.primitive,
7810
+ semantic: tokens.semantic,
7811
+ components: {
7812
+ ...tokens.components,
7813
+ avatar: {
7814
+ ...tokens.components.avatar,
7815
+ css: avatarCss
7816
+ },
7817
+ card: {
7818
+ ...tokens.components.card,
7819
+ css: cardCss
7820
+ },
7821
+ checkbox: {
7822
+ ...tokens.components.checkbox,
7823
+ css: checkboxCss
7824
+ },
7825
+ button: {
7826
+ ...tokens.components.button,
7827
+ css: buttonCss
7828
+ },
7829
+ message: {
7830
+ ...tokens.components.message,
7831
+ css: messageCss
7832
+ },
7833
+ progressspinner: {
7834
+ ...tokens.components.progressspinner,
7835
+ css: progressspinnerCss
7836
+ },
7837
+ inputotp: {
7838
+ ...tokens.components.inputotp,
7839
+ css: inputotpCss
7840
+ },
7841
+ inputtext: {
7842
+ ...tokens.components.inputtext,
7843
+ css: inputtextCss
7844
+ },
7845
+ inputmask: {
7846
+ css: inputmaskCss
7847
+ },
7848
+ inputgroup: {
7849
+ ...tokens.components.inputgroup,
7850
+ css: inputgroupCss
7851
+ },
7852
+ tag: {
7853
+ ...tokens.components.tag,
7854
+ css: tagCss
7855
+ },
7856
+ textarea: {
7857
+ ...tokens.components.textarea,
7858
+ css: textareaCss
7859
+ },
7860
+ tooltip: {
7861
+ ...tokens.components.tooltip,
7862
+ css: tooltipCss
7863
+ },
7864
+ megamenu: {
7865
+ ...tokens.components.megamenu,
7866
+ css: megamenuCss
7867
+ },
7868
+ select: {
7869
+ ...tokens.components.select,
7870
+ css: selectCss
7871
+ },
7872
+ passwordCss: {
7873
+ ...tokens.components.password,
7874
+ css: passwordCss
7875
+ },
7876
+ carousel: {
7877
+ ...tokens.components.carousel,
7878
+ css: carouselCss
7879
+ },
7880
+ galleria: {
7881
+ ...tokens.components.galleria,
7882
+ css: galleriaCss
7883
+ },
7884
+ confirmdialog: {
7885
+ ...tokens.components.confirmdialog,
7886
+ css: confirmDialogCss
7887
+ },
7888
+ drawer: {
7889
+ ...tokens.components.drawer,
7890
+ css: drawerCss
7891
+ },
7892
+ datepicker: {
7893
+ ...tokens.components.datepicker,
7894
+ css: datePickerCss
7895
+ },
7896
+ accordion: {
7897
+ ...tokens.components.accordion,
7898
+ css: accordionCss
7899
+ },
7900
+ badge: {
7901
+ ...tokens.components.badge,
7902
+ css: badgeCss
7903
+ },
7904
+ chip: {
7905
+ ...tokens.components.chip,
7906
+ css: chipCss
7907
+ },
7908
+ datatable: {
7909
+ ...tokens.components.datatable,
7910
+ css: dataTableCss
7911
+ },
7912
+ dialog: {
7913
+ ...tokens.components.dialog,
7914
+ css: dialogCss
7915
+ },
7916
+ divider: {
7917
+ ...tokens.components.divider,
7918
+ css: dividerCss
7919
+ },
7920
+ inputnumber: {
7921
+ ...tokens.components.inputnumber,
7922
+ css: inputnumberCss
7923
+ },
7924
+ listbox: {
7925
+ ...tokens.components.listbox,
7926
+ css: listboxCss
7927
+ },
7928
+ menu: {
7929
+ ...tokens.components.menu,
7930
+ css: menuCss
7931
+ },
7932
+ metergroup: {
7933
+ ...tokens.components.metergroup,
7934
+ css: metergroupCss
7935
+ },
7936
+ paginator: {
7937
+ ...tokens.components.paginator,
7938
+ css: paginatorCss
7939
+ },
7940
+ panelmenu: {
7941
+ ...tokens.components.panelmenu,
7942
+ css: panelmenuCss
7943
+ },
7944
+ progressbar: {
7945
+ ...tokens.components.progressbar,
7946
+ css: progressbarCss
7947
+ },
7948
+ radiobutton: {
7949
+ ...tokens.components.radiobutton,
7950
+ css: radiobuttonCss
7951
+ },
7952
+ scrollpanel: {
7953
+ ...tokens.components.scrollpanel,
7954
+ css: scrollPanelCss
7955
+ },
7956
+ skeleton: {
7957
+ ...tokens.components.skeleton,
7958
+ css: skeletonCss
7959
+ },
7960
+ slider: {
7961
+ ...tokens.components.slider,
7962
+ css: sliderCss
7963
+ },
7964
+ stepper: {
7965
+ ...tokens.components.stepper,
7966
+ css: stepperCss
7967
+ },
7968
+ tabs: {
7969
+ ...tokens.components.tabs,
7970
+ css: tabsCss
7971
+ },
7972
+ tieredmenu: {
7973
+ ...tokens.components.tieredmenu,
7974
+ css: tieredmenuCss
7975
+ },
7976
+ timeline: {
7977
+ ...tokens.components.timeline,
7978
+ css: timelineCss
7979
+ },
7980
+ toast: {
7981
+ ...tokens.components.toast,
7982
+ css: toastCss
7983
+ },
7984
+ togglebutton: {
7985
+ ...tokens.components.togglebutton,
7986
+ css: togglebuttonCss
7987
+ },
7988
+ toggleswitch: {
7989
+ ...tokens.components.toggleswitch,
7990
+ css: toggleswitchCss
7991
+ },
7992
+ autocomplete: {
7993
+ ...tokens.components.autocomplete,
7994
+ css: autocompleteCss
7995
+ },
7996
+ popover: {
7997
+ ...tokens.components.popover,
7998
+ css: popoverCss
5631
7999
  },
5632
- },
8000
+ selectbutton: {
8001
+ ...tokens.components.selectbutton,
8002
+ css: selectbuttonCss
8003
+ }
8004
+ }
5633
8005
  };
5634
8006
 
5635
8007
  const Preset = definePreset(Aura, presetTokens);