@pgcorp/ui-kit 0.13.0 → 0.15.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 (354) hide show
  1. package/README.md +1055 -31
  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_dc65aba1_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_a108e8f1_scoped_a108e8f1_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/{SCollapsiblePanel.css_vue_type_style_index_0_src_71824088_scoped_71824088_lang.css → SCollapsiblePanel.css_vue_type_style_index_0_src_db85261d_scoped_db85261d_lang.css} +1 -1
  9. package/dist/assets/src/components/shared/containers/SOverlayHost.css_vue_type_style_index_0_src_09215628_scoped_09215628_lang.css +2 -0
  10. package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_a4f1f64a_scoped_a4f1f64a_lang.css +2 -0
  11. 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
  12. package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_52396e42_scoped_52396e42_lang.css +2 -0
  13. package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_7a5acda9_scoped_7a5acda9_lang.css +2 -0
  14. package/dist/assets/src/components/shared/controls/SCheckbox.css_vue_type_style_index_0_src_2562f916_scoped_2562f916_lang.css +2 -0
  15. package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_d630c922_scoped_d630c922_lang.css +2 -0
  16. package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_43b6e378_scoped_43b6e378_lang.css +1 -0
  17. 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_40040ae5_scoped_40040ae5_lang.css} +1 -1
  18. package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_2d353c26_scoped_2d353c26_lang.css +2 -0
  19. 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
  20. 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
  21. package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_50063f9f_scoped_50063f9f_lang.css +2 -0
  22. 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
  23. package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_d2b7d71b_scoped_d2b7d71b_lang.css +2 -0
  24. package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_d1ead6c0_scoped_d1ead6c0_lang.css +2 -0
  25. package/dist/assets/src/components/shared/controls/STextarea.css_vue_type_style_index_0_src_true_lang.css +1 -1
  26. package/dist/assets/src/components/shared/data-display/SControlledToastViewport.css_vue_type_style_index_0_src_a69aa84b_scoped_a69aa84b_lang.css +2 -0
  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/SScrollViewport.css_vue_type_style_index_0_src_d94fcf8c_scoped_d94fcf8c_lang.css +2 -0
  30. package/dist/assets/src/components/shared/data-display/SStatus.css_vue_type_style_index_0_src_3ce41a12_scoped_3ce41a12_lang.css +1 -1
  31. package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_b23b3d71_scoped_b23b3d71_lang.css +2 -0
  32. package/dist/assets/src/components/shared/data-display/STooltip.css_vue_type_style_index_0_src_true_lang.css +1 -1
  33. package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_9fe3ade0_scoped_9fe3ade0_lang.css +2 -0
  34. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_eaae882d_scoped_eaae882d_lang.css +2 -0
  35. package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_1f0ffc97_scoped_1f0ffc97_lang.css +2 -0
  36. package/dist/assets/src/components/shared/data-display/_internal/SRichImage.css_vue_type_style_index_0_src_2f1c39a9_scoped_2f1c39a9_lang.css +2 -0
  37. 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
  38. package/dist/assets/src/components/shared/data-display/_internal/STableCell.css_vue_type_style_index_0_src_b829cbc6_scoped_b829cbc6_lang.css +2 -0
  39. package/dist/assets/src/components/shared/data-display/_internal/STableFrame.css_vue_type_style_index_0_src_914bad28_scoped_914bad28_lang.css +2 -0
  40. package/dist/assets/src/components/shared/data-display/_internal/STableRow.css_vue_type_style_index_0_src_1661f8b8_scoped_1661f8b8_lang.css +2 -0
  41. package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_8a291af7_scoped_8a291af7_lang.css +2 -0
  42. 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_68cf84b3_lang.css} +1 -1
  43. package/dist/index.d.ts +1 -0
  44. package/dist/index.js +3 -3
  45. package/dist/reference.css +4 -0
  46. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.d.ts +15 -0
  47. package/dist/src/components/icons/_internal/generatedSputnigUiIconComponents.js +4 -4
  48. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.d.ts +46 -1
  49. package/dist/src/components/icons/_internal/generatedSputnigUiIconMarkup.js +260 -230
  50. package/dist/src/components/icons/sputnigUiIcons.d.ts +1 -1
  51. package/dist/src/components/icons/sputnigUiIcons.js +233 -218
  52. package/dist/src/components/layout/SAppShell.vue_vue_type_script_setup_true_lang.js +8 -8
  53. package/dist/src/components/layout/SDockRegion.vue.d.ts +18 -5
  54. package/dist/src/components/layout/SDockRegion.vue.js +2 -2
  55. package/dist/src/components/layout/SDockRegion.vue_vue_type_script_setup_true_lang.js +112 -64
  56. package/dist/src/components/layout/SResizeHandle.vue.d.ts +6 -3
  57. package/dist/src/components/layout/SResizeHandle.vue.js +2 -2
  58. package/dist/src/components/layout/SResizeHandle.vue_vue_type_script_setup_true_lang.js +127 -87
  59. package/dist/src/components/layout/SStack.vue.d.ts +1 -1
  60. package/dist/src/components/layout/SWorkbenchPanelShell.vue.d.ts +4 -4
  61. package/dist/src/components/layout/SWorkbenchPanelShell.vue.js +2 -2
  62. package/dist/src/components/layout/SWorkbenchPanelShell.vue_vue_type_script_setup_true_lang.js +62 -58
  63. package/dist/src/components/layout/types.d.ts +20 -0
  64. package/dist/src/components/shared/_internal/SDialogSurface.vue.d.ts +9 -1
  65. package/dist/src/components/shared/_internal/SDialogSurface.vue.js +2 -2
  66. package/dist/src/components/shared/_internal/SDialogSurface.vue_vue_type_script_setup_true_lang.js +183 -68
  67. package/dist/src/components/shared/_internal/SHeaderSurface.vue.d.ts +1 -1
  68. package/dist/src/components/shared/_internal/SListboxGroup.vue.d.ts +5 -0
  69. package/dist/src/components/shared/_internal/SListboxGroup.vue.js +2 -2
  70. package/dist/src/components/shared/_internal/SListboxGroup.vue_vue_type_script_setup_true_lang.js +33 -15
  71. package/dist/src/components/shared/_internal/SMenuLayer.vue.d.ts +5 -1
  72. package/dist/src/components/shared/_internal/SMenuLayer.vue.js +2 -2
  73. package/dist/src/components/shared/_internal/SMenuLayer.vue_vue_type_script_setup_true_lang.js +64 -20
  74. package/dist/src/components/shared/_internal/dialogSurface.d.ts +17 -2
  75. package/dist/src/components/shared/_internal/dialogSurface.js +42 -23
  76. package/dist/src/components/shared/_internal/dialogSurfaceMotion.d.ts +14 -0
  77. package/dist/src/components/shared/_internal/dialogSurfaceMotion.js +84 -0
  78. package/dist/src/components/shared/_internal/focusTrap.js +15 -13
  79. package/dist/src/components/shared/_internal/listboxContext.d.ts +1 -0
  80. package/dist/src/components/shared/_internal/listboxInventory.d.ts +51 -0
  81. package/dist/src/components/shared/_internal/listboxInventory.js +85 -0
  82. package/dist/src/components/shared/_internal/menuContext.d.ts +8 -0
  83. package/dist/src/components/shared/_internal/menuContext.js +2 -2
  84. package/dist/src/components/shared/_internal/sidebarGroupContext.d.ts +1 -0
  85. package/dist/src/components/shared/_internal/useVirtualCollection.d.ts +45 -0
  86. package/dist/src/components/shared/_internal/useVirtualCollection.js +123 -0
  87. package/dist/src/components/shared/complex/SKanbanLane.vue_vue_type_script_setup_true_lang.js +5 -5
  88. package/dist/src/components/shared/containers/SCloudChrome.vue.d.ts +1 -1
  89. package/dist/src/components/shared/containers/SCloudChromeRow.vue.d.ts +1 -1
  90. package/dist/src/components/shared/containers/SCollapsiblePanel.vue.d.ts +5 -0
  91. package/dist/src/components/shared/containers/SCollapsiblePanel.vue.js +2 -2
  92. package/dist/src/components/shared/containers/SCollapsiblePanel.vue_vue_type_script_setup_true_lang.js +123 -121
  93. package/dist/src/components/shared/containers/SDrawer.vue.d.ts +16 -5
  94. package/dist/src/components/shared/containers/SDrawer.vue.js +3 -6
  95. package/dist/src/components/shared/containers/SDrawer.vue_vue_type_script_setup_true_lang.js +149 -75
  96. package/dist/src/components/shared/containers/SModal.vue.d.ts +8 -8
  97. package/dist/src/components/shared/containers/SModal.vue.js +3 -6
  98. package/dist/src/components/shared/containers/SModal.vue_vue_type_script_setup_true_lang.js +93 -85
  99. package/dist/src/components/shared/containers/SOverlayHost.vue.d.ts +16 -0
  100. package/dist/src/components/shared/containers/SOverlayHost.vue.js +8 -0
  101. package/dist/src/components/shared/containers/SOverlayHost.vue_vue_type_script_setup_true_lang.js +66 -0
  102. package/dist/src/components/shared/containers/SPageHeader.vue.d.ts +1 -1
  103. package/dist/src/components/shared/containers/SPanel.vue.d.ts +2 -2
  104. package/dist/src/components/shared/containers/SPanel.vue_vue_type_script_setup_true_lang.js +7 -7
  105. package/dist/src/components/shared/containers/SPopover.vue.js +2 -2
  106. package/dist/src/components/shared/containers/SPopover.vue_vue_type_script_setup_true_lang.js +250 -156
  107. package/dist/src/components/shared/containers/SSidebarGroup.vue.js +2 -2
  108. package/dist/src/components/shared/containers/SSidebarGroup.vue_vue_type_script_setup_true_lang.js +30 -8
  109. package/dist/src/components/shared/containers/SSidebarSection.vue.js +2 -2
  110. package/dist/src/components/shared/containers/SSidebarSection.vue_vue_type_script_setup_true_lang.js +59 -45
  111. package/dist/src/components/shared/controls/SButton.vue.d.ts +7 -0
  112. package/dist/src/components/shared/controls/SButton.vue.js +2 -2
  113. package/dist/src/components/shared/controls/SButton.vue_vue_type_script_setup_true_lang.js +11 -5
  114. package/dist/src/components/shared/controls/SCheckbox.vue.d.ts +3 -0
  115. package/dist/src/components/shared/controls/SCheckbox.vue.js +2 -2
  116. package/dist/src/components/shared/controls/SCheckbox.vue_vue_type_script_setup_true_lang.js +53 -43
  117. package/dist/src/components/shared/controls/SCheckboxGroup.vue_vue_type_script_setup_true_lang.js +7 -7
  118. package/dist/src/components/shared/controls/SChoiceCards.vue_vue_type_script_setup_true_lang.js +4 -4
  119. package/dist/src/components/shared/controls/SColorSelect.vue_vue_type_script_setup_true_lang.js +6 -6
  120. package/dist/src/components/shared/controls/SCombobox.vue.js +2 -2
  121. package/dist/src/components/shared/controls/SCombobox.vue_vue_type_script_setup_true_lang.js +157 -132
  122. package/dist/src/components/shared/controls/SComboboxTrigger.vue.d.ts +2 -2
  123. package/dist/src/components/shared/controls/SContextMenu.vue.d.ts +11 -0
  124. package/dist/src/components/shared/controls/SContextMenu.vue.js +2 -2
  125. package/dist/src/components/shared/controls/SContextMenu.vue_vue_type_script_setup_true_lang.js +163 -73
  126. package/dist/src/components/shared/controls/SContextToggleButton.vue_vue_type_script_setup_true_lang.js +6 -6
  127. package/dist/src/components/shared/controls/SDragHandle.vue_vue_type_script_setup_true_lang.js +5 -5
  128. package/dist/src/components/shared/controls/SDropdownMenu.vue.js +2 -2
  129. package/dist/src/components/shared/controls/SDropdownMenu.vue_vue_type_script_setup_true_lang.js +77 -65
  130. package/dist/src/components/shared/controls/SField.vue.d.ts +9 -6
  131. package/dist/src/components/shared/controls/SField.vue.js +2 -2
  132. package/dist/src/components/shared/controls/SField.vue_vue_type_script_setup_true_lang.js +69 -52
  133. package/dist/src/components/shared/controls/SFieldGroup.vue_vue_type_script_setup_true_lang.js +13 -13
  134. package/dist/src/components/shared/controls/SInlineTokenEditor.vue_vue_type_script_setup_true_lang.js +26 -26
  135. package/dist/src/components/shared/controls/SInputText.vue_vue_type_script_setup_true_lang.js +21 -21
  136. package/dist/src/components/shared/controls/SInteractiveSurface.vue.js +2 -2
  137. package/dist/src/components/shared/controls/SInteractiveSurface.vue_vue_type_script_setup_true_lang.js +99 -74
  138. package/dist/src/components/shared/controls/SLink.d.ts +11 -1
  139. package/dist/src/components/shared/controls/SLink.vue.d.ts +17 -1
  140. package/dist/src/components/shared/controls/SLink.vue.js +2 -2
  141. package/dist/src/components/shared/controls/SLink.vue_vue_type_script_setup_true_lang.js +157 -62
  142. package/dist/src/components/shared/controls/SListbox.vue.d.ts +10 -1
  143. package/dist/src/components/shared/controls/SListbox.vue.js +2 -2
  144. package/dist/src/components/shared/controls/SListbox.vue_vue_type_script_setup_true_lang.js +371 -189
  145. package/dist/src/components/shared/controls/SListboxOption.vue.d.ts +6 -0
  146. package/dist/src/components/shared/controls/SListboxOption.vue.js +2 -2
  147. package/dist/src/components/shared/controls/SListboxOption.vue_vue_type_script_setup_true_lang.js +47 -34
  148. package/dist/src/components/shared/controls/SMenuSurface.vue.d.ts +2 -2
  149. package/dist/src/components/shared/controls/SMenuSurface.vue.js +2 -2
  150. package/dist/src/components/shared/controls/SMenuSurface.vue_vue_type_script_setup_true_lang.js +145 -115
  151. package/dist/src/components/shared/controls/SRange.vue_vue_type_script_setup_true_lang.js +12 -12
  152. package/dist/src/components/shared/controls/SSelect.vue.js +2 -2
  153. package/dist/src/components/shared/controls/SSelect.vue_vue_type_script_setup_true_lang.js +130 -112
  154. package/dist/src/components/shared/controls/STextarea.d.ts +1 -1
  155. package/dist/src/components/shared/controls/STextarea.vue.d.ts +28 -2
  156. package/dist/src/components/shared/controls/STextarea.vue_vue_type_script_setup_true_lang.js +348 -209
  157. package/dist/src/components/shared/controls/_internal/SInlineTokenSurface.vue_vue_type_script_lang.js +36 -36
  158. package/dist/src/components/shared/data-display/SActionList.vue.d.ts +1 -1
  159. package/dist/src/components/shared/data-display/SActionListItem.vue.d.ts +4 -4
  160. package/dist/src/components/shared/data-display/SActionListItem.vue_vue_type_script_setup_true_lang.js +6 -6
  161. package/dist/src/components/shared/data-display/SBadge.vue.d.ts +1 -1
  162. package/dist/src/components/shared/data-display/SChart.vue_vue_type_script_setup_true_lang.js +89 -89
  163. package/dist/src/components/shared/data-display/SChip.vue.d.ts +1 -1
  164. package/dist/src/components/shared/data-display/SChip.vue_vue_type_script_setup_true_lang.js +7 -7
  165. package/dist/src/components/shared/data-display/SCodeBlock.vue_vue_type_script_setup_true_lang.js +19 -19
  166. package/dist/src/components/shared/data-display/SCodeEditor.vue_vue_type_script_setup_true_lang.js +37 -37
  167. package/dist/src/components/shared/data-display/SCodeSearchPanel.vue_vue_type_script_setup_true_lang.js +17 -17
  168. package/dist/src/components/shared/data-display/SCodeWorkspaceEditor.vue_vue_type_script_setup_true_lang.js +12 -12
  169. package/dist/src/components/shared/data-display/SControlledToastViewport.vue.js +2 -2
  170. package/dist/src/components/shared/data-display/SControlledToastViewport.vue_vue_type_script_setup_true_lang.js +57 -48
  171. package/dist/src/components/shared/data-display/SDiffViewer.vue_vue_type_script_setup_true_lang.js +13 -13
  172. package/dist/src/components/shared/data-display/SDocBlock.vue_vue_type_script_setup_true_lang.js +12 -12
  173. package/dist/src/components/shared/data-display/SEmptyState.vue.d.ts +1 -1
  174. package/dist/src/components/shared/data-display/SEmptyState.vue_vue_type_script_setup_true_lang.js +4 -4
  175. package/dist/src/components/shared/data-display/SExpandableText.vue_vue_type_script_setup_true_lang.js +7 -7
  176. package/dist/src/components/shared/data-display/SKeyValueGrid.vue_vue_type_script_setup_true_lang.js +15 -15
  177. package/dist/src/components/shared/data-display/SLinkedSystemsList.vue_vue_type_script_setup_true_lang.js +17 -17
  178. package/dist/src/components/shared/data-display/SMessage.vue.d.ts +1 -1
  179. package/dist/src/components/shared/data-display/SMessage.vue_vue_type_script_setup_true_lang.js +9 -9
  180. package/dist/src/components/shared/data-display/SMetricCard.vue.d.ts +1 -1
  181. package/dist/src/components/shared/data-display/SProgressBar.vue.d.ts +22 -3
  182. package/dist/src/components/shared/data-display/SProgressBar.vue.js +2 -2
  183. package/dist/src/components/shared/data-display/SProgressBar.vue_vue_type_script_setup_true_lang.js +133 -47
  184. package/dist/src/components/shared/data-display/SProgressIndicator.vue_vue_type_script_setup_true_lang.js +4 -4
  185. package/dist/src/components/shared/data-display/SRichDocument.vue.js +2 -2
  186. package/dist/src/components/shared/data-display/SRichDocument.vue_vue_type_script_setup_true_lang.js +46 -23
  187. package/dist/src/components/shared/data-display/SScrollViewport.vue.d.ts +10 -5
  188. package/dist/src/components/shared/data-display/SScrollViewport.vue.js +2 -2
  189. package/dist/src/components/shared/data-display/SScrollViewport.vue_vue_type_script_setup_true_lang.js +162 -111
  190. package/dist/src/components/shared/data-display/SSectionHeader.vue.d.ts +1 -1
  191. package/dist/src/components/shared/data-display/SStatus.vue_vue_type_script_setup_true_lang.js +4 -4
  192. package/dist/src/components/shared/data-display/STable.vue.js +2 -2
  193. package/dist/src/components/shared/data-display/STable.vue_vue_type_script_setup_true_lang.js +343 -322
  194. package/dist/src/components/shared/data-display/STooltip.vue.d.ts +2 -2
  195. package/dist/src/components/shared/data-display/STooltip.vue_vue_type_script_setup_true_lang.js +284 -205
  196. package/dist/src/components/shared/data-display/STooltipAnchor.vue_vue_type_script_setup_true_lang.js +5 -5
  197. package/dist/src/components/shared/data-display/STooltipTarget.vue_vue_type_script_setup_true_lang.js +4 -4
  198. package/dist/src/components/shared/data-display/SVirtualList.vue.js +2 -2
  199. package/dist/src/components/shared/data-display/SVirtualList.vue_vue_type_script_setup_true_lang.js +196 -246
  200. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue.js +2 -2
  201. package/dist/src/components/shared/data-display/_internal/SRichBlockNode.vue_vue_type_script_setup_true_lang.js +242 -220
  202. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.d.ts +13 -2
  203. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue.js +2 -2
  204. package/dist/src/components/shared/data-display/_internal/SRichDisclosure.vue_vue_type_script_setup_true_lang.js +67 -11
  205. package/dist/src/components/shared/data-display/_internal/SRichImage.vue.d.ts +11 -0
  206. package/dist/src/components/shared/data-display/_internal/SRichImage.vue.js +8 -0
  207. package/dist/src/components/shared/data-display/_internal/SRichImage.vue_vue_type_script_setup_true_lang.js +89 -0
  208. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.d.ts +3 -2
  209. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue.js +2 -2
  210. package/dist/src/components/shared/data-display/_internal/SRichInlineNode.vue_vue_type_script_setup_true_lang.js +179 -125
  211. package/dist/src/components/shared/data-display/_internal/SRichMath.vue_vue_type_script_setup_true_lang.js +4 -4
  212. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.d.ts +21 -0
  213. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue.js +5 -0
  214. package/dist/src/components/shared/data-display/_internal/SRichTableNode.vue_vue_type_script_setup_true_lang.js +150 -0
  215. package/dist/src/components/shared/data-display/_internal/STableCell.vue.d.ts +52 -0
  216. package/dist/src/components/shared/data-display/_internal/STableCell.vue.js +8 -0
  217. package/dist/src/components/shared/data-display/_internal/STableCell.vue_vue_type_script_setup_true_lang.js +148 -0
  218. package/dist/src/components/shared/data-display/_internal/STableFrame.vue.d.ts +42 -0
  219. package/dist/src/components/shared/data-display/_internal/STableFrame.vue.js +8 -0
  220. package/dist/src/components/shared/data-display/_internal/STableFrame.vue_vue_type_script_setup_true_lang.js +114 -0
  221. package/dist/src/components/shared/data-display/_internal/STableRow.vue.d.ts +43 -0
  222. package/dist/src/components/shared/data-display/_internal/STableRow.vue.js +8 -0
  223. package/dist/src/components/shared/data-display/_internal/STableRow.vue_vue_type_script_setup_true_lang.js +115 -0
  224. package/dist/src/components/shared/data-display/_internal/STableSection.vue.d.ts +28 -0
  225. package/dist/src/components/shared/data-display/_internal/STableSection.vue.js +5 -0
  226. package/dist/src/components/shared/data-display/_internal/STableSection.vue_vue_type_script_setup_true_lang.js +77 -0
  227. package/dist/src/components/shared/data-display/_internal/richDocumentMedia.d.ts +6 -0
  228. package/dist/src/components/shared/data-display/_internal/richDocumentMedia.js +136 -0
  229. package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.d.ts +21 -0
  230. package/dist/src/components/shared/data-display/_internal/richDocumentMetadata.js +39 -0
  231. package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.d.ts +30 -0
  232. package/dist/src/components/shared/data-display/_internal/richDocumentNavigation.js +88 -0
  233. package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.d.ts +9 -0
  234. package/dist/src/components/shared/data-display/_internal/richDocumentTableValidation.js +240 -0
  235. package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.d.ts +15 -0
  236. package/dist/src/components/shared/data-display/_internal/richDocumentTraversal.js +61 -0
  237. package/dist/src/components/shared/data-display/_internal/richDocumentTypes.d.ts +466 -0
  238. package/dist/src/components/shared/data-display/_internal/richDocumentValidation.d.ts +65 -0
  239. package/dist/src/components/shared/data-display/_internal/richDocumentValidation.js +192 -0
  240. package/dist/src/components/shared/data-display/_internal/tableFoundation.d.ts +27 -0
  241. package/dist/src/components/shared/data-display/_internal/tableFoundation.js +16 -0
  242. package/dist/src/components/shared/data-display/richDocument.d.ts +3 -220
  243. package/dist/src/components/shared/data-display/richDocument.js +607 -399
  244. package/dist/src/components/shared/data-display/scrollViewport.d.ts +2 -0
  245. package/dist/src/components/shared/database/SDataGrid.vue_vue_type_script_setup_true_lang.js +36 -36
  246. package/dist/src/components/shared/database/SSqlEditor.vue.d.ts +2 -2
  247. package/dist/src/components/shared/database/SSqlEditor.vue_vue_type_script_setup_true_lang.js +36 -36
  248. package/dist/src/components/shared/feedback/SAsyncState.vue.js +2 -2
  249. package/dist/src/components/shared/feedback/SAsyncState.vue_vue_type_script_setup_true_lang.js +70 -63
  250. package/dist/src/components/shared/navigation/SBottomNav.vue.d.ts +2 -2
  251. package/dist/src/components/shared/navigation/SBottomNav.vue.js +2 -2
  252. package/dist/src/components/shared/navigation/SBottomNav.vue_vue_type_script_setup_true_lang.js +140 -129
  253. package/dist/src/components/shared/navigation/SBreadcrumbs.vue.d.ts +2 -2
  254. package/dist/src/components/shared/navigation/STabList.vue.d.ts +1 -1
  255. package/dist/src/components/shared/navigation/STabPanel.vue.d.ts +2 -2
  256. package/dist/src/components/shared/navigation/SWizardSteps.vue_vue_type_script_setup_true_lang.js +16 -16
  257. package/dist/src/components/shared/persona/SPersonaProjectPicker.vue.d.ts +2 -2
  258. package/dist/src/composables/useDialogOverlay.d.ts +21 -2
  259. package/dist/src/composables/useDialogOverlay.js +275 -44
  260. package/dist/src/composables/useFloatingPosition.d.ts +20 -0
  261. package/dist/src/composables/useFloatingPosition.js +129 -52
  262. package/dist/src/internal/fieldSurface.d.ts +3 -0
  263. package/dist/src/internal/fieldSurface.js +3 -2
  264. package/dist/src/internal/flatTree.d.ts +8 -0
  265. package/dist/src/internal/flatTree.js +23 -0
  266. package/dist/src/internal/focusNavigation.d.ts +5 -0
  267. package/dist/src/internal/focusNavigation.js +29 -16
  268. package/dist/src/internal/inertLease.d.ts +8 -0
  269. package/dist/src/internal/inertLease.js +33 -0
  270. package/dist/src/internal/layerStack.d.ts +52 -0
  271. package/dist/src/internal/layerStack.js +343 -60
  272. package/dist/src/internal/linkTarget.d.ts +7 -1
  273. package/dist/src/internal/linkTarget.js +11 -7
  274. package/dist/src/internal/nativeFocus.d.ts +4 -0
  275. package/dist/src/internal/nativeFocus.js +12 -0
  276. package/dist/src/internal/overlayHost.d.ts +18 -0
  277. package/dist/src/internal/overlayHost.js +18 -0
  278. package/dist/src/internal/overlayPortal.d.ts +17 -0
  279. package/dist/src/internal/overlayPortal.js +23 -0
  280. package/dist/src/internal/ownedAttrs.d.ts +13 -3
  281. package/dist/src/internal/ownedAttrs.js +8 -1
  282. package/dist/src/internal/runtimeContract.d.ts +2 -0
  283. package/dist/src/internal/runtimeContract.js +10 -5
  284. package/dist/src/internal/semanticSizing.d.ts +2 -2
  285. package/dist/src/internal/semanticSizing.js +2 -1
  286. package/dist/src/internal/useMenuLayer.d.ts +8 -4
  287. package/dist/src/internal/useMenuLayer.js +78 -49
  288. package/dist/src/internal/viewportModality.d.ts +27 -0
  289. package/dist/src/internal/viewportModality.js +132 -0
  290. package/dist/tailwind.css +3 -0
  291. package/dist/typography.LICENSE.txt +94 -0
  292. package/dist/typography.js +5105 -0
  293. package/docs/getting-started.md +39 -0
  294. package/docs/link-download.md +114 -0
  295. package/docs/listbox.md +129 -0
  296. package/docs/overlay-lifecycle.md +195 -0
  297. package/docs/public-api.md +335 -6
  298. package/docs/resize.md +158 -0
  299. package/docs/rich-document.md +442 -25
  300. package/docs/scroll-viewport.md +30 -10
  301. package/docs/theming.md +42 -8
  302. package/package.json +12 -4
  303. package/src/components/shared/_internal/SDialogSurface.css +213 -36
  304. package/src/components/shared/_internal/SMenuLayer.css +4 -0
  305. package/src/components/shared/containers/SOverlayHost.css +14 -0
  306. package/src/components/shared/containers/SPopover.css +8 -2
  307. package/src/components/shared/controls/SButton.css +4 -3
  308. package/src/components/shared/controls/SCheckbox.css +19 -7
  309. package/src/components/shared/controls/SField.css +6 -0
  310. package/src/components/shared/controls/SListbox.css +17 -0
  311. package/src/components/shared/controls/SMenuSurface.css +18 -4
  312. package/src/components/shared/controls/STextarea.css +42 -3
  313. package/src/components/shared/data-display/SControlledToastViewport.css +2 -10
  314. package/src/components/shared/data-display/SProgressBar.css +79 -0
  315. package/src/components/shared/data-display/SRichDocument.css +1 -0
  316. package/src/components/shared/data-display/SScrollViewport.css +17 -1
  317. package/src/components/shared/data-display/SStatus.css +8 -25
  318. package/src/components/shared/data-display/STable.css +0 -113
  319. package/src/components/shared/data-display/STooltip.css +3 -0
  320. package/src/components/shared/data-display/_internal/SRichBlockNode.css +11 -7
  321. package/src/components/shared/data-display/_internal/SRichDisclosure.css +16 -0
  322. package/src/components/shared/data-display/_internal/SRichImage.css +37 -0
  323. package/src/components/shared/data-display/_internal/STableCell.css +55 -0
  324. package/src/components/shared/data-display/_internal/STableFrame.css +37 -0
  325. package/src/components/shared/data-display/_internal/STableRow.css +12 -0
  326. package/src/components/shared/feedback/SAsyncState.css +0 -4
  327. package/src/styles/style.css +9 -5
  328. package/src/styles/tokens.css +30 -0
  329. package/dist/assets/src/components/layout/SDockRegion.vue_vue_type_style_index_0_scoped_2932631d_lang.css +0 -1
  330. package/dist/assets/src/components/shared/_internal/SDialogSurface.css_vue_type_style_index_0_src_d1b65adf_scoped_d1b65adf_lang.css +0 -2
  331. package/dist/assets/src/components/shared/_internal/SMenuLayer.css_vue_type_style_index_0_src_4913bbe1_scoped_4913bbe1_lang.css +0 -1
  332. package/dist/assets/src/components/shared/containers/SDrawer.css_vue_type_style_index_0_src_091d7325_scoped_091d7325_lang.css +0 -2
  333. package/dist/assets/src/components/shared/containers/SModal.css_vue_type_style_index_0_src_0dc51b74_scoped_0dc51b74_lang.css +0 -2
  334. package/dist/assets/src/components/shared/containers/SPopover.css_vue_type_style_index_0_src_deded766_scoped_deded766_lang.css +0 -2
  335. package/dist/assets/src/components/shared/containers/SSidebarSection.css_vue_type_style_index_0_src_96f51ac6_scoped_96f51ac6_lang.css +0 -2
  336. package/dist/assets/src/components/shared/controls/SButton.css_vue_type_style_index_0_src_a5d8f7e0_scoped_a5d8f7e0_lang.css +0 -2
  337. package/dist/assets/src/components/shared/controls/SCheckbox.css_vue_type_style_index_0_src_b20b27dd_scoped_b20b27dd_lang.css +0 -2
  338. package/dist/assets/src/components/shared/controls/SCombobox.css_vue_type_style_index_0_src_e3b4f580_scoped_e3b4f580_lang.css +0 -2
  339. package/dist/assets/src/components/shared/controls/SContextMenu.css_vue_type_style_index_0_src_00c91d39_scoped_00c91d39_lang.css +0 -1
  340. package/dist/assets/src/components/shared/controls/SField.css_vue_type_style_index_0_src_60628f96_scoped_60628f96_lang.css +0 -2
  341. package/dist/assets/src/components/shared/controls/SListbox.css_vue_type_style_index_0_src_24db4abb_scoped_24db4abb_lang.css +0 -2
  342. package/dist/assets/src/components/shared/controls/SMenuSurface.css_vue_type_style_index_0_src_ddcc5fbb_scoped_ddcc5fbb_lang.css +0 -2
  343. package/dist/assets/src/components/shared/controls/SSelect.css_vue_type_style_index_0_src_441648c9_scoped_441648c9_lang.css +0 -2
  344. package/dist/assets/src/components/shared/data-display/SControlledToastViewport.css_vue_type_style_index_0_src_5864b6c6_scoped_5864b6c6_lang.css +0 -2
  345. package/dist/assets/src/components/shared/data-display/SProgressBar.css_vue_type_style_index_0_src_9308293a_scoped_9308293a_lang.css +0 -2
  346. package/dist/assets/src/components/shared/data-display/SRichDocument.css_vue_type_style_index_0_src_d1afafc5_scoped_d1afafc5_lang.css +0 -2
  347. package/dist/assets/src/components/shared/data-display/SScrollViewport.css_vue_type_style_index_0_src_e5d11342_scoped_e5d11342_lang.css +0 -2
  348. package/dist/assets/src/components/shared/data-display/STable.css_vue_type_style_index_0_src_9955d482_scoped_9955d482_lang.css +0 -2
  349. package/dist/assets/src/components/shared/data-display/SVirtualList.css_vue_type_style_index_0_src_cee8c247_scoped_cee8c247_lang.css +0 -2
  350. package/dist/assets/src/components/shared/data-display/_internal/SRichBlockNode.css_vue_type_style_index_0_src_195d5c06_scoped_195d5c06_lang.css +0 -2
  351. package/dist/assets/src/components/shared/data-display/_internal/SRichDisclosure.css_vue_type_style_index_0_src_fa94e2ff_scoped_fa94e2ff_lang.css +0 -2
  352. package/dist/assets/src/components/shared/feedback/SAsyncState.css_vue_type_style_index_0_src_bfc28903_scoped_bfc28903_lang.css +0 -2
  353. package/src/components/shared/containers/SDrawer.css +0 -69
  354. package/src/components/shared/containers/SModal.css +0 -27
