@ryuzaki13/react-foundation-ui 1.0.21 → 1.0.23

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 (219) hide show
  1. package/dist/advanced-search/index.js +3 -3
  2. package/dist/base-table/index.js +1 -1
  3. package/dist/chunks/{TextEditorLexicalClient-B1kQnKrU.js → TextEditorLexicalClient-bDEyimUa.js} +2 -2
  4. package/dist/chunks/{TextEditorLexicalClient-B1kQnKrU.js.map → TextEditorLexicalClient-bDEyimUa.js.map} +1 -1
  5. package/dist/chunks/{base-table-DghNJ6ss.js → base-table-BXKFSgIk.js} +2 -2
  6. package/dist/chunks/{base-table-DghNJ6ss.js.map → base-table-BXKFSgIk.js.map} +1 -1
  7. package/dist/chunks/{misc-ClXJygTj.js → misc-DIF5h9ba.js} +71 -76
  8. package/dist/chunks/misc-DIF5h9ba.js.map +1 -0
  9. package/dist/chunks/{modal-QGp5CjB9.js → modal-Cll8YZ7b.js} +2 -2
  10. package/dist/chunks/{modal-QGp5CjB9.js.map → modal-Cll8YZ7b.js.map} +1 -1
  11. package/dist/chunks/{table-tBQ_FOs3.js → table-BdpMzhLH.js} +2 -2
  12. package/dist/chunks/{table-tBQ_FOs3.js.map → table-BdpMzhLH.js.map} +1 -1
  13. package/dist/expandable-action-panel/index.js +1 -1
  14. package/dist/image/index.js +1 -1
  15. package/dist/list/index.js +1 -1
  16. package/dist/misc/AnimatedLogo.d.ts +10 -1
  17. package/dist/misc/AnimatedLogo.d.ts.map +1 -1
  18. package/dist/misc/AnimatedLogoSegment.d.ts +12 -0
  19. package/dist/misc/AnimatedLogoSegment.d.ts.map +1 -0
  20. package/dist/misc/LoadingMessage.d.ts +6 -4
  21. package/dist/misc/LoadingMessage.d.ts.map +1 -1
  22. package/dist/misc/index.d.ts +1 -0
  23. package/dist/misc/index.d.ts.map +1 -1
  24. package/dist/misc/index.js +2 -2
  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/tag-input/TagInput.d.ts +40 -0
  31. package/dist/tag-input/TagInput.d.ts.map +1 -0
  32. package/dist/tag-input/index.d.ts +2 -0
  33. package/dist/tag-input/index.d.ts.map +1 -0
  34. package/dist/tag-input/index.js +180 -0
  35. package/dist/tag-input/index.js.map +1 -0
  36. package/dist/tag-input/lib/joinTagInputAriaIds.d.ts +3 -0
  37. package/dist/tag-input/lib/joinTagInputAriaIds.d.ts.map +1 -0
  38. package/dist/tag-input/lib/tagInputDefaults.d.ts +7 -0
  39. package/dist/tag-input/lib/tagInputDefaults.d.ts.map +1 -0
  40. package/dist/text-editor/index.js +2 -2
  41. package/dist/tree-table/index.js +1 -1
  42. package/package.json +5 -1
  43. package/src/styles/_base.scss +0 -62
  44. package/storybook-static/assets/{Badge-Cg2dYSwP.js → Badge-Dk1ppt6h.js} +1 -1
  45. package/storybook-static/assets/{Badge.stories-BYlun-i3.js → Badge.stories-DGed-OBQ.js} +1 -1
  46. package/storybook-static/assets/{Button-D4_1YUId.js → Button-BrdeQlDt.js} +1 -1
  47. package/storybook-static/assets/{Button-DHUm4dn9.js → Button-c4nDxtrg.js} +1 -1
  48. package/storybook-static/assets/{Button.stories-DJVvYNle.js → Button.stories-CYjvIvUW.js} +1 -1
  49. package/storybook-static/assets/{CheckBox-Cn0oEy-0.js → CheckBox-6Qr3jWMy.js} +1 -1
  50. package/storybook-static/assets/{CheckBox-BMCI3jcJ.js → CheckBox-rqQjSYV-.js} +1 -1
  51. package/storybook-static/assets/{CheckBox.stories-DNVyyKgk.js → CheckBox.stories-Q78_xCB-.js} +1 -1
  52. package/storybook-static/assets/{Color-KMSTOMOX-CogEIqTq.js → Color-KMSTOMOX-BMBFTpCU.js} +1 -1
  53. package/storybook-static/assets/{ContextMenu-GtVpIKrx.js → ContextMenu-Dy6qjxlr.js} +1 -1
  54. package/storybook-static/assets/{ContextMenu.stories-BxiJt6xb.js → ContextMenu.stories-ArVPg2Iz.js} +1 -1
  55. package/storybook-static/assets/{DateInput-JyFcSSzH.js → DateInput-Dk1l_hxJ.js} +1 -1
  56. package/storybook-static/assets/{DateInput-D_BjVnON.js → DateInput-eu7DXgSU.js} +1 -1
  57. package/storybook-static/assets/{DateInput.stories-BXamFqSK.js → DateInput.stories-GCltuReT.js} +1 -1
  58. package/storybook-static/assets/{DateRangePresetSelect-CnBjzwP0.js → DateRangePresetSelect-2dHNAnUX.js} +1 -1
  59. package/storybook-static/assets/{DateRangePresetSelect-5HW0LlXM.js → DateRangePresetSelect-aiAJs_u-.js} +1 -1
  60. package/storybook-static/assets/{DateRangePresetSelect.stories-BzM9q06v.js → DateRangePresetSelect.stories-BXPIK_Co.js} +1 -1
  61. package/storybook-static/assets/{Detail-CVs0NkTq.js → Detail-C-0qKqgn.js} +1 -1
  62. package/storybook-static/assets/{Detail.stories-BDUK-3CV.js → Detail.stories-BpD2YoZq.js} +1 -1
  63. package/storybook-static/assets/{Dialog-D05c6OL5.js → Dialog-BHOqDS4r.js} +1 -1
  64. package/storybook-static/assets/{Dialog.stories-CK0kiLGo.js → Dialog.stories-DbY2IVcJ.js} +1 -1
  65. package/storybook-static/assets/{Disclosure-A8bS_6y5.js → Disclosure-BIS573Xf.js} +1 -1
  66. package/storybook-static/assets/{Disclosure.stories-mol8jRhI.js → Disclosure.stories-BEXgpOqT.js} +1 -1
  67. package/storybook-static/assets/{DocsRenderer-JROSPFPF-Dxrzjrhe.js → DocsRenderer-JROSPFPF-DBLxlIku.js} +2 -2
  68. package/storybook-static/assets/{DropZone-CkNtivw_.js → DropZone-DCOH76_B.js} +1 -1
  69. package/storybook-static/assets/{DropZone.stories-BCj0fFjw.js → DropZone.stories-D1SI6gcY.js} +1 -1
  70. package/storybook-static/assets/{DropdownMenu-CG8U1WuI.js → DropdownMenu-mb1Hg5Gl.js} +1 -1
  71. package/storybook-static/assets/{ExpandableActionPanel.stories-CRind3Wl.js → ExpandableActionPanel.stories-CXJMi0D0.js} +1 -1
  72. package/storybook-static/assets/{Flex-D1vaZnA1.js → Flex-D1ZBJLmP.js} +1 -1
  73. package/storybook-static/assets/{Flex-DSMWhdL8.js → Flex-aMhUlmFA.js} +1 -1
  74. package/storybook-static/assets/{Flex.stories-EJ-TT3O-.js → Flex.stories-Cq9hTA2s.js} +1 -1
  75. package/storybook-static/assets/{Grid-BVrIwkQn.js → Grid-D4xblGva.js} +1 -1
  76. package/storybook-static/assets/{Grid-DkHUHR2b.js → Grid-DrwSe074.js} +1 -1
  77. package/storybook-static/assets/{Grid.stories-Cb1KWhSo.js → Grid.stories-CsQlxLGT.js} +1 -1
  78. package/storybook-static/assets/{ImageCropper.stories-B_Ff5EhO.js → ImageCropper.stories-Da0fJQ1n.js} +1 -1
  79. package/storybook-static/assets/{ImageRenderer-BeYmvtFu.js → ImageRenderer-dXWklz9J.js} +1 -1
  80. package/storybook-static/assets/{ImageRenderer.stories-_U6PQ5s0.js → ImageRenderer.stories-C2l796Hd.js} +1 -1
  81. package/storybook-static/assets/{ImageView.stories-Bh17T4cZ.js → ImageView.stories-Cee_V0zr.js} +1 -1
  82. package/storybook-static/assets/{Input-DqkpneO3.js → Input-B6UklXwb.js} +1 -1
  83. package/storybook-static/assets/{Input-UE0kbOUc.js → Input-DoTXagjB.js} +1 -1
  84. package/storybook-static/assets/{Input.stories-CFEO0SLd.js → Input.stories-mPAKrIP1.js} +1 -1
  85. package/storybook-static/assets/{InputDateTime-RvoVvU9H.js → InputDateTime-BgIJNCpv.js} +1 -1
  86. package/storybook-static/assets/{InputDateTime.stories-UCTcJOk4.js → InputDateTime.stories-Ck0MCRBJ.js} +1 -1
  87. package/storybook-static/assets/{InputFile-Cwb5Aung.js → InputFile-BZqKG2Zr.js} +1 -1
  88. package/storybook-static/assets/{InputFile.stories-Ckuxi-zr.js → InputFile.stories-QbTuArh1.js} +1 -1
  89. package/storybook-static/assets/{InputFiles-C89x8KHV.js → InputFiles-BUoDhUef.js} +1 -1
  90. package/storybook-static/assets/{InputFiles-C9B1dD_R.js → InputFiles-ChhwyB9P.js} +1 -1
  91. package/storybook-static/assets/{InputFiles.stories-7gqx5B4Y.js → InputFiles.stories-PD0pr8y6.js} +1 -1
  92. package/storybook-static/assets/{InputImage-BXBIgcz5.js → InputImage-YxBujSop.js} +1 -1
  93. package/storybook-static/assets/{InputImage.stories-CcJ3kjDY.js → InputImage.stories-CHjyI709.js} +1 -1
  94. package/storybook-static/assets/{LayoutPicker-hTNxtlTj.js → LayoutPicker-DJT0cL8d.js} +1 -1
  95. package/storybook-static/assets/{LayoutPicker.stories-c8zR5DnT.js → LayoutPicker.stories-DvTvYmfw.js} +1 -1
  96. package/storybook-static/assets/{Listbox-DUIb79f5.js → Listbox-D7w7HJNg.js} +1 -1
  97. package/storybook-static/assets/{Listbox.stories-CY3MwnZ5.js → Listbox.stories-D4EMWR6l.js} +1 -1
  98. package/storybook-static/assets/{Modal-CPseWXNJ.js → Modal-BCn0aKBf.js} +1 -1
  99. package/storybook-static/assets/{Modal.stories-Cxw2ZRgQ.js → Modal.stories-BgnMPuDy.js} +1 -1
  100. package/storybook-static/assets/{MultiSelect-Bt3N0rgp.js → MultiSelect-CZW1VSbD.js} +1 -1
  101. package/storybook-static/assets/{MultiSelect-Bf5YxYfN.js → MultiSelect-D7N8euwu.js} +1 -1
  102. package/storybook-static/assets/{MultiSelect.stories-ajKJ1wl2.js → MultiSelect.stories-DV9nyDoE.js} +1 -1
  103. package/storybook-static/assets/{NotificationsHost-DmAk6K6A.js → NotificationsHost-DJILaEyi.js} +1 -1
  104. package/storybook-static/assets/{NotificationsHost.stories-C3EicsDL.js → NotificationsHost.stories-DlO0kPbm.js} +1 -1
  105. package/storybook-static/assets/{ODataMultiSelect-BpSU_AG9.js → ODataMultiSelect-C-DKYFLx.js} +1 -1
  106. package/storybook-static/assets/{ODataMultiSelect.stories-CLEKhMDU.js → ODataMultiSelect.stories-DypA5OPM.js} +1 -1
  107. package/storybook-static/assets/{ODataSelect-W-T83U4u.js → ODataSelect-ANgknc8h.js} +1 -1
  108. package/storybook-static/assets/{ODataSelect-naz-8rqO.js → ODataSelect-CMrLfCwp.js} +1 -1
  109. package/storybook-static/assets/{ODataSelect.stories-BlwRaCjm.js → ODataSelect.stories-icXU3Kk-.js} +1 -1
  110. package/storybook-static/assets/{ODataTreeMultiSelect-BF3VGPGC.js → ODataTreeMultiSelect-C6yg6DFE.js} +1 -1
  111. package/storybook-static/assets/{ODataTreeMultiSelect.stories-DXFNpGVh.js → ODataTreeMultiSelect.stories-CT_tBJph.js} +1 -1
  112. package/storybook-static/assets/{ODataTreeSelect-KkeyBQOB.js → ODataTreeSelect-hiY9TK6F.js} +1 -1
  113. package/storybook-static/assets/{ODataTreeSelect.stories-B3LS8B-K.js → ODataTreeSelect.stories-DPNG2-gB.js} +1 -1
  114. package/storybook-static/assets/{PeriodSelect-sqbTEh2-.js → PeriodSelect-5CQZq007.js} +1 -1
  115. package/storybook-static/assets/{PeriodSelect.stories-D0o5c-aW.js → PeriodSelect.stories-DuwM__eX.js} +1 -1
  116. package/storybook-static/assets/{Popover-BeVnS58h.js → Popover-BuB6NaNL.js} +1 -1
  117. package/storybook-static/assets/{Popover.stories-Bx7wB6zP.js → Popover.stories-DNHTB9O2.js} +1 -1
  118. package/storybook-static/assets/{PresetRangeDateInput-DMJx6huf.js → PresetRangeDateInput-C6ke1QJN.js} +1 -1
  119. package/storybook-static/assets/{PresetRangeDateInput.stories-CGHogk29.js → PresetRangeDateInput.stories-BiFR6FF_.js} +1 -1
  120. package/storybook-static/assets/{RadioButton-DuYV7oLX.js → RadioButton-bmKQ4B96.js} +1 -1
  121. package/storybook-static/assets/{RadioButton.stories-BzEefd1p.js → RadioButton.stories-CZatWIEO.js} +1 -1
  122. package/storybook-static/assets/{RadioGroup-DIymc9Lq.js → RadioGroup-Vnr3qZKk.js} +1 -1
  123. package/storybook-static/assets/{RadioGroup-C0ZMTtyS.js → RadioGroup-diPPm8OV.js} +1 -1
  124. package/storybook-static/assets/{RadioGroup.stories-DJhjmjZ3.js → RadioGroup.stories-BY_ORcvQ.js} +1 -1
  125. package/storybook-static/assets/{Select-B_oN8tGy.js → Select-BxK9yj6_.js} +1 -1
  126. package/storybook-static/assets/{Select-DTrqfSb7.js → Select-Cq66yRYB.js} +1 -1
  127. package/storybook-static/assets/{Select.stories-CPQaxErx.js → Select.stories-CevvmTWz.js} +1 -1
  128. package/storybook-static/assets/{SelectOptionContent-CBu-Z8q9.js → SelectOptionContent-C1-duJ6s.js} +1 -1
  129. package/storybook-static/assets/{SerializableSelect-B8vNCKe6.js → SerializableSelect-C6jj7wLf.js} +1 -1
  130. package/storybook-static/assets/{SerializableSelect-Cn6FnANb.js → SerializableSelect-CnwfEnur.js} +1 -1
  131. package/storybook-static/assets/{SerializableSelect.stories-B0gNlX9R.js → SerializableSelect.stories-DOTdXeIP.js} +1 -1
  132. package/storybook-static/assets/{SingleDateTimeInput-HdoxMDg5.js → SingleDateTimeInput-BtSG1SZF.js} +1 -1
  133. package/storybook-static/assets/{SingleDateTimeInput.stories-BWTJvkfh.js → SingleDateTimeInput.stories-CSFUpLfK.js} +1 -1
  134. package/storybook-static/assets/{Slider-B9zsG5_o.js → Slider-pb7TgPmP.js} +1 -1
  135. package/storybook-static/assets/{Slider.stories-B4R-Ojy6.js → Slider.stories-Cj9sU7k1.js} +1 -1
  136. package/storybook-static/assets/{SliderInput-ecY-t6ii.js → SliderInput-Dp4r4RqZ.js} +1 -1
  137. package/storybook-static/assets/{SliderInput.stories-Bq1WNiBu.js → SliderInput.stories-DKV9C_mb.js} +1 -1
  138. package/storybook-static/assets/{Sortable-BrcZpWjl.js → Sortable-BbVzA3mH.js} +1 -1
  139. package/storybook-static/assets/{Sortable.stories-C9APYJGM.js → Sortable.stories-nttQ0wQV.js} +1 -1
  140. package/storybook-static/assets/{Splitter-zcD_78Cs.js → Splitter-DQip0vEb.js} +1 -1
  141. package/storybook-static/assets/{Splitter.stories-Bh3dux3i.js → Splitter.stories-B7IdmITM.js} +1 -1
  142. package/storybook-static/assets/{StateSelect--2hZlmsM.js → StateSelect-BZeQfOZk.js} +1 -1
  143. package/storybook-static/assets/{StateSelect.stories-Cel6i2fC.js → StateSelect.stories-Cia0oYUX.js} +1 -1
  144. package/storybook-static/assets/{Switch-QlyZfEqf.js → Switch-DzxseHUx.js} +1 -1
  145. package/storybook-static/assets/{Switch.stories-BB3h3c5K.js → Switch.stories-BVAIn4yd.js} +1 -1
  146. package/storybook-static/assets/{Table-qUmGsDT8.js → Table-lzcaRxDg.js} +1 -1
  147. package/storybook-static/assets/{Table.stories-CYPyFV0A.js → Table.stories-sckp-lho.js} +1 -1
  148. package/storybook-static/assets/{Tabs-CyloJDHY.js → Tabs-DyBBFEsD.js} +1 -1
  149. package/storybook-static/assets/{Tabs.stories-DSl3G7Ze.js → Tabs.stories-C6-sZs4H.js} +1 -1
  150. package/storybook-static/assets/TagInput-LeQAhDgs.css +1 -0
  151. package/storybook-static/assets/TagInput.stories-iI1hZ8CY.js +18 -0
  152. package/storybook-static/assets/{Textarea-BwY6pr1A.js → Textarea-D1fEct22.js} +1 -1
  153. package/storybook-static/assets/{Textarea.stories-DNFuMzL8.js → Textarea.stories-ByJH2uhT.js} +1 -1
  154. package/storybook-static/assets/{TimePanel-DfD2qCKU.js → TimePanel-B5c9MfmC.js} +1 -1
  155. package/storybook-static/assets/{TimePanel.stories-CtKmIrYQ.js → TimePanel.stories-DBgXVhz1.js} +1 -1
  156. package/storybook-static/assets/{Toggle-9OU_0OxQ.js → Toggle-CHx3ZZfu.js} +1 -1
  157. package/storybook-static/assets/{Toggle.stories-gX7GAhf5.js → Toggle.stories-g3Eq8oVl.js} +1 -1
  158. package/storybook-static/assets/{TreeMultiSelect-xleloE3L.js → TreeMultiSelect-CrKusouJ.js} +1 -1
  159. package/storybook-static/assets/{TreeMultiSelect-D6FZp3ol.js → TreeMultiSelect-T05Sk9sh.js} +1 -1
  160. package/storybook-static/assets/{TreeMultiSelect.stories-TNrQi3tC.js → TreeMultiSelect.stories-C85O7gDN.js} +1 -1
  161. package/storybook-static/assets/{TreePickerBase-CKrFw1xA.js → TreePickerBase-VJSaTBqo.js} +1 -1
  162. package/storybook-static/assets/{TreeSelect-DK87hY70.js → TreeSelect-DQmAaKsJ.js} +1 -1
  163. package/storybook-static/assets/{TreeSelect-KbC_b2h7.js → TreeSelect-Dw-svVvg.js} +1 -1
  164. package/storybook-static/assets/{TreeSelect.stories-Dv24g8uv.js → TreeSelect.stories-Bqv2L08v.js} +1 -1
  165. package/storybook-static/assets/{TreeTable-DNyOKFIY.js → TreeTable-JJK6sE1o.js} +1 -1
  166. package/storybook-static/assets/{TreeTable.stories-g84YOpcn.js → TreeTable.stories-yOu-SM17.js} +1 -1
  167. package/storybook-static/assets/{WithTooltip-7X4HQR7L-DTYeAnYl.js → WithTooltip-7X4HQR7L-Cib98jGG.js} +1 -1
  168. package/storybook-static/assets/{base-table-ChlvVz_l.js → base-table-BbenC81q.js} +1 -1
  169. package/storybook-static/assets/{blocks-nvFBZnmF.js → blocks-DsN3hykK.js} +6 -6
  170. package/storybook-static/assets/{button-DxVxb_AQ.js → button-C8nkqC6f.js} +1 -1
  171. package/storybook-static/assets/{check-box-b5_2dw6S.js → check-box-BRod99sY.js} +1 -1
  172. package/storybook-static/assets/{chunk-3LY4VQVK-HxSHgfWj.js → chunk-3LY4VQVK-DSSlp6en.js} +1 -1
  173. package/storybook-static/assets/{chunk-LITCR56V-ojcamuDf.js → chunk-LITCR56V-CB95AMSh.js} +1 -1
  174. package/storybook-static/assets/{contextMenu-BOr3FdXR.js → contextMenu-iKy1R_pJ.js} +1 -1
  175. package/storybook-static/assets/{error-gSnleOdo.js → error-ChmbU9Ma.js} +1 -1
  176. package/storybook-static/assets/{flex-nhxot7pG.js → flex-CMA-ZjxB.js} +1 -1
  177. package/storybook-static/assets/{floating-ui.react-DBHno7PC.js → floating-ui.react-BpBaLM_G.js} +1 -1
  178. package/storybook-static/assets/formatter-L2YTDE3Q-tZc7M3Ad.js +1 -0
  179. package/storybook-static/assets/{formatters-Cnj-VWHB.js → formatters-C0d3JoZj.js} +1 -1
  180. package/storybook-static/assets/grid-Ck5-5Szv.js +1 -0
  181. package/storybook-static/assets/{hooks-DOtYpswn.js → hooks-BpEcTBvi.js} +1 -1
  182. package/storybook-static/assets/{iframe-CELq1yHK.js → iframe-D90hKkIJ.js} +4 -4
  183. package/storybook-static/assets/{input-Bq20EuR5.js → input-D77vjPVL.js} +1 -1
  184. package/storybook-static/assets/{lucide-react-DaLrYAcN.js → lucide-react-ClGevkpS.js} +1 -1
  185. package/storybook-static/assets/{mdx-react-shim-BUeZ3JmE.js → mdx-react-shim-CdXPOrRW.js} +1 -1
  186. package/storybook-static/assets/{media-7gU-mKPx.js → media-C4dafSHo.js} +1 -1
  187. package/storybook-static/assets/misc-D9dXokhF.css +1 -0
  188. package/storybook-static/assets/misc-yRJvnOkX.js +5 -0
  189. package/storybook-static/assets/{notifications-GJTI8j3c.js → notifications-Dt8NSgnT.js} +1 -1
  190. package/storybook-static/assets/{odata-gGnv74mq.js → odata-DQSm2H7O.js} +1 -1
  191. package/storybook-static/assets/odata-service-CMTV9-cO.js +1 -0
  192. package/storybook-static/assets/{odataStoryFixtures-D6PpTODP.js → odataStoryFixtures-D0p0XtmS.js} +1 -1
  193. package/storybook-static/assets/{picker-xfAX_wju.js → picker-9SOfvJPJ.js} +1 -1
  194. package/storybook-static/assets/{popover-CIF-ZVaN.js → popover-Dph7wJ1_.js} +1 -1
  195. package/storybook-static/assets/{preset-select-CiuJ-Yp0.js → preset-select-mubmWRO9.js} +1 -1
  196. package/storybook-static/assets/{react-18-BRX9FbGe.js → react-18-CSg0VXTL.js} +1 -1
  197. package/storybook-static/assets/{react-A5qSDxGl.js → react-Cr3aZrbF.js} +1 -1
  198. package/storybook-static/assets/{react-dom-BRUL6UMQ.js → react-dom-Iu9X9_7I.js} +1 -1
  199. package/storybook-static/assets/select-DYXb71nn.js +1 -0
  200. package/storybook-static/assets/{slider-PVNNrxhZ.js → slider-C8Udy6I7.js} +1 -1
  201. package/storybook-static/assets/{sortable-DlbQfnOR.js → sortable-xt2HCdf-.js} +1 -1
  202. package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-AHhtM7MH.js → syntaxhighlighter-RTCFPKCB-4Ttp-ccw.js} +1 -1
  203. package/storybook-static/assets/{text-DyVJvCm8.js → text-CwWM1WCX.js} +1 -1
  204. package/storybook-static/assets/{theming-ClhUCD3-.js → theming--foXdFDq.js} +1 -1
  205. package/storybook-static/assets/ui-BJnukgBU.js +1 -0
  206. package/storybook-static/assets/{useODataSelectBase-BonuBTfa.js → useODataSelectBase-C7f1zxWc.js} +1 -1
  207. package/storybook-static/assets/{useODataTreeData-DwO49vDk.js → useODataTreeData-7hwK6Byp.js} +1 -1
  208. package/storybook-static/assets/{utils-V012ES4W.js → utils-Bg8QclQy.js} +1 -1
  209. package/storybook-static/iframe.html +1 -1
  210. package/storybook-static/index.json +1 -1
  211. package/storybook-static/project.json +1 -1
  212. package/dist/chunks/misc-ClXJygTj.js.map +0 -1
  213. package/storybook-static/assets/formatter-L2YTDE3Q-B5zfJybp.js +0 -1
  214. package/storybook-static/assets/grid-B-H7CtbE.js +0 -1
  215. package/storybook-static/assets/misc-BsWm_Gl7.js +0 -5
  216. package/storybook-static/assets/misc-CerLA5Xh.css +0 -1
  217. package/storybook-static/assets/odata-service-Bz6VElCd.js +0 -1
  218. package/storybook-static/assets/select-CbSahuRN.js +0 -1
  219. package/storybook-static/assets/ui-DvOsIS0A.js +0 -1
