@ryuzaki13/react-foundation-ui 2.0.0 → 2.1.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 (271) hide show
  1. package/dist/listbox/Listbox.d.ts +3 -1
  2. package/dist/listbox/Listbox.d.ts.map +1 -1
  3. package/dist/listbox/index.js +69 -60
  4. package/dist/listbox/index.js.map +1 -1
  5. package/dist/status-indicator/StatusIndicator.d.ts +14 -0
  6. package/dist/status-indicator/StatusIndicator.d.ts.map +1 -0
  7. package/dist/status-indicator/index.d.ts +2 -0
  8. package/dist/status-indicator/index.d.ts.map +1 -0
  9. package/dist/status-indicator/index.js +38 -0
  10. package/dist/status-indicator/index.js.map +1 -0
  11. package/dist/styles.css +1 -1
  12. package/package.json +5 -1
  13. package/storybook-static/assets/{Badge-DTLs_n8R.js → Badge-BXbiidny.js} +1 -1
  14. package/storybook-static/assets/{Badge.stories-CovEhEDD.js → Badge.stories-DCOkVsyk.js} +1 -1
  15. package/storybook-static/assets/{BadgeList-DjTg_9cc.js → BadgeList-DgUScGRc.js} +1 -1
  16. package/storybook-static/assets/{BarcodeScannerDialog.stories-C5rK3W2F.js → BarcodeScannerDialog.stories-7Bv_TejN.js} +1 -1
  17. package/storybook-static/assets/{Button-xWt087rv.js → Button-0UDcBhBt.js} +1 -1
  18. package/storybook-static/assets/{Button-DMPKoI7-.js → Button-BpQRrzrS.js} +1 -1
  19. package/storybook-static/assets/{Button.stories-ClLOimQw.js → Button.stories-CLMnxj3w.js} +1 -1
  20. package/storybook-static/assets/{CalendarView-C8D421Nm.js → CalendarView-B93LI4f_.js} +1 -1
  21. package/storybook-static/assets/{CheckBox-ByaB_AWI.js → CheckBox-BaAouU5d.js} +1 -1
  22. package/storybook-static/assets/{CheckBox-CHNYWbr9.js → CheckBox-CFusvDS8.js} +1 -1
  23. package/storybook-static/assets/{CheckBox.stories-DMFiXHJV.js → CheckBox.stories-Bdr_GC0M.js} +1 -1
  24. package/storybook-static/assets/{Color-6AOWCN3U-CP9Nd4vj.js → Color-6AOWCN3U-B8A6Hc7V.js} +1 -1
  25. package/storybook-static/assets/{ContextMenu-DSg2_txz.js → ContextMenu-BcNU89-b.js} +1 -1
  26. package/storybook-static/assets/{ContextMenu-68QC2EAu.js → ContextMenu-CvHpWBGV.js} +1 -1
  27. package/storybook-static/assets/{ContextMenu.stories-C8CldSPG.js → ContextMenu.stories-DQDlVNxB.js} +1 -1
  28. package/storybook-static/assets/{CustomOptionButton-xAusSjnU.js → CustomOptionButton-DkGlBvWP.js} +1 -1
  29. package/storybook-static/assets/{DateInput-2ESK1wDg.js → DateInput-CWsb-NhT.js} +1 -1
  30. package/storybook-static/assets/{DateInput-DOuoBC8j.js → DateInput-NkrPSWMl.js} +1 -1
  31. package/storybook-static/assets/{DateInput.stories-D5t5QnTV.js → DateInput.stories-Bvz465d-.js} +1 -1
  32. package/storybook-static/assets/{DateRangePresetSelect-C8k5BN7p.js → DateRangePresetSelect-DC6_r8SQ.js} +1 -1
  33. package/storybook-static/assets/{DateRangePresetSelect-CD2n8zWv.js → DateRangePresetSelect-DQlphKzc.js} +1 -1
  34. package/storybook-static/assets/{DateRangePresetSelect.stories-COktncMK.js → DateRangePresetSelect.stories-DVfqPYN5.js} +1 -1
  35. package/storybook-static/assets/{Detail-oc_R1sEu.js → Detail-CXQYyd94.js} +1 -1
  36. package/storybook-static/assets/{Detail.stories-1XrWL_s3.js → Detail.stories-BEXByYXt.js} +1 -1
  37. package/storybook-static/assets/{Dialog-CLTQa6Kw.js → Dialog-B2UTbDCv.js} +1 -1
  38. package/storybook-static/assets/{Dialog-CfnOq258.js → Dialog-CyYTYgbp.js} +1 -1
  39. package/storybook-static/assets/{Dialog.stories-D5PPDse-.js → Dialog.stories-BWluB4Ya.js} +1 -1
  40. package/storybook-static/assets/{Disclosure-ByNKoHvP.js → Disclosure-Dv5XOsna.js} +1 -1
  41. package/storybook-static/assets/{Disclosure.stories-CBdZfYjY.js → Disclosure.stories-BxK_fmJE.js} +1 -1
  42. package/storybook-static/assets/{DisclosureGroup-D3XWBJXQ.js → DisclosureGroup-B2O8D8CG.js} +1 -1
  43. package/storybook-static/assets/{DocsRenderer-JROSPFPF-gxuFq2Pd.js → DocsRenderer-JROSPFPF-7N0jH0Oi.js} +1 -1
  44. package/storybook-static/assets/{DropZone-BxLXKfqY.js → DropZone-DL34ooyF.js} +1 -1
  45. package/storybook-static/assets/{DropZone-C6xiwfG-.js → DropZone-ZlPjdEuO.js} +1 -1
  46. package/storybook-static/assets/{DropZone.stories-BpRrpoAa.js → DropZone.stories-BT9JvF9d.js} +1 -1
  47. package/storybook-static/assets/{DropdownMenu-CmzYr9oI.js → DropdownMenu-BhC5f2Qc.js} +1 -1
  48. package/storybook-static/assets/{ExpandableActionPanel-YeKyHEkM.js → ExpandableActionPanel-C77qVHBP.js} +1 -1
  49. package/storybook-static/assets/{ExpandableActionPanel.stories-D2Kz4YaV.js → ExpandableActionPanel.stories-D1MJEw6F.js} +1 -1
  50. package/storybook-static/assets/{Flex-QTek1QSS.js → Flex-BHt3-yoh.js} +1 -1
  51. package/storybook-static/assets/{Flex.stories-DbQJjxyG.js → Flex.stories-M8QVGuVA.js} +1 -1
  52. package/storybook-static/assets/{FloatingPopover-Z_pT8RTr.js → FloatingPopover-Dch6_6e0.js} +1 -1
  53. package/storybook-static/assets/{FormattedTableCell-sTTQO4a-.js → FormattedTableCell-CXyG4Yj2.js} +1 -1
  54. package/storybook-static/assets/{Grid-BplOAlTQ.js → Grid-CcyaioK_.js} +1 -1
  55. package/storybook-static/assets/{Grid.stories-3z3Ey-d3.js → Grid.stories-CTHcYkKa.js} +1 -1
  56. package/storybook-static/assets/{ImageCropper.stories-CRS_mYqv.js → ImageCropper.stories-B84lQIPy.js} +1 -1
  57. package/storybook-static/assets/{ImageRenderer-B-6CUiXT.js → ImageRenderer-kTsPC-b5.js} +1 -1
  58. package/storybook-static/assets/{ImageRenderer.stories-r1qsDpQo.js → ImageRenderer.stories-pozsCEPL.js} +1 -1
  59. package/storybook-static/assets/{ImageView.stories-JTwPOvTV.js → ImageView.stories-CNttofCE.js} +1 -1
  60. package/storybook-static/assets/{ImageViewer.stories-EXX-1Tq3.js → ImageViewer.stories-D_7oQpyX.js} +2 -2
  61. package/storybook-static/assets/{ImageViewerRuntime-D9mEsiiW.js → ImageViewerRuntime-Dnc70fBS.js} +1 -1
  62. package/storybook-static/assets/{Input-o_oY36pr.js → Input-BO9q-b1i.js} +1 -1
  63. package/storybook-static/assets/{Input-t9m3sVNs.js → Input-DvRmrrtj.js} +1 -1
  64. package/storybook-static/assets/{Input.stories-BWFSZL_N.js → Input.stories-DeKdGxIC.js} +1 -1
  65. package/storybook-static/assets/{InputDateTime-lu3pzt-n.js → InputDateTime-hqRtizlN.js} +1 -1
  66. package/storybook-static/assets/{InputDateTime.stories-DhWcuSxT.js → InputDateTime.stories-BpGhWbRp.js} +1 -1
  67. package/storybook-static/assets/{InputFile-B5JzTYSK.js → InputFile-CExDbGYJ.js} +1 -1
  68. package/storybook-static/assets/{InputFile-DR6qGFRh.js → InputFile-CTDHdo2g.js} +1 -1
  69. package/storybook-static/assets/{InputFile.stories-BDkbSn8C.js → InputFile.stories-BIinoG-U.js} +1 -1
  70. package/storybook-static/assets/{InputFiles-D1flVl2f.js → InputFiles-BWeRuTCh.js} +1 -1
  71. package/storybook-static/assets/{InputFiles-CQU1IgFq.js → InputFiles-Cvdn_5IV.js} +1 -1
  72. package/storybook-static/assets/{InputFiles.stories-DyNBsbIL.js → InputFiles.stories-J2bb48sN.js} +1 -1
  73. package/storybook-static/assets/{InputFilesList-DcnsEkjI.js → InputFilesList-DO6IJW98.js} +1 -1
  74. package/storybook-static/assets/{InputImage-trdfpmT-.js → InputImage-BtsIbqEc.js} +1 -1
  75. package/storybook-static/assets/{InputImage-DyS8prBK.js → InputImage-C7zaIkCa.js} +1 -1
  76. package/storybook-static/assets/{InputImage.stories-DEk-50bc.js → InputImage.stories--ewdBKin.js} +1 -1
  77. package/storybook-static/assets/{InteractiveComponents-CJQb2Kqe.js → InteractiveComponents-Cy9Y2J_q.js} +1 -1
  78. package/storybook-static/assets/{InteractiveComponents.stories-A25AcgXi.js → InteractiveComponents.stories-CgC4nhd3.js} +1 -1
  79. package/storybook-static/assets/{LayoutPicker-Cyr59f6W.js → LayoutPicker-CfgWKTDC.js} +1 -1
  80. package/storybook-static/assets/LayoutPicker-DhJgMxdf.js +376 -0
  81. package/storybook-static/assets/{LayoutPicker.stories-BN6ES2FK.js → LayoutPicker.stories-Bli7rQRh.js} +1 -1
  82. package/storybook-static/assets/{Listbox-CpOkTSus.js → Listbox-_MNXWNW7.js} +16 -4
  83. package/storybook-static/assets/Listbox-bq5sSQnZ.js +1 -0
  84. package/storybook-static/assets/{Listbox.stories-CuJAPNNF.js → Listbox.stories-BP9mqHoo.js} +1 -1
  85. package/storybook-static/assets/{Modal-BDbbUiVP.js → Modal-CNt7-iWI.js} +1 -1
  86. package/storybook-static/assets/{Modal-0h4g26vg.js → Modal-Dwqp7agw.js} +1 -1
  87. package/storybook-static/assets/{Modal.stories-BJTQMX6r.js → Modal.stories-D2Hj75pl.js} +1 -1
  88. package/storybook-static/assets/{ModalManagerProvider-CKUlkLye.js → ModalManagerProvider-BoCpnUex.js} +1 -1
  89. package/storybook-static/assets/{MultiSelect-jTomHycE.js → MultiSelect-B1BckUGX.js} +1 -1
  90. package/storybook-static/assets/MultiSelect-CTfbXQVD.js +2 -0
  91. package/storybook-static/assets/{MultiSelect.stories-KUrIgYcH.js → MultiSelect.stories-BdMJk22c.js} +1 -1
  92. package/storybook-static/assets/{NoData-Cg-72gvD.js → NoData-CNK8-UBc.js} +1 -1
  93. package/storybook-static/assets/{NotificationsHost-BGUy6Nwm.js → NotificationsHost-Cczj_pFY.js} +1 -1
  94. package/storybook-static/assets/{NotificationsHost.stories-UqcdAxbV.js → NotificationsHost.stories-BPB6hfSI.js} +1 -1
  95. package/storybook-static/assets/{ODataMultiSelect-ogSmpbiq.js → ODataMultiSelect-CahWMsCQ.js} +1 -1
  96. package/storybook-static/assets/{ODataMultiSelect.stories-CFSWPA1t.js → ODataMultiSelect.stories-Dnyu2-gz.js} +1 -1
  97. package/storybook-static/assets/{ODataSelect-XrSMzI_c.js → ODataSelect-DxbjbdNx.js} +1 -1
  98. package/storybook-static/assets/{ODataSelect.stories-DzQ8kx1B.js → ODataSelect.stories-DfK9yHK7.js} +1 -1
  99. package/storybook-static/assets/{ODataTreeMultiSelect-Bd6N1nUD.js → ODataTreeMultiSelect-DOgHyKon.js} +1 -1
  100. package/storybook-static/assets/{ODataTreeMultiSelect.stories-BL3LegRZ.js → ODataTreeMultiSelect.stories-Dv0-ackb.js} +1 -1
  101. package/storybook-static/assets/{ODataTreeSelect-LP9MrILe.js → ODataTreeSelect-DIoygv27.js} +1 -1
  102. package/storybook-static/assets/{ODataTreeSelect.stories-B1xaZzaX.js → ODataTreeSelect.stories-D4mZcW9Z.js} +1 -1
  103. package/storybook-static/assets/{OneStepScroller-Ccn3TcUI.js → OneStepScroller-DNTilSDM.js} +1 -1
  104. package/storybook-static/assets/{Option-CdzPub1C.js → Option-qcKM13Ly.js} +1 -1
  105. package/storybook-static/assets/{OptionButton-BmRyJTuO.js → OptionButton-DrNo-DMV.js} +1 -1
  106. package/storybook-static/assets/{PeriodSelect-kQAjEWSH.js → PeriodSelect-DjzmUohy.js} +1 -1
  107. package/storybook-static/assets/{PeriodSelect-BngzAU_C.js → PeriodSelect-Dk-_iKeR.js} +1 -1
  108. package/storybook-static/assets/{PeriodSelect.stories-BRvyn_JH.js → PeriodSelect.stories-d58Lz3DJ.js} +1 -1
  109. package/storybook-static/assets/PickerField-Dv1S8Wit.js +1 -0
  110. package/storybook-static/assets/{PickerTriggerActions-C0nuR9kw.js → PickerTriggerActions-dbXPGPRy.js} +1 -1
  111. package/storybook-static/assets/{Popover-CsDztf-o.js → Popover-DMrefrsO.js} +1 -1
  112. package/storybook-static/assets/{Popover-GYtSL_1f.js → Popover-tPH8grZD.js} +1 -1
  113. package/storybook-static/assets/{Popover.stories-Bqt_2L3Y.js → Popover.stories-BGgMddUi.js} +1 -1
  114. package/storybook-static/assets/{PresetRangeDateInput-C9G9Gebd.js → PresetRangeDateInput-Bi01AT1-.js} +1 -1
  115. package/storybook-static/assets/{PresetRangeDateInput-BSssho5H.js → PresetRangeDateInput-Bi5D7AvA.js} +1 -1
  116. package/storybook-static/assets/{PresetRangeDateInput.stories-CwdMXBFw.js → PresetRangeDateInput.stories-BK9PG5Us.js} +1 -1
  117. package/storybook-static/assets/{PresetSelect-BPsCLuct.js → PresetSelect-Bo_urWXj.js} +1 -1
  118. package/storybook-static/assets/{README-DtQcSyrT.js → README-5MsrC0tc.js} +1 -1
  119. package/storybook-static/assets/{README-DS_nuTod.js → README-B2NTIwVC.js} +1 -1
  120. package/storybook-static/assets/{README-Tw0ZHHwr.js → README-BCXhBI3h.js} +1 -1
  121. package/storybook-static/assets/{README-vDg-39Yq.js → README-BIYrg5Jw.js} +1 -1
  122. package/storybook-static/assets/{README-D_a06RNK.js → README-BO0pPMhH.js} +1 -1
  123. package/storybook-static/assets/{README-D67Ndgh9.js → README-BOY9oCZ5.js} +1 -1
  124. package/storybook-static/assets/{README-DFCutGv3.js → README-BPDYLPfh.js} +1 -1
  125. package/storybook-static/assets/{README-Ckp4sw5f.js → README-BRxnSb_H.js} +1 -1
  126. package/storybook-static/assets/{README-D43Puppu.js → README-BTCDTs4l.js} +1 -1
  127. package/storybook-static/assets/{README-9XRn3-ED.js → README-BatM3k6o.js} +1 -1
  128. package/storybook-static/assets/{README-DQysVKmM.js → README-BbwNWG_A.js} +1 -1
  129. package/storybook-static/assets/{README-DoPWzeQH.js → README-Bccm-jZn.js} +1 -1
  130. package/storybook-static/assets/{README-C7j7n7jq.js → README-BrnWLQ7I.js} +1 -1
  131. package/storybook-static/assets/{README-Bq38hDzk.js → README-Bsm0nJfv.js} +1 -1
  132. package/storybook-static/assets/{README-BYHSzLwv.js → README-BxY8B5jC.js} +1 -1
  133. package/storybook-static/assets/{README-Dz8_KWoz.js → README-Bzz8tDjY.js} +1 -1
  134. package/storybook-static/assets/{README-BpmlhmtG.js → README-C1EYYUCN.js} +1 -1
  135. package/storybook-static/assets/{README-Y1Smckdh.js → README-C9LAWG5A.js} +1 -1
  136. package/storybook-static/assets/{README-PcQNwv17.js → README-CAYUX5Nb.js} +1 -1
  137. package/storybook-static/assets/{README-oKCgmTdw.js → README-CDXBNJlU.js} +1 -1
  138. package/storybook-static/assets/{README-HY5c2Bbn.js → README-CHOXjCGT.js} +1 -1
  139. package/storybook-static/assets/{README-CXq89IOI.js → README-CIy0Pj6l.js} +1 -1
  140. package/storybook-static/assets/{README-CV61J_JK.js → README-CLfxQA5V.js} +1 -1
  141. package/storybook-static/assets/{README-BhoxLtlr.js → README-CSkB_qWo.js} +1 -1
  142. package/storybook-static/assets/{README-BOBlSnDn.js → README-CUw7AGFv.js} +1 -1
  143. package/storybook-static/assets/{README-BXb7J1i8.js → README-CgvojwYv.js} +1 -1
  144. package/storybook-static/assets/{README-CxDM046q.js → README-ChyNimpn.js} +1 -1
  145. package/storybook-static/assets/{README-DXBpQ2ho.js → README-CiRdh2G1.js} +1 -1
  146. package/storybook-static/assets/{README-Del1wUfr.js → README-CsYvQc-H.js} +1 -1
  147. package/storybook-static/assets/{README-C07t0NIU.js → README-CvomZuv4.js} +1 -1
  148. package/storybook-static/assets/{README-Bc8lHbXV.js → README-D7IkoGLE.js} +1 -1
  149. package/storybook-static/assets/{README-CJtOh4Sd.js → README-DCitesDJ.js} +1 -1
  150. package/storybook-static/assets/{README-XW0y0mGh.js → README-DENkRq75.js} +1 -1
  151. package/storybook-static/assets/{README-DqbwD6RO.js → README-DI6PuVn_.js} +1 -1
  152. package/storybook-static/assets/{README-DXRNhATk.js → README-DJeVd42x.js} +1 -1
  153. package/storybook-static/assets/{README-BmzSVH7U.js → README-DLL_V1qq.js} +1 -1
  154. package/storybook-static/assets/{README-BRpdVUr9.js → README-DNkooR8C.js} +1 -1
  155. package/storybook-static/assets/{README-BLXGXOo5.js → README-DOqinQqt.js} +1 -1
  156. package/storybook-static/assets/{README-n1zI-vYE.js → README-DQzhOQJs.js} +1 -1
  157. package/storybook-static/assets/{README-GLir3V8b.js → README-DRTv3qN5.js} +1 -1
  158. package/storybook-static/assets/{README-e8EWTIws.js → README-DSx__uJY.js} +1 -1
  159. package/storybook-static/assets/{README-V9DD9H9z.js → README-DXV0j4Y9.js} +1 -1
  160. package/storybook-static/assets/{README-BIqQ7jYg.js → README-DnE0W6xN.js} +1 -1
  161. package/storybook-static/assets/{README-ZguU3X5y.js → README-DnjCb77l.js} +1 -1
  162. package/storybook-static/assets/{README-wKqwiHb4.js → README-DqTSHU_3.js} +1 -1
  163. package/storybook-static/assets/{README-pexCW3yI.js → README-G5BEMzLO.js} +1 -1
  164. package/storybook-static/assets/{README-Do7nnQ_n.js → README-WDknu02X.js} +1 -1
  165. package/storybook-static/assets/{README-Ba0tB6ZN.js → README-XlmyqVIs.js} +1 -1
  166. package/storybook-static/assets/{README-C53FAkdN.js → README-cmKi-NfO.js} +1 -1
  167. package/storybook-static/assets/{README-5RP00KZZ.js → README-iy7SbqPS.js} +1 -1
  168. package/storybook-static/assets/{README-CVql_W36.js → README-lyLRoc9A.js} +1 -1
  169. package/storybook-static/assets/{README-D-fVNtRb.js → README-oTjX8jJr.js} +1 -1
  170. package/storybook-static/assets/{README-DcWifa4y.js → README-qyGL-RQj.js} +1 -1
  171. package/storybook-static/assets/{RadioButton-DvDDf9wn.js → RadioButton-C5lYvVIl.js} +1 -1
  172. package/storybook-static/assets/{RadioButton-DGT616TU.js → RadioButton-_-grgF60.js} +1 -1
  173. package/storybook-static/assets/{RadioButton.stories-BSA2eNrW.js → RadioButton.stories-BNifE29D.js} +1 -1
  174. package/storybook-static/assets/{RadioGroup-Cj-zQisA.js → RadioGroup-CmDrRqLi.js} +1 -1
  175. package/storybook-static/assets/{RadioGroup-C_ZapH6C.js → RadioGroup-DWfHyBaQ.js} +1 -1
  176. package/storybook-static/assets/{RadioGroup.stories-B6HK1X-8.js → RadioGroup.stories-1PW9Krj9.js} +1 -1
  177. package/storybook-static/assets/{Scrollable-DCvN6Jjw.js → Scrollable-CWkMU4wH.js} +1 -1
  178. package/storybook-static/assets/Select-BCGnO525.js +12 -0
  179. package/storybook-static/assets/{Select-DY9-upm8.js → Select-DYtEG5uI.js} +1 -1
  180. package/storybook-static/assets/{Select.stories-CZ_QR5HG.js → Select.stories-CgldXYRU.js} +1 -1
  181. package/storybook-static/assets/{SerializableSelect-11vTkd0H.js → SerializableSelect-MmvKHZiv.js} +1 -1
  182. package/storybook-static/assets/{SerializableSelect.stories-BguIknSO.js → SerializableSelect.stories-Di0iM37P.js} +1 -1
  183. package/storybook-static/assets/{SingleDateTimeInput-DCsz6UCV.js → SingleDateTimeInput-Cz2Y7KEq.js} +1 -1
  184. package/storybook-static/assets/{SingleDateTimeInput-BoGhy8Ht.js → SingleDateTimeInput-Ds5YsLHg.js} +1 -1
  185. package/storybook-static/assets/{SingleDateTimeInput.stories-DxuSYUFA.js → SingleDateTimeInput.stories-BnuERNSZ.js} +1 -1
  186. package/storybook-static/assets/{Slider-CysM6SsH.js → Slider-CiZ7R_NX.js} +1 -1
  187. package/storybook-static/assets/{Slider-OjWEFAVX.js → Slider-Csaz4BeY.js} +1 -1
  188. package/storybook-static/assets/{Slider.stories-D9yfMGAr.js → Slider.stories-7Heg0Pgz.js} +1 -1
  189. package/storybook-static/assets/{SliderInput-DBTFSE4e.js → SliderInput-bTh2JTHG.js} +1 -1
  190. package/storybook-static/assets/{SliderInput-CI_NLQ0q.js → SliderInput-qWpLFzxj.js} +1 -1
  191. package/storybook-static/assets/{SliderInput.stories-D0oX3RFL.js → SliderInput.stories-DR_zyE-u.js} +1 -1
  192. package/storybook-static/assets/{Sortable-wMgs80Np.js → Sortable-P86Ancoa.js} +1 -1
  193. package/storybook-static/assets/{Sortable.stories-CzLFp8Yi.js → Sortable.stories-iiOkIM-G.js} +1 -1
  194. package/storybook-static/assets/{Splitter-BKw_fa4-.js → Splitter-mG3bB-U4.js} +1 -1
  195. package/storybook-static/assets/{Splitter.stories-BESoJ6o1.js → Splitter.stories-WhQOQVRq.js} +1 -1
  196. package/storybook-static/assets/{StateSelect-BO-jFCLn.js → StateSelect-De2PQDzp.js} +1 -1
  197. package/storybook-static/assets/{StateSelect-BwNBFERr.js → StateSelect-u1kaZwdD.js} +1 -1
  198. package/storybook-static/assets/{StateSelect.stories-BK7SyuXQ.js → StateSelect.stories-BO-C9UTF.js} +1 -1
  199. package/storybook-static/assets/StatusIndicator-BiTbPB5o.js +37 -0
  200. package/storybook-static/assets/StatusIndicator-CU9ICMrC.css +1 -0
  201. package/storybook-static/assets/StatusIndicator.stories-COaZnrFa.js +31 -0
  202. package/storybook-static/assets/{StringToggle.stories-A6pkEO-O.js → StringToggle.stories-CBt8bXzz.js} +1 -1
  203. package/storybook-static/assets/{Switch-Ca3gnf5f.js → Switch-BC2KYLX2.js} +1 -1
  204. package/storybook-static/assets/{Switch-8JotpfFf.js → Switch-BRKFbtp4.js} +1 -1
  205. package/storybook-static/assets/{Switch.stories-o3vvp8L8.js → Switch.stories-BAmX4W8J.js} +1 -1
  206. package/storybook-static/assets/{Table-C_IPJbR2.js → Table-D1OJnVmO.js} +1 -1
  207. package/storybook-static/assets/{Table.stories-DOFEu7Ua.js → Table.stories-C_JSdhJl.js} +1 -1
  208. package/storybook-static/assets/{Tabs-BLBo4OAv.js → Tabs-DiUKiz-h.js} +1 -1
  209. package/storybook-static/assets/{Tabs.stories-RBnCQrM-.js → Tabs.stories-DGys1vSD.js} +1 -1
  210. package/storybook-static/assets/{TabsBox-apqD4XLH.js → TabsBox-D4yfPiDY.js} +1 -1
  211. package/storybook-static/assets/{TagInput-CSYOG896.js → TagInput-ZyC-89b3.js} +1 -1
  212. package/storybook-static/assets/{TagInput.stories-BnGuMi6T.js → TagInput.stories-hVoLW5qr.js} +1 -1
  213. package/storybook-static/assets/{Text-mRhkARXu.js → Text-CMJA_7QZ.js} +1 -1
  214. package/storybook-static/assets/{Textarea-DS1hM5rM.js → Textarea-DjKw5r4e.js} +1 -1
  215. package/storybook-static/assets/{Textarea-Covk__BL.js → Textarea-Du012ObX.js} +1 -1
  216. package/storybook-static/assets/{Textarea.stories-BdpsMxDY.js → Textarea.stories-ShFda4o7.js} +1 -1
  217. package/storybook-static/assets/{TimePanel-PDYyBCbF.js → TimePanel-Bfkpbjrx.js} +1 -1
  218. package/storybook-static/assets/{TimePanel.stories-BFS31y6L.js → TimePanel.stories-4pV3fQVB.js} +1 -1
  219. package/storybook-static/assets/{Toggle-zWHGLyKm.js → Toggle-CPohFihI.js} +1 -1
  220. package/storybook-static/assets/{Toggle-DTX4Q7y6.js → Toggle-ChC8G1Et.js} +1 -1
  221. package/storybook-static/assets/{Toggle.stories-fZ7WRE_7.js → Toggle.stories-B3H1M8Ra.js} +1 -1
  222. package/storybook-static/assets/{TreeMultiSelect-BSZO9xe1.js → TreeMultiSelect-BpuHCHgJ.js} +1 -1
  223. package/storybook-static/assets/{TreeMultiSelect-C4y6p4PX.js → TreeMultiSelect-CbNz09Jk.js} +1 -1
  224. package/storybook-static/assets/{TreeMultiSelect.stories-DXKBBf5r.js → TreeMultiSelect.stories-Cmt05HgT.js} +1 -1
  225. package/storybook-static/assets/{TreePickerBase-CMHFqHVa.js → TreePickerBase-DGvBAQiy.js} +2 -2
  226. package/storybook-static/assets/{TreeSelect-Dh5uT4_T.js → TreeSelect-C_GCYsA3.js} +1 -1
  227. package/storybook-static/assets/{TreeSelect-DGXveWx3.js → TreeSelect-DvAlRur3.js} +1 -1
  228. package/storybook-static/assets/{TreeSelect.stories-Byy-mMTP.js → TreeSelect.stories-Cch2A2z5.js} +1 -1
  229. package/storybook-static/assets/{TreeTable-BN7J72I8.js → TreeTable-CmVxMvld.js} +1 -1
  230. package/storybook-static/assets/{TreeTable.stories-FYHTdBr3.js → TreeTable.stories-B46N8o8E.js} +1 -1
  231. package/storybook-static/assets/{blocks-o5-z1BZu.js → blocks-Bu5I-6jJ.js} +3 -3
  232. package/storybook-static/assets/{check-C4AaNZYo.js → check-BdRTIK6S.js} +1 -1
  233. package/storybook-static/assets/{chevron-down-DvNqUDlQ.js → chevron-down-EtmpBUf8.js} +1 -1
  234. package/storybook-static/assets/{chevron-left-DjMG1A8Y.js → chevron-left-CTLa8HIb.js} +1 -1
  235. package/storybook-static/assets/{chevron-right-Mitq9JQN.js → chevron-right-D_c_Cvi0.js} +1 -1
  236. package/storybook-static/assets/{chunk-W22LQPXL-DNwhYDee.js → chunk-W22LQPXL-B7ERYz6B.js} +1 -1
  237. package/storybook-static/assets/{circle-alert-RsaUYk8p.js → circle-alert-Dj1kZNNX.js} +1 -1
  238. package/storybook-static/assets/{circle-check-Bf5GP89g.js → circle-check-B1w7Ls8y.js} +1 -1
  239. package/storybook-static/assets/{components-B4tZ3-vQ.js → components-DqRn1i2k.js} +3 -3
  240. package/storybook-static/assets/{contextMenu-Ftv13fjh.js → contextMenu-ylNgC9hS.js} +1 -1
  241. package/storybook-static/assets/{download-BmjzCCZo.js → download-dw_WzNlC.js} +1 -1
  242. package/storybook-static/assets/{floating-ui.react-BY7cYh9B.js → floating-ui.react-C9sdi3nv.js} +1 -1
  243. package/storybook-static/assets/{foundationApi-C7zGaHuR.js → foundationApi-BJETphYp.js} +1 -1
  244. package/storybook-static/assets/{foundationLib-CQpPkJlc.js → foundationLib-DfRlYoD7.js} +1 -1
  245. package/storybook-static/assets/{hooks-DQXnNniA.js → hooks-B-ZW7F36.js} +1 -1
  246. package/storybook-static/assets/iframe-COgZ5GwG.js +1 -0
  247. package/storybook-static/assets/{iframe-Cb11iJVP.js → iframe-D0R9pFj7.js} +4 -4
  248. package/storybook-static/assets/{info-BmiY6Ur5.js → info-B0qzF0Mr.js} +1 -1
  249. package/storybook-static/assets/{odata-D-cQAIdp.js → odata-tqjAk19x.js} +1 -1
  250. package/storybook-static/assets/{odataStoryFixtures-BddSr1SB.js → odataStoryFixtures-D2yHs_jK.js} +1 -1
  251. package/storybook-static/assets/{react-wmXnhrTV.js → react-ClkCNz5L.js} +1 -1
  252. package/storybook-static/assets/{refresh-cw-BoUt7cjC.js → refresh-cw-K68D1zRy.js} +1 -1
  253. package/storybook-static/assets/{settings-2-BnEmfu4n.js → settings-2-D0jFfhpt.js} +1 -1
  254. package/storybook-static/assets/{sortable-BG6M9j0E.js → sortable-fWu4d9fl.js} +1 -1
  255. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-DTU-Nj55.js → syntaxhighlighter-QEQV7K2Y-Cs3Bxe3I.js} +1 -1
  256. package/storybook-static/assets/{trash-2-CEuSrdHe.js → trash-2-Bj60L0sq.js} +1 -1
  257. package/storybook-static/assets/{triangle-alert-BB6HrHL-.js → triangle-alert-CmzQ-r9i.js} +1 -1
  258. package/storybook-static/assets/{useODataSelectBase-DiMVVy-k.js → useODataSelectBase-CC4MnYeK.js} +1 -1
  259. package/storybook-static/assets/{useODataTreeData-DiV_gN4z.js → useODataTreeData-DsQmGQij.js} +1 -1
  260. package/storybook-static/assets/{usePickerQuery-Dc3Jdhg0.js → usePickerQuery-Qg7qGfmP.js} +1 -1
  261. package/storybook-static/assets/usePickerTriggerController-D-mhhmpS.js +6 -0
  262. package/storybook-static/assets/{x-CcdATVNL.js → x-DU3Tpzms.js} +1 -1
  263. package/storybook-static/iframe.html +2 -2
  264. package/storybook-static/index.json +1 -1
  265. package/storybook-static/project.json +1 -1
  266. package/storybook-static/assets/LayoutPicker-DmMkNRCR.js +0 -376
  267. package/storybook-static/assets/Listbox-BL6exIiK.js +0 -1
  268. package/storybook-static/assets/MultiSelect-DOFS5VMw.js +0 -2
  269. package/storybook-static/assets/Select-DPdZSw3l.js +0 -12
  270. package/storybook-static/assets/iframe-B-sjM2X5.js +0 -1
  271. package/storybook-static/assets/usePickerTriggerController-BjY_AiUm.js +0 -6