@@ -1,20 +1,39 @@
1
1
  import { ComponentPublicInstance, Ref } from 'vue';
2
+ import { OverlayHostContext } from '../internal/overlayHost';
3
+ export type DialogOverlayScope = 'viewport' | 'contained';
2
4
  export interface DialogOverlayOptions {
3
5
  open: Readonly<Ref<boolean>>;
4
6
  closable: Readonly<Ref<boolean>>;
7
+ scope?: Readonly<Ref<DialogOverlayScope>>;
8
+ host?: OverlayHostContext;
9
+ /** Validates the full owner presentation at setup and before each resource acquisition. */
10
+ validate?: () => void;
5
11
  requestClose: () => void;
6
12
  /** Runs after the mounted surface owns focus for the current open cycle. */
7
13
  opened?: () => void;
8
14
  }
9
15
  export interface DialogOverlayController {
10
16
  panelRef: Ref<HTMLElement | null>;
17
+ portalRef: Ref<HTMLElement | null>;
18
+ dismissalRef: Ref<HTMLElement | null>;
19
+ /** Native cycle availability, independent of its captured initial-focus permission. */
20
+ nativeAdmitted: Readonly<Ref<boolean>>;
21
+ renderOpen: Readonly<Ref<boolean>>;
22
+ /** Exact current layer base for the private dialog surface's semantic paint bands. */
23
+ layerIndex: Readonly<Ref<string | null>>;
11
24
  setPanelElement: (element: Element | ComponentPublicInstance | null) => void;
25
+ setPortalElement: (element: Element | ComponentPublicInstance | null) => void;
26
+ setDismissalElement: (element: Element | ComponentPublicInstance | null) => void;
12
27
  backdropStyle: Readonly<Ref<Record<string, string>>>;
13
28
  surfaceStyle: Readonly<Ref<Record<string, string>>>;
29
+ /** Exact native portal paint band; global toast priority is unchanged. */
30
+ portalStyle: Readonly<Ref<Record<string, string>>>;
31
+ /** Explicit cleanup retires this cycle and descendants without a focus-return request. */
14
32
  dispose: () => void;
15
33
  }
