@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,33 +1,77 @@
1
- import { computed as e, createElementBlock as t, defineComponent as n, normalizeClass as r, normalizeStyle as i, openBlock as a, ref as o, renderSlot as s } from "vue";
1
+ import { useOverlayAdmission as e } from "../../../internal/overlayHost.js";
2
+ import { menuViewportKey as t } from "./menuContext.js";
3
+ import { computed as n, createElementBlock as r, defineComponent as i, nextTick as a, normalizeClass as o, normalizeStyle as s, openBlock as c, provide as l, ref as u, renderSlot as d, unref as f, watch as p } from "vue";
2
4
  //#region src/components/shared/_internal/SMenuLayer.vue?vue&type=script&setup=true&lang.ts
3
- var c = ["data-kind", "aria-label"], l = /*@__PURE__*/ n({
5
+ var m = [
6
+ "hidden",
7
+ "^inert",
8
+ "data-kind",
9
+ "aria-label"
10
+ ], h = /*@__PURE__*/ i({
4
11
  __name: "SMenuLayer",
5
12
  props: {
6
13
  kind: {},
7
14
  landmarkLabel: {},
8
15
  position: {},
9
- zIndex: {}
16
+ zIndex: {},
17
+ availableSize: {}
10
18
  },
11
- setup(n, { expose: l }) {
12
- let u = n, d = o(null), f = e(() => ({
13
- left: `${u.position.left}px`,
14
- top: `${u.position.top}px`,
15
- zIndex: u.zIndex
19
+ setup(i, { expose: h }) {
20
+ let g = i, _ = u(null), v = e(), y = u(!v.value);
21
+ p(v, (e) => {
22
+ if (e) return;
23
+ y.value = !0;
24
+ let t = _.value;
25
+ if (!t) return;
26
+ t.hidden = !0, t.setAttribute("inert", "");
27
+ let n = t.ownerDocument.activeElement;
28
+ n instanceof HTMLElement && t.contains(n) && n.blur();
29
+ }, { flush: "sync" });
30
+ let b = null;
31
+ l(t, { register(e) {
32
+ if (b !== null) throw Error("SMenuLayer: exactly one native menu sizing surface is allowed");
33
+ if (!e.surface.contains(e.content)) throw Error("SMenuLayer: native sizing content must belong to its surface");
34
+ return b = e, () => {
35
+ b === e && (b = null);
36
+ };
37
+ } });
38
+ let x = n(() => ({
39
+ left: `${g.position.left}px`,
40
+ top: `${g.position.top}px`,
41
+ zIndex: g.zIndex,
42
+ ...g.availableSize ? {
43
+ "--s-menu-viewport-available-inline-size": `${g.availableSize.width}px`,
44
+ "--s-menu-viewport-available-block-size": `${g.availableSize.height}px`
45
+ } : {}
16
46
  }));
17
- return l({ getElement: () => {
18
- let e = d.value;
19
- if (!e) throw Error("SMenuLayer: layer element is unavailable");
20
- return e;
21
- } }), (e, o) => (a(), t("div", {
47
+ return p(() => [g.availableSize?.width, g.availableSize?.height], async ([e, t], n) => {
48
+ if (e === n[0] && t === n[1]) return;
49
+ let r = b;
50
+ await a(), r && b === r && _.value?.isConnected && r.surface.isConnected && _.value.contains(r.surface) && r.revealFocusedItem();
51
+ }), h({
52
+ getElement: () => {
53
+ let e = _.value;
54
+ if (!e) throw Error("SMenuLayer: layer element is unavailable");
55
+ return e;
56
+ },
57
+ getSizingElements: () => {
58
+ let e = _.value;
59
+ if (!e || !b) return null;
60
+ if (!e.contains(b.surface)) throw Error("SMenuLayer: native sizing surface must belong to the current layer");
61
+ return b;
62
+ }
63
+ }), (e, t) => (c(), r("div", {
22
64
  ref_key: "layerRef",
23
- ref: d,
24
- class: r(["s-menu-layer", [`s-menu-layer--${n.kind}`, n.kind === "context" ? "s-context-menu" : n.kind === "dropdown" ? "s-dropdown-menu-items" : "s-submenu-items"]]),
25
- "data-kind": n.kind,
65
+ ref: _,
66
+ hidden: y.value || !f(v),
67
+ "^inert": y.value || !f(v) ? !0 : void 0,
68
+ class: o(["s-menu-layer", [`s-menu-layer--${i.kind}`, i.kind === "context" ? "s-context-menu" : i.kind === "dropdown" ? "s-dropdown-menu-items" : "s-submenu-items"]]),
69
+ "data-kind": i.kind,
26
70
  role: "region",
27
- "aria-label": n.landmarkLabel,
28
- style: i(f.value)
29
- }, [s(e.$slots, "default", {}, void 0, !0)], 14, c));
71
+ "aria-label": i.landmarkLabel,
72
+ style: s(x.value)
73
+ }, [d(e.$slots, "default", {}, void 0, !0)], 14, m));
30
74
  }
31
75
  });
32
76
  //#endregion
33
- export { l as default };
77
+ export { h as default };
@@ -1,6 +1,8 @@
1
1
  export type DialogSurfaceModalSize = 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | 'wide' | 'full';
2
2
  export type DialogSurfaceDrawerSize = 'sm' | 'md' | 'lg';
3
- export type DialogSurfaceDrawerPlacement = 'right' | 'bottom';
3
+ export type DialogSurfaceDrawerPlacement = 'left' | 'right' | 'bottom';
4
+ export type DialogSurfaceDrawerScope = 'viewport' | 'contained';
5
+ export type DialogSurfaceDrawerScrollBehavior = 'body' | 'content';
4
6
  export type DialogSurfaceTone = 'default' | 'subtle';
5
7
  export type DialogSurfaceScrollBehavior = 'page' | 'body';
6
8
  export type DialogSurfaceHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
@@ -13,12 +15,22 @@ export interface ModalDialogSurfacePresentation {
13
15
  surface: DialogSurfaceTone;
14
16
  scrollBehavior: DialogSurfaceScrollBehavior;
15
17
  }
16
- export interface DrawerDialogSurfacePresentation {
18
+ interface DrawerDialogSurfaceBase {
17
19
  kind: 'drawer';
18
20
  size: DialogSurfaceDrawerSize;
19
21
  placement: DialogSurfaceDrawerPlacement;
20
22
  mobileFullScreen: boolean;
23
+ scrollBehavior: DialogSurfaceDrawerScrollBehavior;
21
24
  }
25
+ export type DrawerDialogSurfacePresentation = DrawerDialogSurfaceBase & ({
26
+ scope: 'viewport';
27
+ extent?: never;
28
+ } | {
29
+ scope: 'contained';
30
+ extent: number;
31
+ });
32
+ /** Validates an exact finite percentage in (0,100], with no unit coercion. */
33
+ export declare function validateDrawerExtent(owner: string, value: unknown): number;
22
34
  export type DialogSurfacePresentation = ModalDialogSurfacePresentation | DrawerDialogSurfacePresentation;
23
35
  export type DialogSurfaceContractErrorCode = 'invalid-presentation' | 'invalid-size' | 'invalid-surface' | 'invalid-scroll-behavior';
24
36
  export declare class DialogSurfaceContractError extends Error {
@@ -30,3 +42,4 @@ export declare class DialogSurfaceContractError extends Error {
30
42
  * Validates the private dialog surface discriminated contract without fallback branches.
31
43
  */
32
44
  export declare function assertDialogSurfacePresentation(presentation: DialogSurfacePresentation): asserts presentation is DialogSurfacePresentation;
45
+ export {};
@@ -1,24 +1,32 @@
1
+ import { hasOwn as e } from "../../../internal/es2020.js";
1
2
  //#region src/components/shared/_internal/dialogSurface.ts
2
- function e(e, t) {
3
+ function t(e, t) {
3
4
  if (t === 1 || t === 2 || t === 3 || t === 4 || t === 5 || t === 6) return t;
4
5
  throw TypeError(`${e}: headingLevel должен быть целым числом от 1 до 6; получено ${String(t)}. / ${e}: headingLevel must be an integer from 1 to 6; received ${String(t)}.`);
5
6
  }
6
- var t = class extends Error {
7
+ function n(e, t) {
8
+ if (typeof t == "number" && Number.isFinite(t) && t > 0 && t <= 100) return t;
9
+ throw TypeError(`${e}: extent must be a finite percentage in (0,100]; received ${String(t)}`);
10
+ }
11
+ var r = class extends Error {
7
12
  constructor(e, t) {
8
13
  super(t), this.name = "DialogSurfaceContractError", this.code = e;
9
14
  }
10
- }, n = /* @__PURE__ */ new Set([
15
+ }, i = /* @__PURE__ */ new Set([
11
16
  "kind",
12
17
  "size",
13
18
  "fullscreen",
14
19
  "surface",
15
20
  "scrollBehavior"
16
- ]), r = /* @__PURE__ */ new Set([
21
+ ]), a = /* @__PURE__ */ new Set([
17
22
  "kind",
18
23
  "size",
19
24
  "placement",
20
- "mobileFullScreen"
21
- ]), i = /* @__PURE__ */ new Set([
25
+ "mobileFullScreen",
26
+ "scope",
27
+ "extent",
28
+ "scrollBehavior"
29
+ ]), o = /* @__PURE__ */ new Set([
22
30
  "sm",
23
31
  "md",
24
32
  "lg",
@@ -28,30 +36,38 @@ var t = class extends Error {
28
36
  "4xl",
29
37
  "wide",
30
38
  "full"
31
- ]), a = /* @__PURE__ */ new Set([
39
+ ]), s = /* @__PURE__ */ new Set([
32
40
  "sm",
33
41
  "md",
34
42
  "lg"
35
- ]), o = /* @__PURE__ */ new Set(["right", "bottom"]), s = /* @__PURE__ */ new Set(["default", "subtle"]), c = /* @__PURE__ */ new Set(["page", "body"]), l = (e, n, r) => {
36
- let i = Object.keys(e).find((e) => !r.has(e));
37
- if (i) throw new t("invalid-presentation", `SDialogSurface presentation kind="${n}" содержит недопустимое поле ${i}`);
43
+ ]), c = /* @__PURE__ */ new Set([
44
+ "left",
45
+ "right",
46
+ "bottom"
47
+ ]), l = /* @__PURE__ */ new Set(["default", "subtle"]), u = /* @__PURE__ */ new Set(["page", "body"]), d = (e, t, n) => {
48
+ let i = Object.keys(e).find((e) => !n.has(e));
49
+ if (i) throw new r("invalid-presentation", `SDialogSurface presentation kind="${t}" содержит недопустимое поле ${i}`);
38
50
  };
39
- function u(e) {
40
- let u = e;
41
- if (u.kind === "modal") {
42
- if (l(u, "modal", n), !i.has(u.size)) throw new t("invalid-size", `Недопустимый размер SModal: ${String(u.size)}`);
43
- if (typeof u.fullscreen != "boolean") throw new t("invalid-presentation", "SModal presentation требует boolean fullscreen");
44
- if (!s.has(u.surface)) throw new t("invalid-surface", `Недопустимая поверхность SModal: ${String(u.surface)}`);
45
- if (!c.has(u.scrollBehavior)) throw new t("invalid-scroll-behavior", `Недопустимый scroll behavior SModal: ${String(u.scrollBehavior)}`);
51
+ function f(t) {
52
+ let f = t;
53
+ if (f.kind === "modal") {
54
+ if (d(f, "modal", i), !o.has(f.size)) throw new r("invalid-size", `Недопустимый размер SModal: ${String(f.size)}`);
55
+ if (typeof f.fullscreen != "boolean") throw new r("invalid-presentation", "SModal presentation требует boolean fullscreen");
56
+ if (!l.has(f.surface)) throw new r("invalid-surface", `Недопустимая поверхность SModal: ${String(f.surface)}`);
57
+ if (!u.has(f.scrollBehavior)) throw new r("invalid-scroll-behavior", `Недопустимый scroll behavior SModal: ${String(f.scrollBehavior)}`);
46
58
  return;
47
59
  }
48
- if (u.kind === "drawer") {
49
- if (l(u, "drawer", r), !a.has(u.size)) throw new t("invalid-size", `Недопустимый размер SDrawer: ${String(u.size)}`);
50
- if (!o.has(u.placement)) throw new t("invalid-presentation", `Недопустимое размещение SDrawer: ${String(u.placement)}`);
51
- if (typeof u.mobileFullScreen != "boolean") throw new t("invalid-presentation", "SDrawer presentation требует boolean mobileFullScreen");
60
+ if (f.kind === "drawer") {
61
+ if (d(f, "drawer", a), !s.has(f.size)) throw new r("invalid-size", `Недопустимый размер SDrawer: ${String(f.size)}`);
62
+ if (!c.has(f.placement)) throw new r("invalid-presentation", `Недопустимое размещение SDrawer: ${String(f.placement)}`);
63
+ if (typeof f.mobileFullScreen != "boolean") throw new r("invalid-presentation", "SDrawer presentation требует boolean mobileFullScreen");
64
+ if (f.scope !== "viewport" && f.scope !== "contained") throw new r("invalid-presentation", "SDrawer presentation requires viewport or contained scope");
65
+ if (f.scrollBehavior !== "body" && f.scrollBehavior !== "content") throw new r("invalid-scroll-behavior", "SDrawer presentation requires body or content scrollBehavior");
66
+ if (f.scope === "contained") n("SDialogSurface", f.extent);
67
+ else if (e(f, "extent")) throw new r("invalid-presentation", "SDrawer extent requires contained scope");
52
68
  return;
53
69
  }
54
- throw new t("invalid-presentation", `Неизвестный kind SDialogSurface: ${String(u.kind)}`);
70
+ throw new r("invalid-presentation", `Неизвестный kind SDialogSurface: ${String(f.kind)}`);
55
71
  }
56
72
  //#endregion
57
- export { t as DialogSurfaceContractError, u as assertDialogSurfacePresentation, e as validateDialogSurfaceHeadingLevel };
73
+ export { r as DialogSurfaceContractError, f as assertDialogSurfacePresentation, t as validateDialogSurfaceHeadingLevel, n as validateDrawerExtent };
@@ -9,5 +9,6 @@ export interface ListboxOptionRegistration {
9
9
  }
10
10
  export interface ListboxContext {
11
11
  register: (registration: ListboxOptionRegistration) => () => void;
12
+ registerGeometry?: (token: string, element: HTMLElement) => () => void;
12
13
  }
13
14
  export declare const listboxContextKey: InjectionKey<ListboxContext>;
@@ -0,0 +1,51 @@
1
+ import { ResolvedSelectionInventory, ResolvedSelectionOption } from './selectionContract';
2
+ import { SelectionKey } from './useSelectionRoving';
3
+ export declare const CLEAR_OPTION_TOKEN = "clear-option";
4
+ export interface ListboxCatalogOption<TKey extends SelectionKey> extends ResolvedSelectionOption<TKey> {
5
+ position: number;
6
+ rowIndex: number;
7
+ }
8
+ export type ListboxCatalogEntry<TKey extends SelectionKey> = {
9
+ kind: 'option';
10
+ token: string;
11
+ record: ListboxCatalogOption<TKey>;
12
+ } | {
13
+ kind: 'group';
14
+ token: string;
15
+ label: string;
16
+ headerIndex: number;
17
+ endIndex: number;
18
+ records: readonly ListboxCatalogOption<TKey>[];
19
+ };
20
+ export interface ListboxNavigationOption<TKey extends SelectionKey> {
21
+ token: string;
22
+ value: TKey | null;
23
+ label: string;
24
+ disabled: boolean;
25
+ position: number;
26
+ rowIndex: number;
27
+ }
28
+ export type ListboxVirtualRow<TKey extends SelectionKey> = {
29
+ kind: 'clear';
30
+ key: string;
31
+ } | {
32
+ kind: 'header';
33
+ key: string;
34
+ entryToken: string;
35
+ } | {
36
+ kind: 'option';
37
+ key: string;
38
+ entryToken: string;
39
+ record: ListboxCatalogOption<TKey>;
40
+ };
41
+ /** Complete semantic inventory, independent of mounted viewport rows. */
42
+ export declare function createListboxInventory<TKey extends SelectionKey>(inventory: ResolvedSelectionInventory<TKey>, clearLabel: string | undefined, disabled: boolean): {
43
+ rows: ListboxVirtualRow<TKey>[];
44
+ entries: ListboxCatalogEntry<TKey>[];
45
+ entriesByToken: Map<string, ListboxCatalogEntry<TKey>>;
46
+ navigation: ListboxNavigationOption<TKey>[];
47
+ navigationByToken: Map<string, ListboxNavigationOption<TKey>>;
48
+ setSize: number;
49
+ };
50
+ /** A bounded DOM projection; a mounted group always includes at least one option and its accessible label. */
51
+ export declare function projectListboxEntries<TKey extends SelectionKey>(catalog: ReturnType<typeof createListboxInventory<TKey>>, rows: readonly ListboxVirtualRow<TKey>[]): ListboxCatalogEntry<TKey>[];
@@ -0,0 +1,85 @@
1
+ //#region src/components/shared/_internal/listboxInventory.ts
2
+ var e = "clear-option";
3
+ function t(t, n, r) {
4
+ let i = [], a = [], o = [];
5
+ n !== void 0 && (i.push({
6
+ kind: "clear",
7
+ key: e
8
+ }), o.push({
9
+ token: e,
10
+ value: null,
11
+ label: n,
12
+ disabled: r,
13
+ position: 1,
14
+ rowIndex: 0
15
+ }));
16
+ function s(e, t) {
17
+ let n = {
18
+ ...e,
19
+ position: o.length + 1,
20
+ rowIndex: i.length
21
+ };
22
+ return o.push({
23
+ token: e.token,
24
+ value: e.option.value,
25
+ label: e.option.label,
26
+ disabled: r || e.option.disabled === !0,
27
+ position: n.position,
28
+ rowIndex: n.rowIndex
29
+ }), i.push({
30
+ kind: "option",
31
+ key: e.token,
32
+ entryToken: t,
33
+ record: n
34
+ }), n;
35
+ }
36
+ for (let e of t.entries) if (e.kind === "option") a.push({
37
+ kind: "option",
38
+ token: e.token,
39
+ record: s(e.record, e.token)
40
+ });
41
+ else {
42
+ let t = i.length;
43
+ i.push({
44
+ kind: "header",
45
+ key: `header:${e.token}`,
46
+ entryToken: e.token
47
+ });
48
+ let n = e.records.map((t) => s(t, e.token));
49
+ a.push({
50
+ kind: "group",
51
+ token: e.token,
52
+ label: e.label,
53
+ headerIndex: t,
54
+ endIndex: i.length,
55
+ records: n
56
+ });
57
+ }
58
+ return {
59
+ rows: i,
60
+ entries: a,
61
+ entriesByToken: new Map(a.map((e) => [e.token, e])),
62
+ navigation: o,
63
+ navigationByToken: new Map(o.map((e) => [e.token, e])),
64
+ setSize: o.length
65
+ };
66
+ }
67
+ function n(e, t) {
68
+ let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
69
+ for (let i of t) {
70
+ if (i.kind === "clear") continue;
71
+ let t = e.entriesByToken.get(i.entryToken);
72
+ if (!t) throw Error("SListbox: virtual row refers to a stale entry");
73
+ if (t.kind === "option") n.set(t.token, t);
74
+ else {
75
+ let e = r.get(t.token);
76
+ e || (e = /* @__PURE__ */ new Map(), r.set(t.token, e)), i.kind === "option" ? e.set(i.record.token, i.record) : e.size === 0 && e.set(t.records[0].token, t.records[0]), n.set(t.token, t);
77
+ }
78
+ }
79
+ return [...n.values()].map((e) => e.kind === "option" ? e : {
80
+ ...e,
81
+ records: [...r.get(e.token).values()].sort((e, t) => e.rowIndex - t.rowIndex)
82
+ }).sort((e, t) => (e.kind === "option" ? e.record.rowIndex : e.headerIndex) - (t.kind === "option" ? t.record.rowIndex : t.headerIndex));
83
+ }
84
+ //#endregion
85
+ export { e as CLEAR_OPTION_TOKEN, t as createListboxInventory, n as projectListboxEntries };
@@ -1,4 +1,5 @@
1
1
  import { InjectionKey, Ref } from 'vue';
2
+ import { FloatingSizingElements } from '../../../composables/useFloatingPosition';
2
3
  export type MenuDensity = 'compact' | 'comfortable';
3
4
  export interface MenuItemRegistration {
4
5
  readonly entryId: string;
@@ -15,5 +16,12 @@ export interface MenuContext {
15
16
  density: Readonly<Ref<MenuDensity>>;
16
17
  register: (registration: MenuItemRegistration) => () => void;
17
18
  }
19
+ export interface MenuViewportRegistration extends FloatingSizingElements {
20
+ revealFocusedItem: () => void;
21
+ }
22
+ export interface MenuViewportContext {
23
+ register: (elements: MenuViewportRegistration) => () => void;
24
+ }
18
25
  export declare const menuContextKey: InjectionKey<MenuContext>;
19
26
  export declare const menuDepthKey: InjectionKey<number>;
27
+ export declare const menuViewportKey: InjectionKey<MenuViewportContext>;
@@ -1,4 +1,4 @@
1
1
  //#region src/components/shared/_internal/menuContext.ts
2
- var e = Symbol("s-menu-context"), t = Symbol("s-menu-depth");
2
+ var e = Symbol("s-menu-context"), t = Symbol("s-menu-depth"), n = Symbol("s-menu-viewport");
3
3
  //#endregion
4
- export { e as menuContextKey, t as menuDepthKey };
4
+ export { e as menuContextKey, t as menuDepthKey, n as menuViewportKey };
@@ -23,5 +23,6 @@ export interface SidebarGroupContext {
23
23
  beginResize(topKey: string, bottomKey: string): void;
24
24
  resizeSections(topKey: string, bottomKey: string, requestedTopSize: number): void;
25
25
  finishResize(topKey: string, bottomKey: string): void;
26
+ cancelResize(topKey: string, bottomKey: string): void;
26
27
  }
27
28
  export declare const sidebarGroupContextKey: InjectionKey<SidebarGroupContext>;
@@ -0,0 +1,45 @@
1
+ import { Ref, VNodeRef } from 'vue';
2
+ type Key = string | number;
3
+ type Alignment = 'auto' | 'start' | 'center' | 'end';
4
+ interface VirtualCollectionInputs<Item> {
5
+ owner: string;
6
+ items: () => readonly Item[];
7
+ itemKey: (item: Item) => Key;
8
+ estimatedSize: () => number;
9
+ overscan: () => number;
10
+ scrollOffset: Readonly<Ref<number>>;
11
+ viewportSize: Readonly<Ref<number>>;
12
+ leadingSize?: () => number;
13
+ pinnedKeys?: () => readonly Key[];
14
+ observer: () => ResizeObserver | null;
15
+ }
16
+ /** Shared measured keyed geometry; each semantic owner retains its own focus and scroll lifecycle. */
17
+ export declare function useVirtualCollection<Item>(inputs: VirtualCollectionInputs<Item>): {
18
+ measurements: Ref<Map<Key, number> & Omit<Map<Key, number>, keyof Map<any, any>>, Map<Key, number> | (Map<Key, number> & Omit<Map<Key, number>, keyof Map<any, any>>)>;
19
+ itemKeys: import('vue').ComputedRef<(string | number)[]>;
20
+ itemKeyIndexes: import('vue').ComputedRef<Map<string | number, number>>;
21
+ itemSizes: import('vue').ComputedRef<number[]>;
22
+ offsets: import('vue').ComputedRef<number[]>;
23
+ totalHeight: import('vue').ComputedRef<number>;
24
+ firstVisibleIndex: import('vue').ComputedRef<number>;
25
+ lastVisibleIndex: import('vue').ComputedRef<number>;
26
+ startIndex: import('vue').ComputedRef<number>;
27
+ endIndex: import('vue').ComputedRef<number>;
28
+ visibleEntries: import('vue').ComputedRef<{
29
+ item: NonNullable<Item>;
30
+ index: number;
31
+ key: string | number;
32
+ }[]>;
33
+ indexAtOffset: (offset: number) => number;
34
+ renderedItemsByKey: Map<Key, HTMLElement>;
35
+ renderedItemKeysByElement: Map<HTMLElement, Key>;
36
+ renderedItemRefs: Map<Key, VNodeRef>;
37
+ registerRenderedItem: (key: Key, element: HTMLElement) => void;
38
+ unregisterRenderedItem: (key: Key) => void;
39
+ renderedItemRef: (key: Key) => VNodeRef;
40
+ measureItems: (entries: readonly ResizeObserverEntry[]) => boolean;
41
+ offsetForIndex: (index: number, alignment?: Alignment) => number | null;
42
+ prune: (keys: readonly Key[]) => void;
43
+ clear: () => void;
44
+ };
45
+ export {};
@@ -0,0 +1,123 @@
1
+ import { computed as e, ref as t } from "vue";
2
+ //#region src/components/shared/_internal/useVirtualCollection.ts
3
+ function n(n) {
4
+ let r = t(/* @__PURE__ */ new Map()), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), s = e(() => {
5
+ let e = /* @__PURE__ */ new Set();
6
+ return n.items().map((t, r) => {
7
+ let i = n.itemKey(t);
8
+ if (typeof i == "string" && i.trim().length === 0) throw TypeError(`${n.owner} itemKey returned an empty string for item at index ${r}`);
9
+ if (typeof i == "number" && !Number.isFinite(i)) throw TypeError(`${n.owner} itemKey returned a non-finite number for item at index ${r}`);
10
+ if (typeof i != "string" && typeof i != "number") throw TypeError(`${n.owner} itemKey returned unsupported ${typeof i} key for item at index ${r}`);
11
+ if (e.has(i)) throw TypeError(`${n.owner} itemKey returned duplicate key ${v(i)} at index ${r}`);
12
+ return e.add(i), i;
13
+ });
14
+ }), c = e(() => new Map(s.value.map((e, t) => [e, t]))), l = e(() => s.value.map((e) => r.value.get(e) ?? n.estimatedSize())), u = e(() => {
15
+ let e = [0];
16
+ for (let t of l.value) e.push(e[e.length - 1] + t);
17
+ return e;
18
+ }), d = e(() => u.value[s.value.length]);
19
+ function f(e) {
20
+ let t = 0, n = s.value.length;
21
+ for (; t < n;) {
22
+ let r = Math.floor((t + n) / 2);
23
+ u.value[r + 1] <= e ? t = r + 1 : n = r;
24
+ }
25
+ return Math.min(t, Math.max(s.value.length - 1, 0));
26
+ }
27
+ let p = e(() => s.value.length === 0 ? 0 : f(Math.max(0, n.scrollOffset.value - (n.leadingSize?.() ?? 0)))), m = e(() => s.value.length === 0 ? -1 : f(Math.max(0, n.scrollOffset.value + n.viewportSize.value - (n.leadingSize?.() ?? 0)))), h = e(() => Math.max(0, p.value - n.overscan())), g = e(() => Math.min(s.value.length, m.value + n.overscan() + 1)), _ = e(() => {
28
+ let e = /* @__PURE__ */ new Set();
29
+ for (let t = h.value; t < g.value; t += 1) e.add(t);
30
+ for (let t of n.pinnedKeys?.() ?? []) {
31
+ let n = c.value.get(t);
32
+ n !== void 0 && e.add(n);
33
+ }
34
+ let t = n.items();
35
+ return [...e].sort((e, t) => e - t).map((e) => ({
36
+ item: t[e],
37
+ index: e,
38
+ key: s.value[e]
39
+ }));
40
+ });
41
+ function v(e) {
42
+ return `${typeof e}:${JSON.stringify(e)}`;
43
+ }
44
+ function y(e) {
45
+ let t = i.get(e);
46
+ if (!t) return;
47
+ let r = a.get(t);
48
+ if (r !== e) throw Error(`${n.owner} rendered item registry mismatch for key ${v(e)}: element belongs to ${r === void 0 ? "no key" : v(r)}`);
49
+ n.observer()?.unobserve(t), i.delete(e), a.delete(t);
50
+ }
51
+ function b(e, t) {
52
+ let r = c.value.get(e);
53
+ if (r === void 0) throw Error(`${n.owner} received a rendered item ref for stale key ${v(e)}`);
54
+ let o = i.get(e);
55
+ if (o && o !== t) throw Error(`${n.owner} rendered item key collision for ${v(e)} at index ${r}`);
56
+ let s = a.get(t);
57
+ if (s !== void 0 && s !== e) throw Error(`${n.owner} rendered item element collision between ${v(s)} and ${v(e)}`);
58
+ o !== t && (i.set(e, t), a.set(t, e), n.observer()?.observe(t));
59
+ }
60
+ function x(e) {
61
+ let t = o.get(e);
62
+ if (t) return t;
63
+ let r = (t) => {
64
+ if (t === null) y(e);
65
+ else if (t instanceof HTMLElement) b(e, t);
66
+ else throw TypeError(`${n.owner} rendered item ref for ${v(e)} must resolve to an HTMLElement`);
67
+ };
68
+ return o.set(e, r), r;
69
+ }
70
+ function S(e) {
71
+ let t = new Map(r.value), o = !1;
72
+ for (let r of e) {
73
+ if (!(r.target instanceof HTMLElement)) throw TypeError(`${n.owner} received a ResizeObserver entry for a non-HTMLElement target`);
74
+ let e = a.get(r.target);
75
+ if (e === void 0 || i.get(e) !== r.target) throw Error(`${n.owner} received a ResizeObserver entry for an unregistered rendered item`);
76
+ if (!c.value.has(e)) throw Error(`${n.owner} received a ResizeObserver entry for stale key ${v(e)}`);
77
+ let s = r.borderBoxSize[0]?.blockSize ?? r.contentRect.height;
78
+ !Number.isFinite(s) || s <= 0 || t.get(e) === s || (t.set(e, s), o = !0);
79
+ }
80
+ return o && (r.value = t), o;
81
+ }
82
+ function C(e, t = "auto") {
83
+ if (!Number.isInteger(e) || e < 0 || e >= s.value.length) throw RangeError(`${n.owner} index ${e} is outside 0..${Math.max(s.value.length - 1, 0)}`);
84
+ let r = n.leadingSize?.() ?? 0, i = r + u.value[e], a = r + u.value[e + 1], o = n.scrollOffset.value, c = o + n.viewportSize.value;
85
+ return t === "auto" && i >= o && a <= c ? null : t === "end" || t === "auto" && a > c ? a - n.viewportSize.value : t === "center" ? i - (n.viewportSize.value - (a - i)) / 2 : i;
86
+ }
87
+ function w(e) {
88
+ let t = new Set(e);
89
+ r.value = new Map([...r.value].filter(([e]) => t.has(e)));
90
+ for (let e of i.keys()) t.has(e) || y(e);
91
+ for (let e of o.keys()) t.has(e) || o.delete(e);
92
+ }
93
+ function T() {
94
+ for (let e of i.keys()) y(e);
95
+ o.clear(), r.value = /* @__PURE__ */ new Map();
96
+ }
97
+ return {
98
+ measurements: r,
99
+ itemKeys: s,
100
+ itemKeyIndexes: c,
101
+ itemSizes: l,
102
+ offsets: u,
103
+ totalHeight: d,
104
+ firstVisibleIndex: p,
105
+ lastVisibleIndex: m,
106
+ startIndex: h,
107
+ endIndex: g,
108
+ visibleEntries: _,
109
+ indexAtOffset: f,
110
+ renderedItemsByKey: i,
111
+ renderedItemKeysByElement: a,
112
+ renderedItemRefs: o,
113
+ registerRenderedItem: b,
114
+ unregisterRenderedItem: y,
115
+ renderedItemRef: x,
116
+ measureItems: S,
117
+ offsetForIndex: C,
118
+ prune: w,
119
+ clear: T
120
+ };
121
+ }
122
+ //#endregion
123
+ export { n as useVirtualCollection };
@@ -1,6 +1,6 @@
1
- import { useUiKitLocale as e } from "../../../composables/useUiKitLocale.js";
2
- import { useOwnedAttrs as t } from "../../../internal/ownedAttrs.js";
3
- import { validateBoundedInteger as n, validateNonEmptyString as r } from "../../../internal/runtimeContract.js";
1
+ import { validateBoundedInteger as e, validateNonEmptyString as t } from "../../../internal/runtimeContract.js";
2
+ import { useUiKitLocale as n } from "../../../composables/useUiKitLocale.js";
3
+ import { useOwnedAttrs as r } from "../../../internal/ownedAttrs.js";
4
4
  import i from "../data-display/SEmptyState.vue.js";
5
5
  import a from "../../layout/SStack.vue.js";
6
6
  import o from "../containers/SCollapsiblePanel.vue.js";
@@ -25,10 +25,10 @@ var h = /*@__PURE__*/ l({
25
25
  },
26
26
  emits: ["update:open"],
27
27
  setup(l) {
28
- let h = l, { t: g } = e(), _ = s(() => r("SKanbanLane", "title", h.title)), v = s(() => n("SKanbanLane", "count", h.count, {
28
+ let h = l, { t: g } = n(), _ = s(() => t("SKanbanLane", "title", h.title)), v = s(() => e("SKanbanLane", "count", h.count, {
29
29
  minimum: 0,
30
30
  maximum: 2 ** 53 - 1
31
- })), y = s(() => r("SKanbanLane", "emptyText", h.emptyText ?? g("kanban.empty"))), b = t({
31
+ })), y = s(() => t("SKanbanLane", "emptyText", h.emptyText ?? g("kanban.empty"))), b = r({
32
32
  component: "SKanbanLane",
33
33
  owner: "collapsible lane composition"
34
34
  });
@@ -24,8 +24,8 @@ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, i
24
24
  emptyText: string;
25
25
  empty: boolean;
26
26
  title: string;
27
- density: SCloudChromeDensity;
28
27
  description: string;
28
+ density: SCloudChromeDensity;
29
29
  surface: "cloud" | "flat" | "embedded";
30
30
  zone: "top" | "composer" | "hidden";
31
31
  editing: boolean;
@@ -29,8 +29,8 @@ declare const __VLS_base: import('vue').DefineComponent<Props, {}, {}, {}, {}, i
29
29
  "onDrag-start"?: ((pointerEvent: PointerEvent) => any) | undefined;
30
30
  onRestore?: (() => any) | undefined;
31
31
  }>, {
32
- hidden: boolean;
33
32
  draggable: boolean;
33
+ hidden: boolean;
34
34
  itemId: string;
35
35
  appearance: "raised" | "embedded";
36
36
  editing: boolean;