@@ -0,0 +1,180 @@
1
+ import { t as e } from "../chunks/ui.module-BisoTevy.js";
2
+ import { l as t, s as n } from "../chunks/input-CZLUUggm.js";
3
+ import { useImperativeHandle as r, useRef as i, useState as a } from "react";
4
+ import { cn as o } from "@ryuzaki13/react-foundation-lib/utils";
5
+ import { XIcon as s } from "lucide-react";
6
+ import { jsx as c, jsxs as l } from "react/jsx-runtime";
7
+ //#region src/tag-input/lib/joinTagInputAriaIds.ts
8
+ function u(...e) {
9
+ return e.filter(Boolean).join(" ") || void 0;
10
+ }
11
+ //#endregion
12
+ //#region src/tag-input/lib/tagInputDefaults.ts
13
+ function ee(e) {
14
+ return e.trim();
15
+ }
16
+ function te(e) {
17
+ return e;
18
+ }
19
+ function d(e) {
20
+ return `Удалить тег «${e}»`;
21
+ }
22
+ var f = {
23
+ control: "AoFB3K",
24
+ tagList: "PvaUEA",
25
+ tag: "FZ-xEM",
26
+ tagText: "-RCqfG",
27
+ removeButton: "ggY643",
28
+ input: "hiZq-y"
29
+ }, p = /[,\r\n]/, m = /[,\r\n]+/;
30
+ function h({ ref: h, value: g, onChange: _, label: v, description: y, placeholder: ne, size: b, disabled: x, readOnly: S = !1, error: C, onClearError: w, maxTags: T, normalizeTag: E = ee, getTagKey: D = te, addOnBlur: O = !0, getRemoveButtonAriaLabel: k = d, tokensAriaLabel: re = "Добавленные теги", inputClassName: ie, className: ae, id: oe, name: A, form: j, required: se, maxLength: M, onKeyDown: ce, onPaste: N, onBlur: P, onCompositionStart: F, onCompositionEnd: I, "aria-describedby": L, "aria-labelledby": R, ...z }) {
31
+ let B = i(null), V = i(null), H = i(!1), [U, W] = a(""), [le, G] = a(""), { controlId: K, labelId: q, descriptionId: ue, errorId: de, describedBy: fe } = t({
32
+ id: oe,
33
+ hasLabel: v != null,
34
+ hasDescription: !!y,
35
+ hasError: !!C
36
+ }), J = T === void 0 ? Infinity : Math.max(0, Math.floor(T)), Y = x || S, X = u(fe, L), pe = u(q, R);
37
+ r(h, () => {
38
+ let e = B.current;
39
+ if (!e) throw Error("TagInput: внутренний input недоступен при создании imperative handle.");
40
+ return e;
41
+ }, []);
42
+ let Z = (e) => {
43
+ if (Y) return;
44
+ w?.();
45
+ let t = [...g], n = new Set(t.map((e) => D(e))), r = [], i = 0, a = !1;
46
+ for (let o of e) {
47
+ let e = E(o);
48
+ if (!e) continue;
49
+ if (M !== void 0 && e.length > M) {
50
+ G(`Тег «${e}» длиннее допустимого значения.`);
51
+ continue;
52
+ }
53
+ let s = D(e);
54
+ if (n.has(s)) {
55
+ i += 1;
56
+ continue;
57
+ }
58
+ if (t.length >= J) {
59
+ a = !0;
60
+ break;
61
+ }
62
+ n.add(s), t.push(e), r.push(e);
63
+ }
64
+ r.length > 0 ? (_(t), G(r.length === 1 ? `Добавлен тег «${r[0]}».` : `Добавлено тегов: ${r.length}.`)) : a ? G(`Достигнуто максимальное количество тегов: ${J}.`) : i > 0 && G("Такой тег уже добавлен.");
65
+ }, Q = () => U ? (Z(U.split(m)), W(""), !0) : !1, $ = (e) => {
66
+ if (Y) return;
67
+ let t = g[e];
68
+ t !== void 0 && (_(g.filter((t, n) => n !== e)), w?.(), G(`Удалён тег «${t}».`), B.current?.focus());
69
+ }, me = (e) => {
70
+ if (ce?.(e), !(e.defaultPrevented || e.nativeEvent.isComposing || H.current || Y)) {
71
+ if (e.key === "Enter" || e.key === ",") {
72
+ (Q() || e.key === ",") && e.preventDefault();
73
+ return;
74
+ }
75
+ e.key === "Backspace" && U.length === 0 && g.length > 0 && (e.preventDefault(), $(g.length - 1));
76
+ }
77
+ }, he = (e) => {
78
+ if (N?.(e), e.defaultPrevented || Y) return;
79
+ let t = e.clipboardData.getData("text");
80
+ if (!p.test(t)) return;
81
+ e.preventDefault();
82
+ let n = e.currentTarget.selectionStart ?? U.length, r = e.currentTarget.selectionEnd ?? n, i = `${U.slice(0, n)}${t}${U.slice(r)}`;
83
+ Z(i.split(m)), W("");
84
+ };
85
+ return /* @__PURE__ */ l(n, {
86
+ label: v,
87
+ description: y,
88
+ disabled: x,
89
+ className: ae,
90
+ size: b,
91
+ error: C,
92
+ controlId: K,
93
+ labelId: q,
94
+ descriptionId: ue,
95
+ errorId: de,
96
+ children: [/* @__PURE__ */ l("div", {
97
+ ref: V,
98
+ className: o(e.uiControl, C && e.invalid, f.control),
99
+ "data-disabled": x ? "" : void 0,
100
+ "data-readonly": S ? "" : void 0,
101
+ "data-invalid": C ? "" : void 0,
102
+ onClick: () => B.current?.focus(),
103
+ children: [
104
+ g.length > 0 && /* @__PURE__ */ c("ul", {
105
+ className: f.tagList,
106
+ "aria-label": re,
107
+ children: g.map((e, t) => /* @__PURE__ */ l("li", {
108
+ className: f.tag,
109
+ children: [/* @__PURE__ */ c("span", {
110
+ className: f.tagText,
111
+ children: e
112
+ }), !Y && /* @__PURE__ */ c("button", {
113
+ type: "button",
114
+ className: f.removeButton,
115
+ onClick: (e) => {
116
+ e.stopPropagation(), $(t);
117
+ },
118
+ "aria-label": k(e, t),
119
+ children: /* @__PURE__ */ c(s, { "aria-hidden": "true" })
120
+ })]
121
+ }, `${D(e)}-${t}`))
122
+ }),
123
+ /* @__PURE__ */ c("input", {
124
+ ...z,
125
+ ref: B,
126
+ id: K,
127
+ form: j,
128
+ disabled: x,
129
+ readOnly: S,
130
+ required: se && g.length === 0,
131
+ maxLength: M,
132
+ value: U,
133
+ placeholder: g.length === 0 ? ne : void 0,
134
+ "aria-invalid": !!C || void 0,
135
+ "aria-labelledby": pe,
136
+ "aria-describedby": X,
137
+ className: o(f.input, ie),
138
+ onChange: (e) => {
139
+ let t = e.target.value, n = p.test(t);
140
+ if (H.current) W(t);
141
+ else if (n) {
142
+ let e = t.split(m), n = p.test(t.at(-1) ?? "") ? "" : e.pop() ?? "";
143
+ Z(e), W(n);
144
+ } else W(t);
145
+ (H.current || !n) && w?.();
146
+ },
147
+ onKeyDown: me,
148
+ onPaste: he,
149
+ onCompositionStart: (e) => {
150
+ H.current = !0, F?.(e);
151
+ },
152
+ onCompositionEnd: (e) => {
153
+ H.current = !1, I?.(e);
154
+ },
155
+ onBlur: (e) => {
156
+ P?.(e);
157
+ let t = e.relatedTarget, n = t instanceof Node && V.current?.contains(t);
158
+ !e.defaultPrevented && !n && O && !Y && Q();
159
+ }
160
+ }),
161
+ A && g.map((e, t) => /* @__PURE__ */ c("input", {
162
+ type: "hidden",
163
+ name: A,
164
+ value: e,
165
+ form: j,
166
+ disabled: x
167
+ }, `${D(e)}-${t}`))
168
+ ]
169
+ }), /* @__PURE__ */ c("span", {
170
+ className: "visuallyHidden",
171
+ "aria-live": "polite",
172
+ "aria-atomic": "true",
173
+ children: le
174
+ })]
175
+ });
176
+ }
177
+ //#endregion
178
+ export { h as TagInput };
179
+
180
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/tag-input/lib/joinTagInputAriaIds.ts","../../src/tag-input/lib/tagInputDefaults.ts","../../src/tag-input/TagInput.module.scss","../../src/tag-input/TagInput.tsx"],"sourcesContent":["/** Объединяет сгенерированные и пользовательские ARIA ID, исключая пустые части. */\nexport function joinTagInputAriaIds(...ids: Array<string | undefined>) {\n\treturn ids.filter(Boolean).join(\" \") || undefined;\n}\n","/** Удаляет внешние пробелы перед сохранением созданного тега. */\nexport function defaultNormalizeTag(value: string) {\n\treturn value.trim();\n}\n\n/** Сохраняет регистр и использует точное значение как ключ сравнения по умолчанию. */\nexport function defaultGetTagKey(value: string) {\n\treturn value;\n}\n\n/** Формирует доступное имя действия удаления с конкретным значением тега. */\nexport function defaultGetRemoveButtonAriaLabel(value: string) {\n\treturn `Удалить тег «${value}»`;\n}\n","@use \"@/styles/mixins\" as *;\n\n.control {\n\tmin-height: var(--control-height);\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: var(--space-xs);\n\tpadding: calc(var(--space-xs) / 2) var(--space-sm);\n\tcursor: text;\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n\n\t&[data-readonly] {\n\t\tcursor: default;\n\t\tbackground-color: var(--surface-1);\n\t}\n}\n\n.tagList {\n\tmin-width: 0;\n\tmax-width: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tflex: 0 1 auto;\n\tflex-wrap: wrap;\n\tgap: var(--space-xs);\n\tlist-style: none;\n\tmargin: 0;\n\tpadding: 0;\n}\n\n.tag {\n\t@include ui-static-surface;\n\n\t--ui-color: var(--content-0);\n\t--ui-background: var(--surface-2);\n\t--ui-border-color: var(--border-0);\n\n\tmin-width: 0;\n\tmax-width: 100%;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n\tpadding: calc(var(--space-xs) / 2) var(--space-xs);\n\tfont-size: var(--font-size-sm);\n}\n\n.tagText {\n\tmin-width: 0;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.removeButton {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tflex-shrink: 0;\n\twidth: 1.25em;\n\theight: 1.25em;\n\tpadding: 0;\n\tborder: none;\n\tborder-radius: var(--radius-xs);\n\tbackground: transparent;\n\tcolor: inherit;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease;\n\n\t&:hover {\n\t\tbackground-color: var(--status-error-soft);\n\t\tcolor: var(--status-error-text);\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n\n\tsvg {\n\t\tdisplay: block;\n\t}\n}\n\n.input {\n\tmin-width: 8ch;\n\tmin-height: calc(var(--control-height) - var(--space-xs) - (var(--border-width) * 2));\n\tflex: 1 1 8rem;\n\tpadding: 0;\n\tborder: none;\n\toutline: none;\n\tbackground: transparent;\n\tcolor: inherit;\n\tfont: inherit;\n\n\t&::placeholder {\n\t\tcolor: var(--content-2);\n\t}\n\n\t&:read-only {\n\t\tcursor: default;\n\t}\n}\n","import {\n\ttype ClipboardEvent,\n\ttype CompositionEvent,\n\ttype InputHTMLAttributes,\n\ttype KeyboardEvent,\n\ttype Ref,\n\tuseImperativeHandle,\n\tuseRef,\n\tuseState\n} from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { InputUI, useInputFieldIds } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport { joinTagInputAriaIds } from \"./lib/joinTagInputAriaIds\";\nimport { defaultGetRemoveButtonAriaLabel, defaultGetTagKey, defaultNormalizeTag } from \"./lib/tagInputDefaults\";\nimport styles from \"./TagInput.module.scss\";\n\nimport type { UiBaseProps } from \"../types\";\n\nconst TAG_DELIMITER_PATTERN = /[,\\r\\n]/;\nconst TAG_DELIMITER_SPLIT_PATTERN = /[,\\r\\n]+/;\n\nexport interface TagInputProps\n\textends\n\t\tOmit<InputHTMLAttributes<HTMLInputElement>, \"children\" | \"defaultValue\" | \"disabled\" | \"onChange\" | \"readOnly\" | \"size\" | \"value\">,\n\t\tUiBaseProps<string[], readonly string[]> {\n\t/** Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop. */\n\tref?: Ref<HTMLInputElement>;\n\n\t/** Сообщение валидации, связанное с полем через `aria-describedby`. */\n\terror?: string;\n\n\t/** Сбрасывает внешнюю ошибку после изменения черновика или набора тегов. */\n\tonClearError?: () => void;\n\n\t/** Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст. */\n\treadOnly?: boolean;\n\n\t/** Максимальное количество тегов. Отсутствие значения не ограничивает набор. */\n\tmaxTags?: number;\n\n\t/**\n\t * Нормализует введённое значение перед проверкой дубликата и добавлением.\n\t * По умолчанию удаляет пробелы в начале и конце.\n\t */\n\tnormalizeTag?: (value: string) => string;\n\n\t/**\n\t * Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.\n\t * По умолчанию используется точное строковое сравнение.\n\t */\n\tgetTagKey?: (value: string) => string;\n\n\t/** Добавляет непустой черновик при уходе фокуса с input. По умолчанию включено. */\n\taddOnBlur?: boolean;\n\n\t/** Формирует доступное имя кнопки удаления конкретного тега. */\n\tgetRemoveButtonAriaLabel?: (value: string, index: number) => string;\n\n\t/** Доступное имя списка уже добавленных тегов. */\n\ttokensAriaLabel?: string;\n\n\t/** CSS-класс непосредственно для внутреннего `input`; `className` применяется к оболочке поля. */\n\tinputClassName?: string;\n}\n\n/**\n * Controlled-поле для создания коротких строковых тегов.\n *\n * Новое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\n * только незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.\n */\nexport function TagInput({\n\tref,\n\tvalue,\n\tonChange,\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tsize,\n\tdisabled,\n\treadOnly = false,\n\terror,\n\tonClearError,\n\tmaxTags,\n\tnormalizeTag = defaultNormalizeTag,\n\tgetTagKey = defaultGetTagKey,\n\taddOnBlur = true,\n\tgetRemoveButtonAriaLabel = defaultGetRemoveButtonAriaLabel,\n\ttokensAriaLabel = \"Добавленные теги\",\n\tinputClassName,\n\tclassName,\n\tid: externalId,\n\tname,\n\tform,\n\trequired,\n\tmaxLength,\n\tonKeyDown,\n\tonPaste,\n\tonBlur,\n\tonCompositionStart,\n\tonCompositionEnd,\n\t\"aria-describedby\": externalAriaDescribedBy,\n\t\"aria-labelledby\": externalAriaLabelledBy,\n\t...inputProps\n}: TagInputProps) {\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\tconst controlRef = useRef<HTMLDivElement>(null);\n\tconst isComposingRef = useRef(false);\n\tconst [draft, setDraft] = useState(\"\");\n\tconst [announcement, setAnnouncement] = useState(\"\");\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: externalId,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\tconst resolvedMaxTags = maxTags === undefined ? Number.POSITIVE_INFINITY : Math.max(0, Math.floor(maxTags));\n\tconst isEditingDisabled = disabled || readOnly;\n\tconst ariaDescribedBy = joinTagInputAriaIds(describedBy, externalAriaDescribedBy);\n\tconst ariaLabelledBy = joinTagInputAriaIds(labelId, externalAriaLabelledBy);\n\n\tuseImperativeHandle(\n\t\tref,\n\t\t() => {\n\t\t\tconst input = inputRef.current;\n\n\t\t\tif (!input) {\n\t\t\t\tthrow new Error(\"TagInput: внутренний input недоступен при создании imperative handle.\");\n\t\t\t}\n\n\t\t\treturn input;\n\t\t},\n\t\t[]\n\t);\n\n\t/** Добавляет сразу несколько кандидатов одним controlled-обновлением и сообщает результат screen reader. */\n\tconst appendTags = (rawTags: readonly string[]) => {\n\t\tif (isEditingDisabled) {\n\t\t\treturn;\n\t\t}\n\n\t\tonClearError?.();\n\n\t\tconst nextTags = [...value];\n\t\tconst knownKeys = new Set(nextTags.map((tag) => getTagKey(tag)));\n\t\tconst added: string[] = [];\n\t\tlet duplicateCount = 0;\n\t\tlet limitReached = false;\n\n\t\tfor (const rawTag of rawTags) {\n\t\t\tconst tag = normalizeTag(rawTag);\n\n\t\t\tif (!tag) continue;\n\n\t\t\tif (maxLength !== undefined && tag.length > maxLength) {\n\t\t\t\tsetAnnouncement(`Тег «${tag}» длиннее допустимого значения.`);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst key = getTagKey(tag);\n\n\t\t\tif (knownKeys.has(key)) {\n\t\t\t\tduplicateCount += 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nextTags.length >= resolvedMaxTags) {\n\t\t\t\tlimitReached = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tknownKeys.add(key);\n\t\t\tnextTags.push(tag);\n\t\t\tadded.push(tag);\n\t\t}\n\n\t\tif (added.length > 0) {\n\t\t\tonChange(nextTags);\n\t\t\tsetAnnouncement(added.length === 1 ? `Добавлен тег «${added[0]}».` : `Добавлено тегов: ${added.length}.`);\n\t\t} else if (limitReached) {\n\t\t\tsetAnnouncement(`Достигнуто максимальное количество тегов: ${resolvedMaxTags}.`);\n\t\t} else if (duplicateCount > 0) {\n\t\t\tsetAnnouncement(\"Такой тег уже добавлен.\");\n\t\t}\n\t};\n\n\tconst commitDraft = () => {\n\t\tif (!draft) return false;\n\n\t\tappendTags(draft.split(TAG_DELIMITER_SPLIT_PATTERN));\n\t\tsetDraft(\"\");\n\t\treturn true;\n\t};\n\n\tconst removeTag = (index: number) => {\n\t\tif (isEditingDisabled) return;\n\n\t\tconst removedTag = value[index];\n\t\tif (removedTag === undefined) return;\n\n\t\tonChange(value.filter((_, currentIndex) => currentIndex !== index));\n\t\tonClearError?.();\n\t\tsetAnnouncement(`Удалён тег «${removedTag}».`);\n\t\tinputRef.current?.focus();\n\t};\n\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n\t\tonKeyDown?.(event);\n\t\tif (event.defaultPrevented || event.nativeEvent.isComposing || isComposingRef.current || isEditingDisabled) return;\n\n\t\tif (event.key === \"Enter\" || event.key === \",\") {\n\t\t\tif (commitDraft() || event.key === \",\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (event.key === \"Backspace\" && draft.length === 0 && value.length > 0) {\n\t\t\tevent.preventDefault();\n\t\t\tremoveTag(value.length - 1);\n\t\t}\n\t};\n\n\tconst handlePaste = (event: ClipboardEvent<HTMLInputElement>) => {\n\t\tonPaste?.(event);\n\t\tif (event.defaultPrevented || isEditingDisabled) return;\n\n\t\tconst clipboardText = event.clipboardData.getData(\"text\");\n\t\tif (!TAG_DELIMITER_PATTERN.test(clipboardText)) return;\n\n\t\tevent.preventDefault();\n\t\tconst selectionStart = event.currentTarget.selectionStart ?? draft.length;\n\t\tconst selectionEnd = event.currentTarget.selectionEnd ?? selectionStart;\n\t\tconst pastedValue = `${draft.slice(0, selectionStart)}${clipboardText}${draft.slice(selectionEnd)}`;\n\n\t\tappendTags(pastedValue.split(TAG_DELIMITER_SPLIT_PATTERN));\n\t\tsetDraft(\"\");\n\t};\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<div\n\t\t\t\tref={controlRef}\n\t\t\t\tclassName={cn(uiStyles.uiControl, error && uiStyles.invalid, styles.control)}\n\t\t\t\tdata-disabled={disabled ? \"\" : undefined}\n\t\t\t\tdata-readonly={readOnly ? \"\" : undefined}\n\t\t\t\tdata-invalid={error ? \"\" : undefined}\n\t\t\t\tonClick={() => inputRef.current?.focus()}>\n\t\t\t\t{value.length > 0 && (\n\t\t\t\t\t<ul className={styles.tagList} aria-label={tokensAriaLabel}>\n\t\t\t\t\t\t{value.map((tag, index) => (\n\t\t\t\t\t\t\t<li className={styles.tag} key={`${getTagKey(tag)}-${index}`}>\n\t\t\t\t\t\t\t\t<span className={styles.tagText}>{tag}</span>\n\t\t\t\t\t\t\t\t{!isEditingDisabled && (\n\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\tclassName={styles.removeButton}\n\t\t\t\t\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t\t\t\t\t\tremoveTag(index);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\taria-label={getRemoveButtonAriaLabel(tag, index)}>\n\t\t\t\t\t\t\t\t\t\t<XIcon aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</ul>\n\t\t\t\t)}\n\n\t\t\t\t<input\n\t\t\t\t\t{...inputProps}\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tid={controlId}\n\t\t\t\t\tform={form}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\treadOnly={readOnly}\n\t\t\t\t\trequired={required && value.length === 0}\n\t\t\t\t\tmaxLength={maxLength}\n\t\t\t\t\tvalue={draft}\n\t\t\t\t\tplaceholder={value.length === 0 ? placeholder : undefined}\n\t\t\t\t\taria-invalid={!!error || undefined}\n\t\t\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\t\t\taria-describedby={ariaDescribedBy}\n\t\t\t\t\tclassName={cn(styles.input, inputClassName)}\n\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\tconst nextDraft = event.target.value;\n\t\t\t\t\t\tconst hasDelimiter = TAG_DELIMITER_PATTERN.test(nextDraft);\n\n\t\t\t\t\t\tif (isComposingRef.current) {\n\t\t\t\t\t\t\tsetDraft(nextDraft);\n\t\t\t\t\t\t} else if (hasDelimiter) {\n\t\t\t\t\t\t\tconst parts = nextDraft.split(TAG_DELIMITER_SPLIT_PATTERN);\n\t\t\t\t\t\t\tconst hasTrailingDelimiter = TAG_DELIMITER_PATTERN.test(nextDraft.at(-1) ?? \"\");\n\t\t\t\t\t\t\tconst uncommittedPart = hasTrailingDelimiter ? \"\" : (parts.pop() ?? \"\");\n\n\t\t\t\t\t\t\tappendTags(parts);\n\t\t\t\t\t\t\tsetDraft(uncommittedPart);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetDraft(nextDraft);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (isComposingRef.current || !hasDelimiter) {\n\t\t\t\t\t\t\tonClearError?.();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\tonPaste={handlePaste}\n\t\t\t\t\tonCompositionStart={(event: CompositionEvent<HTMLInputElement>) => {\n\t\t\t\t\t\tisComposingRef.current = true;\n\t\t\t\t\t\tonCompositionStart?.(event);\n\t\t\t\t\t}}\n\t\t\t\t\tonCompositionEnd={(event: CompositionEvent<HTMLInputElement>) => {\n\t\t\t\t\t\tisComposingRef.current = false;\n\t\t\t\t\t\tonCompositionEnd?.(event);\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={(event) => {\n\t\t\t\t\t\tonBlur?.(event);\n\t\t\t\t\t\tconst nextFocusedNode = event.relatedTarget;\n\t\t\t\t\t\tconst focusRemainsInside = nextFocusedNode instanceof Node && controlRef.current?.contains(nextFocusedNode);\n\n\t\t\t\t\t\tif (!event.defaultPrevented && !focusRemainsInside && addOnBlur && !isEditingDisabled) {\n\t\t\t\t\t\t\tcommitDraft();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\n\t\t\t\t{name &&\n\t\t\t\t\tvalue.map((tag, index) => (\n\t\t\t\t\t\t<input key={`${getTagKey(tag)}-${index}`} type=\"hidden\" name={name} value={tag} form={form} disabled={disabled} />\n\t\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t<span className=\"visuallyHidden\" aria-live=\"polite\" aria-atomic=\"true\">\n\t\t\t\t{announcement}\n\t\t\t</span>\n\t\t</InputUI>\n\t);\n}\n"],"mappings":";;;;;;;AACA,SAAgB,EAAoB,GAAG,GAAgC;CACtE,OAAO,EAAI,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,KAAK,KAAA;AACzC;;;ACFA,SAAgB,GAAoB,GAAe;CAClD,OAAO,EAAM,KAAK;AACnB;AAGA,SAAgB,GAAiB,GAAe;CAC/C,OAAO;AACR;AAGA,SAAgB,EAAgC,GAAe;CAC9D,OAAO,gBAAgB,EAAM;AAC9B;;;;;;;;GEUM,IAAwB,WACxB,IAA8B;AAoDpC,SAAgB,EAAS,EACxB,QACA,UACA,aACA,UACA,gBACA,iBACA,SACA,aACA,cAAW,IACX,UACA,iBACA,YACA,kBAAe,IACf,eAAY,IACZ,eAAY,IACZ,8BAA2B,GAC3B,sBAAkB,oBAClB,oBACA,eACA,IAAI,IACJ,SACA,SACA,cACA,cACA,eACA,YACA,WACA,uBACA,qBACA,oBAAoB,GACpB,mBAAmB,GACnB,GAAG,KACc;CACjB,IAAM,IAAW,EAAyB,IAAI,GACxC,IAAa,EAAuB,IAAI,GACxC,IAAiB,EAAO,EAAK,GAC7B,CAAC,GAAO,KAAY,EAAS,EAAE,GAC/B,CAAC,IAAc,KAAmB,EAAS,EAAE,GAC7C,EAAE,cAAW,YAAS,mBAAe,aAAS,oBAAgB,EAAiB;EACpF,IAAI;EACJ,UAAU,KAAiC;EAC3C,gBAAgB,CAAC,CAAC;EAClB,UAAU,CAAC,CAAC;CACb,CAAC,GACK,IAAkB,MAAY,KAAA,IAAY,WAA2B,KAAK,IAAI,GAAG,KAAK,MAAM,CAAO,CAAC,GACpG,IAAoB,KAAY,GAChC,IAAkB,EAAoB,IAAa,CAAuB,GAC1E,KAAiB,EAAoB,GAAS,CAAsB;CAE1E,EACC,SACM;EACL,IAAM,IAAQ,EAAS;EAEvB,IAAI,CAAC,GACJ,MAAU,MAAM,uEAAuE;EAGxF,OAAO;CACR,GACA,CAAC,CACF;CAGA,IAAM,KAAc,MAA+B;EAClD,IAAI,GACH;EAGD,IAAe;EAEf,IAAM,IAAW,CAAC,GAAG,CAAK,GACpB,IAAY,IAAI,IAAI,EAAS,KAAK,MAAQ,EAAU,CAAG,CAAC,CAAC,GACzD,IAAkB,CAAC,GACrB,IAAiB,GACjB,IAAe;EAEnB,KAAK,IAAM,KAAU,GAAS;GAC7B,IAAM,IAAM,EAAa,CAAM;GAE/B,IAAI,CAAC,GAAK;GAEV,IAAI,MAAc,KAAA,KAAa,EAAI,SAAS,GAAW;IACtD,EAAgB,QAAQ,EAAI,gCAAgC;IAC5D;GACD;GAEA,IAAM,IAAM,EAAU,CAAG;GAEzB,IAAI,EAAU,IAAI,CAAG,GAAG;IACvB,KAAkB;IAClB;GACD;GAEA,IAAI,EAAS,UAAU,GAAiB;IACvC,IAAe;IACf;GACD;GAIA,AAFA,EAAU,IAAI,CAAG,GACjB,EAAS,KAAK,CAAG,GACjB,EAAM,KAAK,CAAG;EACf;EAEA,AAAI,EAAM,SAAS,KAClB,EAAS,CAAQ,GACjB,EAAgB,EAAM,WAAW,IAAI,iBAAiB,EAAM,GAAG,MAAM,oBAAoB,EAAM,OAAO,EAAE,KAC9F,IACV,EAAgB,6CAA6C,EAAgB,EAAE,IACrE,IAAiB,KAC3B,EAAgB,yBAAyB;CAE3C,GAEM,UACA,KAEL,EAAW,EAAM,MAAM,CAA2B,CAAC,GACnD,EAAS,EAAE,GACJ,MAJY,IAOd,KAAa,MAAkB;EACpC,IAAI,GAAmB;EAEvB,IAAM,IAAa,EAAM;EACrB,MAAe,KAAA,MAEnB,EAAS,EAAM,QAAQ,GAAG,MAAiB,MAAiB,CAAK,CAAC,GAClE,IAAe,GACf,EAAgB,eAAe,EAAW,GAAG,GAC7C,EAAS,SAAS,MAAM;CACzB,GAEM,MAAiB,MAA2C;EACjE,SAAY,CAAK,GACb,IAAM,oBAAoB,EAAM,YAAY,eAAe,EAAe,WAAW,IAEzF;OAAI,EAAM,QAAQ,WAAW,EAAM,QAAQ,KAAK;IAC/C,CAAI,EAAY,KAAK,EAAM,QAAQ,QAClC,EAAM,eAAe;IAEtB;GACD;GAEA,AAAI,EAAM,QAAQ,eAAe,EAAM,WAAW,KAAK,EAAM,SAAS,MACrE,EAAM,eAAe,GACrB,EAAU,EAAM,SAAS,CAAC;EAJ3B;CAMD,GAEM,MAAe,MAA4C;EAEhE,IADA,IAAU,CAAK,GACX,EAAM,oBAAoB,GAAmB;EAEjD,IAAM,IAAgB,EAAM,cAAc,QAAQ,MAAM;EACxD,IAAI,CAAC,EAAsB,KAAK,CAAa,GAAG;EAEhD,EAAM,eAAe;EACrB,IAAM,IAAiB,EAAM,cAAc,kBAAkB,EAAM,QAC7D,IAAe,EAAM,cAAc,gBAAgB,GACnD,IAAc,GAAG,EAAM,MAAM,GAAG,CAAc,IAAI,IAAgB,EAAM,MAAM,CAAY;EAGhG,AADA,EAAW,EAAY,MAAM,CAA2B,CAAC,GACzD,EAAS,EAAE;CACZ;CAEA,OACC,kBAAC,GAAD;EACQ;EACM;EACH;EACC;EACL;EACC;EACI;EACF;EACM;EACN;YAVV,CAWC,kBAAC,OAAD;GACC,KAAK;GACL,WAAW,EAAG,EAAS,WAAW,KAAS,EAAS,SAAS,EAAO,OAAO;GAC3E,iBAAe,IAAW,KAAK,KAAA;GAC/B,iBAAe,IAAW,KAAK,KAAA;GAC/B,gBAAc,IAAQ,KAAK,KAAA;GAC3B,eAAe,EAAS,SAAS,MAAM;aANxC;IAOE,EAAM,SAAS,KACf,kBAAC,MAAD;KAAI,WAAW,EAAO;KAAS,cAAY;eACzC,EAAM,KAAK,GAAK,MAChB,kBAAC,MAAD;MAAI,WAAW,EAAO;gBAAtB,CACC,kBAAC,QAAD;OAAM,WAAW,EAAO;iBAAU;MAAU,CAAA,GAC3C,CAAC,KACD,kBAAC,UAAD;OACC,MAAK;OACL,WAAW,EAAO;OAClB,UAAU,MAAU;QAEnB,AADA,EAAM,gBAAgB,GACtB,EAAU,CAAK;OAChB;OACA,cAAY,EAAyB,GAAK,CAAK;iBAC/C,kBAAC,GAAD,EAAO,eAAY,OAAQ,CAAA;MACpB,CAAA,CAEN;QAd4B,GAAG,EAAU,CAAG,EAAE,GAAG,GAcjD,CACJ;IACE,CAAA;IAGL,kBAAC,SAAD;KACC,GAAI;KACJ,KAAK;KACL,IAAI;KACE;KACI;KACA;KACV,UAAU,MAAY,EAAM,WAAW;KAC5B;KACX,OAAO;KACP,aAAa,EAAM,WAAW,IAAI,KAAc,KAAA;KAChD,gBAAc,CAAC,CAAC,KAAS,KAAA;KACzB,mBAAiB;KACjB,oBAAkB;KAClB,WAAW,EAAG,EAAO,OAAO,EAAc;KAC1C,WAAW,MAAU;MACpB,IAAM,IAAY,EAAM,OAAO,OACzB,IAAe,EAAsB,KAAK,CAAS;MAEzD,IAAI,EAAe,SAClB,EAAS,CAAS;WACZ,IAAI,GAAc;OACxB,IAAM,IAAQ,EAAU,MAAM,CAA2B,GAEnD,IADuB,EAAsB,KAAK,EAAU,GAAG,EAAE,KAAK,EACpD,IAAuB,KAAM,EAAM,IAAI,KAAK;OAGpE,AADA,EAAW,CAAK,GAChB,EAAS,CAAe;MACzB,OACC,EAAS,CAAS;MAGnB,CAAI,EAAe,WAAW,CAAC,MAC9B,IAAe;KAEjB;KACA,WAAW;KACX,SAAS;KACT,qBAAqB,MAA8C;MAElE,AADA,EAAe,UAAU,IACzB,IAAqB,CAAK;KAC3B;KACA,mBAAmB,MAA8C;MAEhE,AADA,EAAe,UAAU,IACzB,IAAmB,CAAK;KACzB;KACA,SAAS,MAAU;MAClB,IAAS,CAAK;MACd,IAAM,IAAkB,EAAM,eACxB,IAAqB,aAA2B,QAAQ,EAAW,SAAS,SAAS,CAAe;MAE1G,AAAI,CAAC,EAAM,oBAAoB,CAAC,KAAsB,KAAa,CAAC,KACnE,EAAY;KAEd;IACA,CAAA;IAEA,KACA,EAAM,KAAK,GAAK,MACf,kBAAC,SAAD;KAA0C,MAAK;KAAe;KAAM,OAAO;KAAW;KAAgB;IAAW,GAArG,GAAG,EAAU,CAAG,EAAE,GAAG,GAAgF,CACjH;GACE;MAEL,kBAAC,QAAD;GAAM,WAAU;GAAiB,aAAU;GAAS,eAAY;aAC9D;EACI,CAAA,CACE;;AAEX"}
@@ -0,0 +1,3 @@
1
+ /** Объединяет сгенерированные и пользовательские ARIA ID, исключая пустые части. */
2
+ export declare function joinTagInputAriaIds(...ids: Array<string | undefined>): string | undefined;
3
+ //# sourceMappingURL=joinTagInputAriaIds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinTagInputAriaIds.d.ts","sourceRoot":"","sources":["../../../src/tag-input/lib/joinTagInputAriaIds.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,GAAG,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,sBAEpE"}
@@ -0,0 +1,7 @@
1
+ /** Удаляет внешние пробелы перед сохранением созданного тега. */
2
+ export declare function defaultNormalizeTag(value: string): string;
3
+ /** Сохраняет регистр и использует точное значение как ключ сравнения по умолчанию. */
4
+ export declare function defaultGetTagKey(value: string): string;
5
+ /** Формирует доступное имя действия удаления с конкретным значением тега. */
6
+ export declare function defaultGetRemoveButtonAriaLabel(value: string): string;
7
+ //# sourceMappingURL=tagInputDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagInputDefaults.d.ts","sourceRoot":"","sources":["../../../src/tag-input/lib/tagInputDefaults.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,UAEhD;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,UAE7C;AAED,6EAA6E;AAC7E,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,UAE5D"}
@@ -1,9 +1,9 @@
1
- import { m as e } from "../chunks/misc-ClXJygTj.js";
1
+ import { m as e } from "../chunks/misc-DIF5h9ba.js";
2
2
  import { a as t, n, t as r } from "../chunks/types-CxXyru6U.js";