16
34
  /**
17
- * Владеет modal-регистрацией, focus trap, body lock и восстановлением фокуса.
18
- * Owns modal registration, focus trapping, body lock, and focus restoration.
35
+ * Owns one mounted dialog cycle in the shared layer stack. Viewport dialogs lock
36
+ * body/trap focus and isolate the native background; contained dialogs lease their host without global modality.
37
+ * Retirement requires a new false→true open request before another cycle.
19
38
  */
20
39
  export declare function useDialogOverlay(options: DialogOverlayOptions): DialogOverlayController;
@@ -1,52 +1,283 @@
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 { flatTreeContains as t } from "../internal/flatTree.js";
3
+ import { trapFocusInsidePanel as n } from "../components/shared/_internal/focusTrap.js";
4
+ import { resolveDialogSurfaceLayerIndex as r } from "../components/shared/_internal/dialogSurface.js";
5
+ import { captureLayerFocusAdmission as i, registerLayer as a } from "../internal/layerStack.js";
6
+ import { useOverlayAdmission as o } from "../internal/overlayHost.js";
7
+ import { validateBoolean as s, validateExactString as c } from "../internal/runtimeContract.js";
8
+ import { provideOverlayPortal as l, useOverlayPortal as u } from "../internal/overlayPortal.js";
9
+ import { computed as d, inject as f, nextTick as p, onBeforeUnmount as m, onMounted as h, provide as g, readonly as _, ref as v, shallowRef as y, watch as b } from "vue";
4
10
  //#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;
