@ryuzaki13/react-foundation-ui 1.9.2 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (295) hide show
  1. package/README.md +43 -0
  2. package/dist/advanced-search/index.js +3 -3
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/chunks/{TextEditorLexicalClient-DUWQNLiO.js → TextEditorLexicalClient-B7Y6-3rL.js} +2 -2
  5. package/dist/chunks/{TextEditorLexicalClient-DUWQNLiO.js.map → TextEditorLexicalClient-B7Y6-3rL.js.map} +1 -1
  6. package/dist/chunks/{base-table-BuH1DvPd.js → base-table-8aMlH6XB.js} +2 -2
  7. package/dist/chunks/{base-table-BuH1DvPd.js.map → base-table-8aMlH6XB.js.map} +1 -1
  8. package/dist/chunks/{misc-aGQBhywJ.js → misc-Csi68Etw.js} +38 -22
  9. package/dist/chunks/misc-Csi68Etw.js.map +1 -0
  10. package/dist/chunks/{modal-BIrjOzmE.js → modal-_og-L6rt.js} +2 -2
  11. package/dist/chunks/{modal-BIrjOzmE.js.map → modal-_og-L6rt.js.map} +1 -1
  12. package/dist/chunks/picker-DO9HFqJV.js.map +1 -1
  13. package/dist/chunks/{table-DLkfAmSZ.js → table-DQmVlKDI.js} +2 -2
  14. package/dist/chunks/{table-DLkfAmSZ.js.map → table-DQmVlKDI.js.map} +1 -1
  15. package/dist/expandable-action-panel/index.js +1 -1
  16. package/dist/image/index.js +1 -1
  17. package/dist/list/index.js +1 -1
  18. package/dist/misc/Message.d.ts +3 -2
  19. package/dist/misc/Message.d.ts.map +1 -1
  20. package/dist/misc/NoData.d.ts +3 -1
  21. package/dist/misc/NoData.d.ts.map +1 -1
  22. package/dist/misc/Notice.d.ts +3 -2
  23. package/dist/misc/Notice.d.ts.map +1 -1
  24. package/dist/misc/index.js +1 -1
  25. package/dist/modal/index.js +1 -1
  26. package/dist/simple-table/index.js +1 -1
  27. package/dist/styles.css +1 -1
  28. package/dist/table/index.js +1 -1
  29. package/dist/tabs/index.js +1 -1
  30. package/dist/text/Text.d.ts +3 -2
  31. package/dist/text/Text.d.ts.map +1 -1
  32. package/dist/text/index.js +20 -15
  33. package/dist/text/index.js.map +1 -1
  34. package/dist/text-editor/index.js +2 -2
  35. package/dist/tree-table/index.js +1 -1
  36. package/package.json +1 -1
  37. package/src/styles/config/_index.scss +26 -2
  38. package/src/styles/themes/_index.scss +1 -0
  39. package/src/styles/themes/_interactive-surface.scss +1 -1
  40. package/src/styles/themes/_theme.scss +173 -6
  41. package/src/styles/themes/dark/_default.scss +1 -3
  42. package/src/styles/themes/light/_default.scss +1 -3
  43. package/src/styles/themes/theme.test.ts +110 -0
  44. package/storybook-static/assets/{Badge-D-pmeoPo.js → Badge-_EizT2jv.js} +1 -1
  45. package/storybook-static/assets/{Badge.stories-CGi08yx3.js → Badge.stories-hEpGMTKr.js} +1 -1
  46. package/storybook-static/assets/{BadgeList-DHWViMDX.js → BadgeList-BkSAtS2i.js} +1 -1
  47. package/storybook-static/assets/{Button-pdfMd37D.js → Button-6gGebvgA.js} +1 -1
  48. package/storybook-static/assets/{Button-CLqpsfhx.js → Button-BM6kIoG9.js} +1 -1
  49. package/storybook-static/assets/{Button.stories-BZVTOvJA.js → Button.stories-BaHXZdjg.js} +1 -1
  50. package/storybook-static/assets/{CalendarView-CzaJWzmi.js → CalendarView-CTmr-9oB.js} +1 -1
  51. package/storybook-static/assets/{CheckBox-DgOTdmRk.js → CheckBox-B6M9Ugeb.js} +1 -1
  52. package/storybook-static/assets/{CheckBox-64ai70iw.js → CheckBox-BGSLxY6H.js} +1 -1
  53. package/storybook-static/assets/{CheckBox.stories-U8N-9vsz.js → CheckBox.stories-Cnwc5F1y.js} +1 -1
  54. package/storybook-static/assets/{Color-6AOWCN3U-D_VqL99f.js → Color-6AOWCN3U-BGQxQLOE.js} +1 -1
  55. package/storybook-static/assets/{ContextMenu-CyRQXvyS.js → ContextMenu-6p-5GMAX.js} +1 -1
  56. package/storybook-static/assets/{ContextMenu-I9FsjomS.js → ContextMenu-B-CEGklC.js} +1 -1
  57. package/storybook-static/assets/{ContextMenu.stories-LDSLuKOK.js → ContextMenu.stories-BhFtKe9B.js} +1 -1
  58. package/storybook-static/assets/{CustomOptionButton-Cqnf6bEq.js → CustomOptionButton-BtxdL6Pc.js} +1 -1
  59. package/storybook-static/assets/{DateInput-DShthvqb.js → DateInput-C3jJcnHA.js} +1 -1
  60. package/storybook-static/assets/{DateInput-BmaD-EQG.js → DateInput-D6H2qUcf.js} +1 -1
  61. package/storybook-static/assets/{DateInput.stories-Duzd0cwU.js → DateInput.stories-CnMz9Gbl.js} +1 -1
  62. package/storybook-static/assets/{DateRangePresetSelect-COUmb2Vx.js → DateRangePresetSelect-BR09ai82.js} +1 -1
  63. package/storybook-static/assets/{DateRangePresetSelect-Dio3_xDJ.js → DateRangePresetSelect-C0Y0ZQ9M.js} +1 -1
  64. package/storybook-static/assets/{DateRangePresetSelect.stories-Cxu_aV-0.js → DateRangePresetSelect.stories-DBlIpDg9.js} +1 -1
  65. package/storybook-static/assets/{Detail-DsCqQZkO.js → Detail-4eidm8Uj.js} +1 -1
  66. package/storybook-static/assets/{Detail.stories-XGcjknqU.js → Detail.stories-KHnEkJkj.js} +1 -1
  67. package/storybook-static/assets/{Dialog-C7ITtEN6.js → Dialog-fX-24IcZ.js} +1 -1
  68. package/storybook-static/assets/{Dialog-BRT9AsDt.js → Dialog-oEX4S2LW.js} +1 -1
  69. package/storybook-static/assets/{Dialog.stories-B7IrBY97.js → Dialog.stories-DmVdpzhy.js} +1 -1
  70. package/storybook-static/assets/{Disclosure-DzteG75s.js → Disclosure-kz-zI5WC.js} +1 -1
  71. package/storybook-static/assets/{Disclosure.stories-_QqDtaTs.js → Disclosure.stories-DVS_MmGS.js} +1 -1
  72. package/storybook-static/assets/{DisclosureGroup-Bbf9fxj3.js → DisclosureGroup-C5spmyJC.js} +1 -1
  73. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CjtyNQHE.js → DocsRenderer-JROSPFPF-h4fsaU1T.js} +1 -1
  74. package/storybook-static/assets/{DropZone-8PWjNWl_.js → DropZone-C9ddViCj.js} +1 -1
  75. package/storybook-static/assets/{DropZone-DUMdU0YX.js → DropZone-uOkqppiy.js} +1 -1
  76. package/storybook-static/assets/{DropZone.stories-V8Ta1BkI.js → DropZone.stories-V_wInuE9.js} +1 -1
  77. package/storybook-static/assets/{DropdownMenu-CXxRq5UP.js → DropdownMenu-BfHbAx8n.js} +1 -1
  78. package/storybook-static/assets/{ExpandableActionPanel-fXU-PRSP.js → ExpandableActionPanel-O7Qtx9I_.js} +1 -1
  79. package/storybook-static/assets/{ExpandableActionPanel.stories-D3x_tJbT.js → ExpandableActionPanel.stories-DcEG2C7d.js} +1 -1
  80. package/storybook-static/assets/{Flex-DIWmrprD.js → Flex-DODx2gzB.js} +1 -1
  81. package/storybook-static/assets/{Flex.stories-Bu9jy9UK.js → Flex.stories-uotfXpmi.js} +1 -1
  82. package/storybook-static/assets/{FloatingPopover-BBuuq7e_.js → FloatingPopover-B3nQlBso.js} +1 -1
  83. package/storybook-static/assets/{FormattedTableCell-DRS51nVL.js → FormattedTableCell-BDDu1kp-.js} +1 -1
  84. package/storybook-static/assets/{Grid-CoBEHhHG.js → Grid-ClgafeLd.js} +1 -1
  85. package/storybook-static/assets/{Grid.stories-BLyYegDD.js → Grid.stories-DYJDC1PC.js} +1 -1
  86. package/storybook-static/assets/{ImageCropper.stories-WQblLfwk.js → ImageCropper.stories-uYiteU-F.js} +1 -1
  87. package/storybook-static/assets/{ImageRenderer-CvEiLs3n.js → ImageRenderer-K2ZLKgPh.js} +1 -1
  88. package/storybook-static/assets/{ImageRenderer.stories-H3QxvuDI.js → ImageRenderer.stories-sZczXHPI.js} +1 -1
  89. package/storybook-static/assets/{ImageView.stories-CWc9bhgt.js → ImageView.stories-CDyFnYSM.js} +1 -1
  90. package/storybook-static/assets/{ImageViewer.stories-bfoT1kl7.js → ImageViewer.stories-DIuzTf1G.js} +2 -2
  91. package/storybook-static/assets/{ImageViewerRuntime-mq_3W9h-.js → ImageViewerRuntime-CtuKquXa.js} +1 -1
  92. package/storybook-static/assets/{Input-BQD61t3p.js → Input-D4tfWqd4.js} +1 -1
  93. package/storybook-static/assets/{Input-nR9--_Sn.js → Input-cHEAcYed.js} +1 -1
  94. package/storybook-static/assets/{Input.stories-BJQZh6Zg.js → Input.stories-DxA7bFdU.js} +1 -1
  95. package/storybook-static/assets/{InputDateTime-CUaeH-mw.js → InputDateTime-DMDXNI5Q.js} +1 -1
  96. package/storybook-static/assets/{InputDateTime.stories-Lbh2ZYk_.js → InputDateTime.stories-DNbof7D-.js} +1 -1
  97. package/storybook-static/assets/{InputFile-R856c9Zd.js → InputFile-es_Dfi_m.js} +1 -1
  98. package/storybook-static/assets/{InputFile-CPdH47Ch.js → InputFile-jKZeiiyH.js} +1 -1
  99. package/storybook-static/assets/{InputFile.stories-C3AVgG7G.js → InputFile.stories-4qpeQAtU.js} +1 -1
  100. package/storybook-static/assets/{InputFiles-CSoMNZh8.js → InputFiles-DLBHMt-J.js} +1 -1
  101. package/storybook-static/assets/{InputFiles-C2p5u9Vb.js → InputFiles-NOgnII1-.js} +1 -1
  102. package/storybook-static/assets/{InputFiles.stories-DMDmCAMp.js → InputFiles.stories-BlXt2q0R.js} +1 -1
  103. package/storybook-static/assets/{InputFilesList-DZaIPmUx.js → InputFilesList-jGdK2Bpv.js} +1 -1
  104. package/storybook-static/assets/{InputImage-2-qtCi5r.js → InputImage-BntWobt1.js} +1 -1
  105. package/storybook-static/assets/{InputImage-DOKRKrNo.js → InputImage-Dwk1rgTF.js} +1 -1
  106. package/storybook-static/assets/{InputImage.stories-BDEsw03m.js → InputImage.stories-g6_VheXC.js} +1 -1
  107. package/storybook-static/assets/{InteractiveComponents-Ce0tiOzU.js → InteractiveComponents-Cj-hhs7B.js} +1 -1
  108. package/storybook-static/assets/{InteractiveComponents.stories-BPVx0Juv.js → InteractiveComponents.stories-BYeU6IJM.js} +1 -1
  109. package/storybook-static/assets/{LayoutPicker-DW0QJyG3.js → LayoutPicker-CXz4IOwK.js} +1 -1
  110. package/storybook-static/assets/{LayoutPicker-BVWJI_qE.js → LayoutPicker-Dki87LGU.js} +1 -1
  111. package/storybook-static/assets/{LayoutPicker.stories-DXo-xHhW.js → LayoutPicker.stories-BBKD3V9F.js} +1 -1
  112. package/storybook-static/assets/{Listbox-BK7sooIj.js → Listbox-CYDjztQQ.js} +1 -1
  113. package/storybook-static/assets/{Listbox-CGf42o5R.js → Listbox-WrKuMKtp.js} +1 -1
  114. package/storybook-static/assets/{Listbox.stories-BjUhs6uw.js → Listbox.stories-B8Ex0N4a.js} +1 -1
  115. package/storybook-static/assets/{Modal-B-w0Qn5z.js → Modal-CklJ13a7.js} +1 -1
  116. package/storybook-static/assets/{Modal.stories-D80hKY4h.js → Modal.stories-Bou2z6wg.js} +1 -1
  117. package/storybook-static/assets/{ModalManagerProvider-Ct68PEUb.js → ModalManagerProvider-Ch_-390V.js} +1 -1
  118. package/storybook-static/assets/{MultiSelect-C3K-rlW1.js → MultiSelect-DIUS_A1T.js} +1 -1
  119. package/storybook-static/assets/{MultiSelect-D3fu3Rng.js → MultiSelect-DTLa2pXR.js} +1 -1
  120. package/storybook-static/assets/{MultiSelect.stories-Do-7Qoxr.js → MultiSelect.stories-BBMt0yCs.js} +1 -1
  121. package/storybook-static/assets/NoData-DbdBWJjI.js +1 -0
  122. package/storybook-static/assets/{NotificationsHost-CiZ7_lMe.js → NotificationsHost-BDzrnm0E.js} +1 -1
  123. package/storybook-static/assets/{NotificationsHost.stories-5alDu7ay.js → NotificationsHost.stories-DRxhyBsq.js} +1 -1
  124. package/storybook-static/assets/{ODataMultiSelect-TC_akCg8.js → ODataMultiSelect-BRqeU81R.js} +1 -1
  125. package/storybook-static/assets/{ODataMultiSelect.stories-Cb_JB_ue.js → ODataMultiSelect.stories-ER9gIab1.js} +1 -1
  126. package/storybook-static/assets/{ODataSelect-CGNcCdVe.js → ODataSelect-BbehbC8b.js} +1 -1
  127. package/storybook-static/assets/{ODataSelect.stories-_-j3A_ww.js → ODataSelect.stories-B48c_2gZ.js} +1 -1
  128. package/storybook-static/assets/{ODataTreeMultiSelect-BQHB3YBL.js → ODataTreeMultiSelect-PTn9G8gs.js} +1 -1
  129. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BjyDKFRL.js → ODataTreeMultiSelect.stories-C03Wgm5Y.js} +1 -1
  130. package/storybook-static/assets/{ODataTreeSelect-YitQpTSy.js → ODataTreeSelect-8gMkig_I.js} +1 -1
  131. package/storybook-static/assets/{ODataTreeSelect.stories-U_KZEI0_.js → ODataTreeSelect.stories-Bv2I7KCu.js} +1 -1
  132. package/storybook-static/assets/{OneStepScroller-fmozAYPt.js → OneStepScroller-cJaBAa1u.js} +1 -1
  133. package/storybook-static/assets/{Option-DQEGVUze.js → Option-Cv4uUJtC.js} +1 -1
  134. package/storybook-static/assets/Option-DXh7BISz.css +1 -0
  135. package/storybook-static/assets/{OptionButton-D3a4dDti.js → OptionButton-CfCsCZj9.js} +1 -1
  136. package/storybook-static/assets/{PeriodSelect-BMbCuQBO.js → PeriodSelect-BjlsDIpD.js} +1 -1
  137. package/storybook-static/assets/{PeriodSelect-dA7-_4hS.js → PeriodSelect-CL1e2fFt.js} +1 -1
  138. package/storybook-static/assets/{PeriodSelect.stories-DY9NOupa.js → PeriodSelect.stories-DunYr1Aw.js} +1 -1
  139. package/storybook-static/assets/{PickerTriggerActions-wPhMVgnp.js → PickerTriggerActions-BsZzXt1Y.js} +1 -1
  140. package/storybook-static/assets/{Popover-B8ST0SUU.js → Popover-Cf_xTicI.js} +1 -1
  141. package/storybook-static/assets/{Popover-BNkB29Uc.js → Popover-CtQzsPDo.js} +1 -1
  142. package/storybook-static/assets/{Popover.stories-DnX18DkD.js → Popover.stories-JKUan9Fl.js} +1 -1
  143. package/storybook-static/assets/{PresetRangeDateInput-CK8-W11l.js → PresetRangeDateInput-3wxmAie1.js} +1 -1
  144. package/storybook-static/assets/{PresetRangeDateInput-CM_Xz8Qo.js → PresetRangeDateInput-C2ExI6WD.js} +1 -1
  145. package/storybook-static/assets/{PresetRangeDateInput.stories-C02Fn-pY.js → PresetRangeDateInput.stories-CZqV5x9S.js} +1 -1
  146. package/storybook-static/assets/{PresetSelect-CYw8Ajdz.js → PresetSelect-Dgnuj0EX.js} +1 -1
  147. package/storybook-static/assets/{README-BejEQLjP.js → README-2-FHir8H.js} +1 -1
  148. package/storybook-static/assets/{README-BeK_M3wg.js → README-A0z2LdVH.js} +1 -1
  149. package/storybook-static/assets/{README-D_ikFGHO.js → README-B1BbZvY0.js} +1 -1
  150. package/storybook-static/assets/{README-x21IHapv.js → README-B3KAbq75.js} +1 -1
  151. package/storybook-static/assets/{README-DQU4h0Nq.js → README-BHIuzytK.js} +1 -1
  152. package/storybook-static/assets/{README-C5FjLxuA.js → README-BJ6iL_Oi.js} +1 -1
  153. package/storybook-static/assets/{README-CwhpJ-9r.js → README-BKwyBGXN.js} +1 -1
  154. package/storybook-static/assets/{README-CrbuX9mD.js → README-BP1UlbEK.js} +1 -1
  155. package/storybook-static/assets/{README-CrWGrjg7.js → README-BRfQEn6d.js} +1 -1
  156. package/storybook-static/assets/{README-D04Q8CyG.js → README-BVS94DUR.js} +1 -1
  157. package/storybook-static/assets/{README-YXqHYgeE.js → README-BYFlhYZu.js} +1 -1
  158. package/storybook-static/assets/{README-OD6zGNzi.js → README-BZqzLhdi.js} +1 -1
  159. package/storybook-static/assets/{README-RwM2St3v.js → README-B_JU9VFe.js} +1 -1
  160. package/storybook-static/assets/{README-CnsDMW_3.js → README-BcEBjxwv.js} +1 -1
  161. package/storybook-static/assets/{README-DRp42BOe.js → README-Bd88pBi9.js} +1 -1
  162. package/storybook-static/assets/{README-fJYxw9zP.js → README-BlrLSqAp.js} +1 -1
  163. package/storybook-static/assets/{README-DEjCt9ub.js → README-BqyJY4sE.js} +1 -1
  164. package/storybook-static/assets/{README-BNpVUgaA.js → README-C0QsPT5U.js} +1 -1
  165. package/storybook-static/assets/{README-BwX7sPxt.js → README-C6GtvJxT.js} +1 -1
  166. package/storybook-static/assets/{README-BT0c1NNT.js → README-CG4CDDCg.js} +1 -1
  167. package/storybook-static/assets/{README-CsqzAG6g.js → README-CGaMjt_7.js} +1 -1
  168. package/storybook-static/assets/{README-lr_eSJ7J.js → README-CRV3BVDl.js} +1 -1
  169. package/storybook-static/assets/{README-CgASsgK0.js → README-CXqkVBN3.js} +1 -1
  170. package/storybook-static/assets/{README-OzTTLW9p.js → README-CZVcJsrW.js} +1 -1
  171. package/storybook-static/assets/{README-MBWZXJ-M.js → README-Cmo_HdRn.js} +1 -1
  172. package/storybook-static/assets/{README-tFtk5xH1.js → README-CobGlBU3.js} +1 -1
  173. package/storybook-static/assets/{README-By1W0ZcJ.js → README-CohIDuHg.js} +1 -1
  174. package/storybook-static/assets/{README-CbxEORXy.js → README-CpIso2nB.js} +1 -1
  175. package/storybook-static/assets/{README-DbQzxhNi.js → README-Cq_oiYsv.js} +1 -1
  176. package/storybook-static/assets/{README-DMSOqfs6.js → README-D-AaI8vq.js} +1 -1
  177. package/storybook-static/assets/{README-DHtpm6Us.js → README-D1CxTEac.js} +1 -1
  178. package/storybook-static/assets/{README-bJfez2lF.js → README-D1EK7i8x.js} +1 -1
  179. package/storybook-static/assets/{README-DoYBJDYk.js → README-D54wVMvG.js} +1 -1
  180. package/storybook-static/assets/{README-DLymT6K9.js → README-DCDfUIRn.js} +1 -1
  181. package/storybook-static/assets/{README-C42MsSy4.js → README-DEIW0tyL.js} +1 -1
  182. package/storybook-static/assets/{README-BkDwEqx6.js → README-DEpKhgOR.js} +1 -1
  183. package/storybook-static/assets/{README-D9MXBP9E.js → README-DFGmcWGC.js} +1 -1
  184. package/storybook-static/assets/{README-BpYNB7d3.js → README-DPhAT1In.js} +1 -1
  185. package/storybook-static/assets/{README-EZlYpyPx.js → README-DSwSQVlh.js} +1 -1
  186. package/storybook-static/assets/{README-CCFtp9RM.js → README-DgthBxqb.js} +1 -1
  187. package/storybook-static/assets/{README-DxQ-OzBi.js → README-DjMWtiAg.js} +1 -1
  188. package/storybook-static/assets/{README-u_QI5_--.js → README-DkIuOHZM.js} +1 -1
  189. package/storybook-static/assets/{README-ZtiJuf9C.js → README-DwXM60XH.js} +1 -1
  190. package/storybook-static/assets/{README-Sf9DJLUa.js → README-DzjXoocv.js} +1 -1
  191. package/storybook-static/assets/{README-Cw47cn6N.js → README-ERqn3s8m.js} +1 -1
  192. package/storybook-static/assets/{README-BoHCqxaf.js → README-KP-zP3wT.js} +1 -1
  193. package/storybook-static/assets/{README-CRcOsdo_.js → README-WfYC8Np3.js} +1 -1
  194. package/storybook-static/assets/{README-C38qTYrj.js → README-ZzPAIWgs.js} +1 -1
  195. package/storybook-static/assets/{README-C0CGDnH2.js → README-aSTOCLUT.js} +1 -1
  196. package/storybook-static/assets/{README-Bl7A8sLU.js → README-fuBwKtST.js} +1 -1
  197. package/storybook-static/assets/{README-B6dLU45s.js → README-j_y9R5i5.js} +1 -1
  198. package/storybook-static/assets/{README-BBGOcI6a.js → README-ne2eW1G_.js} +1 -1
  199. package/storybook-static/assets/{RadioButton-vgz02PM1.js → RadioButton-B-mjqqNn.js} +1 -1
  200. package/storybook-static/assets/{RadioButton-BKwZoUg6.js → RadioButton-DOPeKTpq.js} +1 -1
  201. package/storybook-static/assets/{RadioButton.stories-Bc5VPCMi.js → RadioButton.stories-DmJ2WYTz.js} +1 -1
  202. package/storybook-static/assets/{RadioGroup-ByUKqLsY.js → RadioGroup-BeWujwoV.js} +1 -1
  203. package/storybook-static/assets/{RadioGroup-B98cXZhV.js → RadioGroup-Ceg8JuOb.js} +1 -1
  204. package/storybook-static/assets/{RadioGroup.stories-C8uNFxeM.js → RadioGroup.stories-De-LJkUg.js} +1 -1
  205. package/storybook-static/assets/{Scrollable-vBVn7JHY.js → Scrollable-CQ0VriMf.js} +1 -1
  206. package/storybook-static/assets/{Select-CADgLOjR.js → Select-BXxlKe2v.js} +1 -1
  207. package/storybook-static/assets/{Select-BGJrUMYq.js → Select-LKcPO0Z7.js} +1 -1
  208. package/storybook-static/assets/{Select.stories-CwLYe9m-.js → Select.stories-DHLXo13w.js} +1 -1
  209. package/storybook-static/assets/{SerializableSelect-BYjCjotc.js → SerializableSelect-BuM3dkAs.js} +1 -1
  210. package/storybook-static/assets/{SerializableSelect.stories-DlHsqn5K.js → SerializableSelect.stories-vWkW4jhX.js} +1 -1
  211. package/storybook-static/assets/{SingleDateTimeInput-CDsgpkvr.js → SingleDateTimeInput-CoFQ5YsH.js} +1 -1
  212. package/storybook-static/assets/{SingleDateTimeInput-C4_BV5HM.js → SingleDateTimeInput-Dg4Eerlb.js} +1 -1
  213. package/storybook-static/assets/{SingleDateTimeInput.stories-Bb06myx4.js → SingleDateTimeInput.stories-DPiJvWWi.js} +1 -1
  214. package/storybook-static/assets/{Slider-Gp7yCf2B.js → Slider-BSh7kV-S.js} +1 -1
  215. package/storybook-static/assets/{Slider-DNBHMBBN.js → Slider-DOvFZbXf.js} +1 -1
  216. package/storybook-static/assets/{Slider.stories-Qw74zDOU.js → Slider.stories-DFJaeUh7.js} +1 -1
  217. package/storybook-static/assets/{SliderInput-DIDd4fvb.js → SliderInput-BcRtUjB0.js} +1 -1
  218. package/storybook-static/assets/{SliderInput-m6qlhd9T.js → SliderInput-C4ihlBc-.js} +1 -1
  219. package/storybook-static/assets/{SliderInput.stories-EYZY_whc.js → SliderInput.stories-Ce_t8Ix5.js} +1 -1
  220. package/storybook-static/assets/{Sortable-DFEyDyz5.js → Sortable-BIs6lhP7.js} +1 -1
  221. package/storybook-static/assets/{Sortable.stories-BAlAYFiY.js → Sortable.stories-DQURE991.js} +1 -1
  222. package/storybook-static/assets/{Splitter-SOZZvRNs.js → Splitter-ckdXxBXg.js} +1 -1
  223. package/storybook-static/assets/{Splitter.stories-Cha1ZWaK.js → Splitter.stories-CUFNp4Tn.js} +1 -1
  224. package/storybook-static/assets/{StateSelect-Dslj_l8w.js → StateSelect-H0lz2NEb.js} +1 -1
  225. package/storybook-static/assets/{StateSelect-BJ4hoYZH.js → StateSelect-n21UcZSA.js} +1 -1
  226. package/storybook-static/assets/{StateSelect.stories-DRE5Il6q.js → StateSelect.stories-Dxuw0udu.js} +1 -1
  227. package/storybook-static/assets/{StringToggle.stories-CfSHZnUU.js → StringToggle.stories-CtyQZeTV.js} +1 -1
  228. package/storybook-static/assets/{Switch-Do7XEsXM.js → Switch-D7Zf25cb.js} +1 -1
  229. package/storybook-static/assets/{Switch-DxWpxu31.js → Switch-lqdPHHBM.js} +1 -1
  230. package/storybook-static/assets/{Switch.stories-BLl5AvS5.js → Switch.stories-Dh43AKbd.js} +1 -1
  231. package/storybook-static/assets/{Table-CoY0m4yw.js → Table-C1rPn-XQ.js} +1 -1
  232. package/storybook-static/assets/{Table.stories-DVEMEqsC.js → Table.stories-BEPbfhV-.js} +1 -1
  233. package/storybook-static/assets/{Tabs-BgzEc29K.js → Tabs-D3frsSel.js} +1 -1
  234. package/storybook-static/assets/{Tabs.stories-DhYUDtCq.js → Tabs.stories-DPuD45Yh.js} +1 -1
  235. package/storybook-static/assets/{TabsBox-C92mdkQB.js → TabsBox-CvM1qdOv.js} +1 -1
  236. package/storybook-static/assets/{TagInput-1NRpS8Ri.js → TagInput-CuEEqvZ4.js} +1 -1
  237. package/storybook-static/assets/{TagInput.stories-6n-W9h6r.js → TagInput.stories-UZgdbBXc.js} +1 -1
  238. package/storybook-static/assets/Text-kiZvmGXF.js +1 -0
  239. package/storybook-static/assets/{Textarea-BswJHD2r.js → Textarea-Bd-m6AMQ.js} +1 -1
  240. package/storybook-static/assets/{Textarea-ONyCScQY.js → Textarea-aMAWt5G7.js} +1 -1
  241. package/storybook-static/assets/{Textarea.stories-DERMMBc9.js → Textarea.stories-CPFBr-oG.js} +1 -1
  242. package/storybook-static/assets/{TimePanel-Coq1CIm5.js → TimePanel-DdPcQTGj.js} +1 -1
  243. package/storybook-static/assets/{TimePanel.stories-CFprcZqB.js → TimePanel.stories-D4OIcGjj.js} +1 -1
  244. package/storybook-static/assets/{Toggle-DSkDPzCE.js → Toggle-B0dOcoN3.js} +1 -1
  245. package/storybook-static/assets/{Toggle-Cdow7TBH.js → Toggle-CsG6nw-K.js} +1 -1
  246. package/storybook-static/assets/{Toggle.stories-ZipmLrer.js → Toggle.stories-Cg0viZ-3.js} +1 -1
  247. package/storybook-static/assets/{TreeMultiSelect-Dc8YThL9.js → TreeMultiSelect-CIZ7swZO.js} +1 -1
  248. package/storybook-static/assets/{TreeMultiSelect-B0hw5vjj.js → TreeMultiSelect-Cvrt2tVd.js} +1 -1
  249. package/storybook-static/assets/{TreeMultiSelect.stories-CSuuDWWp.js → TreeMultiSelect.stories-BuCRlJo2.js} +1 -1
  250. package/storybook-static/assets/{TreePickerBase-CwMnJlJ3.js → TreePickerBase-BmeYui_g.js} +1 -1
  251. package/storybook-static/assets/{TreeSelect-DIQQA_MU.js → TreeSelect-DYNdOo9o.js} +1 -1
  252. package/storybook-static/assets/{TreeSelect-D9ki_IER.js → TreeSelect-uqNgYOmu.js} +1 -1
  253. package/storybook-static/assets/{TreeSelect.stories-Dyl2bUAf.js → TreeSelect.stories-CcTsXgqj.js} +1 -1
  254. package/storybook-static/assets/{TreeTable-BRgeJJrs.js → TreeTable-CVeU69sr.js} +1 -1
  255. package/storybook-static/assets/{TreeTable.stories-DijudbD_.js → TreeTable.stories-wbPuT4sc.js} +1 -1
  256. package/storybook-static/assets/{blocks-DnzyqsuS.js → blocks-DJAWDNJL.js} +3 -3
  257. package/storybook-static/assets/{check-DpXCi7hS.js → check-BQjlxuuS.js} +1 -1
  258. package/storybook-static/assets/{chevron-down-Bmc7hZBq.js → chevron-down-DdaB0emH.js} +1 -1
  259. package/storybook-static/assets/{chevron-left-DtTg64Ui.js → chevron-left-DGH3zWjp.js} +1 -1
  260. package/storybook-static/assets/{chevron-right-9wEv32db.js → chevron-right-BQCoBw1U.js} +1 -1
  261. package/storybook-static/assets/{chunk-W22LQPXL-6p6Sy3YJ.js → chunk-W22LQPXL-Bg_6bTj9.js} +1 -1
  262. package/storybook-static/assets/{circle-alert-BKUGkeBR.js → circle-alert-CMkR4f70.js} +1 -1
  263. package/storybook-static/assets/{circle-check-CQXcWljV.js → circle-check-cbaoMVLN.js} +1 -1
  264. package/storybook-static/assets/{components-DSLVCkYx.js → components-Dkk47tSj.js} +3 -3
  265. package/storybook-static/assets/{contextMenu-BRCu-DVu.js → contextMenu-BqC4Sspp.js} +1 -1
  266. package/storybook-static/assets/{download-BKIUXqmB.js → download-B970bwbP.js} +1 -1
  267. package/storybook-static/assets/{floating-ui.react-D1TSIEX5.js → floating-ui.react-C_v_mn2Q.js} +1 -1
  268. package/storybook-static/assets/{foundationApi-BVlxIz18.js → foundationApi-gbfIQc-_.js} +1 -1
  269. package/storybook-static/assets/{foundationLib-C6Nzpm6H.js → foundationLib-CVJOY_Zl.js} +1 -1
  270. package/storybook-static/assets/{hooks-Dz5TIKz3.js → hooks-CaQmmGjr.js} +1 -1
  271. package/storybook-static/assets/{iframe-D8QmYZNe.css → iframe-B-mSv97o.css} +1 -1
  272. package/storybook-static/assets/iframe-BJHdWoiL.js +1 -0
  273. package/storybook-static/assets/{iframe-BLnbEFJy.js → iframe-P2lWyit5.js} +3 -3
  274. package/storybook-static/assets/{info-CvFUhHqx.js → info-DiEB7Sol.js} +1 -1
  275. package/storybook-static/assets/{odata-CsYW3Ocp.js → odata-Bd7GUMGD.js} +1 -1
  276. package/storybook-static/assets/{odataStoryFixtures-DSPGV87K.js → odataStoryFixtures-BERkpW2l.js} +1 -1
  277. package/storybook-static/assets/{react-DZwaF62V.js → react-JmKyT7SE.js} +1 -1
  278. package/storybook-static/assets/{refresh-cw-1DqDa3M1.js → refresh-cw-BH23X1DD.js} +1 -1
  279. package/storybook-static/assets/{settings-2-al-1wrC3.js → settings-2-CzsrV2MM.js} +1 -1
  280. package/storybook-static/assets/{sortable-C2PPBD_E.js → sortable-BB-dflOx.js} +1 -1
  281. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-BtAKFEHm.js → syntaxhighlighter-QEQV7K2Y-Cn17pOSq.js} +1 -1
  282. package/storybook-static/assets/{trash-2-CLd3sVAn.js → trash-2-BXS3JzUd.js} +1 -1
  283. package/storybook-static/assets/{triangle-alert-BWXLcAPv.js → triangle-alert-WCBU4otF.js} +1 -1
  284. package/storybook-static/assets/{useODataSelectBase-B3qPzSWr.js → useODataSelectBase-B8unXxru.js} +1 -1
  285. package/storybook-static/assets/{useODataTreeData-D0nwnOOl.js → useODataTreeData-DY-RbpqR.js} +1 -1
  286. package/storybook-static/assets/{usePickerQuery-Z34DN8z-.js → usePickerQuery-DY-5rS3f.js} +1 -1
  287. package/storybook-static/assets/{usePickerTriggerController--hCdDPrv.js → usePickerTriggerController-DHXXSvyS.js} +1 -1
  288. package/storybook-static/assets/{x-Eii7sm5r.js → x-3HZ4js_c.js} +1 -1
  289. package/storybook-static/iframe.html +3 -3
  290. package/storybook-static/project.json +1 -1
  291. package/dist/chunks/misc-aGQBhywJ.js.map +0 -1
  292. package/storybook-static/assets/NoData-BgIST5mW.js +0 -1
  293. package/storybook-static/assets/Option-DFJ-DfU8.css +0 -1
  294. package/storybook-static/assets/Text-CUscA7_Z.js +0 -1
  295. package/storybook-static/assets/iframe-C5xZC6P1.js +0 -1
