@pgcorp/ui-kit 0.13.0 → 0.14.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 (317) hide show
  1. package/README.md +725 -19
  2. package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_a1f403e2_lang.css +1 -0
  3. package/dist/assets/src/components/layout/{SResizeHandle.vue_vue_type_style_index_0_scoped_90cc655e_lang.css → SResizeHandle.vue_vue_type_style_index_0_scoped_13b9b27a_lang.css} +1 -1
  4. package/dist/assets/src/components/layout/{SWorkbenchPanelShell.css_vue_type_style_index_0_src_1030a231_scoped_1030a231_lang.css → SWorkbenchPanelShell.css_vue_type_style_index_0_src_f9faa52a_scoped_f9faa52a_lang.css} +1 -1
  5. package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_0e58afdc_scoped_0e58afdc_lang.css +2 -0
  6. package/dist/assets/src/components/shared/_internal/{SListboxGroup.css_vue_type_style_index_0_src_518787d3_scoped_518787d3_lang.css → SListboxGroup.css_vue_type_style_index_0_src_00060944_scoped_00060944_lang.css} +1 -1
  7. package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_e478164c_scoped_e478164c_lang.css +1 -0
  8. package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_61cf20dd_scoped_61cf20dd_lang.css +2 -0
  9. package/dist/assets/src/components/shared/containers/{SModal.css_vue_type_style_index_0_src_0dc51b74_scoped_0dc51b74_lang.css → SModal.css_vue_type_style_index_0_src_42e1bd5f_scoped_42e1bd5f_lang.css} +1 -1
  10. package/dist/assets/src/components/shared/containers/SOverlayHost.css_vue_type_style_index_0_src_8f9be94e_scoped_8f9be94e_lang.css +2 -0
  11. package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_4091d007_scoped_4091d007_lang.css +2 -0
  12. package/dist/assets/src/components/shared/containers/{SSidebarGroup.css_vue_type_style_index_0_src_3e8bc2d7_scoped_3e8bc2d7_lang.css → SSidebarGroup.css_vue_type_style_index_0_src_5b1eeb6c_scoped_5b1eeb6c_lang.css} +1 -1
  13. package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_21f71ae8_scoped_21f71ae8_lang.css +2 -0
  14. package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_7a5acda9_scoped_7a5acda9_lang.css +2 -0
  15. package/dist/assets/src/components/shared/controls/{SCheckbox.css_vue_type_style_index_0_src_b20b27dd_scoped_b20b27dd_lang.css → SCheckbox.css_vue_type_style_index_0_src_55d4826e_scoped_55d4826e_lang.css} +1 -1
  16. package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_537f5744_scoped_537f5744_lang.css +2 -0
  17. package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_03921269_scoped_03921269_lang.css +1 -0
  18. package/dist/assets/src/components/shared/controls/{SDropdownMenu.css_vue_type_style_index_0_src_1ccb9efc_scoped_1ccb9efc_lang.css → SDropdownMenu.css_vue_type_style_index_0_src_857e2649_scoped_857e2649_lang.css} +1 -1
  19. package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_2d353c26_scoped_2d353c26_lang.css +2 -0
  20. package/dist/assets/src/components/shared/controls/{SInteractiveSurface.css_vue_type_style_index_0_src_998940dd_scoped_998940dd_lang.css → SInteractiveSurface.css_vue_type_style_index_0_src_5e422fac_scoped_5e422fac_lang.css} +1 -1
  21. package/dist/assets/src/components/shared/controls/{SLink.css_vue_type_style_index_0_src_c7ae14e1_scoped_c7ae14e1_lang.css → SLink.css_vue_type_style_index_0_src_ac46e5a4_scoped_ac46e5a4_lang.css} +1 -1
  22. package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_50063f9f_scoped_50063f9f_lang.css +2 -0
  23. package/dist/assets/src/components/shared/controls/{SListboxOption.css_vue_type_style_index_0_src_77c399b4_scoped_77c399b4_lang.css → SListboxOption.css_vue_type_style_index_0_src_59c9c538_scoped_59c9c538_lang.css} +1 -1
  24. package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_84109ad9_scoped_84109ad9_lang.css +2 -0
  25. package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_df3d6688_scoped_df3d6688_lang.css +2 -0
  26. package/dist/assets/src/components/shared/controls/STextarea.css_vue_type_style_index_0_src_true_lang.css +1 -1
  27. package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_cad721dd_scoped_cad721dd_lang.css +2 -0
  28. package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_8db085d5_scoped_8db085d5_lang.css +2 -0
  29. package/dist/assets/src/components/shared/data-display/SStatus.css_vue_type_style_index_0_src_3ce41a12_scoped_3ce41a12_lang.css +1 -1
  30. package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_b23b3d71_scoped_b23b3d71_lang.css +2 -0
  31. package/dist/assets/src/components/shared/data-display/STooltip.css_vue_type_style_index_0_src_true_lang.css +1 -1
  32. package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_9fe3ade0_scoped_9fe3ade0_lang.css +2 -0
  33. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_eaae882d_scoped_eaae882d_lang.css +2 -0
  34. package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_1f0ffc97_scoped_1f0ffc97_lang.css +2 -0
  35. package/dist/assets/src/components/shared/data-display/_internal/SRichImage.css_vue_type_style_index_0_src_2f1c39a9_scoped_2f1c39a9_lang.css +2 -0
  36. package/dist/assets/src/components/shared/data-display/_internal/{SRichInlineNode.css_vue_type_style_index_0_src_20c8cc87_scoped_20c8cc87_lang.css → SRichInlineNode.css_vue_type_style_index_0_src_3ca8df12_scoped_3ca8df12_lang.css} +1 -1
  37. package/dist/assets/src/components/shared/data-display/_internal/STableCell.css_vue_type_style_index_0_src_b829cbc6_scoped_b829cbc6_lang.css +2 -0
  38. package/dist/assets/src/components/shared/data-display/_internal/STableFrame.css_vue_type_style_index_0_src_52b5825e_scoped_52b5825e_lang.css +2 -0
  39. package/dist/assets/src/components/shared/data-display/_internal/STableRow.css_vue_type_style_index_0_src_1661f8b8_scoped_1661f8b8_lang.css +2 -0
  40. package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_8a291af7_scoped_8a291af7_lang.css +2 -0
  41. package/dist/assets/src/components/shared/navigation/{SBottomNav.vue_vue_type_style_index_0_scoped_b3963080_lang.css → SBottomNav.vue_vue_type_style_index_0_scoped_24be0f2b_lang.css} +1 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +3 -3
  44. package/dist/reference.css +4 -0
  45. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +15 -0
  46. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +4 -4
  47. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +46 -1
  48. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +260 -230
  49. package/dist/src/components/icons/sputnigUiIcons.d.ts +1 -1
  50. package/dist/src/components/icons/sputnigUiIcons.js +233 -218
  51. package/dist/src/components/layout/SAppShell.vue_vue_type_script_setup_true_lang.js +8 -8
  52. package/dist/src/components/layout/SDockRegion.vue.d.ts +18 -5
  53. package/dist/src/components/layout/SDockRegion.vue.js +2 -2
  54. package/dist/src/components/layout/SDockRegion.vue_vue_type_script_setup_true_lang.js +112 -64
  55. package/dist/src/components/layout/SResizeHandle.vue.d.ts +6 -3
  56. package/dist/src/components/layout/SResizeHandle.vue.js +2 -2
  57. package/dist/src/components/layout/SResizeHandle.vue_vue_type_script_setup_true_lang.js +125 -87
  58. package/dist/src/components/layout/SStack.vue.d.ts +1 -1
  59. package/dist/src/components/layout/SWorkbenchPanelShell.vue.d.ts +4 -4
  60. package/dist/src/components/layout/SWorkbenchPanelShell.vue.js +2 -2
  61. package/dist/src/components/layout/SWorkbenchPanelShell.vue_vue_type_script_setup_true_lang.js +62 -58
  62. package/dist/src/components/layout/types.d.ts +20 -0
  63. package/dist/src/components/shared/_internal/SDialogSurface.vue.js +2 -2
  64. package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +64 -41
  65. package/dist/src/components/shared/_internal/SHeaderSurface.vue.d.ts +1 -1
  66. package/dist/src/components/shared/_internal/SListboxGroup.vue.d.ts +5 -0
  67. package/dist/src/components/shared/_internal/SListboxGroup.vue.js +2 -2
  68. package/dist/src/components/shared/_internal/SListboxGroup.vue_vue_type_script_setup_true_lang.js +33 -15
  69. package/dist/src/components/shared/_internal/SMenuLayer.vue.d.ts +5 -1
  70. package/dist/src/components/shared/_internal/SMenuLayer.vue.js +2 -2
  71. package/dist/src/components/shared/_internal/SMenuLayer.vue_vue_type_script_setup_true_lang.js +64 -20
  72. package/dist/src/components/shared/_internal/dialogSurface.d.ts +15 -2
  73. package/dist/src/components/shared/_internal/dialogSurface.js +39 -23
  74. package/dist/src/components/shared/_internal/listboxContext.d.ts +1 -0
  75. package/dist/src/components/shared/_internal/listboxInventory.d.ts +51 -0
  76. package/dist/src/components/shared/_internal/listboxInventory.js +85 -0
  77. package/dist/src/components/shared/_internal/menuContext.d.ts +8 -0
  78. package/dist/src/components/shared/_internal/menuContext.js +2 -2
  79. package/dist/src/components/shared/_internal/sidebarGroupContext.d.ts +1 -0
  80. package/dist/src/components/shared/_internal/useVirtualCollection.d.ts +45 -0
  81. package/dist/src/components/shared/_internal/useVirtualCollection.js +123 -0
  82. package/dist/src/components/shared/complex/SKanbanLane.vue_vue_type_script_setup_true_lang.js +5 -5
  83. package/dist/src/components/shared/containers/SCloudChrome.vue.d.ts +1 -1
  84. package/dist/src/components/shared/containers/SCloudChromeRow.vue.d.ts +1 -1
  85. package/dist/src/components/shared/containers/SDrawer.vue.d.ts +12 -1
  86. package/dist/src/components/shared/containers/SDrawer.vue.js +2 -2
  87. package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +151 -53
  88. package/dist/src/components/shared/containers/SModal.vue.js +2 -2
  89. package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +78 -54
  90. package/dist/src/components/shared/containers/SOverlayHost.vue.d.ts +16 -0
  91. package/dist/src/components/shared/containers/SOverlayHost.vue.js +8 -0
  92. package/dist/src/components/shared/containers/SOverlayHost.vue_vue_type_script_setup_true_lang.js +65 -0
  93. package/dist/src/components/shared/containers/SPageHeader.vue.d.ts +1 -1
  94. package/dist/src/components/shared/containers/SPanel.vue.d.ts +1 -1
  95. package/dist/src/components/shared/containers/SPanel.vue_vue_type_script_setup_true_lang.js +7 -7
  96. package/dist/src/components/shared/containers/SPopover.vue.js +2 -2
  97. package/dist/src/components/shared/containers/SPopover.vue_vue_type_script_setup_true_lang.js +214 -145
  98. package/dist/src/components/shared/containers/SSidebarGroup.vue.js +2 -2
  99. package/dist/src/components/shared/containers/SSidebarGroup.vue_vue_type_script_setup_true_lang.js +30 -8
  100. package/dist/src/components/shared/containers/SSidebarSection.vue.js +2 -2
  101. package/dist/src/components/shared/containers/SSidebarSection.vue_vue_type_script_setup_true_lang.js +58 -45
  102. package/dist/src/components/shared/controls/SButton.vue.d.ts +7 -0
  103. package/dist/src/components/shared/controls/SButton.vue.js +2 -2
  104. package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +11 -5
  105. package/dist/src/components/shared/controls/SCheckbox.vue.d.ts +3 -0
  106. package/dist/src/components/shared/controls/SCheckbox.vue.js +2 -2
  107. package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +45 -41
  108. package/dist/src/components/shared/controls/SCheckboxGroup.vue_vue_type_script_setup_true_lang.js +7 -7
  109. package/dist/src/components/shared/controls/SChoiceCards.vue_vue_type_script_setup_true_lang.js +4 -4
  110. package/dist/src/components/shared/controls/SColorSelect.vue_vue_type_script_setup_true_lang.js +6 -6
  111. package/dist/src/components/shared/controls/SCombobox.vue.js +2 -2
  112. package/dist/src/components/shared/controls/SCombobox.vue_vue_type_script_setup_true_lang.js +147 -132
  113. package/dist/src/components/shared/controls/SComboboxTrigger.vue.d.ts +2 -2
  114. package/dist/src/components/shared/controls/SContextMenu.vue.d.ts +11 -0
  115. package/dist/src/components/shared/controls/SContextMenu.vue.js +2 -2
  116. package/dist/src/components/shared/controls/SContextMenu.vue_vue_type_script_setup_true_lang.js +144 -59
  117. package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +6 -6
  118. package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +5 -5
  119. package/dist/src/components/shared/controls/SDropdownMenu.vue.js +2 -2
  120. package/dist/src/components/shared/controls/SDropdownMenu.vue_vue_type_script_setup_true_lang.js +82 -75
  121. package/dist/src/components/shared/controls/SField.vue.d.ts +9 -6
  122. package/dist/src/components/shared/controls/SField.vue.js +2 -2
  123. package/dist/src/components/shared/controls/SField.vue_vue_type_script_setup_true_lang.js +69 -52
  124. package/dist/src/components/shared/controls/SFieldGroup.vue_vue_type_script_setup_true_lang.js +13 -13
  125. package/dist/src/components/shared/controls/SInlineTokenEditor.vue_vue_type_script_setup_true_lang.js +26 -26
  126. package/dist/src/components/shared/controls/SInputText.vue_vue_type_script_setup_true_lang.js +21 -21
  127. package/dist/src/components/shared/controls/SInteractiveSurface.vue.js +2 -2
  128. package/dist/src/components/shared/controls/SInteractiveSurface.vue_vue_type_script_setup_true_lang.js +99 -74
  129. package/dist/src/components/shared/controls/SLink.d.ts +11 -1
  130. package/dist/src/components/shared/controls/SLink.vue.d.ts +17 -1
  131. package/dist/src/components/shared/controls/SLink.vue.js +2 -2
  132. package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +157 -62
  133. package/dist/src/components/shared/controls/SListbox.vue.d.ts +10 -1
  134. package/dist/src/components/shared/controls/SListbox.vue.js +2 -2
  135. package/dist/src/components/shared/controls/SListbox.vue_vue_type_script_setup_true_lang.js +371 -189
  136. package/dist/src/components/shared/controls/SListboxOption.vue.d.ts +6 -0
  137. package/dist/src/components/shared/controls/SListboxOption.vue.js +2 -2
  138. package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +47 -34
  139. package/dist/src/components/shared/controls/SMenuSurface.vue.d.ts +2 -2
  140. package/dist/src/components/shared/controls/SMenuSurface.vue.js +2 -2
  141. package/dist/src/components/shared/controls/SMenuSurface.vue_vue_type_script_setup_true_lang.js +147 -121
  142. package/dist/src/components/shared/controls/SRange.vue_vue_type_script_setup_true_lang.js +12 -12
  143. package/dist/src/components/shared/controls/SSelect.vue.js +2 -2
  144. package/dist/src/components/shared/controls/SSelect.vue_vue_type_script_setup_true_lang.js +126 -116
  145. package/dist/src/components/shared/controls/STextarea.d.ts +1 -1
  146. package/dist/src/components/shared/controls/STextarea.vue.d.ts +28 -2
  147. package/dist/src/components/shared/controls/STextarea.vue_vue_type_script_setup_true_lang.js +348 -209
  148. package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +36 -36
  149. package/dist/src/components/shared/data-display/SActionList.vue.d.ts +1 -1
  150. package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +4 -4
  151. package/dist/src/components/shared/data-display/SActionListItem.vue_vue_type_script_setup_true_lang.js +6 -6
  152. package/dist/src/components/shared/data-display/SBadge.vue.d.ts +1 -1
  153. package/dist/src/components/shared/data-display/SChart.vue_vue_type_script_setup_true_lang.js +89 -89
  154. package/dist/src/components/shared/data-display/SChip.vue.d.ts +1 -1
  155. package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +7 -7
  156. package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +19 -19
  157. package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +37 -37
  158. package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +17 -17
  159. package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +12 -12
  160. package/dist/src/components/shared/data-display/SControlledToastViewport.vue_vue_type_script_setup_true_lang.js +4 -4
  161. package/dist/src/components/shared/data-display/SDiffViewer.vue_vue_type_script_setup_true_lang.js +13 -13
  162. package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +12 -12
  163. package/dist/src/components/shared/data-display/SEmptyState.vue.d.ts +1 -1
  164. package/dist/src/components/shared/data-display/SEmptyState.vue_vue_type_script_setup_true_lang.js +4 -4
  165. package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +7 -7
  166. package/dist/src/components/shared/data-display/SKeyValueGrid.vue_vue_type_script_setup_true_lang.js +15 -15
  167. package/dist/src/components/shared/data-display/SLinkedSystemsList.vue_vue_type_script_setup_true_lang.js +17 -17
  168. package/dist/src/components/shared/data-display/SMessage.vue.d.ts +1 -1
  169. package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +9 -9
  170. package/dist/src/components/shared/data-display/SMetricCard.vue.d.ts +1 -1
  171. package/dist/src/components/shared/data-display/SProgressBar.vue.d.ts +22 -3
  172. package/dist/src/components/shared/data-display/SProgressBar.vue.js +2 -2
  173. package/dist/src/components/shared/data-display/SProgressBar.vue_vue_type_script_setup_true_lang.js +133 -47
  174. package/dist/src/components/shared/data-display/SProgressIndicator.vue_vue_type_script_setup_true_lang.js +4 -4
  175. package/dist/src/components/shared/data-display/SRichDocument.vue.js +2 -2
  176. package/dist/src/components/shared/data-display/SRichDocument.vue_vue_type_script_setup_true_lang.js +46 -23
  177. package/dist/src/components/shared/data-display/SScrollViewport.vue_vue_type_script_setup_true_lang.js +18 -18
  178. package/dist/src/components/shared/data-display/SSectionHeader.vue.d.ts +1 -1
  179. package/dist/src/components/shared/data-display/SStatus.vue_vue_type_script_setup_true_lang.js +4 -4
  180. package/dist/src/components/shared/data-display/STable.vue.js +2 -2
  181. package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +343 -322
  182. package/dist/src/components/shared/data-display/STooltip.vue.d.ts +2 -2
  183. package/dist/src/components/shared/data-display/STooltip.vue_vue_type_script_setup_true_lang.js +181 -154
  184. package/dist/src/components/shared/data-display/STooltipAnchor.vue_vue_type_script_setup_true_lang.js +5 -5
  185. package/dist/src/components/shared/data-display/STooltipTarget.vue_vue_type_script_setup_true_lang.js +4 -4
  186. package/dist/src/components/shared/data-display/SVirtualList.vue.js +2 -2
  187. package/dist/src/components/shared/data-display/SVirtualList.vue_vue_type_script_setup_true_lang.js +196 -246
  188. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +2 -2
  189. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +242 -220
  190. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.d.ts +13 -2
  191. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.js +2 -2
  192. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue_vue_type_script_setup_true_lang.js +67 -11
  193. package/dist/src/components/shared/data-display/_internal/SRichImage.vue.d.ts +11 -0
  194. package/dist/src/components/shared/data-display/_internal/SRichImage.vue.js +8 -0
  195. package/dist/src/components/shared/data-display/_internal/SRichImage.vue_vue_type_script_setup_true_lang.js +89 -0
  196. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.d.ts +3 -2
  197. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.js +2 -2
  198. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue_vue_type_script_setup_true_lang.js +179 -125
  199. package/dist/src/components/shared/data-display/_internal/SRichMath.vue_vue_type_script_setup_true_lang.js +4 -4
  200. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.d.ts +21 -0
  201. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.js +5 -0
  202. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue_vue_type_script_setup_true_lang.js +150 -0
  203. package/dist/src/components/shared/data-display/_internal/STableCell.vue.d.ts +52 -0
  204. package/dist/src/components/shared/data-display/_internal/STableCell.vue.js +8 -0
  205. package/dist/src/components/shared/data-display/_internal/STableCell.vue_vue_type_script_setup_true_lang.js +148 -0
  206. package/dist/src/components/shared/data-display/_internal/STableFrame.vue.d.ts +42 -0
  207. package/dist/src/components/shared/data-display/_internal/STableFrame.vue.js +8 -0
  208. package/dist/src/components/shared/data-display/_internal/STableFrame.vue_vue_type_script_setup_true_lang.js +98 -0
  209. package/dist/src/components/shared/data-display/_internal/STableRow.vue.d.ts +43 -0
  210. package/dist/src/components/shared/data-display/_internal/STableRow.vue.js +8 -0
  211. package/dist/src/components/shared/data-display/_internal/STableRow.vue_vue_type_script_setup_true_lang.js +115 -0
  212. package/dist/src/components/shared/data-display/_internal/STableSection.vue.d.ts +28 -0
  213. package/dist/src/components/shared/data-display/_internal/STableSection.vue.js +5 -0
  214. package/dist/src/components/shared/data-display/_internal/STableSection.vue_vue_type_script_setup_true_lang.js +77 -0
  215. package/dist/src/components/shared/data-display/_internal/richDocumentMedia.d.ts +6 -0
  216. package/dist/src/components/shared/data-display/_internal/richDocumentMedia.js +136 -0
  217. package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.d.ts +21 -0
  218. package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.js +39 -0
  219. package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.d.ts +30 -0
  220. package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.js +88 -0
  221. package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.d.ts +9 -0
  222. package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.js +240 -0
  223. package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.d.ts +15 -0
  224. package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.js +61 -0
  225. package/dist/src/components/shared/data-display/_internal/richDocumentTypes.d.ts +466 -0
  226. package/dist/src/components/shared/data-display/_internal/richDocumentValidation.d.ts +65 -0
  227. package/dist/src/components/shared/data-display/_internal/richDocumentValidation.js +192 -0
  228. package/dist/src/components/shared/data-display/_internal/tableFoundation.d.ts +27 -0
  229. package/dist/src/components/shared/data-display/_internal/tableFoundation.js +16 -0
  230. package/dist/src/components/shared/data-display/richDocument.d.ts +3 -220
  231. package/dist/src/components/shared/data-display/richDocument.js +607 -399
  232. package/dist/src/components/shared/database/SDataGrid.vue_vue_type_script_setup_true_lang.js +36 -36
  233. package/dist/src/components/shared/database/SSqlEditor.vue.d.ts +2 -2
  234. package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +36 -36
  235. package/dist/src/components/shared/feedback/SAsyncState.vue.js +2 -2
  236. package/dist/src/components/shared/feedback/SAsyncState.vue_vue_type_script_setup_true_lang.js +70 -63
  237. package/dist/src/components/shared/navigation/SBottomNav.vue.d.ts +2 -2
  238. package/dist/src/components/shared/navigation/SBottomNav.vue.js +2 -2
  239. package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +138 -129
  240. package/dist/src/components/shared/navigation/SBreadcrumbs.vue.d.ts +2 -2
  241. package/dist/src/components/shared/navigation/STabPanel.vue.d.ts +2 -2
  242. package/dist/src/components/shared/navigation/SWizardSteps.vue_vue_type_script_setup_true_lang.js +16 -16
  243. package/dist/src/components/shared/persona/SPersonaProjectPicker.vue.d.ts +2 -2
  244. package/dist/src/composables/useDialogOverlay.d.ts +11 -2
  245. package/dist/src/composables/useDialogOverlay.js +202 -44
  246. package/dist/src/composables/useFloatingPosition.d.ts +20 -0
  247. package/dist/src/composables/useFloatingPosition.js +129 -52
  248. package/dist/src/internal/fieldSurface.d.ts +3 -0
  249. package/dist/src/internal/fieldSurface.js +3 -2
  250. package/dist/src/internal/focusNavigation.d.ts +2 -0
  251. package/dist/src/internal/focusNavigation.js +9 -9
  252. package/dist/src/internal/layerStack.d.ts +12 -0
  253. package/dist/src/internal/layerStack.js +138 -62
  254. package/dist/src/internal/linkTarget.d.ts +7 -1
  255. package/dist/src/internal/linkTarget.js +11 -7
  256. package/dist/src/internal/overlayHost.d.ts +18 -0
  257. package/dist/src/internal/overlayHost.js +18 -0
  258. package/dist/src/internal/ownedAttrs.d.ts +13 -3
  259. package/dist/src/internal/ownedAttrs.js +8 -1
  260. package/dist/src/internal/runtimeContract.d.ts +2 -0
  261. package/dist/src/internal/runtimeContract.js +10 -5
  262. package/dist/src/internal/useMenuLayer.d.ts +7 -4
  263. package/dist/src/internal/useMenuLayer.js +72 -49
  264. package/dist/tailwind.css +3 -0
  265. package/dist/typography.LICENSE.txt +94 -0
  266. package/dist/typography.js +5150 -0
  267. package/docs/getting-started.md +39 -0
  268. package/docs/link-download.md +114 -0
  269. package/docs/listbox.md +129 -0
  270. package/docs/public-api.md +196 -4
  271. package/docs/resize.md +129 -0
  272. package/docs/rich-document.md +442 -25
  273. package/package.json +12 -4
  274. package/src/components/shared/_internal/SDialogSurface.css +39 -7
  275. package/src/components/shared/_internal/SMenuLayer.css +4 -0
  276. package/src/components/shared/containers/SDrawer.css +20 -2
  277. package/src/components/shared/containers/SOverlayHost.css +14 -0
  278. package/src/components/shared/containers/SPopover.css +8 -2
  279. package/src/components/shared/controls/SButton.css +4 -0
  280. package/src/components/shared/controls/SField.css +6 -0
  281. package/src/components/shared/controls/SListbox.css +17 -0
  282. package/src/components/shared/controls/SMenuSurface.css +18 -4
  283. package/src/components/shared/controls/STextarea.css +42 -3
  284. package/src/components/shared/data-display/SProgressBar.css +79 -0
  285. package/src/components/shared/data-display/SRichDocument.css +1 -0
  286. package/src/components/shared/data-display/SStatus.css +8 -25
  287. package/src/components/shared/data-display/STable.css +0 -113
  288. package/src/components/shared/data-display/STooltip.css +4 -1
  289. package/src/components/shared/data-display/_internal/SRichBlockNode.css +11 -7
  290. package/src/components/shared/data-display/_internal/SRichDisclosure.css +16 -0
  291. package/src/components/shared/data-display/_internal/SRichImage.css +37 -0
  292. package/src/components/shared/data-display/_internal/STableCell.css +55 -0
  293. package/src/components/shared/data-display/_internal/STableFrame.css +41 -0
  294. package/src/components/shared/data-display/_internal/STableRow.css +12 -0
  295. package/src/components/shared/feedback/SAsyncState.css +0 -4
  296. package/src/styles/style.css +9 -5
  297. package/src/styles/tokens.css +30 -0
  298. package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_2932631d_lang.css +0 -1
  299. package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_d1b65adf_scoped_d1b65adf_lang.css +0 -2
  300. package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_4913bbe1_scoped_4913bbe1_lang.css +0 -1
  301. package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_091d7325_scoped_091d7325_lang.css +0 -2
  302. package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_deded766_scoped_deded766_lang.css +0 -2
  303. package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_96f51ac6_scoped_96f51ac6_lang.css +0 -2
  304. package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_a5d8f7e0_scoped_a5d8f7e0_lang.css +0 -2
  305. package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_e3b4f580_scoped_e3b4f580_lang.css +0 -2
  306. package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_00c91d39_scoped_00c91d39_lang.css +0 -1
  307. package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_60628f96_scoped_60628f96_lang.css +0 -2
  308. package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_24db4abb_scoped_24db4abb_lang.css +0 -2
  309. package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_ddcc5fbb_scoped_ddcc5fbb_lang.css +0 -2
  310. package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_441648c9_scoped_441648c9_lang.css +0 -2
  311. package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_9308293a_scoped_9308293a_lang.css +0 -2
  312. package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_d1afafc5_scoped_d1afafc5_lang.css +0 -2
  313. package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_9955d482_scoped_9955d482_lang.css +0 -2
  314. package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_cee8c247_scoped_cee8c247_lang.css +0 -2
  315. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +0 -2
  316. package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_fa94e2ff_scoped_fa94e2ff_lang.css +0 -2
  317. package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_bfc28903_scoped_bfc28903_lang.css +0 -2