11
+ var x = Symbol("ui-kit-dialog-parent-lease");
12
+ function S(S) {
13
+ let C = () => c("useDialogOverlay", "scope", S.scope?.value ?? "viewport", ["viewport", "contained"]), w = () => s("useDialogOverlay", "open", S.open.value), T = () => s("useDialogOverlay", "closable", S.closable.value), E = () => {
14
+ if (!S.host) throw TypeError("useDialogOverlay: scope=\"contained\" requires a parent SOverlayHost");
15
+ return S.host;
16
+ }, D = C(), ee = w();
17
+ T(), D === "contained" && E(), S.validate?.();
18
+ let O = o(), k = v(null), A = v(null), j = v(null), M = v(!1), N = u();
19
+ l({
20
+ scope: d(() => C() === "viewport" ? "native" : N?.scope.value ?? "document"),
21
+ subject: d(() => C() === "viewport" ? k.value instanceof HTMLDialogElement ? k.value : null : N?.subject.value ?? null),
22
+ target: d(() => C() === "viewport" ? A.value : N?.target.value ?? null),
23
+ admitted: d(() => C() === "viewport" ? M.value : N?.admitted.value ?? !1)
24
+ });
25
+ let P = f(x, null), F = y(null), I = d(() => F.value?.zIndex ?? null);
26
+ g(x, {
27
+ registration: F,
28
+ panel: k
29
+ });
30
+ let L = v(O.value && D === "viewport" && ee), R = v(!1), z = v({}), B = v({}), V = v({}), H = null, U = !1, W = !1, G = !1, K = D, q = () => {
31
+ let e = E(), t = [
32
+ e.root.value,
33
+ e.content.value,
34
+ e.portal.value
35
+ ];
36
+ for (let e of t) if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: SOverlayHost refs must resolve to native HTMLElement or null");
37
+ let n = e.root.value, r = e.content.value, i = e.portal.value;
38
+ if (!n || !r || !i || !n.isConnected || !r.isConnected || !i.isConnected) return null;
39
+ 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");
40
+ return e;
41
+ }, J = () => {
42
+ !G && w() && (G = !0, S.requestClose());
43
+ }, Y = (t) => {
44
+ let n = H;
45
+ H = null, L.value = !1, z.value = {}, B.value = {}, V.value = {};
46
+ let r = [];
47
+ try {
48
+ n?.registration?.unregister({
49
+ restoreFocus: t,
50
+ retireDescendants: !0
51
+ });
52
+ } catch (e) {
53
+ r.push(e);
54
+ } finally {
55
+ n?.focusAdmission?.cancel();
56
+ }
57
+ F.value = null, M.value = !1, n?.releaseNativeListeners?.();
58
+ try {
59
+ n?.releaseHost?.();
60
+ } catch (e) {
61
+ r.push(e);
62
+ }
63
+ if (r.length === 1) throw r[0];
64
+ if (r.length > 1) throw e(r, "useDialogOverlay: layer and host retirement failed");
65
+ }, X = (t, n) => {
66
+ let r = [];
67
+ try {
68
+ Y(t);
69
+ } catch (e) {
70
+ r.push(e);
71
+ }
72
+ if (n) try {
73
+ J();
74
+ } catch (e) {
75
+ r.push(e);
76
+ }
77
+ if (r.length === 1) throw r[0];
78
+ if (r.length > 1) throw e(r, "useDialogOverlay: retirement and close intent failed");
79
+ }, Z = (e = !0) => {
80
+ U = !0, X(e, !0);
81
+ }, Q = (e) => H === e && R.value && !W && !U && O.value && w() && L.value, te = () => {
82
+ try {
83
+ let e = C(), t = w();
84
+ if (T(), e !== K && t) throw TypeError("useDialogOverlay: scope can change only while open=false");
85
+ e === "contained" && E(), S.validate?.();
86
+ } catch (t) {
87
+ U = !0;
88
+ try {
89
+ Y(!1);
90
+ } catch (n) {
91
+ throw e([t, n], "useDialogOverlay: validation and resource retirement failed");
92
+ }
93
+ throw t;
94
+ }
95
+ }, ne = async () => {
96
+ let i = H, o = k.value;
97
+ if (!i || !Q(i) || !o?.isConnected || i.focusing || i.scope === "viewport" && !A.value?.isConnected) return;
98
+ let s = P?.registration.value ?? null;
99
+ if (!P || s && P.panel.value?.isConnected) {
100
+ if (i.scope === "contained" && i.portal?.contains(o) !== !0) throw TypeError("useDialogOverlay: contained dialog surface must mount inside its SOverlayHost portal");
101
+ te(), i.focusing = !0;
102
+ try {
103
+ let e = i.scope === "contained";
104
+ if (e) {
105
+ let e = q();
106
+ if (!e || e.root.value !== i.root || e.content.value !== i.content || e.portal.value !== i.portal) {
107
+ Z();
108
+ return;
109
+ }
110
+ if (i.releaseHost = i.focusAdmission ? i.focusAdmission.acquireHost(() => e.acquire(Z)) : e.acquire(Z), !Q(i)) {
111
+ i.releaseHost(), i.focusAdmission?.cancel();
112
+ return;
113
+ }
114
+ }
115
+ let c = P?.panel.value ?? null, l = c && !c.contains(i.restoreTarget) ? c : i.restoreTarget;
116
+ if (!e) {
117
+ if (!(o instanceof HTMLDialogElement)) throw TypeError("useDialogOverlay: viewport panel ref requires an actual HTMLDialogElement and its exact direct portal");
118
+ let e = (e) => {
119
+ e.target === o && (e.preventDefault(), Q(i) && T() && S.requestClose());
120
+ }, n = (e) => {
121
+ if (e.defaultPrevented) return;
122
+ let n = e.target;
123
+ if (!(n instanceof HTMLFormElement) || n.closest("dialog") !== o || !t(o, n)) return;
124
+ let r = e.submitter;
125
+ if (((r instanceof HTMLButtonElement || r instanceof HTMLInputElement) && r.hasAttribute("formmethod") ? r.formMethod : n.method) === "dialog") throw e.preventDefault(), TypeError("useDialogOverlay: native form method=\"dialog\" bypasses controlled open; use a typed close action or update open");
126
+ };
127
+ o.addEventListener("cancel", e, !0), o.addEventListener("submit", n, !0), i.releaseNativeListeners = () => {
128
+ o.removeEventListener("cancel", e, !0), o.removeEventListener("submit", n, !0);
129
+ };
130
+ }
131
+ if (i.registration = a({
132
+ kind: "dialog",
133
+ root: () => k.value,
134
+ modal: !e,
135
+ ...o instanceof HTMLDialogElement && !e ? { nativeDialog: {
136
+ subject: o,
137
+ portal: () => A.value
138
+ } } : {},
139
+ dismissalRoots: () => {
140
+ let t = j.value ?? k.value, n = e ? null : A.value;
141
+ return [...t ? [t] : [], ...n ? [n] : []];
142
+ },
143
+ parent: s,
144
+ eventBoundary: e ? () => i.root : void 0,
145
+ restoreTarget: l,
146
+ focusAdmission: i.focusAdmission,
147
+ dismissOnEscape: T,
148
+ dismissOnOutsidePointer: T,
149
+ blocksParentFocusTrap: !e,
150
+ ...e ? {} : { trapFocus: (e) => n(e, k, !0) },
151
+ requestDismiss: () => S.requestClose(),
152
+ onRetire: Z
153
+ }), !Q(i)) {
154
+ i.registration.unregister({
155
+ restoreFocus: !1,
156
+ retireDescendants: !0
157
+ }), i.focusAdmission?.cancel(), i.releaseNativeListeners?.(), i.releaseNativeListeners = null;
158
+ return;
159
+ }
160
+ if (F.value = i.registration, M.value = !e, z.value = { zIndex: r(i.registration.zIndex, "backdrop") }, B.value = { zIndex: r(i.registration.zIndex, "surface") }, V.value = e ? {} : { "--s-layer-root-toast": r(i.registration.zIndex, "toast") }, await p(), !Q(i) || k.value !== o || !o.isConnected || !i.registration.isTopmost()) {
161
+ i.focusAdmission?.cancel();
162
+ return;
163
+ }
164
+ i.registration.claimFocus(o) && Q(i) && S.opened?.();
165
+ } catch (t) {
166
+ try {
167
+ H === i ? (U = !0, Y(!1)) : i.focusAdmission?.cancel();
168
+ } catch (n) {
169
+ throw e([t, n], "useDialogOverlay: focus admission and resource retirement failed");
170
+ }
171
+ throw t;
172
+ }
173
+ }
174
+ }, re = () => {
175
+ let e;
176
+ try {
177
+ let t = C(), n = w();
178
+ if (T(), t !== K && n) throw TypeError("useDialogOverlay: scope can change only while open=false");
179
+ t === "contained" && E(), S.validate?.(), e = {
180
+ valid: !0,
181
+ open: n,
182
+ scope: t,
183
+ host: R.value && t === "contained" ? q() : null,
184
+ parent: P?.registration.value ?? null,
185
+ admitted: O.value
186
+ };
187
+ } catch (t) {
188
+ e = {
189
+ valid: !1,
190
+ error: t
191
+ };
192
+ }
193
+ return e;
194
+ }, ie = (t) => {
195
+ if (!t.valid) {
196
+ U = !0;
197
+ try {
198
+ Y(!1);
199
+ } catch (n) {
200
+ throw e([t.error, n], "useDialogOverlay: validation and resource retirement failed");
201
+ }
202
+ throw t.error;
203
+ }
204
+ let { open: n, scope: r, host: a, admitted: o } = t;
205
+ if (r !== K) {
206
+ if (n) throw TypeError("useDialogOverlay: scope can change only while open=false");
207
+ K = r, r === "contained" && E();
208
+ }
209
+ if (!n) {
210
+ U = !1, G = !1, Y(o);
9
211
  return;
10
212
  }
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({
16
- 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?.();
213
+ if (!o) {
214
+ Z(!1);
38
215
  return;
39
216
  }
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
217
+ if (!R.value || W || U) return;
218
+ if (H) {
219
+ (r === "contained" && (a === null || H.root !== a.root.value || H.content !== a.content.value || H.portal !== a.portal.value) || H.registration && P && !t.parent) && Z();
220
+ return;
221
+ }
222
+ if (r === "contained" && !a) return;
223
+ let s = i({ releaseBoundary: a?.content.value ?? null }), c = s?.restoreTarget ?? null;
224
+ H = {
225
+ scope: r,
226
+ root: a?.root.value ?? null,
227
+ content: a?.content.value ?? null,
228
+ portal: a?.portal.value ?? null,
229
+ restoreTarget: c,
230
+ focusAdmission: s,
231
+ releaseHost: null,
232
+ registration: null,
233
+ releaseNativeListeners: null,
234
+ focusing: !1
235
+ }, L.value = !0;
236
+ }, ae = (e) => {
237
+ if (e !== null && !(e instanceof HTMLElement)) throw TypeError("Dialog overlay panel ref обязан указывать на HTMLElement");
238
+ k.value = e;
239
+ }, oe = (e) => {
240
+ if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: native portal ref must resolve to HTMLElement or null");
241
+ A.value = e;
242
+ }, se = (e) => {
243
+ if (e !== null && !(e instanceof HTMLElement)) throw TypeError("useDialogOverlay: visual dismissal ref must resolve to HTMLElement or null");
244
+ j.value = e;
245
+ };
246
+ b(re, ie, {
247
+ flush: "sync",
248
+ immediate: !0
249
+ }), b(k, () => {
250
+ H?.registration?.refreshModality();
251
+ }, { flush: "sync" }), b(A, () => H?.registration?.refreshModality(), { flush: "sync" }), b([
252
+ R,
253
+ k,
254
+ A,
255
+ L,
256
+ () => P?.registration.value
257
+ ], ne, { flush: "post" }), h(() => {
258
+ R.value = !0;
259
+ });
260
+ let $ = (e) => {
261
+ if (W) return;
262
+ W = !0;
263
+ let t = K === "contained" && w();
264
+ X(e, t);
265
+ };
266
+ return m(() => $(O.value)), {
267
+ panelRef: k,
268
+ portalRef: A,
269
+ dismissalRef: j,
270
+ nativeAdmitted: _(M),
271
+ renderOpen: _(L),
272
+ layerIndex: I,
273
+ setPanelElement: ae,
274
+ setPortalElement: oe,
275
+ setDismissalElement: se,
276
+ backdropStyle: z,
277
+ surfaceStyle: B,
278
+ portalStyle: V,
279
+ dispose: () => $(!1)
49
280
  };
50
281
  }
51
282
  //#endregion
52
- export { o as useDialogOverlay };
283
+ export { S 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.