@@ -203,7 +203,19 @@ $light-theme-defaults: (
203
203
  "--shadow-xs": 0 0 0.25em rgba(0, 0, 0, 0.15),
204
204
  "--shadow-sm": 0 0 0.25em rgba(0, 0, 0, 0.25),
205
205
  "--shadow-md": 0 0 0.5em rgba(0, 0, 0, 0.25),
206
- "--shadow-lg": 0 0 1em rgba(0, 0, 0, 0.25)
206
+ "--shadow-lg": 0 0 1em rgba(0, 0, 0, 0.25),
207
+ "--interactive-color": inherit,
208
+ "--interactive-hover-color": var(--content-0),
209
+ "--interactive-active-color": var(--content-0),
210
+ "--interactive-selected-color": var(--content-0),
211
+ "--interactive-surface": transparent,
212
+ "--interactive-hover-surface": var(--surface-accent),
213
+ "--interactive-active-surface": var(--surface-accent),
214
+ "--interactive-selected-surface": var(--surface-accent),
215
+ "--interactive-border": transparent,
216
+ "--interactive-hover-border": var(--border-accent),
217
+ "--interactive-active-border": var(--border-accent),
218
+ "--interactive-selected-border": var(--border-accent)
207
219
  ),
208
220
  accent: (
209
221
  l: 0.55,
@@ -301,7 +313,19 @@ $dark-theme-defaults: (
301
313
  "--shadow-xs": 0 0 0.25em rgba(0, 0, 0, 0.15),
302
314
  "--shadow-sm": 0 0 0.25em rgba(0, 0, 0, 0.25),
303
315
  "--shadow-md": 0 0 0.5em rgba(0, 0, 0, 0.25),
304
- "--shadow-lg": 0 0 1em rgba(0, 0, 0, 0.25)
316
+ "--shadow-lg": 0 0 1em rgba(0, 0, 0, 0.25),
317
+ "--interactive-color": inherit,
318
+ "--interactive-hover-color": var(--content-0),
319
+ "--interactive-active-color": var(--content-0),
320
+ "--interactive-selected-color": var(--content-0),
321
+ "--interactive-surface": transparent,
322
+ "--interactive-hover-surface": var(--surface-accent),
323
+ "--interactive-active-surface": var(--surface-accent),
324
+ "--interactive-selected-surface": var(--surface-accent),
325
+ "--interactive-border": transparent,
326
+ "--interactive-hover-border": var(--border-accent),
327
+ "--interactive-active-border": var(--border-accent),
328
+ "--interactive-selected-border": var(--border-accent)
305
329
  ),
306
330
  accent: (
307
331
  l: 0.7,
@@ -1,2 +1,3 @@
1
+ @forward "./theme";
1
2
  @forward "./light/default";
2
3
  @forward "./dark/default";
@@ -48,7 +48,7 @@
48
48
  background-color: var(--ss);
49
49
 
50
50
  &.interactiveSurfaceFrame {
51
- border-color: var(--ss);
51
+ border-color: var(--bs);
52
52
  }
53
53
  }
54
54
 
@@ -1,17 +1,184 @@
1
1
  @use "sass:map";
2
+ @use "sass:meta";
2
3
 
4
+ @use "../config" as stylesConfig;
3
5
  @use "../mixins/" as *;
4
6
 
5
- @mixin generated-theme-palette($theme, $mode) {
7
+ @function _theme-base($mode) {
8
+ @if $mode == light {
9
+ @return stylesConfig.$light-theme;
10
+ }
11
+
12
+ @if $mode == dark {
13
+ @return stylesConfig.$dark-theme;
14
+ }
15
+
16
+ @error "Цветовая схема темы должна иметь значение light или dark, получено: #{$mode}.";
17
+ }
18
+
19
+ @function _scale-value($scale, $name, $fallback) {
20
+ @if meta.type-of($scale) == map and map.has-key($scale, $name) {
21
+ @return map.get($scale, $name);
22
+ }
23
+
24
+ @return $fallback;
25
+ }
26
+
27
+ @mixin _exact-accent-palette($accent) {
28
+ --content-accent: var(--hc-content-accent, #{map.get($accent, content)});
29
+ --surface-accent: var(--hc-surface-accent, #{map.get($accent, surface)});
30
+ --border-accent: var(--hc-border-accent, #{map.get($accent, border)});
31
+ }
32
+
33
+ @mixin _exact-status-palette($name, $status) {
34
+ $text: map.get($status, text);
35
+ $fill: map.get($status, fill);
36
+ $border: map.get($status, border);
37
+ $text-base: map.get($text, base);
38
+ $text-hover: _scale-value($text, hover, $text-base);
39
+ $text-active: _scale-value($text, active, $text-hover);
40
+ $fill-base: _scale-value($fill, base, $text-base);
41
+ $fill-hover: _scale-value($fill, hover, $fill-base);
42
+ $fill-active: _scale-value($fill, active, $fill-hover);
43
+ $fill-on: _scale-value($fill, on-fill, var(--surface-0));
44
+ $border-base: _scale-value($border, base, $text-base);
45
+ $border-hover: _scale-value($border, hover, $text-hover);
46
+ $border-active: _scale-value($border, active, $text-active);
47
+ $border-focus: _scale-value($border, focus, $border-active);
48
+
49
+ --status-#{$name}-text: var(--hc-status-#{$name}-text, #{$text-base});
50
+ --status-#{$name}-text-hover: var(--hc-status-#{$name}-text, #{$text-hover});
51
+ --status-#{$name}-text-active: var(--hc-status-#{$name}-text, #{$text-active});
52
+
53
+ --status-#{$name}-fill: var(--hc-status-#{$name}-fill, #{$fill-base});
54
+ --status-#{$name}-fill-hover: var(--hc-status-#{$name}-fill, #{$fill-hover});
55
+ --status-#{$name}-fill-active: var(--hc-status-#{$name}-fill, #{$fill-active});
56
+ --status-#{$name}-on-fill: var(--hc-status-#{$name}-on-fill, #{$fill-on});
57
+
58
+ @if map.has-key($fill, soft) {
59
+ --status-#{$name}-soft: var(--hc-status-#{$name}-soft, #{map.get($fill, soft)});
60
+ } @else {
61
+ --status-#{$name}-soft: var(--hc-status-#{$name}-soft, color-mix(in srgb, var(--status-#{$name}-fill) 12%, var(--surface-0)));
62
+ }
63
+
64
+ --status-#{$name}-border: var(--hc-status-#{$name}-border, #{$border-base});
65
+ --status-#{$name}-border-hover: var(--hc-status-#{$name}-border, #{$border-hover});
66
+ --status-#{$name}-border-active: var(--hc-status-#{$name}-border, #{$border-active});
67
+ --status-#{$name}-border-focus: var(--hc-status-#{$name}-border, #{$border-focus});
68
+
69
+ @if $name == neutral {
70
+ --border-0: var(--hc-border, #{$border-base});
71
+ --border-1: var(--hc-border, #{$border-hover});
72
+ --border-2: var(--hc-border, #{$border-active});
73
+ --border-focus: var(--hc-border-focus, #{$border-focus});
74
+ }
75
+ }
76
+
77
+ @function _status-overridden($status-overrides, $name) {
78
+ @return meta.type-of($status-overrides) == map and map.has-key($status-overrides, $name);
79
+ }
80
+
81
+ @mixin _adaptive-custom-statuses($mode, $status-overrides) {
82
+ @if not _status-overridden($status-overrides, brand) {
83
+ $brand-on-fill: var(--surface-0);
84
+
85
+ @if $mode == light {
86
+ $brand-on-fill: var(--content-0);
87
+ }
88
+
89
+ @include _exact-status-palette(
90
+ brand,
91
+ (
92
+ text: (
93
+ base: var(--content-accent)
94
+ ),
95
+ fill: (
96
+ base: var(--content-accent),
97
+ hover: var(--border-accent),
98
+ active: var(--border-accent),
99
+ on-fill: $brand-on-fill,
100
+ soft: var(--surface-accent)
101
+ ),
102
+ border: (
103
+ base: var(--border-accent)
104
+ )
105
+ )
106
+ );
107
+ }
108
+
109
+ @if not _status-overridden($status-overrides, neutral) {
110
+ @include _exact-status-palette(
111
+ neutral,
112
+ (
113
+ text: (
114
+ base: var(--content-0),
115
+ hover: var(--content-1),
116
+ active: var(--content-0)
117
+ ),
118
+ fill: (
119
+ base: var(--content-0),
120
+ hover: var(--content-1),
121
+ active: var(--content-0),
122
+ on-fill: var(--surface-0),
123
+ soft: var(--surface-1)
124
+ ),
125
+ border: (
126
+ base: var(--border-0),
127
+ hover: var(--border-1),
128
+ active: var(--border-2),
129
+ focus: var(--focus-ring)
130
+ )
131
+ )
132
+ );
133
+ }
134
+
135
+ @each $name in error, warning, success, info {
136
+ @if not _status-overridden($status-overrides, $name) {
137
+ // Плоские exact-token overrides меняют text/fill ниже по каскаду,
138
+ // поэтому производные значения связываются через CSS variables, а не копируют baseline.
139
+ --status-#{$name}-soft: var(--hc-status-#{$name}-soft, color-mix(in srgb, var(--status-#{$name}-fill) 12%, var(--surface-0)));
140
+ --status-#{$name}-border: var(--hc-status-#{$name}-border, var(--status-#{$name}-text));
141
+ --status-#{$name}-border-hover: var(--hc-status-#{$name}-border, var(--status-#{$name}-text-hover));
142
+ --status-#{$name}-border-active: var(--hc-status-#{$name}-border, var(--status-#{$name}-text-active));
143
+ --status-#{$name}-border-focus: var(--hc-status-#{$name}-border, var(--status-#{$name}-text-active));
144
+ }
145
+ }
146
+ }
147
+
148
+ @mixin _theme-palette($theme, $mode) {
6
149
  $accent: map.get($theme, accent);
7
150
 
8
- @include generate-accent(map.get($accent, l), map.get($accent, c), map.get($accent, h), $mode);
151
+ @if map.has-key($accent, content) {
152
+ @include _exact-accent-palette($accent);
153
+ } @else {
154
+ @include generate-accent(map.get($accent, l), map.get($accent, c), map.get($accent, h), $mode);
155
+ }
9
156
 
10
157
  @each $name, $status in map.get($theme, status) {
11
- $fill: map.get($status, fill);
12
- $border: map.get($status, border);
158
+ @if map.has-key($status, text) {
159
+ @include _exact-status-palette($name, $status);
160
+ } @else {
161
+ $fill: map.get($status, fill);
162
+ $border: map.get($status, border);
13
163
 
14
- @include generate-status-fill($name, map.get($fill, l), map.get($fill, c), map.get($fill, h), $mode);
15
- @include generate-status-border($name, map.get($border, l), map.get($border, c), map.get($border, h), $mode);
164
+ @include generate-status-fill($name, map.get($fill, l), map.get($fill, c), map.get($fill, h), $mode);
165
+ @include generate-status-border($name, map.get($border, l), map.get($border, c), map.get($border, h), $mode);
166
+ }
16
167
  }
17
168
  }
169
+
170
+ /// Формирует полную тему из настроенного baseline выбранной схемы и точечных переопределений.
171
+ /// `accent` и элементы `status` принимают либо OKLCH seed `l/c/h`, либо точные semantic scales;
172
+ /// плоская карта `tokens` выводится последней и остаётся escape hatch для любого CSS custom property.
173
+ @mixin theme($mode, $overrides: ()) {
174
+ $resolved-theme: map.deep-merge(_theme-base($mode), $overrides);
175
+ $status-overrides: map.get($overrides, status);
176
+
177
+ @include _theme-palette($resolved-theme, $mode);
178
+
179
+ @if $overrides != () {
180
+ @include _adaptive-custom-statuses($mode, $status-overrides);
181
+ }
182
+
183
+ @include stylesConfig.emit-declarations(stylesConfig.theme-tokens($resolved-theme));
184
+ }
@@ -1,7 +1,5 @@
1
- @use "../../config" as stylesConfig;
2
1
  @use "../theme" as theme;
3
2
 
4
3
  @mixin dark-theme {
5
- @include stylesConfig.emit-declarations(stylesConfig.theme-tokens(stylesConfig.$dark-theme));
6
- @include theme.generated-theme-palette(stylesConfig.$dark-theme, dark);
4
+ @include theme.theme(dark);
7
5
  }
@@ -1,7 +1,5 @@
1
- @use "../../config" as stylesConfig;
2
1
  @use "../theme" as theme;
3
2
 
4
3
  @mixin light-theme {
5
- @include stylesConfig.emit-declarations(stylesConfig.theme-tokens(stylesConfig.$light-theme));
6
- @include theme.generated-theme-palette(stylesConfig.$light-theme, light);
4
+ @include theme.theme(light);
7
5
  }
@@ -0,0 +1,110 @@
1
+ import { compileString } from "sass-embedded";
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ import { resolve } from "node:path";
5
+
6
+ /**
7
+ * Компилирует публичный themes entrypoint с точной палитрой host-приложения.
8
+ * Тест защищает порядок слоёв: baseline обязан заполнить контракт, а exact values — победить генератор.
9
+ */
10
+ function compileExactTheme(): string {
11
+ return compileString(
12
+ `@use "themes" as foundationThemes;
13
+
14
+ .custom-theme {
15
+ @include foundationThemes.theme(light, (
16
+ tokens: (
17
+ "--surface-0": #fefefe,
18
+ "--status-error-text": #990011
19
+ ),
20
+ accent: (
21
+ content: #123456,
22
+ surface: #ddeeff,
23
+ border: #345678
24
+ ),
25
+ status: (
26
+ error: (
27
+ text: (
28
+ base: #aa0011,
29
+ hover: #bb1122,
30
+ active: #880000
31
+ ),
32
+ fill: (
33
+ base: #cc2233,
34
+ hover: #dd3344,
35
+ active: #aa1122,
36
+ on-fill: #ffffff
37
+ )
38
+ )
39
+ )
40
+ ));
41
+ }`,
42
+ {
43
+ loadPaths: [resolve("src/styles")],
44
+ style: "expanded"
45
+ }
46
+ ).css;
47
+ }
48
+
49
+ describe("theme", () => {
50
+ it("наследует полный baseline и принимает точные accent/status scales", () => {
51
+ const css = compileExactTheme();
52
+
53
+ expect(css).toContain("--surface-1: var(--hc-surface, #f8f8f9)");
54
+ expect(css).toContain("--content-accent: var(--hc-content-accent, #123456)");
55
+ expect(css).toContain("--status-error-text-hover: var(--hc-status-error-text, #bb1122)");
56
+ expect(css).toContain("--status-error-border-hover: var(--hc-status-error-border, #bb1122)");
57
+ expect(css).toMatch(
58
+ /--status-error-soft:\s*var\(\s*--hc-status-error-soft,\s*color-mix\(in srgb, var\(--status-error-fill\) 12%, var\(--surface-0\)\)\s*\)/
59
+ );
60
+ });
61
+
62
+ it("выводит плоские token overrides после сгенерированной палитры", () => {
63
+ const css = compileExactTheme();
64
+ const generatedTextIndex = css.indexOf("--status-error-text: var(--hc-status-error-text, #aa0011)");
65
+ const exactTokenIndex = css.lastIndexOf("--status-error-text: #990011");
66
+
67
+ expect(generatedTextIndex).toBeGreaterThanOrEqual(0);
68
+ expect(exactTokenIndex).toBeGreaterThan(generatedTextIndex);
69
+ expect(css).toContain("--surface-0: #fefefe");
70
+ });
71
+
72
+ it("связывает brand, neutral и недостающие status tokens с точной палитрой", () => {
73
+ const css = compileString(
74
+ `@use "themes" as foundationThemes;
75
+
76
+ .custom-theme {
77
+ @include foundationThemes.theme(dark, (
78
+ tokens: (
79
+ "--content-accent": #00ffaa,
80
+ "--surface-accent": #003322,
81
+ "--border-accent": #00cc88,
82
+ "--status-error-text": #ff6677,
83
+ "--status-error-text-hover": #ff8899,
84
+ "--status-error-text-active": #dd4455,
85
+ "--status-error-fill": #991122
86
+ )
87
+ ));
88
+ }`,
89
+ {
90
+ loadPaths: [resolve("src/styles")],
91
+ style: "expanded"
92
+ }
93
+ ).css;
94
+
95
+ expect(css).toContain("--status-brand-fill: var(--hc-status-brand-fill, var(--content-accent))");
96
+ expect(css).toContain("--status-neutral-border-focus: var(--hc-status-neutral-border, var(--focus-ring))");
97
+ expect(css).toContain("--status-error-border-hover: var(--hc-status-error-border, var(--status-error-text-hover))");
98
+ });
99
+ });
100
+
101
+ describe("interactive surface", () => {
102
+ it("применяет отдельный border token выбранного состояния", () => {
103
+ const css = compileString('@use "interactive-surface";', {
104
+ loadPaths: [resolve("src/styles/themes")],
105
+ style: "expanded"
106
+ }).css;
107
+
108
+ expect(css).toMatch(/\.interactiveSurface\[data-selected=true\]\.interactiveSurfaceFrame\s*\{\s*border-color: var\(--bs\);\s*\}/);
109
+ });
110
+ });
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BLnbEFJy.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DnzyqsuS.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Badge.stories-CGi08yx3.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-P2lWyit5.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DJAWDNJL.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Badge.stories-hEpGMTKr.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(u,{children:`Badge`}),`
3
3
  `,(0,S.jsx)(o,{children:`Компактная текстовая метка для статусов, категорий, фильтров и коротких служебных пометок`}),`
4
4
  `,(0,S.jsx)(t.p,{children:`Badge подходит для коротких подписей, которые должны быстро читаться и не перегружать интерфейс:`}),`
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-BLnbEFJy.js";import{i,n as a,r as o,t as s}from"./BadgeList-DHWViMDX.js";var c=t({Appearances:()=>h,Basic:()=>p,RemovableList:()=>_,Sizes:()=>g,Tones:()=>m,__namedExportsOrder:()=>v,default:()=>f}),l,u,d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{l=n(),i(),a(),u=r(),{useArgs:d}=__STORYBOOK_MODULE_PREVIEW_API__,f={title:`UI/Badge`,component:o,args:{children:`Новый`,size:`md`,tone:`info`,appearance:`solid`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текст внутри бейджа.`,control:`text`},size:{description:`Размер бейджа.`,control:`inline-radio`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон бейджа.`,control:`inline-radio`,options:[`neutral`,`brand`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1}}},p={render:function(){let[e]=d();return(0,u.jsx)(o,{...e})}},m={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,u.jsx)(o,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,u.jsx)(o,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,u.jsx)(o,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,u.jsx)(o,{tone:`info`,appearance:`solid`,children:`Информация`})]})},h={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,u.jsx)(o,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,u.jsx)(o,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},g={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{size:`xs`,children:`Extra Small`}),(0,u.jsx)(o,{size:`sm`,children:`Small`}),(0,u.jsx)(o,{size:`md`,children:`Medium`}),(0,u.jsx)(o,{size:`lg`,children:`Large`}),(0,u.jsx)(o,{size:`xl`,children:`Extra Large`})]})},_={render:()=>{let[e,t]=(0,l.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,u.jsx)(s,{children:e.map(e=>(0,u.jsx)(o,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-P2lWyit5.js";import{i,n as a,r as o,t as s}from"./BadgeList-BkSAtS2i.js";var c=t({Appearances:()=>h,Basic:()=>p,RemovableList:()=>_,Sizes:()=>g,Tones:()=>m,__namedExportsOrder:()=>v,default:()=>f}),l,u,d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{l=n(),i(),a(),u=r(),{useArgs:d}=__STORYBOOK_MODULE_PREVIEW_API__,f={title:`UI/Badge`,component:o,args:{children:`Новый`,size:`md`,tone:`info`,appearance:`solid`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текст внутри бейджа.`,control:`text`},size:{description:`Размер бейджа.`,control:`inline-radio`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон бейджа.`,control:`inline-radio`,options:[`neutral`,`brand`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1}}},p={render:function(){let[e]=d();return(0,u.jsx)(o,{...e})}},m={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,u.jsx)(o,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,u.jsx)(o,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,u.jsx)(o,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,u.jsx)(o,{tone:`info`,appearance:`solid`,children:`Информация`})]})},h={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,u.jsx)(o,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,u.jsx)(o,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,u.jsx)(o,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},g={render:()=>(0,u.jsxs)(s,{children:[(0,u.jsx)(o,{size:`xs`,children:`Extra Small`}),(0,u.jsx)(o,{size:`sm`,children:`Small`}),(0,u.jsx)(o,{size:`md`,children:`Medium`}),(0,u.jsx)(o,{size:`lg`,children:`Large`}),(0,u.jsx)(o,{size:`xl`,children:`Extra Large`})]})},_={render:()=>{let[e,t]=(0,l.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,u.jsx)(s,{children:e.map(e=>(0,u.jsx)(o,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render() {
3
3
  const [args] = useArgs<BadgeStoryArgs>();
4
4
  return <Badge {...args} />;
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-Eii7sm5r.js";import{n as i}from"./iframe-BLnbEFJy.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{a as s,l as c}from"./array-D-_yMMUK-BQ0uu1hZ.js";import{n as l,t as u}from"./FloatingPopover-BBuuq7e_.js";import{a as d,i as f,r as p,t as m}from"./uiClasses-Bz6cvlDQ.js";import{n as h,t as g}from"./FlexContainer-BWyPlTMB.js";function _({maxChar:e,placement:t=`left`,closeDelay:n=0,maxWidth:r,children:i,block:a,state:o,textWrap:s,textWrapProps:l}){let d=c(i);if(!d.length||e&&d.length<e)return(0,v.jsx)(`span`,{children:d});let f=s??`div`,p={style:{display:a?`block`:`inline-block`,width:e?`${e-3}ch`:`auto`},className:`textOverflow`},m={...l,...p,style:{...l?.style,...p.style},className:[l?.className,p.className].filter(Boolean).join(` `)};return(0,v.jsx)(u,{state:o,placement:t,openOnHover:!0,content:d,closeDelay:n,maxWidth:r,children:(0,v.jsx)(f,{...m,children:d})})}var v;function y(){return(y=e((()=>{s(),l(),v=i(),_.__docgenInfo={description:``,methods:[],displayName:`TextOverflow`,props:{children:{required:!0,tsType:{name:`string`},description:``},maxChar:{required:!1,tsType:{name:`number`},description:``},maxWidth:{required:!1,tsType:{name:`number`},description:`Максимальная ширина тултипа в em.`},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"left"`,computed:!1}},closeDelay:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0`,computed:!1}},block:{required:!1,tsType:{name:`literal`,value:`true`},description:`Для работы text-overflow элемент обязан быть блочным или inline-block.
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-3HZ4js_c.js";import{n as i}from"./iframe-P2lWyit5.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{a as s,l as c}from"./array-D-_yMMUK-BQ0uu1hZ.js";import{n as l,t as u}from"./FloatingPopover-B3nQlBso.js";import{a as d,i as f,r as p,t as m}from"./uiClasses-Bz6cvlDQ.js";import{n as h,t as g}from"./FlexContainer-BWyPlTMB.js";function _({maxChar:e,placement:t=`left`,closeDelay:n=0,maxWidth:r,children:i,block:a,state:o,textWrap:s,textWrapProps:l}){let d=c(i);if(!d.length||e&&d.length<e)return(0,v.jsx)(`span`,{children:d});let f=s??`div`,p={style:{display:a?`block`:`inline-block`,width:e?`${e-3}ch`:`auto`},className:`textOverflow`},m={...l,...p,style:{...l?.style,...p.style},className:[l?.className,p.className].filter(Boolean).join(` `)};return(0,v.jsx)(u,{state:o,placement:t,openOnHover:!0,content:d,closeDelay:n,maxWidth:r,children:(0,v.jsx)(f,{...m,children:d})})}var v;function y(){return(y=e((()=>{s(),l(),v=i(),_.__docgenInfo={description:``,methods:[],displayName:`TextOverflow`,props:{children:{required:!0,tsType:{name:`string`},description:``},maxChar:{required:!1,tsType:{name:`number`},description:``},maxWidth:{required:!1,tsType:{name:`number`},description:`Максимальная ширина тултипа в em.`},placement:{required:!1,tsType:{name:`Placement`},description:``,defaultValue:{value:`"left"`,computed:!1}},closeDelay:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`0`,computed:!1}},block:{required:!1,tsType:{name:`literal`,value:`true`},description:`Для работы text-overflow элемент обязан быть блочным или inline-block.
2
2
  Если в качестве обёртки передается инлайновый компонент, то он будет
3
3
  перезаписан через стили на display: block или inline-block в зависимости
4
4
  от установки данного пропса.`},state:{required:!1,tsType:{name:`union`,raw:`"information" | "error" | "warning" | "success" | "negative"`,elements:[{name:`literal`,value:`"information"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"negative"`}]},description:``},textWrap:{required:!1,tsType:{name:`T`},description:``},textWrapProps:{required:!1,tsType:{name:`Omit`,elements:[{name:`ComponentProps`,elements:[{name:`T`}],raw:`ComponentProps<T>`},{name:`literal`,value:`"children"`}],raw:`Omit<ComponentProps<T>, "children">`},description:``}}}})))()}var b,x,S,C,w,T,E,D,O,k;function A(){return(A=e((()=>{b=`qBtmnH`,x=`p-HsHY`,S=`u9tQAE`,C=`FRScRz`,w=`W13uQO`,T=`_3IRcM9`,E=`R3ybI7`,D=`DdWAaC`,O=`_5cXBQF`,k={badge:b,passive:x,sizeXs:S,sizeSm:C,sizeMd:w,sizeLg:T,sizeXl:E,content:D,removeButton:O}})))()}function j({children:e,size:t=`sm`,tone:n,appearance:i,className:o,onRemove:s}){let c=n??`neutral`,l=d({tone:n,appearance:i,fallbackTone:c,fallbackAppearance:c===`neutral`?`outline`:`solid`});return(0,M.jsxs)(`div`,{className:a(k.badge,N[t],p(l.tone),m(l.appearance),!s&&k.passive,o),children:[(0,M.jsx)(_,{maxChar:25,placement:`top`,block:!0,textWrapProps:{className:k.content},children:String(e)}),s&&(0,M.jsx)(`button`,{type:`button`,onClick:s,className:k.removeButton,"aria-label":`Удалить бейдж`,"data-ui":`badge-remove-button`,"data-action":`remove-badge`,children:(0,M.jsx)(r,{})})]})}var M,N;function P(){return(P=e((()=>{o(),n(),y(),f(),A(),M=i(),N={xs:k.sizeXs,sm:k.sizeSm,md:k.sizeMd,lg:k.sizeLg,xl:k.sizeXl},j.__docgenInfo={description:`Компактный индикатор для статусов, категорий и коротких служебных меток.`,methods:[],displayName:`Badge`,props:{children:{required:!0,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``,defaultValue:{value:`"sm"`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``},appearance:{required:!1,tsType:{name:`union`,raw:`"solid" | "outline" | "ghost" | "transparent"`,elements:[{name:`literal`,value:`"solid"`},{name:`literal`,value:`"outline"`},{name:`literal`,value:`"ghost"`},{name:`literal`,value:`"transparent"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},onRemove:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}})))()}function F({children:e}){return(0,L.jsx)(g,{inline:!0,wrap:!0,gap:`sm`,align:`baseline`,children:I.Children.map(e,(e,t)=>(0,L.jsx)(I.Fragment,{children:e},t))})}var I,L;function R(){return(R=e((()=>{I=t(),h(),L=i(),F.__docgenInfo={description:"Контейнер для группы `Badge`, который выстраивает элементы в единый список с предсказуемыми отступами. Используется для компактного вывода набора меток или фильтров.",methods:[],displayName:`BadgeList`,props:{children:{required:!0,tsType:{name:`Array`,elements:[{name:`ReactElement`,elements:[{name:`union`,raw:`typeof Badge | null | undefined | false`,elements:[{name:`Badge`},{name:`null`},{name:`undefined`},{name:`literal`,value:`false`}]}],raw:`ReactElement<typeof Badge | null | undefined | false>`}],raw:`ReactElement<typeof Badge | null | undefined | false>[]`},description:``}}}})))()}export{P as i,R as n,j as r,F as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BLnbEFJy.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DnzyqsuS.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Button.stories-BZVTOvJA.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-P2lWyit5.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DJAWDNJL.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Button.stories-BaHXZdjg.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:h,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`Button`}),`
3
3
  `,(0,x.jsx)(o,{children:`Базовая action-кнопка дизайн-системы для пользовательских действий, подтверждений и быстрых операций`}),`
4
4
  `,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`Button`}),` используется как универсальная кнопка интерфейса: в формах, тулбарах, модальных окнах, карточках, таблицах и компактных icon-only сценариях.`]}),`
@@ -1,4 +1,4 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-BLnbEFJy.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./FloatingPopover-BBuuq7e_.js";import{n as c,t as l}from"./ui.module-31LPbZGK.js";import{a as u,i as d,r as f,t as p}from"./uiClasses-Bz6cvlDQ.js";var m,h,g,_,v;function y(){return(y=t((()=>{m=`wLOHwj`,h=`lFsM-Y`,g=`LPob63`,_=`tsaGtv`,v={button:m,iconOnly:h,buttonInner:g,buttonIcon:_}})))()}var b,x,S;function C(){return(C=t((()=>{b=e(n(),1),a(),o(),l(),d(),y(),x=r(),S=(0,b.forwardRef)(function({children:e,disabled:t,className:n,icon:r,iconEnd:a,title:o,variant:l,tone:d,appearance:m,type:h=`button`,"aria-label":g,..._},y){let S=b.Children.count(e)>0,C=!!r&&!S,w=u({variant:l,tone:d,appearance:m,fallbackAppearance:d&&d!==`neutral`?`solid`:`outline`}),T=C?g??o:g,E=(0,x.jsx)(`button`,{..._,ref:y,type:h,disabled:t,"aria-label":T,className:i(c.uiElement,c.uiInputControl,v.button,f(w.tone),p(w.appearance),C?v.iconOnly:``,`textNoWrap`,n??``),children:(0,x.jsxs)(`span`,{className:v.buttonInner,children:[r&&!a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r}),S&&(0,x.jsx)(`span`,{className:`flexEllipsis`,children:e}),r&&a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r})]})});return o?(0,x.jsx)(s,{placement:`bottom`,tooltip:!0,content:(0,x.jsx)(x.Fragment,{children:o}),children:E}):E}),S.__docgenInfo={description:'Базовая кнопка дизайн-системы для пользовательских действий.\nПоддерживает состояния, tone + appearance, иконки и безопасный `type="button"` по умолчанию.',methods:[],displayName:`Button`,props:{variant:{required:!1,tsType:{name:`union`,raw:`| "transparent"
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-P2lWyit5.js";import{a as i,i as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./FloatingPopover-B3nQlBso.js";import{n as c,t as l}from"./ui.module-31LPbZGK.js";import{a as u,i as d,r as f,t as p}from"./uiClasses-Bz6cvlDQ.js";var m,h,g,_,v;function y(){return(y=t((()=>{m=`wLOHwj`,h=`lFsM-Y`,g=`LPob63`,_=`tsaGtv`,v={button:m,iconOnly:h,buttonInner:g,buttonIcon:_}})))()}var b,x,S;function C(){return(C=t((()=>{b=e(n(),1),a(),o(),l(),d(),y(),x=r(),S=(0,b.forwardRef)(function({children:e,disabled:t,className:n,icon:r,iconEnd:a,title:o,variant:l,tone:d,appearance:m,type:h=`button`,"aria-label":g,..._},y){let S=b.Children.count(e)>0,C=!!r&&!S,w=u({variant:l,tone:d,appearance:m,fallbackAppearance:d&&d!==`neutral`?`solid`:`outline`}),T=C?g??o:g,E=(0,x.jsx)(`button`,{..._,ref:y,type:h,disabled:t,"aria-label":T,className:i(c.uiElement,c.uiInputControl,v.button,f(w.tone),p(w.appearance),C?v.iconOnly:``,`textNoWrap`,n??``),children:(0,x.jsxs)(`span`,{className:v.buttonInner,children:[r&&!a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r}),S&&(0,x.jsx)(`span`,{className:`flexEllipsis`,children:e}),r&&a&&(0,x.jsx)(`span`,{"aria-hidden":`true`,className:v.buttonIcon,children:r})]})});return o?(0,x.jsx)(s,{placement:`bottom`,tooltip:!0,content:(0,x.jsx)(x.Fragment,{children:o}),children:E}):E}),S.__docgenInfo={description:'Базовая кнопка дизайн-системы для пользовательских действий.\nПоддерживает состояния, tone + appearance, иконки и безопасный `type="button"` по умолчанию.',methods:[],displayName:`Button`,props:{variant:{required:!1,tsType:{name:`union`,raw:`| "transparent"
2
2
  | "ghost"
3
3
  | "neutral"
4
4
  | "brand"
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./check-DpXCi7hS.js";import{n as i,t as a}from"./download-BKIUXqmB.js";import{i as o,n as s,r as c}from"./iframe-BLnbEFJy.js";import{n as l,t as u}from"./Button-CLqpsfhx.js";var d,f;function p(){return(p=e((()=>{o(),d=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]],f=c(`bell`,d)})))()}var m,h;function g(){return(g=e((()=>{o(),m=[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]],h=c(`plus`,m)})))()}var _=t({Basic:()=>x,ComposableScheme:()=>C,Variants:()=>S,WithIcons:()=>w,__namedExportsOrder:()=>T,default:()=>b}),v,y,b,x,S,C,w,T;function E(){return(E=e((()=>{p(),n(),i(),g(),l(),v=s(),{useArgs:y}=__STORYBOOK_MODULE_PREVIEW_API__,b={title:`UI/Button`,component:u,args:{children:`Действие`,variant:`neutralOutline`,disabled:!1,iconEnd:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текстовое содержимое кнопки.`,control:`text`},variant:{description:"Готовая схема для обратной совместимости. Если заданы `tone` или `appearance`, они имеют приоритет.",control:`select`,options:[`neutral`,`neutralOutline`,`ghost`,`brand`,`error`,`warning`,`success`,`info`,`brandOutline`,`errorOutline`,`warningOutline`,`successOutline`,`infoOutline`,`transparent`]},tone:{description:`Цветовой тон кнопки.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]},appearance:{description:`Визуальная форма кнопки.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},icon:{description:`Иконка слева или справа от текста.`,control:!1},iconEnd:{description:`Перемещает иконку в конец кнопки.`,control:`boolean`},type:{description:"Тип нативной кнопки; по умолчанию безопасный `button`.",control:`select`,options:[`button`,`submit`,`reset`]},disabled:{description:`Блокирует нажатие.`,control:`boolean`}}},x={render:function(){let[e]=y();return(0,v.jsx)(u,{...e})}},S={render:()=>(0,v.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,v.jsx)(u,{variant:`neutral`,children:`Neutral Solid`}),(0,v.jsx)(u,{variant:`neutralOutline`,children:`Neutral Outline`}),(0,v.jsx)(u,{variant:`ghost`,children:`Ghost`}),(0,v.jsx)(u,{variant:`brand`,children:`Brand Solid`}),(0,v.jsx)(u,{variant:`brandOutline`,children:`Brand Outline`}),(0,v.jsx)(u,{variant:`info`,children:`Info Solid`}),(0,v.jsx)(u,{variant:`success`,children:`Success Solid`}),(0,v.jsx)(u,{variant:`warning`,children:`Warning Solid`}),(0,v.jsx)(u,{variant:`error`,children:`Error Solid`}),(0,v.jsx)(u,{variant:`infoOutline`,children:`Info Outline`}),(0,v.jsx)(u,{variant:`successOutline`,children:`Success Outline`}),(0,v.jsx)(u,{variant:`warningOutline`,children:`Warning Outline`}),(0,v.jsx)(u,{variant:`errorOutline`,children:`Error Outline`}),(0,v.jsx)(u,{variant:`transparent`,children:`Transparent`})]}),args:{children:`Действие`}},C={render:()=>(0,v.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,v.jsx)(u,{tone:`neutral`,appearance:`solid`,children:`Neutral Solid`}),(0,v.jsx)(u,{tone:`neutral`,appearance:`outline`,children:`Neutral Outline`}),(0,v.jsx)(u,{tone:`neutral`,appearance:`ghost`,children:`Neutral Ghost`}),(0,v.jsx)(u,{tone:`brand`,appearance:`solid`,children:`Brand Solid`}),(0,v.jsx)(u,{tone:`brand`,appearance:`outline`,children:`Brand Outline`}),(0,v.jsx)(u,{tone:`brand`,appearance:`ghost`,children:`Brand Ghost`}),(0,v.jsx)(u,{tone:`brand`,appearance:`transparent`,children:`Brand Transparent`}),(0,v.jsx)(u,{tone:`info`,appearance:`outline`,children:`Info Outline`}),(0,v.jsx)(u,{tone:`success`,appearance:`solid`,children:`Success Solid`}),(0,v.jsx)(u,{tone:`error`,appearance:`transparent`,children:`Error Transparent`})]})},w={render:()=>(0,v.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[(0,v.jsx)(u,{icon:(0,v.jsx)(a,{}),children:`Скачать`}),(0,v.jsx)(u,{icon:(0,v.jsx)(h,{}),tone:`info`,appearance:`solid`,children:`Создать`}),(0,v.jsx)(u,{icon:(0,v.jsx)(r,{}),iconEnd:!0,tone:`success`,appearance:`solid`,children:`Подтвердить`}),(0,v.jsx)(u,{icon:(0,v.jsx)(f,{}),title:`Уведомления`})]}),args:{children:`Действие`}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n,t as r}from"./check-BQjlxuuS.js";import{n as i,t as a}from"./download-B970bwbP.js";import{i as o,n as s,r as c}from"./iframe-P2lWyit5.js";import{n as l,t as u}from"./Button-BM6kIoG9.js";var d,f;function p(){return(p=e((()=>{o(),d=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]],f=c(`bell`,d)})))()}var m,h;function g(){return(g=e((()=>{o(),m=[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]],h=c(`plus`,m)})))()}var _=t({Basic:()=>x,ComposableScheme:()=>C,Variants:()=>S,WithIcons:()=>w,__namedExportsOrder:()=>T,default:()=>b}),v,y,b,x,S,C,w,T;function E(){return(E=e((()=>{p(),n(),i(),g(),l(),v=s(),{useArgs:y}=__STORYBOOK_MODULE_PREVIEW_API__,b={title:`UI/Button`,component:u,args:{children:`Действие`,variant:`neutralOutline`,disabled:!1,iconEnd:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текстовое содержимое кнопки.`,control:`text`},variant:{description:"Готовая схема для обратной совместимости. Если заданы `tone` или `appearance`, они имеют приоритет.",control:`select`,options:[`neutral`,`neutralOutline`,`ghost`,`brand`,`error`,`warning`,`success`,`info`,`brandOutline`,`errorOutline`,`warningOutline`,`successOutline`,`infoOutline`,`transparent`]},tone:{description:`Цветовой тон кнопки.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]},appearance:{description:`Визуальная форма кнопки.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},icon:{description:`Иконка слева или справа от текста.`,control:!1},iconEnd:{description:`Перемещает иконку в конец кнопки.`,control:`boolean`},type:{description:"Тип нативной кнопки; по умолчанию безопасный `button`.",control:`select`,options:[`button`,`submit`,`reset`]},disabled:{description:`Блокирует нажатие.`,control:`boolean`}}},x={render:function(){let[e]=y();return(0,v.jsx)(u,{...e})}},S={render:()=>(0,v.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,v.jsx)(u,{variant:`neutral`,children:`Neutral Solid`}),(0,v.jsx)(u,{variant:`neutralOutline`,children:`Neutral Outline`}),(0,v.jsx)(u,{variant:`ghost`,children:`Ghost`}),(0,v.jsx)(u,{variant:`brand`,children:`Brand Solid`}),(0,v.jsx)(u,{variant:`brandOutline`,children:`Brand Outline`}),(0,v.jsx)(u,{variant:`info`,children:`Info Solid`}),(0,v.jsx)(u,{variant:`success`,children:`Success Solid`}),(0,v.jsx)(u,{variant:`warning`,children:`Warning Solid`}),(0,v.jsx)(u,{variant:`error`,children:`Error Solid`}),(0,v.jsx)(u,{variant:`infoOutline`,children:`Info Outline`}),(0,v.jsx)(u,{variant:`successOutline`,children:`Success Outline`}),(0,v.jsx)(u,{variant:`warningOutline`,children:`Warning Outline`}),(0,v.jsx)(u,{variant:`errorOutline`,children:`Error Outline`}),(0,v.jsx)(u,{variant:`transparent`,children:`Transparent`})]}),args:{children:`Действие`}},C={render:()=>(0,v.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,v.jsx)(u,{tone:`neutral`,appearance:`solid`,children:`Neutral Solid`}),(0,v.jsx)(u,{tone:`neutral`,appearance:`outline`,children:`Neutral Outline`}),(0,v.jsx)(u,{tone:`neutral`,appearance:`ghost`,children:`Neutral Ghost`}),(0,v.jsx)(u,{tone:`brand`,appearance:`solid`,children:`Brand Solid`}),(0,v.jsx)(u,{tone:`brand`,appearance:`outline`,children:`Brand Outline`}),(0,v.jsx)(u,{tone:`brand`,appearance:`ghost`,children:`Brand Ghost`}),(0,v.jsx)(u,{tone:`brand`,appearance:`transparent`,children:`Brand Transparent`}),(0,v.jsx)(u,{tone:`info`,appearance:`outline`,children:`Info Outline`}),(0,v.jsx)(u,{tone:`success`,appearance:`solid`,children:`Success Solid`}),(0,v.jsx)(u,{tone:`error`,appearance:`transparent`,children:`Error Transparent`})]})},w={render:()=>(0,v.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[(0,v.jsx)(u,{icon:(0,v.jsx)(a,{}),children:`Скачать`}),(0,v.jsx)(u,{icon:(0,v.jsx)(h,{}),tone:`info`,appearance:`solid`,children:`Создать`}),(0,v.jsx)(u,{icon:(0,v.jsx)(r,{}),iconEnd:!0,tone:`success`,appearance:`solid`,children:`Подтвердить`}),(0,v.jsx)(u,{icon:(0,v.jsx)(f,{}),title:`Уведомления`})]}),args:{children:`Действие`}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
2
2
  render: function Render() {
3
3
  const [args] = useArgs<ButtonProps>();
4
4
  return <Button {...args} />;
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-left-DtTg64Ui.js";import{n as i,t as a}from"./chevron-right-9wEv32db.js";import{i as o,n as s,r as c}from"./iframe-BLnbEFJy.js";import{a as l,i as u}from"./utils-tg3ibbzi.js";import{C as d,b as f,c as p,h as m,m as h,n as g,o as _,w as v,x as y,y as b}from"./formatters-D33Uh3si-Df97arf9.js";import{n as x,t as S}from"./Button-CLqpsfhx.js";var C,w;function T(){return(T=e((()=>{o(),C=[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M8 13h.01`,key:`1sbv64`}],[`path`,{d:`M12 13h.01`,key:`y0uutt`}],[`path`,{d:`M16 13h.01`,key:`wip0gl`}],[`path`,{d:`M8 17h.01`,key:`p3bg7i`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}],[`path`,{d:`M16 17h.01`,key:`ql8jdd`}]],w=c(`calendar-days`,C)})))()}function ee(e){return e===`month`?`month`:e===`year`?`year`:`day`}function E(e,t){return k.indexOf(e)>=k.indexOf(t)}function te(e,t){let n=ee(e);return E(n,t)?n:t}function D(e,t){return!e||!t?!1:e.start.getTime()===t.start.getTime()&&e.end.getTime()===t.end.getTime()}function ne(e,t,n){if(!e||!t||!n)return!1;let r=Math.min(t.start.getTime(),n.start.getTime()),i=Math.max(t.end.getTime(),n.end.getTime());return e.start.getTime()>=r&&e.end.getTime()<=i}function O({date:e,value:t,hoveredDate:n,selectsRange:r,selectionOptions:i}){let a=g(e,i),o=!r&&t instanceof Date?t:null,s=g(o,i);if(!r||!Array.isArray(t))return{selected:_(e,s),range:!1,rangeStart:!1,rangeEnd:!1};let[c,l]=t,u=g(c,i),d=g(l??(c?n:null),i),f=D(a,u),p=D(a,d);return{selected:!1,range:ne(a,u,d)&&!f&&!p,rangeStart:f,rangeEnd:p}}var k,re;function A(){return(A=e((()=>{b(),k=[`day`,`month`,`year`],re=[`friday`,`saturday`,`sunday`]})))()}var ie,ae,oe,se,ce,le,ue,de,fe,j,M,N,P,F,I,L,R;function z(){return(z=e((()=>{ie=`Dshr-j`,ae=`esetVt`,oe=`i-LJYe`,se=`XZsnCH`,ce=`_2KDjTS`,le=`o-freG`,ue=`GcV08-`,de=`UCrE-I`,fe=`L2V3uq`,j=`Te9oCq`,M=`cUF2pQ`,N=`d1L5uw`,P=`LU0M9Y`,F=`MR3y5p`,I=`VDqDpm`,L=`CLR-7m`,R={dayView:ie,weekdays:ae,weekday:oe,daysGrid:se,week:ce,day:le,disabled:ue,outsideMonth:de,periodSelection:fe,periodPreview:j,selected:M,range:N,rangeStart:P,rangeEnd:F,weekend:I,now:L}})))()}var B,V,H,pe,U;function me(){return(me=e((()=>{B=t(),b(),u(),z(),V=s(),H=[`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`,`Вс`],pe=new Intl.DateTimeFormat(`ru-RU`,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`}),U=({now:e,currentDate:t,value:n,onChange:r,minDate:i,maxDate:a,selectsRange:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,f]=(0,B.useState)(null),m={selectionMode:s,weekEndDay:c},v=(()=>{let e=t.getFullYear(),n=t.getMonth(),r=h(e,n,1),i=h(e,n+1,0),a=r.getDay()===0?6:r.getDay()-1,o=42-(a+i.getDate()),s=[],c=h(e,n,0).getDate();for(let t=a;t>0;--t)s.push(h(e,n-1,c-t+1));for(let t=1;t<=i.getDate();t+=1)s.push(h(e,n,t));for(let t=1;t<=o;t+=1)s.push(h(e,n+1,t));let l=[];for(let e=0;e<s.length;e+=7)l.push(s.slice(e,e+7));return l})(),b=o&&Array.isArray(n)?n[0]:null,x=o&&Array.isArray(n)?n[1]:null,S=g(o?null:n,m),C=g(u,m),w=x??(b?C?.end??null:null),T=s===`week`,ee=T&&(!o||!b),E=e=>{if(!o||!b||!w)return!1;let t=d(e).getTime(),n=b.getTime(),r=w.getTime();return t>=Math.min(n,r)&&t<=Math.max(n,r)},te=e=>!y(g(e,m),{minDate:i,maxDate:a}),D=(e,t)=>{t||(T&&f(e),!(!o||!b||x)&&(T||f(e)))};return(0,V.jsxs)(`div`,{className:R.dayView,children:[(0,V.jsx)(`div`,{className:R.weekdays,children:H.map(e=>(0,V.jsx)(`div`,{className:R.weekday,children:e},e))}),(0,V.jsx)(`div`,{className:R.daysGrid,onMouseLeave:()=>{(T||!x)&&f(null)},children:v.map((n,i)=>(0,V.jsx)(`div`,{className:R.week,children:n.map((n,a)=>{let o=n.getMonth()===t.getMonth(),c=_(n,S),u=ee&&_(n,C),d=E(n),f=p(n,b),m=p(n,w),h=p(n,e),g=te(n);return(0,V.jsx)(`button`,{type:`button`,onClick:()=>!g&&r(n),onMouseEnter:()=>D(n,g),disabled:g,"data-ui":`calendar-day-button`,"data-action":`select-calendar-day`,className:l(R.day,{[R.outsideMonth]:!o,[R.periodSelection]:s===`week`,[R.periodPreview]:u&&!c,[R.selected]:c,[R.range]:d&&!f&&!m,[R.rangeStart]:f,[R.rangeEnd]:m,[R.disabled]:g,[R.weekend]:a>4,[R.now]:h}),"aria-label":pe.format(n),"aria-pressed":c||d||f||m,children:n.getDate()},`${i}-${a}`)})},i))})]})},U.__docgenInfo={description:`Отображает сетку дней месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarDayView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var he,ge,_e,ve,ye,be,xe,Se,W;function Ce(){return(Ce=e((()=>{he=`p5pRGW`,ge=`pUHpxD`,_e=`lwWv-z`,ve=`_8gn-3z`,ye=`b57d-c`,be=`nGc5FO`,xe=`JLqjri`,Se=`UQMYwg`,W={monthView:he,monthsGrid:ge,month:_e,disabled:ve,range:ye,selected:be,rangeStart:xe,rangeEnd:Se}})))()}var we,G,Te,Ee,K;function De(){return(De=e((()=>{we=t(),b(),u(),A(),Ce(),G=s(),Te=new Intl.DateTimeFormat(`ru-RU`,{month:`short`}),Ee=new Intl.DateTimeFormat(`ru-RU`,{month:`long`,year:`numeric`}),K=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,we.useState)(null),f=Array.from({length:12},(e,t)=>t),p=e.getFullYear(),m={selectionMode:s,weekEndDay:c},_=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,b=e=>Te.format(h(p,e,1)),x=e=>{if(!r&&!i)return!1;let t=h(p,e,1),n=h(p,e+1,0,23,59,59);return o?!y(g(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},S=(e,t)=>{!a||!_||v||t||d(e)};return(0,G.jsx)(`div`,{className:W.monthView,children:(0,G.jsx)(`div`,{className:W.monthsGrid,onMouseLeave:()=>{v||d(null)},children:f.map(e=>{let r=x(e),i=h(p,e,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,G.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>S(i,r),disabled:r,"data-ui":`calendar-month-button`,"data-action":`select-calendar-month`,className:l(W.month,{[W.selected]:o.selected,[W.range]:o.range,[W.rangeStart]:o.rangeStart,[W.rangeEnd]:o.rangeEnd,[W.disabled]:r}),"aria-label":Ee.format(i),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:b(e)},e)})})})},K.__docgenInfo={description:`Отображает выбор месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarMonthView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var Oe,ke,q;function Ae(){return(Ae=e((()=>{Oe=`E35KE6`,ke=`L14Qef`,q={calendarView:Oe,calendarHeader:ke}})))()}var je,Me,Ne,Pe,Fe,Ie,Le,Re,J;function Y(){return(Y=e((()=>{je=`_--xW7O`,Me=`-N-5Jk`,Ne=`hhY92S`,Pe=`IhX7jj`,Fe=`NWNpWj`,Ie=`d1SfcV`,Le=`Gkui4r`,Re=`_0dVZLW`,J={yearView:je,yearsGrid:Me,year:Ne,disabled:Pe,range:Fe,selected:Ie,rangeStart:Le,rangeEnd:Re}})))()}var ze,X,Z;function Be(){return(Be=e((()=>{ze=t(),b(),u(),A(),Y(),X=s(),Z=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,ze.useState)(null),f=Math.floor(e.getFullYear()/12)*12,p=Array.from({length:12},(e,t)=>f+t),m={selectionMode:s,weekEndDay:c},_=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,b=e=>{if(!r&&!i)return!1;let t=h(e,0,1),n=h(e,11,31,23,59,59);return o?!y(g(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},x=(e,t)=>{!a||!_||v||t||d(e)};return(0,X.jsx)(`div`,{className:J.yearView,children:(0,X.jsx)(`div`,{className:J.yearsGrid,onMouseLeave:()=>{v||d(null)},children:p.map(e=>{let r=b(e),i=h(e,0,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,X.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>x(i,r),disabled:r,"data-ui":`calendar-year-button`,"data-action":`select-calendar-year`,className:l(J.year,{[J.selected]:o.selected,[J.range]:o.range,[J.rangeStart]:o.rangeStart,[J.rangeEnd]:o.rangeEnd,[J.disabled]:r}),"aria-label":e.toString(),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:e},e)})})})},Z.__docgenInfo={description:`Отображает выбор года в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarYearView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}function Ve(e,t){if(t&&f(e)&&e[0]instanceof Date)return e[0];if(!t&&e instanceof Date)return e}function He({view:e,datePickerLevel:t,selectionMode:n=`day`,weekEndDay:i=`sunday`,onViewChange:o,...s}){let[c]=(0,Q.useState)(()=>d(new Date)),l=Ve(s.value,s.selectsRange),u=l?.getTime()??null,[f,p]=(0,Q.useState)(()=>({sourceValueTime:u,currentDate:l??d(new Date)})),h=l&&f.sourceValueTime!==u?l:f.currentDate,_=s.currentDate??h,b={selectionMode:n,weekEndDay:i},x=e=>{let t=typeof e==`function`?e(_):e;s.currentDate===void 0&&p({sourceValueTime:u,currentDate:t}),s.onCurrentDateChange?.(t)},C=()=>{if(e===`day`){x(e=>m(e,-1));return}if(e===`month`){x(e=>v(e,-1));return}x(e=>v(e,-12))},w=()=>{if(e===`day`){x(e=>m(e,1));return}if(e===`month`){x(e=>v(e,1));return}x(e=>v(e,12))};return(0,$.jsxs)(`div`,{className:q.calendarView,children:[(()=>{let t=``;if(e===`day`)t=_.toLocaleDateString(`ru-RU`,{month:`long`,year:`numeric`});else if(e===`month`)t=_.getFullYear().toString();else{let e=Math.floor(_.getFullYear()/12)*12;t=`${e} - ${e+11}`}return(0,$.jsxs)(`div`,{className:q.calendarHeader,children:[(0,$.jsx)(S,{icon:(0,$.jsx)(r,{}),onClick:C,variant:`ghost`,"aria-label":`Предыдущий`,"data-action":`calendar-previous`}),(0,$.jsx)(S,{onClick:()=>{e===`day`?o(`month`):e===`month`&&o(`year`)},variant:`ghost`,className:`flex1`,"data-ui":`calendar-view-switch-button`,"data-action":`calendar-switch-view`,children:t}),(0,$.jsx)(S,{icon:(0,$.jsx)(a,{}),onClick:w,variant:`ghost`,"aria-label":`Следующий`,"data-ui":`calendar-next-button`,"data-action":`calendar-next`})]})})(),(()=>{let r=e=>{let t=g(e,b);if(!(!t||!y(t,{minDate:s.minDate,maxDate:s.maxDate}))){if(s.selectsRange){let e=null,n=null;if(Array.isArray(s.value)&&([e,n]=s.value),!e||n){s.onChange([t.start,null]);return}let r=g(e,b);if(!r)return;if(t.start<r.start){s.onChange([t.start,r.end]);return}s.onChange([r.start,t.end]);return}s.onChange(t.start)}},a=e=>{if(x(e),n===`month`||!E(`day`,t)){r(e);return}o(`day`)},l=e=>{if(x(e),n===`year`||!E(`month`,t)){r(e);return}o(`month`)};switch(e){case`day`:return(0,$.jsx)(U,{now:c,currentDate:_,value:s.value,onChange:r,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectionMode:n,weekEndDay:i});case`month`:return(0,$.jsx)(K,{currentDate:_,value:s.value,onChange:a,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`month`||!E(`day`,t),selectionMode:n,weekEndDay:i});case`year`:return(0,$.jsx)(Z,{currentDate:_,value:s.value,onChange:l,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`year`||!E(`month`,t),selectionMode:n,weekEndDay:i});default:return null}})()]})}var Q,$;function Ue(){return(Ue=e((()=>{Q=t(),b(),n(),i(),x(),A(),me(),De(),Ae(),Be(),$=s(),He.__docgenInfo={description:`Отображает календарь выбора даты в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarView`,props:{view:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},datePickerLevel:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},selectionMode:{required:!1,tsType:{name:`CalendarPeriodSelectionMode`},description:``,defaultValue:{value:`"day"`,computed:!1}},weekEndDay:{required:!1,tsType:{name:`CalendarWeekEndDay`},description:``,defaultValue:{value:`"sunday"`,computed:!1}},onViewChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(view: CalendarType) => void`,signature:{arguments:[{type:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},name:`view`}],return:{name:`void`}}},description:``},selectsRange:{required:!1,tsType:{name:`boolean`},description:``},value:{required:!0,tsType:{name:`union`,raw:`Date | NullableDateRange | null`,elements:[{name:`Date`},{name:`NullableDateRange`},{name:`null`}]},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(date: Date | NullableDateRange) => void`,signature:{arguments:[{type:{name:`union`,raw:`Date | NullableDateRange`,elements:[{name:`Date`},{name:`NullableDateRange`}]},name:`date`}],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},currentDate:{required:!1,tsType:{name:`Date`},description:``},onCurrentDateChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(date: Date) => void`,signature:{arguments:[{type:{name:`Date`},name:`date`}],return:{name:`void`}}},description:``}}}})))()}export{E as a,T as c,A as i,Ue as n,te as o,re as r,w as s,He as t};
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-left-DGH3zWjp.js";import{n as i,t as a}from"./chevron-right-BQCoBw1U.js";import{i as o,n as s,r as c}from"./iframe-P2lWyit5.js";import{a as l,i as u}from"./utils-tg3ibbzi.js";import{C as d,b as f,c as p,h as m,m as h,n as g,o as _,w as v,x as y,y as b}from"./formatters-D33Uh3si-Df97arf9.js";import{n as x,t as S}from"./Button-BM6kIoG9.js";var C,w;function T(){return(T=e((()=>{o(),C=[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M8 13h.01`,key:`1sbv64`}],[`path`,{d:`M12 13h.01`,key:`y0uutt`}],[`path`,{d:`M16 13h.01`,key:`wip0gl`}],[`path`,{d:`M8 17h.01`,key:`p3bg7i`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}],[`path`,{d:`M16 17h.01`,key:`ql8jdd`}]],w=c(`calendar-days`,C)})))()}function ee(e){return e===`month`?`month`:e===`year`?`year`:`day`}function E(e,t){return k.indexOf(e)>=k.indexOf(t)}function te(e,t){let n=ee(e);return E(n,t)?n:t}function D(e,t){return!e||!t?!1:e.start.getTime()===t.start.getTime()&&e.end.getTime()===t.end.getTime()}function ne(e,t,n){if(!e||!t||!n)return!1;let r=Math.min(t.start.getTime(),n.start.getTime()),i=Math.max(t.end.getTime(),n.end.getTime());return e.start.getTime()>=r&&e.end.getTime()<=i}function O({date:e,value:t,hoveredDate:n,selectsRange:r,selectionOptions:i}){let a=g(e,i),o=!r&&t instanceof Date?t:null,s=g(o,i);if(!r||!Array.isArray(t))return{selected:_(e,s),range:!1,rangeStart:!1,rangeEnd:!1};let[c,l]=t,u=g(c,i),d=g(l??(c?n:null),i),f=D(a,u),p=D(a,d);return{selected:!1,range:ne(a,u,d)&&!f&&!p,rangeStart:f,rangeEnd:p}}var k,re;function A(){return(A=e((()=>{b(),k=[`day`,`month`,`year`],re=[`friday`,`saturday`,`sunday`]})))()}var ie,ae,oe,se,ce,le,ue,de,fe,j,M,N,P,F,I,L,R;function z(){return(z=e((()=>{ie=`Dshr-j`,ae=`esetVt`,oe=`i-LJYe`,se=`XZsnCH`,ce=`_2KDjTS`,le=`o-freG`,ue=`GcV08-`,de=`UCrE-I`,fe=`L2V3uq`,j=`Te9oCq`,M=`cUF2pQ`,N=`d1L5uw`,P=`LU0M9Y`,F=`MR3y5p`,I=`VDqDpm`,L=`CLR-7m`,R={dayView:ie,weekdays:ae,weekday:oe,daysGrid:se,week:ce,day:le,disabled:ue,outsideMonth:de,periodSelection:fe,periodPreview:j,selected:M,range:N,rangeStart:P,rangeEnd:F,weekend:I,now:L}})))()}var B,V,H,pe,U;function me(){return(me=e((()=>{B=t(),b(),u(),z(),V=s(),H=[`Пн`,`Вт`,`Ср`,`Чт`,`Пт`,`Сб`,`Вс`],pe=new Intl.DateTimeFormat(`ru-RU`,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`}),U=({now:e,currentDate:t,value:n,onChange:r,minDate:i,maxDate:a,selectsRange:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,f]=(0,B.useState)(null),m={selectionMode:s,weekEndDay:c},v=(()=>{let e=t.getFullYear(),n=t.getMonth(),r=h(e,n,1),i=h(e,n+1,0),a=r.getDay()===0?6:r.getDay()-1,o=42-(a+i.getDate()),s=[],c=h(e,n,0).getDate();for(let t=a;t>0;--t)s.push(h(e,n-1,c-t+1));for(let t=1;t<=i.getDate();t+=1)s.push(h(e,n,t));for(let t=1;t<=o;t+=1)s.push(h(e,n+1,t));let l=[];for(let e=0;e<s.length;e+=7)l.push(s.slice(e,e+7));return l})(),b=o&&Array.isArray(n)?n[0]:null,x=o&&Array.isArray(n)?n[1]:null,S=g(o?null:n,m),C=g(u,m),w=x??(b?C?.end??null:null),T=s===`week`,ee=T&&(!o||!b),E=e=>{if(!o||!b||!w)return!1;let t=d(e).getTime(),n=b.getTime(),r=w.getTime();return t>=Math.min(n,r)&&t<=Math.max(n,r)},te=e=>!y(g(e,m),{minDate:i,maxDate:a}),D=(e,t)=>{t||(T&&f(e),!(!o||!b||x)&&(T||f(e)))};return(0,V.jsxs)(`div`,{className:R.dayView,children:[(0,V.jsx)(`div`,{className:R.weekdays,children:H.map(e=>(0,V.jsx)(`div`,{className:R.weekday,children:e},e))}),(0,V.jsx)(`div`,{className:R.daysGrid,onMouseLeave:()=>{(T||!x)&&f(null)},children:v.map((n,i)=>(0,V.jsx)(`div`,{className:R.week,children:n.map((n,a)=>{let o=n.getMonth()===t.getMonth(),c=_(n,S),u=ee&&_(n,C),d=E(n),f=p(n,b),m=p(n,w),h=p(n,e),g=te(n);return(0,V.jsx)(`button`,{type:`button`,onClick:()=>!g&&r(n),onMouseEnter:()=>D(n,g),disabled:g,"data-ui":`calendar-day-button`,"data-action":`select-calendar-day`,className:l(R.day,{[R.outsideMonth]:!o,[R.periodSelection]:s===`week`,[R.periodPreview]:u&&!c,[R.selected]:c,[R.range]:d&&!f&&!m,[R.rangeStart]:f,[R.rangeEnd]:m,[R.disabled]:g,[R.weekend]:a>4,[R.now]:h}),"aria-label":pe.format(n),"aria-pressed":c||d||f||m,children:n.getDate()},`${i}-${a}`)})},i))})]})},U.__docgenInfo={description:`Отображает сетку дней месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarDayView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var he,ge,_e,ve,ye,be,xe,Se,W;function Ce(){return(Ce=e((()=>{he=`p5pRGW`,ge=`pUHpxD`,_e=`lwWv-z`,ve=`_8gn-3z`,ye=`b57d-c`,be=`nGc5FO`,xe=`JLqjri`,Se=`UQMYwg`,W={monthView:he,monthsGrid:ge,month:_e,disabled:ve,range:ye,selected:be,rangeStart:xe,rangeEnd:Se}})))()}var we,G,Te,Ee,K;function De(){return(De=e((()=>{we=t(),b(),u(),A(),Ce(),G=s(),Te=new Intl.DateTimeFormat(`ru-RU`,{month:`short`}),Ee=new Intl.DateTimeFormat(`ru-RU`,{month:`long`,year:`numeric`}),K=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,we.useState)(null),f=Array.from({length:12},(e,t)=>t),p=e.getFullYear(),m={selectionMode:s,weekEndDay:c},_=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,b=e=>Te.format(h(p,e,1)),x=e=>{if(!r&&!i)return!1;let t=h(p,e,1),n=h(p,e+1,0,23,59,59);return o?!y(g(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},S=(e,t)=>{!a||!_||v||t||d(e)};return(0,G.jsx)(`div`,{className:W.monthView,children:(0,G.jsx)(`div`,{className:W.monthsGrid,onMouseLeave:()=>{v||d(null)},children:f.map(e=>{let r=x(e),i=h(p,e,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,G.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>S(i,r),disabled:r,"data-ui":`calendar-month-button`,"data-action":`select-calendar-month`,className:l(W.month,{[W.selected]:o.selected,[W.range]:o.range,[W.rangeStart]:o.rangeStart,[W.rangeEnd]:o.rangeEnd,[W.disabled]:r}),"aria-label":Ee.format(i),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:b(e)},e)})})})},K.__docgenInfo={description:`Отображает выбор месяца в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarMonthView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}var Oe,ke,q;function Ae(){return(Ae=e((()=>{Oe=`E35KE6`,ke=`L14Qef`,q={calendarView:Oe,calendarHeader:ke}})))()}var je,Me,Ne,Pe,Fe,Ie,Le,Re,J;function Y(){return(Y=e((()=>{je=`_--xW7O`,Me=`-N-5Jk`,Ne=`hhY92S`,Pe=`IhX7jj`,Fe=`NWNpWj`,Ie=`d1SfcV`,Le=`Gkui4r`,Re=`_0dVZLW`,J={yearView:je,yearsGrid:Me,year:Ne,disabled:Pe,range:Fe,selected:Ie,rangeStart:Le,rangeEnd:Re}})))()}var ze,X,Z;function Be(){return(Be=e((()=>{ze=t(),b(),u(),A(),Y(),X=s(),Z=({currentDate:e,value:t,onChange:n,minDate:r,maxDate:i,selectsRange:a,selectsPeriod:o,selectionMode:s=`day`,weekEndDay:c=`sunday`})=>{let[u,d]=(0,ze.useState)(null),f=Math.floor(e.getFullYear()/12)*12,p=Array.from({length:12},(e,t)=>f+t),m={selectionMode:s,weekEndDay:c},_=a&&Array.isArray(t)?t[0]:null,v=a&&Array.isArray(t)?t[1]:null,b=e=>{if(!r&&!i)return!1;let t=h(e,0,1),n=h(e,11,31,23,59,59);return o?!y(g(t,m),{minDate:r,maxDate:i}):!!(r&&n<r||i&&t>i)},x=(e,t)=>{!a||!_||v||t||d(e)};return(0,X.jsx)(`div`,{className:J.yearView,children:(0,X.jsx)(`div`,{className:J.yearsGrid,onMouseLeave:()=>{v||d(null)},children:p.map(e=>{let r=b(e),i=h(e,0,1),o=O({date:i,value:t,hoveredDate:u,selectsRange:a,selectionOptions:m});return(0,X.jsx)(`button`,{type:`button`,onClick:()=>!r&&n(i),onMouseEnter:()=>x(i,r),disabled:r,"data-ui":`calendar-year-button`,"data-action":`select-calendar-year`,className:l(J.year,{[J.selected]:o.selected,[J.range]:o.range,[J.rangeStart]:o.rangeStart,[J.rangeEnd]:o.rangeEnd,[J.disabled]:r}),"aria-label":e.toString(),"aria-pressed":o.selected||o.range||o.rangeStart||o.rangeEnd,children:e},e)})})})},Z.__docgenInfo={description:`Отображает выбор года в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarYearView`,props:{selectionMode:{defaultValue:{value:`"day"`,computed:!1},required:!1},weekEndDay:{defaultValue:{value:`"sunday"`,computed:!1},required:!1}}}})))()}function Ve(e,t){if(t&&f(e)&&e[0]instanceof Date)return e[0];if(!t&&e instanceof Date)return e}function He({view:e,datePickerLevel:t,selectionMode:n=`day`,weekEndDay:i=`sunday`,onViewChange:o,...s}){let[c]=(0,Q.useState)(()=>d(new Date)),l=Ve(s.value,s.selectsRange),u=l?.getTime()??null,[f,p]=(0,Q.useState)(()=>({sourceValueTime:u,currentDate:l??d(new Date)})),h=l&&f.sourceValueTime!==u?l:f.currentDate,_=s.currentDate??h,b={selectionMode:n,weekEndDay:i},x=e=>{let t=typeof e==`function`?e(_):e;s.currentDate===void 0&&p({sourceValueTime:u,currentDate:t}),s.onCurrentDateChange?.(t)},C=()=>{if(e===`day`){x(e=>m(e,-1));return}if(e===`month`){x(e=>v(e,-1));return}x(e=>v(e,-12))},w=()=>{if(e===`day`){x(e=>m(e,1));return}if(e===`month`){x(e=>v(e,1));return}x(e=>v(e,12))};return(0,$.jsxs)(`div`,{className:q.calendarView,children:[(()=>{let t=``;if(e===`day`)t=_.toLocaleDateString(`ru-RU`,{month:`long`,year:`numeric`});else if(e===`month`)t=_.getFullYear().toString();else{let e=Math.floor(_.getFullYear()/12)*12;t=`${e} - ${e+11}`}return(0,$.jsxs)(`div`,{className:q.calendarHeader,children:[(0,$.jsx)(S,{icon:(0,$.jsx)(r,{}),onClick:C,variant:`ghost`,"aria-label":`Предыдущий`,"data-action":`calendar-previous`}),(0,$.jsx)(S,{onClick:()=>{e===`day`?o(`month`):e===`month`&&o(`year`)},variant:`ghost`,className:`flex1`,"data-ui":`calendar-view-switch-button`,"data-action":`calendar-switch-view`,children:t}),(0,$.jsx)(S,{icon:(0,$.jsx)(a,{}),onClick:w,variant:`ghost`,"aria-label":`Следующий`,"data-ui":`calendar-next-button`,"data-action":`calendar-next`})]})})(),(()=>{let r=e=>{let t=g(e,b);if(!(!t||!y(t,{minDate:s.minDate,maxDate:s.maxDate}))){if(s.selectsRange){let e=null,n=null;if(Array.isArray(s.value)&&([e,n]=s.value),!e||n){s.onChange([t.start,null]);return}let r=g(e,b);if(!r)return;if(t.start<r.start){s.onChange([t.start,r.end]);return}s.onChange([r.start,t.end]);return}s.onChange(t.start)}},a=e=>{if(x(e),n===`month`||!E(`day`,t)){r(e);return}o(`day`)},l=e=>{if(x(e),n===`year`||!E(`month`,t)){r(e);return}o(`month`)};switch(e){case`day`:return(0,$.jsx)(U,{now:c,currentDate:_,value:s.value,onChange:r,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectionMode:n,weekEndDay:i});case`month`:return(0,$.jsx)(K,{currentDate:_,value:s.value,onChange:a,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`month`||!E(`day`,t),selectionMode:n,weekEndDay:i});case`year`:return(0,$.jsx)(Z,{currentDate:_,value:s.value,onChange:l,minDate:s.minDate,maxDate:s.maxDate,selectsRange:s.selectsRange,selectsPeriod:n===`year`||!E(`month`,t),selectionMode:n,weekEndDay:i});default:return null}})()]})}var Q,$;function Ue(){return(Ue=e((()=>{Q=t(),b(),n(),i(),x(),A(),me(),De(),Ae(),Be(),$=s(),He.__docgenInfo={description:`Отображает календарь выбора даты в календарной семантике без timezone-сдвига.`,methods:[],displayName:`CalendarView`,props:{view:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},datePickerLevel:{required:!0,tsType:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},description:``},selectionMode:{required:!1,tsType:{name:`CalendarPeriodSelectionMode`},description:``,defaultValue:{value:`"day"`,computed:!1}},weekEndDay:{required:!1,tsType:{name:`CalendarWeekEndDay`},description:``,defaultValue:{value:`"sunday"`,computed:!1}},onViewChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(view: CalendarType) => void`,signature:{arguments:[{type:{name:`union`,raw:`"day" | "month" | "year"`,elements:[{name:`literal`,value:`"day"`},{name:`literal`,value:`"month"`},{name:`literal`,value:`"year"`}]},name:`view`}],return:{name:`void`}}},description:``},selectsRange:{required:!1,tsType:{name:`boolean`},description:``},value:{required:!0,tsType:{name:`union`,raw:`Date | NullableDateRange | null`,elements:[{name:`Date`},{name:`NullableDateRange`},{name:`null`}]},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(date: Date | NullableDateRange) => void`,signature:{arguments:[{type:{name:`union`,raw:`Date | NullableDateRange`,elements:[{name:`Date`},{name:`NullableDateRange`}]},name:`date`}],return:{name:`void`}}},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},currentDate:{required:!1,tsType:{name:`Date`},description:``},onCurrentDateChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(date: Date) => void`,signature:{arguments:[{type:{name:`Date`},name:`date`}],return:{name:`void`}}},description:``}}}})))()}export{E as a,T as c,A as i,Ue as n,te as o,re as r,w as s,He as t};
@@ -1,2 +1,2 @@
1
- import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-DpXCi7hS.js";import{i as a,n as o,r as s}from"./iframe-BLnbEFJy.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-31LPbZGK.js";import{i as f,r as p}from"./uiClasses-Bz6cvlDQ.js";import{n as m,t as h}from"./CheckBox.module-BOAVN-Ny.js";var g,_;function v(){return(v=t((()=>{a(),g=[[`path`,{d:`M5 12h14`,key:`1ays0h`}]],_=s(`minus`,g)})))()}function y({label:e,description:t,placeholder:n,disabled:r,size:a,className:o,onChange:s,value:l,noWrap:d,id:f,tone:m=`neutral`,indeterminate:g=!1,...v}){let y=(0,b.useId)(),S=f??y,C=t?`${S}-description`:void 0,w=e??n,T=l??!1,E=e=>{e&&(e.indeterminate=g)};return(0,x.jsxs)(`div`,{className:c(u.uiElement,a&&u.uiSizable,a&&u[a],r&&u.disabled,o),"aria-disabled":r||void 0,children:[(0,x.jsxs)(`div`,{className:h.row,children:[(0,x.jsxs)(`div`,{className:c(h.wrapper,p(m)),children:[(0,x.jsx)(`input`,{...v,ref:E,id:S,type:`checkbox`,checked:T,disabled:r,"aria-checked":g?`mixed`:T,"aria-describedby":C,className:c(u.uiSelectionControl,h.input,g&&h.inputIndeterminate),onChange:()=>s?.(!T)}),(0,x.jsx)(`div`,{className:c(u.uiSelectionIcon,h.icon),"aria-hidden":`true`,children:g?(0,x.jsx)(_,{}):(0,x.jsx)(i,{})})]}),w&&(0,x.jsx)(`label`,{htmlFor:S,className:c(u.uiLabelBase,d&&`textNoWrap`),children:w})]}),t&&(0,x.jsx)(`p`,{id:C,className:u.uiDescription,children:t})]})}var b,x;function S(){return(S=t((()=>{b=e(n(),1),l(),r(),v(),d(),f(),m(),x=o(),y.__docgenInfo={description:`Компонент флажка для выбора булевого значения в формах и списках.
1
+ import{a as e,n as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./check-BQjlxuuS.js";import{i as a,n as o,r as s}from"./iframe-P2lWyit5.js";import{a as c,i as l}from"./utils-tg3ibbzi.js";import{n as u,t as d}from"./ui.module-31LPbZGK.js";import{i as f,r as p}from"./uiClasses-Bz6cvlDQ.js";import{n as m,t as h}from"./CheckBox.module-BOAVN-Ny.js";var g,_;function v(){return(v=t((()=>{a(),g=[[`path`,{d:`M5 12h14`,key:`1ays0h`}]],_=s(`minus`,g)})))()}function y({label:e,description:t,placeholder:n,disabled:r,size:a,className:o,onChange:s,value:l,noWrap:d,id:f,tone:m=`neutral`,indeterminate:g=!1,...v}){let y=(0,b.useId)(),S=f??y,C=t?`${S}-description`:void 0,w=e??n,T=l??!1,E=e=>{e&&(e.indeterminate=g)};return(0,x.jsxs)(`div`,{className:c(u.uiElement,a&&u.uiSizable,a&&u[a],r&&u.disabled,o),"aria-disabled":r||void 0,children:[(0,x.jsxs)(`div`,{className:h.row,children:[(0,x.jsxs)(`div`,{className:c(h.wrapper,p(m)),children:[(0,x.jsx)(`input`,{...v,ref:E,id:S,type:`checkbox`,checked:T,disabled:r,"aria-checked":g?`mixed`:T,"aria-describedby":C,className:c(u.uiSelectionControl,h.input,g&&h.inputIndeterminate),onChange:()=>s?.(!T)}),(0,x.jsx)(`div`,{className:c(u.uiSelectionIcon,h.icon),"aria-hidden":`true`,children:g?(0,x.jsx)(_,{}):(0,x.jsx)(i,{})})]}),w&&(0,x.jsx)(`label`,{htmlFor:S,className:c(u.uiLabelBase,d&&`textNoWrap`),children:w})]}),t&&(0,x.jsx)(`p`,{id:C,className:u.uiDescription,children:t})]})}var b,x;function S(){return(S=t((()=>{b=e(n(),1),l(),r(),v(),d(),f(),m(),x=o(),y.__docgenInfo={description:`Компонент флажка для выбора булевого значения в формах и списках.
2
2
  Поддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.`,methods:[],displayName:`CheckBox`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},tone:{required:!1,tsType:{name:`union`,raw:`"neutral" | "brand" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``,defaultValue:{value:`"neutral"`,computed:!1}},noWrap:{required:!1,tsType:{name:`boolean`},description:``},indeterminate:{required:!1,tsType:{name:`boolean`},description:'Показывает частично выбранную группу и публикует `aria-checked="mixed"`.',defaultValue:{value:`false`,computed:!1}}},composes:[`Omit`]}})))()}export{S as n,y as t};
@@ -1,4 +1,4 @@
1
- import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BLnbEFJy.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DnzyqsuS.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./CheckBox.stories-U8N-9vsz.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:v,parameters:{docs:{toc:!0}}}),`
1
+ import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-P2lWyit5.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-DJAWDNJL.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./CheckBox.stories-Cnwc5F1y.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:v,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(u,{children:`CheckBox`}),`
3
3
  `,(0,x.jsx)(o,{children:`Флажок для булевых полей с общими UI-схемами tone и appearance`}),`
4
4
  `,(0,x.jsx)(t.p,{children:`CheckBox уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./CheckBox-DgOTdmRk.js";import{n as a}from"./iframe-BLnbEFJy.js";import{n as o,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c=t({Controlled:()=>p,Disabled:()=>g,Sizes:()=>h,Tones:()=>m,__namedExportsOrder:()=>_,default:()=>f}),l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{l=n(),o(),r(),u=a(),d=s((e,t)=>(0,u.jsx)(i,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),f={title:`UI/CheckBox`,component:i,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст основной подписи чекбокса.`,control:`text`},description:{description:`Дополнительное описание под элементом.`,control:`text`},placeholder:{description:"Текст подписи, если `label` не задан.",control:`text`},value:{description:`Текущее состояние чекбокса.`,control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},disabled:{description:`Блокирует взаимодействие с элементом.`,control:`boolean`},size:{description:`Размер визуального контрола и текста.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон чекбокса.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]},noWrap:{description:`Не переносит текст подписи на новую строку.`,control:`boolean`},indeterminate:{description:'Показывает частично выбранное состояние с `aria-checked="mixed"`.',control:`boolean`}}},p={render:d,args:{label:`Принимать условия`,description:`Подтверждение условий использования сервиса.`,value:!1,size:`md`,disabled:!1,tone:`neutral`}},m={render:()=>{let[e,t]=(0,l.useState)({neutral:!0,info:!0,success:!0,warning:!0,error:!0});return(0,u.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`neutral`,`info`,`success`,`warning`,`error`].map(n=>(0,u.jsx)(i,{tone:n,label:`Тон ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},h={render:()=>{let[e,t]=(0,l.useState)({xs:!1,sm:!0,md:!1,lg:!0,xl:!1});return(0,u.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`xs`,`sm`,`md`,`lg`,`xl`].map(n=>(0,u.jsx)(i,{size:n,label:`Размер ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},g={render:d,args:{label:`Недоступный чекбокс`,description:`Изменение недоступно из-за прав доступа.`,value:!0,disabled:!0,tone:`neutral`}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
1
+ import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./CheckBox-B6M9Ugeb.js";import{n as a}from"./iframe-P2lWyit5.js";import{n as o,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c=t({Controlled:()=>p,Disabled:()=>g,Sizes:()=>h,Tones:()=>m,__namedExportsOrder:()=>_,default:()=>f}),l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{l=n(),o(),r(),u=a(),d=s((e,t)=>(0,u.jsx)(i,{...e,value:e.value??!1,onChange:n=>{e.onChange?.(n),t({value:n})}})),f={title:`UI/CheckBox`,component:i,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст основной подписи чекбокса.`,control:`text`},description:{description:`Дополнительное описание под элементом.`,control:`text`},placeholder:{description:"Текст подписи, если `label` не задан.",control:`text`},value:{description:`Текущее состояние чекбокса.`,control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},disabled:{description:`Блокирует взаимодействие с элементом.`,control:`boolean`},size:{description:`Размер визуального контрола и текста.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},tone:{description:`Цветовой тон чекбокса.`,control:`inline-radio`,options:[`neutral`,`brand`,`error`,`warning`,`success`,`info`]},noWrap:{description:`Не переносит текст подписи на новую строку.`,control:`boolean`},indeterminate:{description:'Показывает частично выбранное состояние с `aria-checked="mixed"`.',control:`boolean`}}},p={render:d,args:{label:`Принимать условия`,description:`Подтверждение условий использования сервиса.`,value:!1,size:`md`,disabled:!1,tone:`neutral`}},m={render:()=>{let[e,t]=(0,l.useState)({neutral:!0,info:!0,success:!0,warning:!0,error:!0});return(0,u.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`neutral`,`info`,`success`,`warning`,`error`].map(n=>(0,u.jsx)(i,{tone:n,label:`Тон ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},h={render:()=>{let[e,t]=(0,l.useState)({xs:!1,sm:!0,md:!1,lg:!0,xl:!1});return(0,u.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`xs`,`sm`,`md`,`lg`,`xl`].map(n=>(0,u.jsx)(i,{size:n,label:`Размер ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},g={render:d,args:{label:`Недоступный чекбокс`,description:`Изменение недоступно из-за прав доступа.`,value:!0,disabled:!0,tone:`neutral`}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
2
2
  render: renderCheckBoxStory,
3
3
  args: {
4
4
  label: "Принимать условия",