3
3
  import { jsx as i } from "react/jsx-runtime";
4
4
  //#region src/text-editor/TextEditorLexical.tsx
5
5
  function a() {
6
- return import("../chunks/TextEditorLexicalClient-B1kQnKrU.js").then((e) => ({ TextEditorLexicalClient: e.TextEditorLexicalClient }));
6
+ return import("../chunks/TextEditorLexicalClient-bDEyimUa.js").then((e) => ({ TextEditorLexicalClient: e.TextEditorLexicalClient }));
7
7
  }
8
8
  function o(t) {
9
9
  return /* @__PURE__ */ i(e, {
@@ -1,4 +1,4 @@
1
- import { a as e, c as t, d as n, i as r, m as i, n as ee, o as te, r as ne, s as re, t as ie } from "../chunks/base-table-DghNJ6ss.js";
1
+ import { a as e, c as t, d as n, i as r, m as i, n as ee, o as te, r as ne, s as re, t as ie } from "../chunks/base-table-BXKFSgIk.js";
2
2
  import { useEffect as a, useEffectEvent as o, useMemo as s, useRef as c, useState as ae } from "react";
3
3
  import { cn as oe } from "@ryuzaki13/react-foundation-lib/utils";
4
4
  import { formatPipelineDisplayValue as se } from "@ryuzaki13/react-foundation-lib/formatters";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ryuzaki13/react-foundation-ui",
3
- "version": "1.0.21",
3
+ "version": "1.0.23",
4
4
  "description": "Reusable React foundation UI primitives and Storybook stories.",
5
5
  "license": "MIT",
6
6
  "author": "Ryuzaki13",
@@ -266,6 +266,10 @@
266
266
  "types": "./dist/switch/index.d.ts",
267
267
  "import": "./dist/switch/index.js"
268
268
  },
269
+ "./tag-input": {
270
+ "types": "./dist/tag-input/index.d.ts",
271
+ "import": "./dist/tag-input/index.js"
272
+ },
269
273
  "./table": {
270
274
  "types": "./dist/table/index.d.ts",
271
275
  "import": "./dist/table/index.js"
@@ -354,65 +354,3 @@ table {
354
354
  z-index: 8000;
355
355
  pointer-events: none;
356
356
  }
357
-
358
- .logoAnimated {
359
- max-width: 10em;
360
- margin: var(--space-md) auto;
361
-
362
- svg {
363
- display: block;
364
- width: 100%;
365
- height: 100%;
366
- }
367
- }
368
-
369
- .logoSegment {
370
- stroke: var(--content-2);
371
- stroke-width: 30px;
372
- stroke-miterlimit: 10;
373
- opacity: 0.22;
374
- animation: pulseSteps 1.8s ease-in-out infinite;
375
- }
376
-
377
- .logoOutline {
378
- fill: none;
379
- }
380
-
381
- .logoFill {
382
- fill: var(--content-2);
383
- }
384
-
385
- .logoS1 {
386
- animation-delay: 0s;
387
- }
388
- .logoS2 {
389
- animation-delay: 0.2s;
390
- }
391
- .logoS3 {
392
- animation-delay: 0.4s;
393
- }
394
- .logoS4 {
395
- animation-delay: 0.6s;
396
- }
397
-
398
- @keyframes pulseSteps {
399
- 0% {
400
- opacity: 0.2;
401
- }
402
- 35% {
403
- opacity: 1;
404
- }
405
- 55% {
406
- opacity: 1;
407
- }
408
- 100% {
409
- opacity: 0.2;
410
- }
411
- }
412
-
413
- // @media (prefers-reduced-motion: reduce) {
414
- // .logoSegment {
415
- // animation: none;
416
- // opacity: 1;
417
- // }
418
- // }
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-nvFBZnmF.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-BUeZ3JmE.js";import{Appearances as p,Basic as m,RemovableList as h,Sizes as g,Tones as _,n as v,t as y}from"./Badge.stories-BYlun-i3.js";function b(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{of:y,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-DsN3hykK.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-CdXPOrRW.js";import{Appearances as p,Basic as m,RemovableList as h,Sizes as g,Tones as _,n as v,t as y}from"./Badge.stories-DGed-OBQ.js";function b(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(a,{of:y,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,S.jsx)(c,{children:`Badge`}),`
3
3
  `,(0,S.jsx)(i,{children:`Компактная текстовая метка для статусов, категорий, фильтров и коротких служебных пометок`}),`
4
4
  `,(0,S.jsx)(o.p,{children:`Badge подходит для коротких подписей, которые должны быстро читаться и не перегружать интерфейс:`}),`
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-CELq1yHK.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{a,i as o}from"./utils-V012ES4W.js";import{n as s,t as c}from"./lucide-react-DaLrYAcN.js";import{n as l,t as u}from"./text-DyVJvCm8.js";import{i as d,n as f,r as p,t as m}from"./uiClasses-CaHp0EWd.js";import{o as h}from"./Flex-D1vaZnA1.js";import{t as g}from"./flex-nhxot7pG.js";var _,v,y,b,x,S,C,w,T,E,D=n((()=>{_=`qBtmnH`,v=`p-HsHY`,y=`u9tQAE`,b=`FRScRz`,x=`W13uQO`,S=`_3IRcM9`,C=`R3ybI7`,w=`DdWAaC`,T=`_5cXBQF`,E={badge:_,passive:v,sizeXs:y,sizeSm:b,sizeMd:x,sizeLg:S,sizeXl:C,content:w,removeButton:T}}));function O({children:e,size:t=`sm`,tone:n,appearance:r,className:i,onRemove:o}){let c=n??`neutral`,u=d({tone:n,appearance:r,fallbackTone:c,fallbackAppearance:c===`neutral`?`outline`:`solid`});return(0,k.jsxs)(`div`,{className:a(E.badge,A[t],f(u.tone),m(u.appearance),!o&&E.passive,i),children:[(0,k.jsx)(l,{maxChar:25,placement:`top`,block:!0,textWrapProps:{className:E.content},children:String(e)}),o&&(0,k.jsx)(`button`,{type:`button`,onClick:o,className:E.removeButton,"aria-label":`Удалить бейдж`,"data-ui":`badge-remove-button`,"data-action":`remove-badge`,children:(0,k.jsx)(s,{})})]})}var k,A,j=n((()=>{o(),c(),u(),p(),D(),k=i(),A={xs:E.sizeXs,sm:E.sizeSm,md:E.sizeMd,lg:E.sizeLg,xl:E.sizeXl},O.__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" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{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 M({children:e}){return(0,P.jsx)(h,{inline:!0,wrap:!0,gap:`sm`,align:`baseline`,children:N.Children.map(e,(e,t)=>(0,P.jsx)(N.Fragment,{children:e},t))})}var N,P,F=n((()=>{N=t(r(),1),g(),P=i(),M.__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:``}}}})),I=e({Appearances:()=>H,Basic:()=>B,RemovableList:()=>W,Sizes:()=>U,Tones:()=>V,__namedExportsOrder:()=>G,default:()=>z}),L,R,z,B,V,H,U,W,G,K=n((()=>{L=t(r(),1),j(),F(),R=i(),z={title:`Shared/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:[`sm`,`md`,`lg`]},tone:{description:`Семантический тон бейджа.`,control:`inline-radio`,options:[`neutral`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1},className:{description:`Дополнительный CSS-класс контейнера.`,control:`text`}}},B={},V={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,R.jsx)(O,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,R.jsx)(O,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,R.jsx)(O,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,R.jsx)(O,{tone:`info`,appearance:`solid`,children:`Информация`})]})},H={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,R.jsx)(O,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,R.jsx)(O,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,R.jsx)(O,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},U={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{size:`xs`,children:`Extra Small`}),(0,R.jsx)(O,{size:`sm`,children:`Small`}),(0,R.jsx)(O,{size:`md`,children:`Medium`}),(0,R.jsx)(O,{size:`lg`,children:`Large`}),(0,R.jsx)(O,{size:`xl`,children:`Extra Large`})]})},W={render:()=>{let[e,t]=(0,L.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,R.jsx)(M,{children:e.map(e=>(0,R.jsx)(O,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{}`,...B.parameters?.docs?.source}}},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-D90hKkIJ.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{a,i as o}from"./utils-Bg8QclQy.js";import{n as s,t as c}from"./lucide-react-ClGevkpS.js";import{n as l,t as u}from"./text-CwWM1WCX.js";import{i as d,n as f,r as p,t as m}from"./uiClasses-CaHp0EWd.js";import{o as h}from"./Flex-D1ZBJLmP.js";import{t as g}from"./flex-CMA-ZjxB.js";var _,v,y,b,x,S,C,w,T,E,D=n((()=>{_=`qBtmnH`,v=`p-HsHY`,y=`u9tQAE`,b=`FRScRz`,x=`W13uQO`,S=`_3IRcM9`,C=`R3ybI7`,w=`DdWAaC`,T=`_5cXBQF`,E={badge:_,passive:v,sizeXs:y,sizeSm:b,sizeMd:x,sizeLg:S,sizeXl:C,content:w,removeButton:T}}));function O({children:e,size:t=`sm`,tone:n,appearance:r,className:i,onRemove:o}){let c=n??`neutral`,u=d({tone:n,appearance:r,fallbackTone:c,fallbackAppearance:c===`neutral`?`outline`:`solid`});return(0,k.jsxs)(`div`,{className:a(E.badge,A[t],f(u.tone),m(u.appearance),!o&&E.passive,i),children:[(0,k.jsx)(l,{maxChar:25,placement:`top`,block:!0,textWrapProps:{className:E.content},children:String(e)}),o&&(0,k.jsx)(`button`,{type:`button`,onClick:o,className:E.removeButton,"aria-label":`Удалить бейдж`,"data-ui":`badge-remove-button`,"data-action":`remove-badge`,children:(0,k.jsx)(s,{})})]})}var k,A,j=n((()=>{o(),c(),u(),p(),D(),k=i(),A={xs:E.sizeXs,sm:E.sizeSm,md:E.sizeMd,lg:E.sizeLg,xl:E.sizeXl},O.__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" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{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 M({children:e}){return(0,P.jsx)(h,{inline:!0,wrap:!0,gap:`sm`,align:`baseline`,children:N.Children.map(e,(e,t)=>(0,P.jsx)(N.Fragment,{children:e},t))})}var N,P,F=n((()=>{N=t(r(),1),g(),P=i(),M.__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:``}}}})),I=e({Appearances:()=>H,Basic:()=>B,RemovableList:()=>W,Sizes:()=>U,Tones:()=>V,__namedExportsOrder:()=>G,default:()=>z}),L,R,z,B,V,H,U,W,G,K=n((()=>{L=t(r(),1),j(),F(),R=i(),z={title:`Shared/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:[`sm`,`md`,`lg`]},tone:{description:`Семантический тон бейджа.`,control:`inline-radio`,options:[`neutral`,`success`,`warning`,`error`,`info`]},appearance:{description:`Форма бейджа.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},onRemove:{description:`Показывает кнопку удаления и вызывает обработчик по клику.`,control:!1},className:{description:`Дополнительный CSS-класс контейнера.`,control:`text`}}},B={},V={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{tone:`neutral`,appearance:`outline`,children:`Neutral`}),(0,R.jsx)(O,{tone:`success`,appearance:`solid`,children:`Успешно`}),(0,R.jsx)(O,{tone:`warning`,appearance:`solid`,children:`Внимание`}),(0,R.jsx)(O,{tone:`error`,appearance:`solid`,children:`Ошибка`}),(0,R.jsx)(O,{tone:`info`,appearance:`solid`,children:`Информация`})]})},H={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{tone:`neutral`,appearance:`solid`,children:`Solid`}),(0,R.jsx)(O,{tone:`neutral`,appearance:`outline`,children:`Outline`}),(0,R.jsx)(O,{tone:`info`,appearance:`ghost`,children:`Ghost`}),(0,R.jsx)(O,{tone:`warning`,appearance:`transparent`,children:`Transparent`})]})},U={render:()=>(0,R.jsxs)(M,{children:[(0,R.jsx)(O,{size:`xs`,children:`Extra Small`}),(0,R.jsx)(O,{size:`sm`,children:`Small`}),(0,R.jsx)(O,{size:`md`,children:`Medium`}),(0,R.jsx)(O,{size:`lg`,children:`Large`}),(0,R.jsx)(O,{size:`xl`,children:`Extra Large`})]})},W={render:()=>{let[e,t]=(0,L.useState)([`Фильтр A`,`Фильтр B`,`Фильтр C`]);return(0,R.jsx)(M,{children:e.map(e=>(0,R.jsx)(O,{tone:`info`,appearance:`outline`,onRemove:()=>t(t=>t.filter(t=>t!==e)),children:e},e))})}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{}`,...B.parameters?.docs?.source}}},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
2
2
  render: () => <BadgeList>
3
3
  <Badge tone="neutral" appearance="outline">
4
4
  Neutral
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-nvFBZnmF.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-BUeZ3JmE.js";import{Basic as p,ComposableScheme as m,Variants as h,WithIcons as g,n as _,t as v}from"./Button.stories-DJVvYNle.js";function y(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(a,{of:v,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-DsN3hykK.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-CdXPOrRW.js";import{Basic as p,ComposableScheme as m,Variants as h,WithIcons as g,n as _,t as v}from"./Button.stories-CYjvIvUW.js";function y(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(a,{of:v,parameters:{atomicCanvas:!0,layout:`padded`,docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(c,{children:`Button`}),`
3
3
  `,(0,x.jsx)(i,{children:`Базовая action-кнопка дизайн-системы для пользовательских действий, подтверждений и быстрых операций`}),`
4
4
  `,(0,x.jsxs)(o.p,{children:[(0,x.jsx)(o.code,{children:`Button`}),` используется как универсальная кнопка интерфейса: в формах, тулбарах, модальных окнах, карточках, таблицах и компактных icon-only сценариях.`]}),`
@@ -1,4 +1,4 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-CELq1yHK.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-V012ES4W.js";import{n as o,t as s}from"./popover-CIF-ZVaN.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{i as u,n as d,r as f,t as p}from"./uiClasses-CaHp0EWd.js";var m,h,g,_,v,y=t((()=>{m=`wLOHwj`,h=`lFsM-Y`,g=`LPob63`,_=`tsaGtv`,v={button:m,iconOnly:h,buttonInner:g,buttonIcon:_}})),b,x,S,C=t((()=>{b=e(n(),1),a(),s(),l(),f(),y(),x=r(),S=(0,b.forwardRef)(function({children:e,disabled:t,className:n,icon:r,iconEnd:a,title:s,variant:l,tone:f,appearance:m,type:h=`button`,"aria-label":g,..._},y){let S=b.Children.count(e)>0,C=!!r&&!S,w=u({variant:l,tone:f,appearance:m,fallbackAppearance:f&&f!==`neutral`?`solid`:`outline`}),T=C?g??s:g,E=(0,x.jsx)(`button`,{..._,ref:y,type:h,disabled:t,"aria-label":T,className:i(c.uiElement,c.uiInputControl,v.button,d(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 s?(0,x.jsx)(o,{placement:`bottom`,tooltip:!0,content:(0,x.jsx)(x.Fragment,{children:s}),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{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-D90hKkIJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-Bg8QclQy.js";import{n as o,t as s}from"./popover-Dph7wJ1_.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{i as u,n as d,r as f,t as p}from"./uiClasses-CaHp0EWd.js";var m,h,g,_,v,y=t((()=>{m=`wLOHwj`,h=`lFsM-Y`,g=`LPob63`,_=`tsaGtv`,v={button:m,iconOnly:h,buttonInner:g,buttonIcon:_}})),b,x,S,C=t((()=>{b=e(n(),1),a(),s(),l(),f(),y(),x=r(),S=(0,b.forwardRef)(function({children:e,disabled:t,className:n,icon:r,iconEnd:a,title:s,variant:l,tone:f,appearance:m,type:h=`button`,"aria-label":g,..._},y){let S=b.Children.count(e)>0,C=!!r&&!S,w=u({variant:l,tone:f,appearance:m,fallbackAppearance:f&&f!==`neutral`?`solid`:`outline`}),T=C?g??s:g,E=(0,x.jsx)(`button`,{..._,ref:y,type:h,disabled:t,"aria-label":T,className:i(c.uiElement,c.uiInputControl,v.button,d(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 s?(0,x.jsx)(o,{placement:`bottom`,tooltip:!0,content:(0,x.jsx)(x.Fragment,{children:s}),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
  | "error"
@@ -1,4 +1,4 @@
1
- import{a as e,i as t}from"./preload-helper-B45gAKPr.js";import{t as n}from"./jsx-runtime-BBQGix-2.js";import{P as r,b as i,mt as a,t as o,ut as s}from"./lucide-react-DaLrYAcN.js";import{n as c,t as l}from"./Button-DHUm4dn9.js";var u=e({Basic:()=>m,ComposableScheme:()=>g,Variants:()=>h,WithIcons:()=>_,__namedExportsOrder:()=>v,default:()=>p}),d,f,p,m,h,g,_,v,y=t((()=>{o(),c(),d=n(),{fn:f}=__STORYBOOK_MODULE_TEST__,p={title:`Shared/UI/Button`,component:l,args:{children:`Действие`,variant:`neutralOutline`,disabled:!1,iconEnd:!1,onClick:f()},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текстовое содержимое кнопки.`,control:`text`},variant:{description:"Готовая схема для обратной совместимости. Если заданы `tone` или `appearance`, они имеют приоритет.",control:`select`,options:[`neutral`,`neutralOutline`,`ghost`,`error`,`warning`,`success`,`info`,`errorOutline`,`warningOutline`,`successOutline`,`infoOutline`,`transparent`]},tone:{description:`Семантический тон кнопки.`,control:`inline-radio`,options:[`neutral`,`error`,`warning`,`success`,`info`]},appearance:{description:`Визуальная форма кнопки.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},icon:{description:`Иконка слева или справа от текста.`,control:!1},iconEnd:{description:`Перемещает иконку в конец кнопки.`,control:`boolean`},title:{description:"Текст тултипа и `aria-label` для кнопки.",control:`text`},disabled:{description:`Блокирует нажатие.`,control:`boolean`},onClick:{description:`Вызывается при нажатии на кнопку.`,control:!1},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},m={},h={render:()=>(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,d.jsx)(l,{variant:`neutral`,children:`Neutral Solid`}),(0,d.jsx)(l,{variant:`neutralOutline`,children:`Neutral Outline`}),(0,d.jsx)(l,{variant:`ghost`,children:`Ghost`}),(0,d.jsx)(l,{variant:`info`,children:`Info Solid`}),(0,d.jsx)(l,{variant:`success`,children:`Success Solid`}),(0,d.jsx)(l,{variant:`warning`,children:`Warning Solid`}),(0,d.jsx)(l,{variant:`error`,children:`Error Solid`}),(0,d.jsx)(l,{variant:`infoOutline`,children:`Info Outline`}),(0,d.jsx)(l,{variant:`successOutline`,children:`Success Outline`}),(0,d.jsx)(l,{variant:`warningOutline`,children:`Warning Outline`}),(0,d.jsx)(l,{variant:`errorOutline`,children:`Error Outline`}),(0,d.jsx)(l,{variant:`transparent`,children:`Transparent`})]}),args:{children:`Действие`}},g={render:()=>(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,d.jsx)(l,{tone:`neutral`,appearance:`solid`,children:`Neutral Solid`}),(0,d.jsx)(l,{tone:`neutral`,appearance:`outline`,children:`Neutral Outline`}),(0,d.jsx)(l,{tone:`neutral`,appearance:`ghost`,children:`Neutral Ghost`}),(0,d.jsx)(l,{tone:`info`,appearance:`outline`,children:`Info Outline`}),(0,d.jsx)(l,{tone:`success`,appearance:`solid`,children:`Success Solid`}),(0,d.jsx)(l,{tone:`error`,appearance:`transparent`,children:`Error Transparent`})]})},_={render:()=>(0,d.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[(0,d.jsx)(l,{icon:(0,d.jsx)(r,{}),children:`Скачать`}),(0,d.jsx)(l,{icon:(0,d.jsx)(i,{}),tone:`info`,appearance:`solid`,children:`Создать`}),(0,d.jsx)(l,{icon:(0,d.jsx)(s,{}),iconEnd:!0,tone:`success`,appearance:`solid`,children:`Подтвердить`}),(0,d.jsx)(l,{icon:(0,d.jsx)(a,{}),title:`Уведомления`})]}),args:{children:`Действие`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
1
+ import{a as e,i as t}from"./preload-helper-B45gAKPr.js";import{t as n}from"./jsx-runtime-BBQGix-2.js";import{P as r,b as i,mt as a,t as o,ut as s}from"./lucide-react-ClGevkpS.js";import{n as c,t as l}from"./Button-c4nDxtrg.js";var u=e({Basic:()=>m,ComposableScheme:()=>g,Variants:()=>h,WithIcons:()=>_,__namedExportsOrder:()=>v,default:()=>p}),d,f,p,m,h,g,_,v,y=t((()=>{o(),c(),d=n(),{fn:f}=__STORYBOOK_MODULE_TEST__,p={title:`Shared/UI/Button`,component:l,args:{children:`Действие`,variant:`neutralOutline`,disabled:!1,iconEnd:!1,onClick:f()},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{children:{description:`Текстовое содержимое кнопки.`,control:`text`},variant:{description:"Готовая схема для обратной совместимости. Если заданы `tone` или `appearance`, они имеют приоритет.",control:`select`,options:[`neutral`,`neutralOutline`,`ghost`,`error`,`warning`,`success`,`info`,`errorOutline`,`warningOutline`,`successOutline`,`infoOutline`,`transparent`]},tone:{description:`Семантический тон кнопки.`,control:`inline-radio`,options:[`neutral`,`error`,`warning`,`success`,`info`]},appearance:{description:`Визуальная форма кнопки.`,control:`inline-radio`,options:[`solid`,`outline`,`ghost`,`transparent`]},icon:{description:`Иконка слева или справа от текста.`,control:!1},iconEnd:{description:`Перемещает иконку в конец кнопки.`,control:`boolean`},title:{description:"Текст тултипа и `aria-label` для кнопки.",control:`text`},disabled:{description:`Блокирует нажатие.`,control:`boolean`},onClick:{description:`Вызывается при нажатии на кнопку.`,control:!1},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},m={},h={render:()=>(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,d.jsx)(l,{variant:`neutral`,children:`Neutral Solid`}),(0,d.jsx)(l,{variant:`neutralOutline`,children:`Neutral Outline`}),(0,d.jsx)(l,{variant:`ghost`,children:`Ghost`}),(0,d.jsx)(l,{variant:`info`,children:`Info Solid`}),(0,d.jsx)(l,{variant:`success`,children:`Success Solid`}),(0,d.jsx)(l,{variant:`warning`,children:`Warning Solid`}),(0,d.jsx)(l,{variant:`error`,children:`Error Solid`}),(0,d.jsx)(l,{variant:`infoOutline`,children:`Info Outline`}),(0,d.jsx)(l,{variant:`successOutline`,children:`Success Outline`}),(0,d.jsx)(l,{variant:`warningOutline`,children:`Warning Outline`}),(0,d.jsx)(l,{variant:`errorOutline`,children:`Error Outline`}),(0,d.jsx)(l,{variant:`transparent`,children:`Transparent`})]}),args:{children:`Действие`}},g={render:()=>(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,gridTemplateColumns:`repeat(auto-fit, minmax(180px, 1fr))`},children:[(0,d.jsx)(l,{tone:`neutral`,appearance:`solid`,children:`Neutral Solid`}),(0,d.jsx)(l,{tone:`neutral`,appearance:`outline`,children:`Neutral Outline`}),(0,d.jsx)(l,{tone:`neutral`,appearance:`ghost`,children:`Neutral Ghost`}),(0,d.jsx)(l,{tone:`info`,appearance:`outline`,children:`Info Outline`}),(0,d.jsx)(l,{tone:`success`,appearance:`solid`,children:`Success Solid`}),(0,d.jsx)(l,{tone:`error`,appearance:`transparent`,children:`Error Transparent`})]})},_={render:()=>(0,d.jsxs)(`div`,{style:{display:`flex`,gap:12,flexWrap:`wrap`},children:[(0,d.jsx)(l,{icon:(0,d.jsx)(r,{}),children:`Скачать`}),(0,d.jsx)(l,{icon:(0,d.jsx)(i,{}),tone:`info`,appearance:`solid`,children:`Создать`}),(0,d.jsx)(l,{icon:(0,d.jsx)(s,{}),iconEnd:!0,tone:`success`,appearance:`solid`,children:`Подтвердить`}),(0,d.jsx)(l,{icon:(0,d.jsx)(a,{}),title:`Уведомления`})]}),args:{children:`Действие`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
2
2
  // play: async function ({ args, canvas, userEvent }) {
3
3
  // const button = canvas.getByRole("button", { name: /button/i });
4
4
  // // 👇 Simulate behavior
@@ -1,2 +1,2 @@
1
- import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-CELq1yHK.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-V012ES4W.js";import{f as o,t as s}from"./lucide-react-DaLrYAcN.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{n as u,r as d}from"./uiClasses-CaHp0EWd.js";import{n as f,t as p}from"./CheckBox.module-Hr3mvdAC.js";function m({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:l,value:d,noWrap:f,id:m,tone:_=`neutral`,...v}){let y=(0,h.useId)(),b=m??y,x=t?`${b}-description`:void 0,S=e??n,C=d??!1;return(0,g.jsxs)(`div`,{className:i(c.uiElement,a&&c.uiSizable,a&&c[a],r&&c.disabled,s),"aria-disabled":r||void 0,children:[(0,g.jsxs)(`div`,{className:p.row,children:[(0,g.jsxs)(`div`,{className:i(p.wrapper,u(_)),children:[(0,g.jsx)(`input`,{...v,id:b,type:`checkbox`,checked:C,disabled:r,"aria-checked":C,"aria-describedby":x,className:i(c.uiSelectionControl,p.input),onChange:()=>l?.(!C)}),(0,g.jsx)(`div`,{className:i(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,g.jsx)(o,{})})]}),S&&(0,g.jsx)(`label`,{htmlFor:b,className:i(c.uiLabelBase,f&&`textNoWrap`),children:S})]}),t&&(0,g.jsx)(`p`,{id:x,className:c.uiDescription,children:t})]})}var h,g,_=t((()=>{h=e(n(),1),a(),s(),l(),d(),f(),g=r(),m.__docgenInfo={description:`Компонент флажка для выбора булевого значения в формах и списках.
1
+ import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-D90hKkIJ.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-Bg8QclQy.js";import{f as o,t as s}from"./lucide-react-ClGevkpS.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{n as u,r as d}from"./uiClasses-CaHp0EWd.js";import{n as f,t as p}from"./CheckBox.module-Hr3mvdAC.js";function m({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:l,value:d,noWrap:f,id:m,tone:_=`neutral`,...v}){let y=(0,h.useId)(),b=m??y,x=t?`${b}-description`:void 0,S=e??n,C=d??!1;return(0,g.jsxs)(`div`,{className:i(c.uiElement,a&&c.uiSizable,a&&c[a],r&&c.disabled,s),"aria-disabled":r||void 0,children:[(0,g.jsxs)(`div`,{className:p.row,children:[(0,g.jsxs)(`div`,{className:i(p.wrapper,u(_)),children:[(0,g.jsx)(`input`,{...v,id:b,type:`checkbox`,checked:C,disabled:r,"aria-checked":C,"aria-describedby":x,className:i(c.uiSelectionControl,p.input),onChange:()=>l?.(!C)}),(0,g.jsx)(`div`,{className:i(c.uiSelectionIcon,p.icon),"aria-hidden":`true`,children:(0,g.jsx)(o,{})})]}),S&&(0,g.jsx)(`label`,{htmlFor:b,className:i(c.uiLabelBase,f&&`textNoWrap`),children:S})]}),t&&(0,g.jsx)(`p`,{id:x,className:c.uiDescription,children:t})]})}var h,g,_=t((()=>{h=e(n(),1),a(),s(),l(),d(),f(),g=r(),m.__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" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"neutral"`},{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:``}},composes:[`Omit`]}}));export{_ as n,m as t};
@@ -1,4 +1,4 @@
1
- import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-nvFBZnmF.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-BUeZ3JmE.js";import{Controlled as p,Disabled as m,Sizes as h,Tones as g,n as _,t as v}from"./CheckBox.stories-DNVyyKgk.js";function y(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(a,{of:v,parameters:{docs:{toc:!0}}}),`
1
+ import{i as e}from"./preload-helper-B45gAKPr.js";import{E as t,a as n,d as r,f as i,l as a,m as o,n as s,p as c,r as l,u}from"./blocks-DsN3hykK.js";import{t as d}from"./jsx-runtime-BBQGix-2.js";import{t as f}from"./mdx-react-shim-CdXPOrRW.js";import{Controlled as p,Disabled as m,Sizes as h,Tones as g,n as _,t as v}from"./CheckBox.stories-Q78_xCB-.js";function y(e){let o={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...t(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(a,{of:v,parameters:{docs:{toc:!0}}}),`
2
2
  `,(0,x.jsx)(c,{children:`CheckBox`}),`
3
3
  `,(0,x.jsx)(i,{children:`Флажок для булевых полей с общими UI-схемами tone и appearance`}),`
4
4
  `,(0,x.jsx)(o.p,{children:`CheckBox уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
@@ -1,4 +1,4 @@
1
- import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-CELq1yHK.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{n as a,t as o}from"./CheckBox-Cn0oEy-0.js";var s=e({Controlled:()=>d,Disabled:()=>m,Sizes:()=>p,Tones:()=>f,__namedExportsOrder:()=>h,default:()=>u}),c,l,u,d,f,p,m,h,g=n((()=>{c=t(r(),1),a(),l=i(),u={title:`Shared/UI/CheckBox`,component:o,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`,`error`,`warning`,`success`,`info`]}}},d={render:e=>{let[t,n]=(0,c.useState)(e.value??!1);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Принимать условия`,description:`Подтверждение условий использования сервиса.`,value:!1,size:`md`,disabled:!1,tone:`neutral`}},f={render:()=>{let[e,t]=(0,c.useState)({neutral:!0,info:!0,success:!0,warning:!0,error:!0});return(0,l.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`neutral`,`info`,`success`,`warning`,`error`].map(n=>(0,l.jsx)(o,{tone:n,label:`Тон ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},p={render:()=>{let[e,t]=(0,c.useState)({xs:!1,sm:!0,md:!1,lg:!0,xl:!1});return(0,l.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`xs`,`sm`,`md`,`lg`,`xl`].map(n=>(0,l.jsx)(o,{size:n,label:`Размер ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},m={args:{label:`Недоступный чекбокс`,description:`Изменение недоступно из-за прав доступа.`,value:!0,disabled:!0,tone:`neutral`}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
1
+ import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-D90hKkIJ.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{n as a,t as o}from"./CheckBox-6Qr3jWMy.js";var s=e({Controlled:()=>d,Disabled:()=>m,Sizes:()=>p,Tones:()=>f,__namedExportsOrder:()=>h,default:()=>u}),c,l,u,d,f,p,m,h,g=n((()=>{c=t(r(),1),a(),l=i(),u={title:`Shared/UI/CheckBox`,component:o,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`,`error`,`warning`,`success`,`info`]}}},d={render:e=>{let[t,n]=(0,c.useState)(e.value??!1);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Принимать условия`,description:`Подтверждение условий использования сервиса.`,value:!1,size:`md`,disabled:!1,tone:`neutral`}},f={render:()=>{let[e,t]=(0,c.useState)({neutral:!0,info:!0,success:!0,warning:!0,error:!0});return(0,l.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`neutral`,`info`,`success`,`warning`,`error`].map(n=>(0,l.jsx)(o,{tone:n,label:`Тон ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},p={render:()=>{let[e,t]=(0,c.useState)({xs:!1,sm:!0,md:!1,lg:!0,xl:!1});return(0,l.jsx)(`div`,{style:{display:`grid`,gap:12},children:[`xs`,`sm`,`md`,`lg`,`xl`].map(n=>(0,l.jsx)(o,{size:n,label:`Размер ${n}`,value:e[n],onChange:e=>t(t=>({...t,[n]:e}))},n))})}},m={args:{label:`Недоступный чекбокс`,description:`Изменение недоступно из-за прав доступа.`,value:!0,disabled:!0,tone:`neutral`}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
2
2
  render: args => {
3
3
  const [value, setValue] = useState(args.value ?? false);
4
4
  return <CheckBox {...args} value={value} onChange={setValue} />;