@@ -1,52 +1,210 @@
1
- import { trapFocusInsidePanel as e } from "../components/shared/_internal/focusTrap.js";
2
- import { registerLayer as t } from "../internal/layerStack.js";
3
- import { nextTick as n, onBeforeUnmount as r, ref as i, watch as a } from "vue";
1
+ import { createAggregateError as e } from "../internal/es2020.js";
2
+ import { trapFocusInsidePanel as t } from "../components/shared/_internal/focusTrap.js";
3
+ import { registerLayer as n } from "../internal/layerStack.js";
4
+ import { useOverlayAdmission as r } from "../internal/overlayHost.js";
5
+ import { validateBoolean as i, validateExactString as a } from "../internal/runtimeContract.js";
6
+ import { inject as o, nextTick as s, onBeforeUnmount as c, onMounted as l, provide as u, readonly as d, ref as f, shallowRef as p, watch as m } from "vue";
4
7
  //#region src/composables/useDialogOverlay.ts
5
- function o(o) {
6
- let s = i(null), c = i({}), l = i({}), u = null, d = 0, f = (e) => {
7
- if (e === null || e instanceof HTMLElement) {
8
- s.value = e;
9
- return;
8
+ var h = Symbol("ui-kit-dialog-parent-lease");
9
+ function g(g) {
10
+ let _ = () => a("useDialogOverlay", "scope", g.scope?.value ?? "viewport", ["viewport", "contained"]), v = () => i("useDialogOverlay", "open", g.open.value), y = () => i("useDialogOverlay", "closable", g.closable.value), b = () => {
11
+ if (!g.host) throw TypeError("useDialogOverlay: scope=\"contained\" requires a parent SOverlayHost");
12
+ return g.host;
13
+ }, x = _(), S = v();
14
+ y(), x === "contained" && b(), g.validate?.();
15
+ let C = r(), w = f(null), T = o(h, null), E = p(null);
16
+ u(h, {
17
+ registration: E,
18
+ panel: w
19
+ });
20
+ let D = f(C.value && x === "viewport" && S), O = f(!1), k = f({}), A = f({}), j = null, M = !1, N = !1, P = !1, F = x, I = () => {
21
+ let e = b(), t = [
22
+ e.root.value,
23
+ e.content.value,
24
+ e.portal.value
25
+ ];
26
+ for (let e of t) if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: SOverlayHost refs must resolve to native HTMLElement or null");
27
+ let n = e.root.value, r = e.content.value, i = e.portal.value;
28
+ if (!n || !r || !i || !n.isConnected || !r.isConnected || !i.isConnected) return null;
29
+ if (n.ownerDocument !== document || r.ownerDocument !== document || i.ownerDocument !== document || r.parentElement !== n || i.parentElement !== n || r === i) throw TypeError("useDialogOverlay: SOverlayHost requires connected same-document sibling content/portal owners");
30
+ return e;
31
+ }, L = () => {
32
+ !P && v() && (P = !0, g.requestClose());
33
+ }, R = (t) => {
34
+ let n = j;
35
+ j = null, D.value = !1, k.value = {}, A.value = {};
36
+ let r = [];
37
+ try {
38
+ n?.registration?.unregister({
39
+ restoreFocus: t,
40
+ retireDescendants: !0
41
+ });
42
+ } catch (e) {
43
+ r.push(e);
44
+ }
45
+ E.value = null;
46
+ try {
47
+ n?.releaseHost?.();
48
+ } catch (e) {
49
+ r.push(e);
50
+ }
51
+ if (r.length === 1) throw r[0];
52
+ if (r.length > 1) throw e(r, "useDialogOverlay: layer and host retirement failed");
53
+ }, z = (t, n) => {
54
+ let r = [];
55
+ try {
56
+ R(t);
57
+ } catch (e) {
58
+ r.push(e);
59
+ }
60
+ if (n) try {
61
+ L();
62
+ } catch (e) {
63
+ r.push(e);
10
64
  }
11
- throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
12
- }, p = () => {
13
- if (u) return;
14
- let n = typeof document < "u" && document.activeElement instanceof HTMLElement ? document.activeElement : null;
15
- u = t({
65
+ if (r.length === 1) throw r[0];
66
+ if (r.length > 1) throw e(r, "useDialogOverlay: retirement and close intent failed");
67
+ }, B = (e = !0) => {
68
+ M = !0, z(e, !0);
69
+ }, V = (e) => j === e && O.value && !N && !M && C.value && v() && D.value, H = () => {
70
+ try {
71
+ let e = _(), t = v();
72
+ if (y(), e !== F && t) throw TypeError("useDialogOverlay: scope can change only while open=false");
73
+ e === "contained" && b(), g.validate?.();
74
+ } catch (t) {
75
+ M = !0;
76
+ try {
77
+ R(!1);
78
+ } catch (n) {
79
+ throw e([t, n], "useDialogOverlay: validation and resource retirement failed");
80
+ }
81
+ throw t;
82
+ }
83
+ }, U = async () => {
84
+ let e = j, r = w.value;
85
+ if (!e || !V(e) || !r?.isConnected || e.focusing) return;
86
+ let i = T?.registration.value ?? null;
87
+ if (T && (!i || !T.panel.value?.isConnected)) return;
88
+ if (e.scope === "contained" && e.portal?.contains(r) !== !0) throw TypeError("useDialogOverlay: contained dialog surface must mount inside its SOverlayHost portal");
89
+ H(), e.focusing = !0;
90
+ let a = e.scope === "contained";
91
+ if (a) {
92
+ let t = I();
93
+ if (!t || t.root.value !== e.root || t.content.value !== e.content || t.portal.value !== e.portal) {
94
+ B();
95
+ return;
96
+ }
97
+ if (e.releaseHost = t.acquire(B), !V(e)) {
98
+ e.releaseHost();
99
+ return;
100
+ }
101
+ }
102
+ let o = T?.panel.value ?? null, c = o && !o.contains(e.restoreTarget) ? o : e.restoreTarget;
103
+ if (e.registration = n({
16
104
  kind: "dialog",
17
- root: () => s.value,
18
- modal: !0,
19
- restoreTarget: n,
20
- dismissOnEscape: () => o.closable.value,
21
- dismissOnOutsidePointer: () => o.closable.value,
22
- trapFocus: (t) => e(t, s, !0),
23
- requestDismiss: () => o.requestClose()
24
- }), c.value = { zIndex: u.zIndex }, l.value = { zIndex: `calc(${u.zIndex} + var(--s-layer-overlay-surface-offset))` };
25
- }, m = (e = !0) => {
26
- u?.unregister({ restoreFocus: e }), u = null, c.value = {}, l.value = {};
27
- }, h = () => {
28
- d += 1, m(!1);
29
- };
30
- return a(o.open, async (e, t) => {
31
- d += 1;
32
- let r = d;
33
- if (e) {
34
- if (p(), await n(), r !== d || !o.open.value || u === null) return;
35
- let e = s.value;
36
- if (!e) return;
37
- e.focus(), r === d && o.open.value && u !== null && o.opened?.();
105
+ root: () => w.value,
106
+ modal: !a,
107
+ parent: i,
108
+ eventBoundary: a ? () => e.root : void 0,
109
+ restoreTarget: c,
110
+ dismissOnEscape: y,
111
+ dismissOnOutsidePointer: y,
112
+ blocksParentFocusTrap: !a,
113
+ ...a ? {} : { trapFocus: (e) => t(e, w, !0) },
114
+ requestDismiss: () => g.requestClose(),
115
+ onRetire: B
116
+ }), E.value = e.registration, k.value = { zIndex: e.registration.zIndex }, A.value = { zIndex: `calc(${e.registration.zIndex} + var(--s-layer-overlay-surface-offset))` }, await s(), !V(e) || w.value !== r || !r.isConnected || !e.registration.isTopmost()) return;
117
+ let l = document.activeElement, u = l === document.body && e.restoreTarget !== null && e.content?.contains(e.restoreTarget) && e.content.hasAttribute("inert");
118
+ (l === e.restoreTarget || u) && (r.focus({ preventScroll: a }), V(e) && document.activeElement === r && g.opened?.());
119
+ }, W = () => {
120
+ let e;
121
+ try {
122
+ let t = _(), n = v();
123
+ if (y(), t !== F && n) throw TypeError("useDialogOverlay: scope can change only while open=false");
124
+ t === "contained" && b(), g.validate?.(), e = {
125
+ valid: !0,
126
+ open: n,
127
+ scope: t,
128
+ host: O.value && t === "contained" ? I() : null,
129
+ parent: T?.registration.value ?? null,
130
+ admitted: C.value
131
+ };
132
+ } catch (t) {
133
+ e = {
134
+ valid: !1,
135
+ error: t
136
+ };
137
+ }
138
+ return e;
139
+ }, G = (t) => {
140
+ if (!t.valid) {
141
+ M = !0;
142
+ try {
143
+ R(!1);
144
+ } catch (n) {
145
+ throw e([t.error, n], "useDialogOverlay: validation and resource retirement failed");
146
+ }
147
+ throw t.error;
148
+ }
149
+ let { open: n, scope: r, host: i, admitted: a } = t;
150
+ if (r !== F) {
151
+ if (n) throw TypeError("useDialogOverlay: scope can change only while open=false");
152
+ F = r, r === "contained" && b();
153
+ }
154
+ if (!n) {
155
+ M = !1, P = !1, R(a);
156
+ return;
157
+ }
158
+ if (!a) {
159
+ B(!1);
38
160
  return;
39
161
  }
40
- m(!!t);
41
- }, { immediate: !0 }), r(() => {
42
- h();
43
- }), {
44
- panelRef: s,
45
- setPanelElement: f,
46
- backdropStyle: c,
47
- surfaceStyle: l,
48
- dispose: h
162
+ if (!O.value || N || M) return;
163
+ if (j) {
164
+ (r === "contained" && (i === null || j.root !== i.root.value || j.content !== i.content.value || j.portal !== i.portal.value) || j.registration && T && !t.parent) && B();
165
+ return;
166
+ }
167
+ if (r === "contained" && !i) return;
168
+ let o = document.activeElement instanceof HTMLElement ? document.activeElement : null;
169
+ j = {
170
+ scope: r,
171
+ root: i?.root.value ?? null,
172
+ content: i?.content.value ?? null,
173
+ portal: i?.portal.value ?? null,
174
+ restoreTarget: o,
175
+ releaseHost: null,
176
+ registration: null,
177
+ focusing: !1
178
+ }, D.value = !0;
179
+ }, K = (e) => {
180
+ if (e !== null && !(e instanceof HTMLElement)) throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
181
+ w.value = e;
182
+ };
183
+ m(W, G, {
184
+ flush: "sync",
185
+ immediate: !0
186
+ }), m([
187
+ O,
188
+ w,
189
+ D,
190
+ () => T?.registration.value
191
+ ], U, { flush: "post" }), l(() => {
192
+ O.value = !0;
193
+ });
194
+ let q = () => {
195
+ if (N) return;
196
+ N = !0;
197
+ let e = F === "contained" && v();
198
+ z(!1, e);
199
+ };
200
+ return c(q), {
201
+ panelRef: w,
202
+ renderOpen: d(D),
203
+ setPanelElement: K,
204
+ backdropStyle: k,
205
+ surfaceStyle: A,
206
+ dispose: q
49
207
  };
50
208
  }
51
209
  //#endregion
52
- export { o as useDialogOverlay };
210
+ export { g as useDialogOverlay };
@@ -3,6 +3,16 @@ export type FloatingSide = 'top' | 'bottom' | 'left' | 'right';
3
3
  export type FloatingAlignment = 'start' | 'center' | 'end';
4
4
  export type FloatingPlacement = `${FloatingSide}-${FloatingAlignment}`;
5
5
  export type FloatingWidthMatch = 'none' | 'min' | 'exact';
6
+ /** Доступные размеры border-box floating viewport. / Available floating viewport border-box dimensions. */
7
+ export interface FloatingAvailableSize {
8
+ width: number;
9
+ height: number;
10
+ }
11
+ /** Native scroll/chrome owner и его естественный, не прокручиваемый контент. / Native scroll/chrome owner and its natural non-scrolling content. */
12
+ export interface FloatingSizingElements {
13
+ surface: HTMLElement;
14
+ content: HTMLElement;
15
+ }
6
16
  export interface FloatingPositionOptions {
7
17
  active: Readonly<Ref<boolean>>;
8
18
  placement: () => FloatingPlacement;
@@ -14,6 +24,10 @@ export interface FloatingPositionOptions {
14
24
  flip?: () => boolean;
15
25
  shift?: () => boolean;
16
26
  constrainMainAxis?: () => boolean;
27
+ /** Ограничивает viewport по natural content без clipped measurements. / Bounds the viewport using natural content, not clipped measurements. */
28
+ viewportSizing?: () => boolean;
29
+ /** Явные native владельцы размера; обязательны для viewportSizing. / Explicit native size owners, required for viewportSizing. */
30
+ sizingElements?: () => FloatingSizingElements | null;
17
31
  widthMatch?: () => FloatingWidthMatch;
18
32
  zIndex?: () => string;
19
33
  scrollStrategy?: 'reposition' | 'close';
@@ -26,6 +40,7 @@ export interface FloatingPositionController {
26
40
  arrowStyle: Ref<Record<string, string>>;
27
41
  resolvedPlacement: Ref<FloatingPlacement>;
28
42
  coordinates: Ref<FloatingCoordinates>;
43
+ availableSize: Ref<FloatingAvailableSize | null>;
29
44
  updatePosition: () => void;
30
45
  }
31
46
  /** Координаты floating-поверхности во viewport. / Floating-surface viewport coordinates. */
@@ -36,5 +51,10 @@ export interface FloatingCoordinates {
36
51
  /**
37
52
  * Единый владелец geometry/collision/observer-контракта floating surfaces.
38
53
  * Canonical owner of floating-surface geometry, collision and observers.
54
+ * Panel dimensions use the untransformed used CSS border box, preserving
55
+ * fractional pixels and content-box padding/borders. Non-resolved CSS sizes
56
+ * use native unscaled offset dimensions; visual anchor rectangles retain transforms.
57
+ * CSSOM: https://www.w3.org/TR/cssom-1/#resolved-values
58
+ * CSSOM View: https://www.w3.org/TR/cssom-view-1/#dom-htmlelement-offsetwidth
39
59
  */
40
60
  export declare function useFloatingPosition(options: FloatingPositionOptions): FloatingPositionController;
@@ -28,97 +28,174 @@ function u(e, t) {
28
28
  let n = Math.min(10, t / 2);
29
29
  return Math.max(n, Math.min(e, t - n));
30
30
  }
31
- function d(s) {
32
- let d = r(null), f = s.panelRef ?? r(null), p = r({}), m = r({}), h = r(s.placement()), g = r({
31
+ function d(e) {
32
+ if (!/^(?:\d+|\d*\.\d+)px$/u.test(e)) return null;
33
+ let t = Number(e.slice(0, -2));
34
+ return Number.isFinite(t) ? t : null;
35
+ }
36
+ function f(e, t, n) {
37
+ let r = d(e);
38
+ if (r === null) return null;
39
+ if (t === "border-box") return r;
40
+ let i = r;
41
+ for (let e of n) {
42
+ let t = d(e);
43
+ if (t === null) return null;
44
+ i += t;
45
+ }
46
+ return i;
47
+ }
48
+ function p(e) {
49
+ let t = window.getComputedStyle(e);
50
+ return {
51
+ width: f(t.width, t.boxSizing, [
52
+ t.paddingLeft,
53
+ t.paddingRight,
54
+ t.borderLeftWidth,
55
+ t.borderRightWidth
56
+ ]) ?? e.offsetWidth,
57
+ height: f(t.height, t.boxSizing, [
58
+ t.paddingTop,
59
+ t.paddingBottom,
60
+ t.borderTopWidth,
61
+ t.borderBottomWidth
62
+ ]) ?? e.offsetHeight
63
+ };
64
+ }
65
+ function m(e) {
66
+ let { surface: t, content: n } = e;
67
+ if (!t.contains(n)) throw Error("useFloatingPosition: natural content must belong to its native sizing surface");
68
+ let r = p(t), i = p(n);
69
+ if (r.width === 0 && r.height === 0 && i.width === 0 && i.height === 0) return r;
70
+ let a = window.getComputedStyle(t), o = i.height;
71
+ for (let e of [
72
+ a.paddingTop,
73
+ a.paddingBottom,
74
+ a.borderTopWidth,
75
+ a.borderBottomWidth
76
+ ]) {
77
+ let t = d(e);
78
+ if (t === null) throw Error("useFloatingPosition: sizing surface block edges must resolve to pixel lengths");
79
+ o += t;
80
+ }
81
+ return {
82
+ width: r.width,
83
+ height: o
84
+ };
85
+ }
86
+ function h(s) {
87
+ let d = r(null), f = s.panelRef ?? r(null), h = r({}), g = r({}), _ = r(s.placement()), v = r({
33
88
  left: -1e4,
34
89
  top: -1e4
35
- }), _ = null, v = !1, y = () => {
36
- if (!s.active.value || typeof window > "u") return;
90
+ }), y = r(null), b = null, x = !1, S = !1, C = !1, w = 0, T = () => {
91
+ if (C || !s.active.value || typeof window > "u") return;
37
92
  let e = s.anchorElement?.() ?? d.value, t = f.value, n = s.anchorRect?.() ?? e?.getBoundingClientRect() ?? null;
38
93
  if (!n || !t) return;
39
- let r = t.getBoundingClientRect(), i = r.width || t.offsetWidth, _ = r.height || t.offsetHeight, v = s.offset?.() ?? 6, y = s.boundaryPadding?.() ?? 8, b = window.innerWidth, x = window.innerHeight, [S, C] = o(s.placement()), w = S, T = c(w, C, n, i, _, v);
94
+ let r = s.viewportSizing?.() ?? !1, i = r ? s.sizingElements?.() : null;
95
+ if (r && !i) return;
96
+ let { width: b, height: x } = i ? m(i) : p(t), S = s.offset?.() ?? 6, w = s.boundaryPadding?.() ?? 8, T = window.innerWidth, E = window.innerHeight, [D, O] = o(s.placement()), k = D, A = c(k, O, n, b, x, S);
40
97
  if (s.flip?.() ?? !0) {
41
- let e = a[w], t = c(e, C, n, i, _, v), r = l(w, T, i, _, b, x, y);
42
- l(e, t, i, _, b, x, y) < r && (w = e, T = t);
98
+ let e = a[k], t = c(e, O, n, b, x, S), i = l(k, A, b, x, T, E, w), o = l(e, t, b, x, T, E, w);
99
+ if (o < i && (k = e, A = t), r && (D === "left" || D === "right") && i > 0 && o > 0) {
100
+ let e = c("bottom", O, n, b, x, S), t = c("top", O, n, b, x, S), r = l("bottom", e, b, x, T, E, w);
101
+ k = l("top", t, b, x, T, E, w) < r ? "top" : "bottom", A = k === "top" ? t : e;
102
+ }
43
103
  }
44
- let E = i, D = _, O = {};
45
- if (s.constrainMainAxis?.() ?? !1) {
46
- if (w === "top" || w === "bottom") {
47
- let e = w === "top" ? n.top - v - y : x - y - n.bottom - v;
48
- D = Math.min(_, Math.max(0, Math.floor(e))), O.maxHeight = `${D}px`, O.overflowY = "auto";
104
+ let j = b, M = x, N = {};
105
+ if (r) {
106
+ let e = Math.max(0, T - 2 * w), t = Math.max(0, Math.min(E - 2 * w, k === "top" ? n.top - S - w : k === "bottom" ? E - w - n.bottom - S : E - 2 * w)), r = y.value;
107
+ (!r || r.width !== e || r.height !== t) && (y.value = {
108
+ width: e,
109
+ height: t
110
+ }), j = Math.min(b, e), M = Math.min(x, t), A = c(k, O, n, j, M, S);
111
+ } else if (s.constrainMainAxis?.() ?? !1) {
112
+ if (k === "top" || k === "bottom") {
113
+ let e = k === "top" ? n.top - S - w : E - w - n.bottom - S;
114
+ M = Math.min(x, Math.max(0, Math.floor(e))), N.maxHeight = `${M}px`, N.overflowY = "auto";
49
115
  } else {
50
- let e = w === "left" ? n.left - v - y : b - y - n.right - v;
51
- E = Math.min(i, Math.max(0, Math.floor(e))), O.maxWidth = `${E}px`, O.overflowX = "auto";
116
+ let e = k === "left" ? n.left - S - w : T - w - n.right - S;
117
+ j = Math.min(b, Math.max(0, Math.floor(e))), N.maxWidth = `${j}px`, N.overflowX = "auto";
52
118
  }
53
- T = c(w, C, n, E, D, v);
119
+ A = c(k, O, n, j, M, S);
54
120
  }
55
- (s.shift?.() ?? !0) && (T.left = Math.max(y, Math.min(T.left, b - E - y)), T.top = Math.max(y, Math.min(T.top, x - D - y)));
56
- let k = `${w}-${C}`;
57
- h.value = k, g.value = {
58
- left: Math.round(T.left),
59
- top: Math.round(T.top)
121
+ (s.shift?.() ?? !0) && (A.left = Math.max(w, Math.min(A.left, T - j - w)), A.top = Math.max(w, Math.min(A.top, E - M - w)));
122
+ let P = `${k}-${O}`;
123
+ _.value = P;
124
+ let F = Math.round(A.left), I = Math.round(A.top);
125
+ v.value = r && (s.shift?.() ?? !0) ? {
126
+ left: Math.max(w, Math.min(F, T - j - w)),
127
+ top: Math.max(w, Math.min(I, E - M - w))
128
+ } : {
129
+ left: F,
130
+ top: I
60
131
  };
61
- let A = s.widthMatch?.() ?? "none";
62
- if (p.value = {
132
+ let L = s.widthMatch?.() ?? "none";
133
+ if (h.value = {
63
134
  position: "fixed",
64
- left: `${g.value.left}px`,
65
- top: `${g.value.top}px`,
135
+ left: `${v.value.left}px`,
136
+ top: `${v.value.top}px`,
66
137
  zIndex: s.zIndex?.() ?? "var(--s-layer-root-floating)",
67
- ...O,
68
- ...A === "min" ? { minWidth: `${Math.round(n.width)}px` } : {},
69
- ...A === "exact" ? { width: `${Math.round(n.width)}px` } : {}
70
- }, w === "top" || w === "bottom") {
71
- let e = n.left + n.width / 2 - T.left;
72
- m.value = { left: `${Math.round(u(e, i))}px` };
138
+ ...N,
139
+ ...L === "min" ? { minWidth: `${Math.round(n.width)}px` } : {},
140
+ ...L === "exact" ? { width: `${Math.round(n.width)}px` } : {}
141
+ }, k === "top" || k === "bottom") {
142
+ let e = n.left + n.width / 2 - A.left;
143
+ g.value = { left: `${Math.round(u(e, b))}px` };
73
144
  } else {
74
- let e = n.top + n.height / 2 - T.top;
75
- m.value = { top: `${Math.round(u(e, _))}px` };
145
+ let e = n.top + n.height / 2 - A.top;
146
+ g.value = { top: `${Math.round(u(e, x))}px` };
76
147
  }
77
- }, b = () => {
148
+ }, E = () => {
78
149
  if (s.active.value) {
79
150
  if (s.scrollStrategy === "close") {
80
151
  s.requestClose?.();
81
152
  return;
82
153
  }
83
- y();
154
+ T();
84
155
  }
85
- }, x = () => {
86
- if (!(v || typeof window > "u") && (v = !0, window.addEventListener("resize", y, { passive: !0 }), window.addEventListener("scroll", b, {
156
+ }, D = () => {
157
+ if (S && !C && s.active.value && !x && typeof window < "u" && (x = !0, window.addEventListener("resize", T, { passive: !0 }), window.addEventListener("scroll", E, {
87
158
  passive: !0,
88
159
  capture: !0
89
160
  }), typeof ResizeObserver < "u")) {
90
- _ = new ResizeObserver(y);
161
+ b = new ResizeObserver(T);
91
162
  let e = s.anchorElement?.() ?? d.value;
92
- e && _.observe(e), f.value && _.observe(f.value);
163
+ e && b.observe(e), f.value && b.observe(f.value);
164
+ let t = s.viewportSizing?.() ? s.sizingElements?.() : null;
165
+ t && (t.surface !== f.value && b.observe(t.surface), b.observe(t.content));
93
166
  }
94
- }, S = () => {
95
- v && typeof window < "u" && (v = !1, window.removeEventListener("resize", y), window.removeEventListener("scroll", b, !0), _?.disconnect(), _ = null);
167
+ }, O = () => {
168
+ x && typeof window < "u" && (x = !1, window.removeEventListener("resize", T), window.removeEventListener("scroll", E, !0), b?.disconnect(), b = null);
96
169
  };
97
170
  return i(s.active, async (t) => {
171
+ let n = ++w;
98
172
  if (!t) {
99
- S(), p.value = {}, m.value = {}, g.value = {
173
+ O(), h.value = {}, g.value = {}, v.value = {
100
174
  left: -1e4,
101
175
  top: -1e4
102
- };
176
+ }, y.value = null;
103
177
  return;
104
178
  }
105
- p.value = {
179
+ h.value = {
106
180
  position: "fixed",
107
181
  left: "-10000px",
108
182
  top: "-10000px",
109
183
  zIndex: s.zIndex?.() ?? "var(--s-layer-root-floating)"
110
- }, await e(), x(), y();
184
+ }, await e(), S && !C && s.active.value && n === w && (D(), T());
111
185
  }, { immediate: !0 }), n(() => {
112
- s.active.value && (x(), y());
113
- }), t(S), {
186
+ S = !0, s.active.value && (D(), T());
187
+ }), t(() => {
188
+ C = !0, S = !1, w += 1, O();
189
+ }), {
114
190
  anchorRef: d,
115
191
  panelRef: f,
116
- floatingStyle: p,
117
- arrowStyle: m,
118
- resolvedPlacement: h,
119
- coordinates: g,
120
- updatePosition: y
192
+ floatingStyle: h,
193
+ arrowStyle: g,
194
+ resolvedPlacement: _,
195
+ coordinates: v,
196
+ availableSize: y,
197
+ updatePosition: T
121
198
  };
122
199
  }
123
200
  //#endregion
124
- export { d as useFloatingPosition };
201
+ export { h as useFloatingPosition };
@@ -10,6 +10,8 @@ export interface FieldSurfaceContract {
10
10
  invalid: boolean;
11
11
  disabled: boolean;
12
12
  readonly: boolean;
13
+ /** A field surface enclosing its native editor and in-flow supporting content. */
14
+ composite?: boolean;
13
15
  }
14
16
  export interface FieldSurfaceBindings {
15
17
  'data-s-field-surface': FieldSurfaceKind;
@@ -17,6 +19,7 @@ export interface FieldSurfaceBindings {
17
19
  'data-s-field-invalid'?: 'true';
18
20
  'data-s-field-disabled'?: 'true';
19
21
  'data-s-field-readonly'?: 'true';
22
+ 'data-s-field-composite'?: 'true';
20
23
  }
21
24
  /**
22
25
  * Создаёт exact DOM bindings единого field-surface foundation без truthy coercion.
@@ -12,13 +12,14 @@ var r = [
12
12
  ];
13
13
  function a(a, o) {
14
14
  n("fieldSurface", "owner", a);
15
- let s = t(a, "field surface kind", o.kind, r), c = t(a, "field surface appearance", o.appearance, i), l = e(a, "field surface invalid", o.invalid), u = e(a, "field surface disabled", o.disabled), d = e(a, "field surface readonly", o.readonly);
15
+ let s = t(a, "field surface kind", o.kind, r), c = t(a, "field surface appearance", o.appearance, i), l = e(a, "field surface invalid", o.invalid), u = e(a, "field surface disabled", o.disabled), d = e(a, "field surface readonly", o.readonly), f = o.composite !== void 0 && e(a, "field surface composite", o.composite);
16
16
  return {
17
17
  "data-s-field-surface": s,
18
18
  "data-s-field-appearance": c,
19
19
  ...l ? { "data-s-field-invalid": "true" } : {},
20
20
  ...u ? { "data-s-field-disabled": "true" } : {},
21
- ...d ? { "data-s-field-readonly": "true" } : {}
21
+ ...d ? { "data-s-field-readonly": "true" } : {},
22
+ ...f ? { "data-s-field-composite": "true" } : {}
22
23
  };
23
24
  }
24
25
  //#endregion
@@ -1,3 +1,5 @@
1
+ /** Проверяет native focus capability независимо от временной видимости ancestor scope. */
2
+ export declare const hasFocusableSemantics: (element: HTMLElement) => boolean;
1
3
  /** Проверяет programmatic/browser focus owner без layout-эвристик. / Checks a programmatic/browser focus owner without layout heuristics. */
2
4
  export declare const isFocusableElement: (element: HTMLElement) => boolean;
3
5
  /**
@@ -11,16 +11,16 @@ var e = [
11
11
  if (e.hidden || e.closest("[inert]") || e.closest("[aria-hidden=\"true\"]")) return !1;
12
12
  let t = window.getComputedStyle(e);
13
13
  return t.display !== "none" && t.visibility !== "hidden";
14
- }, n = (n) => n.matches(e) && t(n), r = (t, r) => {
14
+ }, n = (t) => t.matches(e), r = (e) => n(e) && t(e), i = (t, n) => {
15
15
  let i = (t instanceof Element ? t : t instanceof Node ? t.parentElement : null)?.closest(e) ?? null;
16
- return !i || !n(i) || r instanceof Node && !r.contains(i) ? null : i;
17
- }, i = (t, r = {}) => [...t.querySelectorAll(e)].filter((e) => n(e) ? !r.requireLayout || e.offsetParent !== null || e.getClientRects().length > 0 : !1), a = (e, t, n, r) => {
18
- let a = i(t).filter((e) => !n?.contains(e));
19
- if (a.length === 0) return null;
20
- let o = a.indexOf(e);
21
- if (o >= 0) return a[(o + (r ? -1 : 1) + a.length) % a.length] ?? null;
22
- let s = r ? [...a].reverse() : a, c = r ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
16
+ return !i || !r(i) || n instanceof Node && !n.contains(i) ? null : i;
17
+ }, a = (t, n = {}) => [...t.querySelectorAll(e)].filter((e) => r(e) ? !n.requireLayout || e.offsetParent !== null || e.getClientRects().length > 0 : !1), o = (e, t, n, r) => {
18
+ let i = a(t).filter((e) => !n?.contains(e));
19
+ if (i.length === 0) return null;
20
+ let o = i.indexOf(e);
21
+ if (o >= 0) return i[(o + (r ? -1 : 1) + i.length) % i.length] ?? null;
22
+ let s = r ? [...i].reverse() : i, c = r ? Node.DOCUMENT_POSITION_PRECEDING : Node.DOCUMENT_POSITION_FOLLOWING;
23
23
  return s.find((t) => !!(e.compareDocumentPosition(t) & c)) ?? s[0] ?? null;
24
24
  };
25
25
  //#endregion
26
- export { r as findFocusableOwner, a as findRelativeTabTarget, i as getFocusableElements, n as isFocusableElement };
26
+ export { i as findFocusableOwner, o as findRelativeTabTarget, a as getFocusableElements, n as hasFocusableSemantics, r as isFocusableElement };
@@ -5,20 +5,32 @@ export interface LayerRegistrationOptions {
5
5
  root: () => HTMLElement | null;
6
6
  anchor?: () => HTMLElement | null;
7
7
  branches?: () => readonly HTMLElement[];
8
+ /** Explicit composition owner; null keeps independent root dialogs outside focus-derived ancestry. */
9
+ parent?: LayerRegistration | null;
8
10
  modal?: boolean;
11
+ /** Native event scope for a contained layer; global modal children do not inherit it. */
12
+ eventBoundary?: () => HTMLElement | null;
9
13
  restoreTarget?: HTMLElement | null;
10
14
  dismissOnEscape?: () => boolean;
11
15
  dismissOnOutsidePointer?: () => boolean;
12
16
  blocksParentFocusTrap?: boolean;
13
17
  trapFocus?: (event: KeyboardEvent) => void;
14
18
  requestDismiss: (reason: LayerDismissReason, event: Event) => void;
19
+ /** Releases owner UI/subscriptions when its ancestor retires, without a synthetic dismiss event. */
20
+ onRetire?: () => void;
15
21
  }
16
22
  export interface LayerRegistration {
17
23
  readonly id: symbol;
18
24
  readonly zIndex: string;
19
25
  readonly focusScope: () => ParentNode;
26
+ /** Whether this registration still owns the global topmost focus request. */
27
+ readonly isTopmost: () => boolean;
28
+ /** Requests one Tab target, committed by this registration's normal close only. */
29
+ readonly handoffFocus: (target: HTMLElement) => () => void;
20
30
  unregister: (options?: {
21
31
  restoreFocus?: boolean;
32
+ retireDescendants?: boolean;
33
+ commitFocusHandoff?: boolean;
22
34
  }) => void;
23
35
  }
24
36
  /**