@@ -1,4 +1,4 @@
1
- import { HTMLAttributes, JSX, ReactNode } from "react";
1
+ import { type HTMLAttributes, type JSX, type ReactNode } from "react";
2
2
  type ListboxOption<T> = {
3
3
  value: T;
4
4
  label?: string;
@@ -6,6 +6,8 @@ type ListboxOption<T> = {
6
6
  };
7
7
  interface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue" | "value"> {
8
8
  options: ListboxOption<T>[];
9
+ label?: ReactNode;
10
+ description?: string;
9
11
  disabled?: boolean;
10
12
  focusOnMount?: boolean;
11
13
  renderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox.d.ts","sourceRoot":"","sources":["../../src/listbox/Listbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEN,cAAc,EACd,GAAG,EAEH,SAAS,EAOT,MAAM,OAAO,CAAC;AAaf,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,UAAU,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAChH,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IACzF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAGD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACxD;AAGD,UAAU,iBAAiB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC1D;AA4BD;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}
1
+ {"version":3,"file":"Listbox.d.ts","sourceRoot":"","sources":["../../src/listbox/Listbox.tsx"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,GAAG,EAGR,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAaf,KAAK,aAAa,CAAC,CAAC,IAAI;IACvB,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,UAAU,gBAAgB,CAAC,CAAC,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,OAAO,CAAC;IAChH,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,KAAK,SAAS,CAAC;IACzF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CAC7D;AAGD,UAAU,kBAAkB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC1D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CACxD;AAGD,UAAU,iBAAiB,CAAC,CAAC,CAAE,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACZ,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC1D;AA4BD;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AACtE,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { CustomOptionButton as e, Option as t, OptionButton as n } from "../option/index.js";
2
- import { h as r } from "../chunks/picker-DZ4-1BvK.js";
3
- import { useEffect as i, useId as a, useLayoutEffect as o, useMemo as s, useRef as c, useState as l } from "react";
2
+ import { h as r, v as i } from "../chunks/picker-DZ4-1BvK.js";
3
+ import { useEffect as a, useLayoutEffect as o, useMemo as s, useRef as c, useState as l } from "react";
4
4
  import { findFirstEnabledIndex as u, findLastEnabledIndex as d, findNextEnabledIndex as f, handleKeyboardActivation as p } from "@ryuzaki13/react-foundation-lib/utils";
5
5
  import { jsx as m } from "react/jsx-runtime";
6
6
  import { CheckIcon as h } from "lucide-react";
@@ -21,74 +21,83 @@ function _(e, t, n) {
21
21
  return u(e, g);
22
22
  }
23
23
  function v(v) {
24
- let { value: y, defaultValue: b, multiple: x, disabled: S, focusOnMount: C, renderItem: w, getKey: T, options: E, onChange: D, id: O, ...k } = v, A = y !== void 0, j = a(), M = O ?? `${j}-listbox`, [N, P] = l(b), F = c(null), [I, L] = l(() => _(E, y ?? b, x)), R = c(!1), z = s(() => (A ? y : N) ?? (x ? [] : null), [
24
+ let { value: y, defaultValue: b, multiple: x, label: S, description: C, disabled: w, focusOnMount: T, renderItem: E, getKey: D, options: O, onChange: k, id: A, ...j } = v, M = y !== void 0, [N, P] = l(b), F = c(null), [I, L] = l(() => _(O, y ?? b, x)), R = c(!1), z = s(() => (M ? y : N) ?? (x ? [] : null), [
25
25
  N,
26
- A,
26
+ M,
27
27
  x,
28
28
  y
29
29
  ]), B = I, V = (e) => {
30
- if (S || e.disabled) return;
31
- let t;
32
- if (v.multiple) {
33
- let n = Array.isArray(z) ? z : [];
34
- t = n.includes(e.value) ? n.filter((t) => t !== e.value) : [...n, e.value], v.onChange?.(t, e);
35
- } else t = e.value, v.onChange?.(t, e);
36
- A || P(t);
30
+ if (!(w || e.disabled)) {
31
+ if (x) {
32
+ let t = Array.isArray(z) ? z : [], n = t.includes(e.value) ? t.filter((t) => t !== e.value) : [...t, e.value];
33
+ k?.(n, e), M || P(n);
34
+ return;
35
+ }
36
+ k?.(e.value, e), M || P(e.value);
37
+ }
38
+ }, H = (e) => {
39
+ if (!w) {
40
+ if (e.key === "ArrowDown") e.preventDefault(), R.current = !0, L((e) => f(O, e, 1, g));
41
+ else if (e.key === "ArrowUp") e.preventDefault(), R.current = !0, L((e) => f(O, e, -1, g));
42
+ else if (e.key === "Home") e.preventDefault(), R.current = !0, L(u(O, g));
43
+ else if (e.key === "End") e.preventDefault(), R.current = !0, L(d(O, g));
44
+ else if (p(e, () => {
45
+ let e = O[B];
46
+ e && V(e);
47
+ })) return;
48
+ }
37
49
  };
38
- return i(() => {
50
+ return a(() => {
39
51
  if (!R.current) return;
40
52
  R.current = !1;
41
53
  let e = F.current?.querySelectorAll("[role=\"option\"]")[B];
42
54
  e && e.scrollIntoView({ block: "nearest" });
43
55
  }, [B]), o(() => {
44
- C && F.current?.focus();
45
- }, [C]), /* @__PURE__ */ m(r, {
46
- rootRef: F,
47
- id: M,
48
- role: "listbox",
49
- "aria-multiselectable": x || void 0,
50
- "aria-activedescendant": B >= 0 ? `${M}-option-${B}` : void 0,
51
- onKeyDown: (e) => {
52
- if (!S) {
53
- if (e.key === "ArrowDown") e.preventDefault(), R.current = !0, L((e) => f(E, e, 1, g));
54
- else if (e.key === "ArrowUp") e.preventDefault(), R.current = !0, L((e) => f(E, e, -1, g));
55
- else if (e.key === "Home") e.preventDefault(), R.current = !0, L(u(E, g));
56
- else if (e.key === "End") e.preventDefault(), R.current = !0, L(d(E, g));
57
- else if (p(e, () => {
58
- let e = E[B];
59
- e && V(e);
60
- })) return;
61
- }
62
- },
63
- ...k,
64
- "aria-disabled": S || void 0,
65
- tabIndex: S ? -1 : 0,
66
- className: k.className,
67
- children: E.map((r, i) => {
68
- let a = x ? Array.isArray(z) && z.includes(r.value) : z === r.value, o = i === B, s = S || r.disabled || void 0, c = (e) => {
69
- e.preventDefault(), !s && (L(i), V(r));
70
- };
71
- return /* @__PURE__ */ m(t, {
72
- id: `${M}-option-${i}`,
73
- role: "option",
74
- "aria-selected": a,
75
- "aria-disabled": s,
76
- disabled: s,
77
- active: o,
78
- selected: a,
79
- children: w ? /* @__PURE__ */ m(e, {
80
- tabIndex: -1,
81
- disabled: s,
82
- onMouseDown: c,
83
- children: w(r, a, o)
84
- }) : /* @__PURE__ */ m(n, {
85
- tabIndex: -1,
86
- disabled: s,
87
- onMouseDown: c,
88
- icon: m(a ? h : "span", {}),
89
- text: r.label ?? String(r.value)
90
- })
91
- }, T ? T(r, i) : i);
56
+ T && F.current?.focus();
57
+ }, [T]), /* @__PURE__ */ m(i, {
58
+ id: A,
59
+ label: S,
60
+ description: C,
61
+ disabled: w,
62
+ children: ({ controlId: i, labelId: a, describedBy: o }) => /* @__PURE__ */ m(r, {
63
+ rootRef: F,
64
+ id: i,
65
+ role: "listbox",
66
+ "aria-multiselectable": x || void 0,
67
+ "aria-activedescendant": B >= 0 ? `${i}-option-${B}` : void 0,
68
+ onKeyDown: H,
69
+ ...j,
70
+ "aria-labelledby": a ?? j["aria-labelledby"],
71
+ "aria-describedby": o ?? j["aria-describedby"],
72
+ "aria-disabled": w || void 0,
73
+ tabIndex: w ? -1 : 0,
74
+ className: j.className,
75
+ children: O.map((r, a) => {
76
+ let o = x ? Array.isArray(z) && z.includes(r.value) : z === r.value, s = a === B, c = w || r.disabled || void 0, l = (e) => {
77
+ e.preventDefault(), !c && (L(a), V(r));
78
+ };
79
+ return /* @__PURE__ */ m(t, {
80
+ id: `${i}-option-${a}`,
81
+ role: "option",
82
+ "aria-selected": o,
83
+ "aria-disabled": c,
84
+ disabled: c,
85
+ active: s,
86
+ selected: o,
87
+ children: E ? /* @__PURE__ */ m(e, {
88
+ tabIndex: -1,
89
+ disabled: c,
90
+ onMouseDown: l,
91
+ children: E(r, o, s)
92
+ }) : /* @__PURE__ */ m(n, {
93
+ tabIndex: -1,
94
+ disabled: c,
95
+ onMouseDown: l,
96
+ icon: m(o ? h : "span", {}),
97
+ text: r.label ?? String(r.value)
98
+ })
99
+ }, D ? D(r, a) : a);
100
+ })
92
101
  })
93
102
  });
94
103
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/listbox/Listbox.tsx"],"sourcesContent":["import {\n\ttype MouseEvent,\n\tHTMLAttributes,\n\tJSX,\n\tKeyboardEvent,\n\tReactNode,\n\tuseEffect,\n\tuseId,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState\n} from \"react\";\n\nimport {\n\tfindFirstEnabledIndex,\n\tfindLastEnabledIndex,\n\tfindNextEnabledIndex,\n\thandleKeyboardActivation\n} from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { CustomOptionButton, Option, OptionButton } from \"../option\";\nimport { PickerOptions } from \"../picker\";\n\ntype ListboxOption<T> = {\n\tvalue: T;\n\tlabel?: string;\n\tdisabled?: boolean;\n};\n\ninterface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\" | \"value\"> {\n\toptions: ListboxOption<T>[];\n\tdisabled?: boolean;\n\tfocusOnMount?: boolean;\n\trenderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;\n\tgetKey?: (option: ListboxOption<T>, index: number) => string;\n}\n\n// Вариант для single-select\ninterface ListboxSingleProps<T> extends ListboxBaseProps<T> {\n\tmultiple?: false;\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonChange?: (value: T, option: ListboxOption<T>) => void;\n}\n\n// Вариант для multi-select\ninterface ListboxMultiProps<T> extends ListboxBaseProps<T> {\n\tmultiple: true;\n\tvalue?: T[];\n\tdefaultValue?: T[];\n\tonChange?: (value: T[], option: ListboxOption<T>) => void;\n}\n\ntype ListboxProps<T> = ListboxSingleProps<T> | ListboxMultiProps<T>;\n\nconst isOptionDisabled = <T,>(option: ListboxOption<T>) => option.disabled === true;\n\nfunction getInitialFocusIndex<T>(options: ListboxOption<T>[], value: T | T[] | undefined, multiple: boolean | undefined) {\n\tif (multiple) {\n\t\tif (Array.isArray(value) && value.length > 0) {\n\t\t\tconst selectedIndex = options.findIndex((option) => value.includes(option.value) && !option.disabled);\n\t\t\tif (selectedIndex >= 0) {\n\t\t\t\treturn selectedIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn findFirstEnabledIndex(options, isOptionDisabled);\n\t}\n\n\tif (value !== undefined) {\n\t\tconst selectedIndex = options.findIndex((option) => option.value === value && !option.disabled);\n\t\tif (selectedIndex >= 0) {\n\t\t\treturn selectedIndex;\n\t\t}\n\t}\n\n\treturn findFirstEnabledIndex(options, isOptionDisabled);\n}\n\n/**\n * Компонент выбора одного или нескольких элементов из списка. Поддерживает controlled API, поиск по данным и рендер кастомных опций.\n */\nexport function Listbox<T>(props: ListboxSingleProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxMultiProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxProps<T>): JSX.Element {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { value, defaultValue, multiple, disabled, focusOnMount, renderItem, getKey, options, onChange, id: externalId, ...rest } = props;\n\n\tconst isControlled = value !== undefined;\n\tconst autoId = useId();\n\tconst listId = externalId ?? `${autoId}-listbox`;\n\tconst [internalValue, setInternalValue] = useState<T | T[] | undefined>(defaultValue);\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst [focusedIndex, setFocusedIndex] = useState(() => getInitialFocusIndex(options, value ?? defaultValue, multiple));\n\t/**\n\t * Прокрутка нужна только после клавиатурной навигации. Это не даёт монтированию и Fast Refresh\n\t * вызывать scrollIntoView, который иначе прокручивает внешнюю страницу до Listbox.\n\t */\n\tconst shouldScrollActiveOptionRef = useRef(false);\n\n\tconst selectedValues = useMemo(\n\t\t() => (isControlled ? value : internalValue) ?? (multiple ? [] : null),\n\t\t[internalValue, isControlled, multiple, value]\n\t);\n\tconst activeIndex = focusedIndex;\n\n\tconst handleSelect = (option: ListboxOption<T>) => {\n\t\tif (disabled || option.disabled) return;\n\n\t\tlet newValue: T | T[];\n\t\tif (props.multiple) {\n\t\t\tconst arr = Array.isArray(selectedValues) ? selectedValues : [];\n\t\t\tnewValue = arr.includes(option.value) ? arr.filter((v) => v !== option.value) : [...arr, option.value];\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t} else {\n\t\t\tnewValue = option.value;\n\n\t\t\tprops.onChange?.(newValue, option);\n\t\t}\n\n\t\tif (!isControlled) setInternalValue(newValue);\n\t};\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\n\t\tif (e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, 1, isOptionDisabled));\n\t\t} else if (e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, -1, isOptionDisabled));\n\t\t} else if (e.key === \"Home\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findFirstEnabledIndex(options, isOptionDisabled));\n\t\t} else if (e.key === \"End\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findLastEnabledIndex(options, isOptionDisabled));\n\t\t} else if (\n\t\t\thandleKeyboardActivation(e, () => {\n\t\t\t\tconst activeOption = options[activeIndex];\n\t\t\t\tif (activeOption) {\n\t\t\t\t\thandleSelect(activeOption);\n\t\t\t\t}\n\t\t\t})\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!shouldScrollActiveOptionRef.current) return;\n\n\t\tshouldScrollActiveOptionRef.current = false;\n\t\tconst el = listRef.current?.querySelectorAll<HTMLElement>('[role=\"option\"]')[activeIndex];\n\t\tif (el) el.scrollIntoView({ block: \"nearest\" });\n\t}, [activeIndex]);\n\n\tuseLayoutEffect(() => {\n\t\tif (focusOnMount) {\n\t\t\tlistRef.current?.focus();\n\t\t}\n\t}, [focusOnMount]);\n\n\treturn (\n\t\t<PickerOptions\n\t\t\trootRef={listRef}\n\t\t\tid={listId}\n\t\t\trole=\"listbox\"\n\t\t\t// aria-label={}\n\t\t\taria-multiselectable={multiple || undefined}\n\t\t\taria-activedescendant={activeIndex >= 0 ? `${listId}-option-${activeIndex}` : undefined}\n\t\t\tonKeyDown={handleKeyDown}\n\t\t\t{...rest}\n\t\t\taria-disabled={disabled || undefined}\n\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\tclassName={rest.className}>\n\t\t\t{options.map((option, index) => {\n\t\t\t\tconst selected = multiple\n\t\t\t\t\t? Array.isArray(selectedValues) && selectedValues.includes(option.value)\n\t\t\t\t\t: selectedValues === option.value;\n\t\t\t\tconst active = index === activeIndex;\n\t\t\t\tconst optionDisabled = disabled || option.disabled || undefined;\n\n\t\t\t\tconst handleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t\t\te.preventDefault(); // чтобы не сбрасывался фокус listbox\n\t\t\t\t\tif (optionDisabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tsetFocusedIndex(index);\n\t\t\t\t\thandleSelect(option);\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<Option\n\t\t\t\t\t\tkey={getKey ? getKey(option, index) : index}\n\t\t\t\t\t\tid={`${listId}-option-${index}`}\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\taria-disabled={optionDisabled}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\tselected={selected}>\n\t\t\t\t\t\t{renderItem ? (\n\t\t\t\t\t\t\t<CustomOptionButton tabIndex={-1} disabled={optionDisabled} onMouseDown={handleMouseDown}>\n\t\t\t\t\t\t\t\t{renderItem(option, selected, active)}\n\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<OptionButton\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\t\t\t\ticon={selected ? <CheckIcon /> : <span />}\n\t\t\t\t\t\t\t\ttext={option.label ?? String(option.value)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Option>\n\t\t\t\t);\n\t\t\t})}\n\t\t</PickerOptions>\n\t);\n}\n"],"mappings":";;;;;;;AAyDA,IAAM,KAAwB,MAA6B,EAAO,aAAa;AAE/E,SAAS,EAAwB,GAA6B,GAA4B,GAA+B;CACxH,IAAI,GAAU;EACb,IAAI,MAAM,QAAQ,CAAK,KAAK,EAAM,SAAS,GAAG;GAC7C,IAAM,IAAgB,EAAQ,WAAW,MAAW,EAAM,SAAS,EAAO,KAAK,KAAK,CAAC,EAAO,QAAQ;GACpG,IAAI,KAAiB,GACpB,OAAO;EAET;EAEA,OAAO,EAAsB,GAAS,CAAgB;CACvD;CAEA,IAAI,MAAU,KAAA,GAAW;EACxB,IAAM,IAAgB,EAAQ,WAAW,MAAW,EAAO,UAAU,KAAS,CAAC,EAAO,QAAQ;EAC9F,IAAI,KAAiB,GACpB,OAAO;CAET;CAEA,OAAO,EAAsB,GAAS,CAAgB;AACvD;AAOA,SAAgB,EAAW,GAAqC;CAE/D,IAAM,EAAE,UAAO,iBAAc,aAAU,aAAU,iBAAc,eAAY,WAAQ,YAAS,aAAU,IAAI,GAAY,GAAG,MAAS,GAE5H,IAAe,MAAU,KAAA,GACzB,IAAS,EAAM,GACf,IAAS,KAAc,GAAG,EAAO,WACjC,CAAC,GAAe,KAAoB,EAA8B,CAAY,GAC9E,IAAU,EAAuB,IAAI,GACrC,CAAC,GAAc,KAAmB,QAAe,EAAqB,GAAS,KAAS,GAAc,CAAQ,CAAC,GAK/G,IAA8B,EAAO,EAAK,GAE1C,IAAiB,SACf,IAAe,IAAQ,OAAmB,IAAW,CAAC,IAAI,OACjE;EAAC;EAAe;EAAc;EAAU;CAAK,CAC9C,GACM,IAAc,GAEd,KAAgB,MAA6B;EAClD,IAAI,KAAY,EAAO,UAAU;EAEjC,IAAI;EACJ,IAAI,EAAM,UAAU;GACnB,IAAM,IAAM,MAAM,QAAQ,CAAc,IAAI,IAAiB,CAAC;GAG9D,AAFA,IAAW,EAAI,SAAS,EAAO,KAAK,IAAI,EAAI,QAAQ,MAAM,MAAM,EAAO,KAAK,IAAI,CAAC,GAAG,GAAK,EAAO,KAAK,GAErG,EAAM,WAAW,GAAU,CAAM;EAClC,OAGC,AAFA,IAAW,EAAO,OAElB,EAAM,WAAW,GAAU,CAAM;EAGlC,AAAK,KAAc,EAAiB,CAAQ;CAC7C;CAmDA,OAdA,QAAgB;EACf,IAAI,CAAC,EAA4B,SAAS;EAE1C,EAA4B,UAAU;EACtC,IAAM,IAAK,EAAQ,SAAS,iBAA8B,mBAAiB,CAAC,CAAC;EAC7E,AAAI,KAAI,EAAG,eAAe,EAAE,OAAO,UAAU,CAAC;CAC/C,GAAG,CAAC,CAAW,CAAC,GAEhB,QAAsB;EACrB,AAAI,KACH,EAAQ,SAAS,MAAM;CAEzB,GAAG,CAAC,CAAY,CAAC,GAGhB,kBAAC,GAAD;EACC,SAAS;EACT,IAAI;EACJ,MAAK;EAEL,wBAAsB,KAAY,KAAA;EAClC,yBAAuB,KAAe,IAAI,GAAG,EAAO,UAAU,MAAgB,KAAA;EAC9E,YAzDqB,MAAqC;GACvD,QAEJ;QAAI,EAAE,QAAQ,aAIb,AAHA,EAAE,eAAe,GACjB,EAA4B,UAAU,IAEtC,GAAiB,MAAU,EAAqB,GAAS,GAAO,GAAG,CAAgB,CAAC;SAC9E,IAAI,EAAE,QAAQ,WAIpB,AAHA,EAAE,eAAe,GACjB,EAA4B,UAAU,IAEtC,GAAiB,MAAU,EAAqB,GAAS,GAAO,IAAI,CAAgB,CAAC;SAC/E,IAAI,EAAE,QAAQ,QAIpB,AAHA,EAAE,eAAe,GACjB,EAA4B,UAAU,IAEtC,EAAgB,EAAsB,GAAS,CAAgB,CAAC;SAC1D,IAAI,EAAE,QAAQ,OAIpB,AAHA,EAAE,eAAe,GACjB,EAA4B,UAAU,IAEtC,EAAgB,EAAqB,GAAS,CAAgB,CAAC;SACzD,IACN,EAAyB,SAAS;KACjC,IAAM,IAAe,EAAQ;KAC7B,AAAI,KACH,EAAa,CAAY;IAE3B,CAAC,GAED;GAAA;EAEF;EAyBE,GAAI;EACJ,iBAAe,KAAY,KAAA;EAC3B,UAAU,IAAW,KAAK;EAC1B,WAAW,EAAK;EACf,UAAA,EAAQ,KAAK,GAAQ,MAAU;GAC/B,IAAM,IAAW,IACd,MAAM,QAAQ,CAAc,KAAK,EAAe,SAAS,EAAO,KAAK,IACrE,MAAmB,EAAO,OACvB,IAAS,MAAU,GACnB,IAAiB,KAAY,EAAO,YAAY,KAAA,GAEhD,KAAmB,MAAqC;IAC7D,EAAE,eAAe,GACb,OAGJ,EAAgB,CAAK,GACrB,EAAa,CAAM;GACpB;GAEA,OACC,kBAAC,GAAD;IAEC,IAAI,GAAG,EAAO,UAAU;IACxB,MAAK;IACL,iBAAe;IACf,iBAAe;IACf,UAAU;IACF;IACE;IACT,UAAA,IACA,kBAAC,GAAD;KAAoB,UAAU;KAAI,UAAU;KAAgB,aAAa;KACvE,UAAA,EAAW,GAAQ,GAAU,CAAM;IACjB,CAAA,IAEpB,kBAAC,GAAD;KACC,UAAU;KACV,UAAU;KACV,aAAa;KACb,MAAiB,EAAX,IAAY,IAAgB,QAAjB,CAAY,CAAW;KACxC,MAAM,EAAO,SAAS,OAAO,EAAO,KAAK;IACzC,CAAA;GAEK,GArBF,IAAS,EAAO,GAAQ,CAAK,IAAI,CAqB/B;EAEV,CAAC;CACa,CAAA;AAEjB"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/listbox/Listbox.tsx"],"sourcesContent":["import {\n\ttype HTMLAttributes,\n\ttype JSX,\n\ttype KeyboardEvent,\n\ttype MouseEvent,\n\ttype ReactNode,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState\n} from \"react\";\n\nimport {\n\tfindFirstEnabledIndex,\n\tfindLastEnabledIndex,\n\tfindNextEnabledIndex,\n\thandleKeyboardActivation\n} from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { CustomOptionButton, Option, OptionButton } from \"../option\";\nimport { PickerField, PickerOptions } from \"../picker\";\n\ntype ListboxOption<T> = {\n\tvalue: T;\n\tlabel?: string;\n\tdisabled?: boolean;\n};\n\ninterface ListboxBaseProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\" | \"value\"> {\n\toptions: ListboxOption<T>[];\n\tlabel?: ReactNode;\n\tdescription?: string;\n\tdisabled?: boolean;\n\tfocusOnMount?: boolean;\n\trenderItem?: (option: ListboxOption<T>, selected: boolean, active: boolean) => ReactNode;\n\tgetKey?: (option: ListboxOption<T>, index: number) => string;\n}\n\n// Вариант для single-select\ninterface ListboxSingleProps<T> extends ListboxBaseProps<T> {\n\tmultiple?: false;\n\tvalue?: T;\n\tdefaultValue?: T;\n\tonChange?: (value: T, option: ListboxOption<T>) => void;\n}\n\n// Вариант для multi-select\ninterface ListboxMultiProps<T> extends ListboxBaseProps<T> {\n\tmultiple: true;\n\tvalue?: T[];\n\tdefaultValue?: T[];\n\tonChange?: (value: T[], option: ListboxOption<T>) => void;\n}\n\ntype ListboxProps<T> = ListboxSingleProps<T> | ListboxMultiProps<T>;\n\nconst isOptionDisabled = <T,>(option: ListboxOption<T>) => option.disabled === true;\n\nfunction getInitialFocusIndex<T>(options: ListboxOption<T>[], value: T | T[] | undefined, multiple: boolean | undefined) {\n\tif (multiple) {\n\t\tif (Array.isArray(value) && value.length > 0) {\n\t\t\tconst selectedIndex = options.findIndex((option) => value.includes(option.value) && !option.disabled);\n\t\t\tif (selectedIndex >= 0) {\n\t\t\t\treturn selectedIndex;\n\t\t\t}\n\t\t}\n\n\t\treturn findFirstEnabledIndex(options, isOptionDisabled);\n\t}\n\n\tif (value !== undefined) {\n\t\tconst selectedIndex = options.findIndex((option) => option.value === value && !option.disabled);\n\t\tif (selectedIndex >= 0) {\n\t\t\treturn selectedIndex;\n\t\t}\n\t}\n\n\treturn findFirstEnabledIndex(options, isOptionDisabled);\n}\n\n/**\n * Компонент выбора одного или нескольких элементов из списка. Поддерживает controlled API, поиск по данным и рендер кастомных опций.\n */\nexport function Listbox<T>(props: ListboxSingleProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxMultiProps<T>): JSX.Element;\nexport function Listbox<T>(props: ListboxProps<T>): JSX.Element {\n\tconst {\n\t\tvalue,\n\t\tdefaultValue,\n\t\tmultiple,\n\t\tlabel,\n\t\tdescription,\n\t\tdisabled,\n\t\tfocusOnMount,\n\t\trenderItem,\n\t\tgetKey,\n\t\toptions,\n\t\tonChange,\n\t\tid: externalId,\n\t\t...rest\n\t} = props;\n\n\tconst isControlled = value !== undefined;\n\tconst [internalValue, setInternalValue] = useState<T | T[] | undefined>(defaultValue);\n\tconst listRef = useRef<HTMLDivElement>(null);\n\tconst [focusedIndex, setFocusedIndex] = useState(() => getInitialFocusIndex(options, value ?? defaultValue, multiple));\n\t/**\n\t * Прокрутка нужна только после клавиатурной навигации. Это не даёт монтированию и Fast Refresh\n\t * вызывать scrollIntoView, который иначе прокручивает внешнюю страницу до Listbox.\n\t */\n\tconst shouldScrollActiveOptionRef = useRef(false);\n\n\tconst selectedValues = useMemo(\n\t\t() => (isControlled ? value : internalValue) ?? (multiple ? [] : null),\n\t\t[internalValue, isControlled, multiple, value]\n\t);\n\tconst activeIndex = focusedIndex;\n\n\tconst handleSelect = (option: ListboxOption<T>) => {\n\t\tif (disabled || option.disabled) return;\n\n\t\tif (multiple) {\n\t\t\tconst arr = Array.isArray(selectedValues) ? selectedValues : [];\n\t\t\tconst newValue = arr.includes(option.value) ? arr.filter((v) => v !== option.value) : [...arr, option.value];\n\n\t\t\tonChange?.(newValue, option);\n\t\t\tif (!isControlled) setInternalValue(newValue);\n\t\t\treturn;\n\t\t}\n\n\t\tonChange?.(option.value, option);\n\n\t\tif (!isControlled) setInternalValue(option.value);\n\t};\n\n\tconst handleKeyDown = (e: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled) return;\n\n\t\tif (e.key === \"ArrowDown\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, 1, isOptionDisabled));\n\t\t} else if (e.key === \"ArrowUp\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex((index) => findNextEnabledIndex(options, index, -1, isOptionDisabled));\n\t\t} else if (e.key === \"Home\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findFirstEnabledIndex(options, isOptionDisabled));\n\t\t} else if (e.key === \"End\") {\n\t\t\te.preventDefault();\n\t\t\tshouldScrollActiveOptionRef.current = true;\n\t\t\t// setHoveredIndex(null);\n\t\t\tsetFocusedIndex(findLastEnabledIndex(options, isOptionDisabled));\n\t\t} else if (\n\t\t\thandleKeyboardActivation(e, () => {\n\t\t\t\tconst activeOption = options[activeIndex];\n\t\t\t\tif (activeOption) {\n\t\t\t\t\thandleSelect(activeOption);\n\t\t\t\t}\n\t\t\t})\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t};\n\n\tuseEffect(() => {\n\t\tif (!shouldScrollActiveOptionRef.current) return;\n\n\t\tshouldScrollActiveOptionRef.current = false;\n\t\tconst el = listRef.current?.querySelectorAll<HTMLElement>('[role=\"option\"]')[activeIndex];\n\t\tif (el) el.scrollIntoView({ block: \"nearest\" });\n\t}, [activeIndex]);\n\n\tuseLayoutEffect(() => {\n\t\tif (focusOnMount) {\n\t\t\tlistRef.current?.focus();\n\t\t}\n\t}, [focusOnMount]);\n\n\treturn (\n\t\t<PickerField id={externalId} label={label} description={description} disabled={disabled}>\n\t\t\t{({ controlId: listId, labelId, describedBy }) => (\n\t\t\t\t<PickerOptions\n\t\t\t\t\trootRef={listRef}\n\t\t\t\t\tid={listId}\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable={multiple || undefined}\n\t\t\t\t\taria-activedescendant={activeIndex >= 0 ? `${listId}-option-${activeIndex}` : undefined}\n\t\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\t\t{...rest}\n\t\t\t\t\taria-labelledby={labelId ?? rest[\"aria-labelledby\"]}\n\t\t\t\t\taria-describedby={describedBy ?? rest[\"aria-describedby\"]}\n\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\t\t\tclassName={rest.className}>\n\t\t\t\t\t{options.map((option, index) => {\n\t\t\t\t\t\tconst selected = multiple\n\t\t\t\t\t\t\t? Array.isArray(selectedValues) && selectedValues.includes(option.value)\n\t\t\t\t\t\t\t: selectedValues === option.value;\n\t\t\t\t\t\tconst active = index === activeIndex;\n\t\t\t\t\t\tconst optionDisabled = disabled || option.disabled || undefined;\n\n\t\t\t\t\t\tconst handleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t\t\t\t\te.preventDefault(); // чтобы не сбрасывался фокус listbox\n\t\t\t\t\t\t\tif (optionDisabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetFocusedIndex(index);\n\t\t\t\t\t\t\thandleSelect(option);\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Option\n\t\t\t\t\t\t\t\tkey={getKey ? getKey(option, index) : index}\n\t\t\t\t\t\t\t\tid={`${listId}-option-${index}`}\n\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\taria-disabled={optionDisabled}\n\t\t\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\tselected={selected}>\n\t\t\t\t\t\t\t\t{renderItem ? (\n\t\t\t\t\t\t\t\t\t<CustomOptionButton tabIndex={-1} disabled={optionDisabled} onMouseDown={handleMouseDown}>\n\t\t\t\t\t\t\t\t\t\t{renderItem(option, selected, active)}\n\t\t\t\t\t\t\t\t\t</CustomOptionButton>\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t<OptionButton\n\t\t\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\t\t\t\t\tonMouseDown={handleMouseDown}\n\t\t\t\t\t\t\t\t\t\ticon={selected ? <CheckIcon /> : <span />}\n\t\t\t\t\t\t\t\t\t\ttext={option.label ?? String(option.value)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Option>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</PickerOptions>\n\t\t\t)}\n\t\t</PickerField>\n\t);\n}\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { HTMLAttributes } from "react";
2
+ import type { UiSize, UiTone } from "../types";
3
+ export type StatusIndicatorTone = Exclude<UiTone, "brand">;
4
+ export type StatusIndicatorSize = Extract<UiSize, "sm" | "md" | "lg">;
5
+ export interface StatusIndicatorProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children"> {
6
+ tone?: StatusIndicatorTone;
7
+ size?: StatusIndicatorSize;
8
+ animated?: boolean;
9
+ }
10
+ /**
11
+ * Декоративный цветовой маркер статуса. Передавайте смысл состояния видимым текстом рядом с индикатором.
12
+ */
13
+ export declare function StatusIndicator({ tone, size, animated, className, ...htmlProps }: StatusIndicatorProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=StatusIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StatusIndicator.d.ts","sourceRoot":"","sources":["../../src/status-indicator/StatusIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAM5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3D,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;AAEtE,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IAC9F,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,IAAI,CAAC,EAAE,mBAAmB,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,IAAgB,EAAE,IAAW,EAAE,QAAgB,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,EAAE,oBAAoB,+BAajI"}
@@ -0,0 +1,2 @@
1
+ export { StatusIndicator, type StatusIndicatorProps, type StatusIndicatorSize, type StatusIndicatorTone } from "./StatusIndicator";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/status-indicator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { cn as e } from "@ryuzaki13/react-foundation-lib/utils";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ var n = {
4
+ statusIndicator: "bJvCcD",
5
+ neutral: "UhVDLa",
6
+ info: "bRw83O",
7
+ success: "VQh7sh",
8
+ warning: "zdESHk",
9
+ error: "-KLln9",
10
+ sizeSm: "Ak9M6g",
11
+ sizeMd: "_43MsRd",
12
+ sizeLg: "FpGv5-",
13
+ animated: "y-1aex",
14
+ statusIndicatorPulse: "_56N544"
15
+ }, r = {
16
+ neutral: n.neutral,
17
+ info: n.info,
18
+ success: n.success,
19
+ warning: n.warning,
20
+ error: n.error
21
+ }, i = {
22
+ sm: n.sizeSm,
23
+ md: n.sizeMd,
24
+ lg: n.sizeLg
25
+ };
26
+ function a({ tone: a = "neutral", size: o = "md", animated: s = !1, className: c, ...l }) {
27
+ let u = l.role !== void 0 || l["aria-label"] !== void 0 || l["aria-labelledby"] !== void 0, d = l["aria-hidden"] ?? (!u || void 0);
28
+ return /* @__PURE__ */ t("span", {
29
+ ...l,
30
+ className: e(n.statusIndicator, r[a], i[o], s && n.animated, c),
31
+ "aria-hidden": d,
32
+ "data-ui": "status-indicator"
33
+ });
34
+ }
35
+ //#endregion
36
+ export { a as StatusIndicator };
37
+
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/status-indicator/StatusIndicator.module.scss","../../src/status-indicator/StatusIndicator.tsx"],"sourcesContent":[".statusIndicator {\n\t--status-indicator-fill: var(--status-neutral-fill);\n\t--status-indicator-size: 0.5em;\n\n\tdisplay: inline-block;\n\tflex: 0 0 auto;\n\twidth: var(--status-indicator-size);\n\theight: var(--status-indicator-size);\n\tborder-radius: 50%;\n\tvertical-align: middle;\n\tbackground-color: var(--status-indicator-fill);\n}\n\n.neutral {\n\t--status-indicator-fill: var(--status-neutral-fill);\n}\n\n.info {\n\t--status-indicator-fill: var(--status-info-fill);\n}\n\n.success {\n\t--status-indicator-fill: var(--status-success-fill);\n}\n\n.warning {\n\t--status-indicator-fill: var(--status-warning-fill);\n}\n\n.error {\n\t--status-indicator-fill: var(--status-error-fill);\n}\n\n.sizeSm {\n\t--status-indicator-size: 0.375em;\n}\n\n.sizeMd {\n\t--status-indicator-size: 0.5em;\n}\n\n.sizeLg {\n\t--status-indicator-size: 0.75em;\n}\n\n.animated {\n\ttransform-origin: center;\n\tanimation: statusIndicatorPulse var(--animation-2s) ease-in-out infinite;\n}\n\n@keyframes statusIndicatorPulse {\n\t0%,\n\t100% {\n\t\topacity: 0.7;\n\t\ttransform: scale(0.9);\n\t}\n\n\t50% {\n\t\topacity: 1;\n\t\ttransform: scale(1.05);\n\t}\n}\n\n@media (prefers-reduced-motion: reduce) {\n\t.animated {\n\t\tanimation: none;\n\t}\n}\n","import type { HTMLAttributes } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./StatusIndicator.module.scss\";\n\nimport type { UiSize, UiTone } from \"../types\";\n\nexport type StatusIndicatorTone = Exclude<UiTone, \"brand\">;\nexport type StatusIndicatorSize = Extract<UiSize, \"sm\" | \"md\" | \"lg\">;\n\nexport interface StatusIndicatorProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n\ttone?: StatusIndicatorTone;\n\tsize?: StatusIndicatorSize;\n\tanimated?: boolean;\n}\n\nconst toneClasses: Record<StatusIndicatorTone, string> = {\n\tneutral: styles.neutral,\n\tinfo: styles.info,\n\tsuccess: styles.success,\n\twarning: styles.warning,\n\terror: styles.error\n};\n\nconst sizeClasses: Record<StatusIndicatorSize, string> = {\n\tsm: styles.sizeSm,\n\tmd: styles.sizeMd,\n\tlg: styles.sizeLg\n};\n\n/**\n * Декоративный цветовой маркер статуса. Передавайте смысл состояния видимым текстом рядом с индикатором.\n */\nexport function StatusIndicator({ tone = \"neutral\", size = \"md\", animated = false, className, ...htmlProps }: StatusIndicatorProps) {\n\tconst hasAccessibleSemantics =\n\t\thtmlProps.role !== undefined || htmlProps[\"aria-label\"] !== undefined || htmlProps[\"aria-labelledby\"] !== undefined;\n\tconst ariaHidden = htmlProps[\"aria-hidden\"] ?? (hasAccessibleSemantics ? undefined : true);\n\n\treturn (\n\t\t<span\n\t\t\t{...htmlProps}\n\t\t\tclassName={cn(styles.statusIndicator, toneClasses[tone], sizeClasses[size], animated && styles.animated, className)}\n\t\t\taria-hidden={ariaHidden}\n\t\t\tdata-ui=\"status-indicator\"\n\t\t/>\n\t);\n}\n"],"mappings":";;;;;;;;;;;;;;GCiBM,IAAmD;CACxD,SAAS,EAAO;CAChB,MAAM,EAAO;CACb,SAAS,EAAO;CAChB,SAAS,EAAO;CAChB,OAAO,EAAO;AACf,GAEM,IAAmD;CACxD,IAAI,EAAO;CACX,IAAI,EAAO;CACX,IAAI,EAAO;AACZ;AAKA,SAAgB,EAAgB,EAAE,UAAO,WAAW,UAAO,MAAM,cAAW,IAAO,cAAW,GAAG,KAAmC;CACnI,IAAM,IACL,EAAU,SAAS,KAAA,KAAa,EAAU,kBAAkB,KAAA,KAAa,EAAU,uBAAuB,KAAA,GACrG,IAAa,EAAU,mBAAmB,MAAyB,KAAA;CAEzE,OACC,kBAAC,QAAD;EACC,GAAI;EACJ,WAAW,EAAG,EAAO,iBAAiB,EAAY,IAAO,EAAY,IAAO,KAAY,EAAO,UAAU,CAAS;EAClH,eAAa;EACb,WAAQ;CACR,CAAA;AAEH"}