@soxa-ui/svelte 0.0.0-stage → 0.3.0-beta.1

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 (583) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +219 -2
  3. package/dist/adapter/common/RoleIcon.svelte +25 -0
  4. package/dist/adapter/common/RoleIcon.svelte.d.ts +13 -0
  5. package/dist/adapter/common/click-action.d.ts +7 -0
  6. package/dist/adapter/common/click-action.js +11 -0
  7. package/dist/adapter/common/createSvelteAdapterContext.d.ts +12 -0
  8. package/dist/adapter/common/createSvelteAdapterContext.js +11 -0
  9. package/dist/adapter/common/handlers.d.ts +6 -0
  10. package/dist/adapter/common/handlers.js +11 -0
  11. package/dist/adapter/common/icon.d.ts +11 -0
  12. package/dist/adapter/common/icon.js +22 -0
  13. package/dist/adapter/common/index.d.ts +8 -0
  14. package/dist/adapter/common/index.js +8 -0
  15. package/dist/adapter/common/naming.d.ts +3 -0
  16. package/dist/adapter/common/naming.js +6 -0
  17. package/dist/adapter/common/profile.d.ts +2 -0
  18. package/dist/adapter/common/profile.js +2 -0
  19. package/dist/adapter/common/root.d.ts +77 -0
  20. package/dist/adapter/common/root.js +88 -0
  21. package/dist/adapter/elevator/elevator.class.d.ts +13 -0
  22. package/dist/adapter/elevator/elevator.class.js +27 -0
  23. package/dist/adapter/elevator/index.d.ts +2 -0
  24. package/dist/adapter/elevator/index.js +2 -0
  25. package/dist/adapter/elevator/useElevator.d.ts +6 -0
  26. package/dist/adapter/elevator/useElevator.js +9 -0
  27. package/dist/adapter/index.d.ts +5 -0
  28. package/dist/adapter/index.js +5 -0
  29. package/dist/adapter/locale/LocaleProvider.svelte +21 -0
  30. package/dist/adapter/locale/LocaleProvider.svelte.d.ts +4 -0
  31. package/dist/adapter/locale/context.d.ts +6 -0
  32. package/dist/adapter/locale/context.js +12 -0
  33. package/dist/adapter/locale/index.d.ts +2 -0
  34. package/dist/adapter/locale/index.js +1 -0
  35. package/dist/adapter/locale/types.d.ts +7 -0
  36. package/dist/adapter/locale/types.js +1 -0
  37. package/dist/adapter/runtime/Dynamic.svelte +54 -0
  38. package/dist/adapter/runtime/Dynamic.svelte.d.ts +25 -0
  39. package/dist/adapter/runtime/Teleport.svelte +96 -0
  40. package/dist/adapter/runtime/Teleport.svelte.d.ts +5 -0
  41. package/dist/adapter/runtime/TextSpan.svelte +28 -0
  42. package/dist/adapter/runtime/TextSpan.svelte.d.ts +8 -0
  43. package/dist/adapter/runtime/field-text.d.ts +29 -0
  44. package/dist/adapter/runtime/field-text.js +45 -0
  45. package/dist/adapter/runtime/index.d.ts +8 -0
  46. package/dist/adapter/runtime/index.js +7 -0
  47. package/dist/adapter/runtime/root-style.svelte.d.ts +27 -0
  48. package/dist/adapter/runtime/root-style.svelte.js +105 -0
  49. package/dist/adapter/runtime/runs.d.ts +13 -0
  50. package/dist/adapter/runtime/runs.js +20 -0
  51. package/dist/adapter/runtime/state.d.ts +8 -0
  52. package/dist/adapter/runtime/state.js +28 -0
  53. package/dist/adapter/runtime/tag.d.ts +11 -0
  54. package/dist/adapter/runtime/tag.js +4 -0
  55. package/dist/adapter/runtime/types.d.ts +8 -0
  56. package/dist/adapter/runtime/types.js +1 -0
  57. package/dist/adapter/runtime/useAdapter.svelte.d.ts +62 -0
  58. package/dist/adapter/runtime/useAdapter.svelte.js +228 -0
  59. package/dist/adapter/toasts/index.d.ts +3 -0
  60. package/dist/adapter/toasts/index.js +2 -0
  61. package/dist/adapter/toasts/render.d.ts +3 -0
  62. package/dist/adapter/toasts/render.js +4 -0
  63. package/dist/adapter/toasts/types.d.ts +6 -0
  64. package/dist/adapter/toasts/types.js +1 -0
  65. package/dist/adapter/toasts/useToasts.d.ts +7 -0
  66. package/dist/adapter/toasts/useToasts.js +13 -0
  67. package/dist/components/accordion/Accordion.svelte +43 -0
  68. package/dist/components/accordion/Accordion.svelte.d.ts +4 -0
  69. package/dist/components/accordion/base.component.d.ts +5 -0
  70. package/dist/components/accordion/base.component.js +1 -0
  71. package/dist/components/accordion/index.d.ts +6 -0
  72. package/dist/components/accordion/index.js +7 -0
  73. package/dist/components/accordion/item/Item.svelte +84 -0
  74. package/dist/components/accordion/item/Item.svelte.d.ts +4 -0
  75. package/dist/components/accordion/item/base.component.d.ts +7 -0
  76. package/dist/components/accordion/item/base.component.js +1 -0
  77. package/dist/components/accordion/item/index.d.ts +3 -0
  78. package/dist/components/accordion/item/index.js +3 -0
  79. package/dist/components/accordion/item/setup.component.d.ts +57 -0
  80. package/dist/components/accordion/item/setup.component.js +15 -0
  81. package/dist/components/accordion/setup.component.d.ts +47 -0
  82. package/dist/components/accordion/setup.component.js +21 -0
  83. package/dist/components/button/Button.svelte +33 -0
  84. package/dist/components/button/Button.svelte.d.ts +4 -0
  85. package/dist/components/button/base.component.d.ts +7 -0
  86. package/dist/components/button/base.component.js +1 -0
  87. package/dist/components/button/index.d.ts +3 -0
  88. package/dist/components/button/index.js +3 -0
  89. package/dist/components/button/setup.component.d.ts +43 -0
  90. package/dist/components/button/setup.component.js +10 -0
  91. package/dist/components/calendar/Calendar.svelte +193 -0
  92. package/dist/components/calendar/Calendar.svelte.d.ts +4 -0
  93. package/dist/components/calendar/base.component.d.ts +5 -0
  94. package/dist/components/calendar/base.component.js +1 -0
  95. package/dist/components/calendar/index.d.ts +6 -0
  96. package/dist/components/calendar/index.js +7 -0
  97. package/dist/components/calendar/item/Item.svelte +31 -0
  98. package/dist/components/calendar/item/Item.svelte.d.ts +4 -0
  99. package/dist/components/calendar/item/base.component.d.ts +6 -0
  100. package/dist/components/calendar/item/base.component.js +1 -0
  101. package/dist/components/calendar/item/index.d.ts +3 -0
  102. package/dist/components/calendar/item/index.js +3 -0
  103. package/dist/components/calendar/item/setup.component.d.ts +21 -0
  104. package/dist/components/calendar/item/setup.component.js +15 -0
  105. package/dist/components/calendar/setup.component.d.ts +47 -0
  106. package/dist/components/calendar/setup.component.js +19 -0
  107. package/dist/components/check-box/CheckBox.svelte +66 -0
  108. package/dist/components/check-box/CheckBox.svelte.d.ts +4 -0
  109. package/dist/components/check-box/base.component.d.ts +7 -0
  110. package/dist/components/check-box/base.component.js +1 -0
  111. package/dist/components/check-box/index.d.ts +3 -0
  112. package/dist/components/check-box/index.js +3 -0
  113. package/dist/components/check-box/setup.component.d.ts +51 -0
  114. package/dist/components/check-box/setup.component.js +11 -0
  115. package/dist/components/component/base.component.d.ts +5 -0
  116. package/dist/components/component/base.component.js +1 -0
  117. package/dist/components/component/index.d.ts +1 -0
  118. package/dist/components/component/index.js +1 -0
  119. package/dist/components/component-view/ComponentView.svelte +25 -0
  120. package/dist/components/component-view/ComponentView.svelte.d.ts +4 -0
  121. package/dist/components/component-view/base.component.d.ts +5 -0
  122. package/dist/components/component-view/base.component.js +1 -0
  123. package/dist/components/component-view/index.d.ts +3 -0
  124. package/dist/components/component-view/index.js +3 -0
  125. package/dist/components/component-view/setup.component.d.ts +17 -0
  126. package/dist/components/component-view/setup.component.js +10 -0
  127. package/dist/components/control/base.component.d.ts +5 -0
  128. package/dist/components/control/base.component.js +1 -0
  129. package/dist/components/control/index.d.ts +2 -0
  130. package/dist/components/control/index.js +2 -0
  131. package/dist/components/control/setup.component.d.ts +42 -0
  132. package/dist/components/control/setup.component.js +10 -0
  133. package/dist/components/date-input/DateInput.svelte +75 -0
  134. package/dist/components/date-input/DateInput.svelte.d.ts +4 -0
  135. package/dist/components/date-input/base.component.d.ts +6 -0
  136. package/dist/components/date-input/base.component.js +1 -0
  137. package/dist/components/date-input/index.d.ts +3 -0
  138. package/dist/components/date-input/index.js +3 -0
  139. package/dist/components/date-input/setup.component.d.ts +51 -0
  140. package/dist/components/date-input/setup.component.js +11 -0
  141. package/dist/components/date-picker/DatePicker.svelte +159 -0
  142. package/dist/components/date-picker/DatePicker.svelte.d.ts +4 -0
  143. package/dist/components/date-picker/base.component.d.ts +6 -0
  144. package/dist/components/date-picker/base.component.js +1 -0
  145. package/dist/components/date-picker/index.d.ts +3 -0
  146. package/dist/components/date-picker/index.js +3 -0
  147. package/dist/components/date-picker/setup.component.d.ts +83 -0
  148. package/dist/components/date-picker/setup.component.js +11 -0
  149. package/dist/components/dialog/Dialog.svelte +90 -0
  150. package/dist/components/dialog/Dialog.svelte.d.ts +4 -0
  151. package/dist/components/dialog/base.component.d.ts +6 -0
  152. package/dist/components/dialog/base.component.js +1 -0
  153. package/dist/components/dialog/index.d.ts +3 -0
  154. package/dist/components/dialog/index.js +3 -0
  155. package/dist/components/dialog/setup.component.d.ts +57 -0
  156. package/dist/components/dialog/setup.component.js +10 -0
  157. package/dist/components/drag-and-drop/DragAndDrop.svelte +12 -0
  158. package/dist/components/drag-and-drop/DragAndDrop.svelte.d.ts +4 -0
  159. package/dist/components/drag-and-drop/base.component.d.ts +6 -0
  160. package/dist/components/drag-and-drop/base.component.js +1 -0
  161. package/dist/components/drag-and-drop/index.d.ts +3 -0
  162. package/dist/components/drag-and-drop/index.js +3 -0
  163. package/dist/components/drag-and-drop/setup.component.d.ts +10 -0
  164. package/dist/components/drag-and-drop/setup.component.js +11 -0
  165. package/dist/components/drawer/Drawer.svelte +69 -0
  166. package/dist/components/drawer/Drawer.svelte.d.ts +4 -0
  167. package/dist/components/drawer/base.component.d.ts +6 -0
  168. package/dist/components/drawer/base.component.js +1 -0
  169. package/dist/components/drawer/index.d.ts +3 -0
  170. package/dist/components/drawer/index.js +3 -0
  171. package/dist/components/drawer/setup.component.d.ts +57 -0
  172. package/dist/components/drawer/setup.component.js +10 -0
  173. package/dist/components/field/Field.svelte +58 -0
  174. package/dist/components/field/Field.svelte.d.ts +4 -0
  175. package/dist/components/field/base.component.d.ts +5 -0
  176. package/dist/components/field/base.component.js +1 -0
  177. package/dist/components/field/index.d.ts +3 -0
  178. package/dist/components/field/index.js +3 -0
  179. package/dist/components/field/setup.component.d.ts +17 -0
  180. package/dist/components/field/setup.component.js +11 -0
  181. package/dist/components/frame/Frame.svelte +28 -0
  182. package/dist/components/frame/Frame.svelte.d.ts +4 -0
  183. package/dist/components/frame/base.component.d.ts +5 -0
  184. package/dist/components/frame/base.component.js +1 -0
  185. package/dist/components/frame/index.d.ts +3 -0
  186. package/dist/components/frame/index.js +3 -0
  187. package/dist/components/frame/setup.component.d.ts +65 -0
  188. package/dist/components/frame/setup.component.js +10 -0
  189. package/dist/components/icon/Icon.svelte +22 -0
  190. package/dist/components/icon/Icon.svelte.d.ts +4 -0
  191. package/dist/components/icon/base.component.d.ts +5 -0
  192. package/dist/components/icon/base.component.js +1 -0
  193. package/dist/components/icon/index.d.ts +3 -0
  194. package/dist/components/icon/index.js +3 -0
  195. package/dist/components/icon/setup.component.d.ts +37 -0
  196. package/dist/components/icon/setup.component.js +10 -0
  197. package/dist/components/index.d.ts +43 -0
  198. package/dist/components/index.js +43 -0
  199. package/dist/components/input/Input.svelte +75 -0
  200. package/dist/components/input/Input.svelte.d.ts +4 -0
  201. package/dist/components/input/base.component.d.ts +7 -0
  202. package/dist/components/input/base.component.js +1 -0
  203. package/dist/components/input/index.d.ts +3 -0
  204. package/dist/components/input/index.js +3 -0
  205. package/dist/components/input/setup.component.d.ts +51 -0
  206. package/dist/components/input/setup.component.js +11 -0
  207. package/dist/components/input-control/base.component.d.ts +6 -0
  208. package/dist/components/input-control/base.component.js +1 -0
  209. package/dist/components/input-control/index.d.ts +2 -0
  210. package/dist/components/input-control/index.js +2 -0
  211. package/dist/components/input-control/setup.component.d.ts +50 -0
  212. package/dist/components/input-control/setup.component.js +10 -0
  213. package/dist/components/interactive/base.component.d.ts +5 -0
  214. package/dist/components/interactive/base.component.js +1 -0
  215. package/dist/components/interactive/index.d.ts +2 -0
  216. package/dist/components/interactive/index.js +2 -0
  217. package/dist/components/interactive/setup.component.d.ts +16 -0
  218. package/dist/components/interactive/setup.component.js +10 -0
  219. package/dist/components/item-row/ItemRow.svelte +43 -0
  220. package/dist/components/item-row/ItemRow.svelte.d.ts +4 -0
  221. package/dist/components/item-row/index.d.ts +2 -0
  222. package/dist/components/item-row/index.js +2 -0
  223. package/dist/components/item-row/setup.component.d.ts +43 -0
  224. package/dist/components/item-row/setup.component.js +10 -0
  225. package/dist/components/label/Label.svelte +38 -0
  226. package/dist/components/label/Label.svelte.d.ts +4 -0
  227. package/dist/components/label/base.component.d.ts +5 -0
  228. package/dist/components/label/base.component.js +1 -0
  229. package/dist/components/label/index.d.ts +3 -0
  230. package/dist/components/label/index.js +3 -0
  231. package/dist/components/label/setup.component.d.ts +17 -0
  232. package/dist/components/label/setup.component.js +10 -0
  233. package/dist/components/list-box/ListBox.svelte +87 -0
  234. package/dist/components/list-box/ListBox.svelte.d.ts +4 -0
  235. package/dist/components/list-box/base.component.d.ts +7 -0
  236. package/dist/components/list-box/base.component.js +1 -0
  237. package/dist/components/list-box/group/Group.svelte +27 -0
  238. package/dist/components/list-box/group/Group.svelte.d.ts +4 -0
  239. package/dist/components/list-box/group/base.component.d.ts +5 -0
  240. package/dist/components/list-box/group/base.component.js +1 -0
  241. package/dist/components/list-box/group/index.d.ts +3 -0
  242. package/dist/components/list-box/group/index.js +3 -0
  243. package/dist/components/list-box/group/setup.component.d.ts +17 -0
  244. package/dist/components/list-box/group/setup.component.js +11 -0
  245. package/dist/components/list-box/index.d.ts +8 -0
  246. package/dist/components/list-box/index.js +9 -0
  247. package/dist/components/list-box/item/Item.svelte +72 -0
  248. package/dist/components/list-box/item/Item.svelte.d.ts +4 -0
  249. package/dist/components/list-box/item/base.component.d.ts +7 -0
  250. package/dist/components/list-box/item/base.component.js +1 -0
  251. package/dist/components/list-box/item/index.d.ts +3 -0
  252. package/dist/components/list-box/item/index.js +3 -0
  253. package/dist/components/list-box/item/setup.component.d.ts +61 -0
  254. package/dist/components/list-box/item/setup.component.js +15 -0
  255. package/dist/components/list-box/setup.component.d.ts +47 -0
  256. package/dist/components/list-box/setup.component.js +22 -0
  257. package/dist/components/menu/Menu.svelte +54 -0
  258. package/dist/components/menu/Menu.svelte.d.ts +4 -0
  259. package/dist/components/menu/base.component.d.ts +6 -0
  260. package/dist/components/menu/base.component.js +1 -0
  261. package/dist/components/menu/checkbox-item/CheckboxItem.svelte +67 -0
  262. package/dist/components/menu/checkbox-item/CheckboxItem.svelte.d.ts +4 -0
  263. package/dist/components/menu/checkbox-item/base.component.d.ts +7 -0
  264. package/dist/components/menu/checkbox-item/base.component.js +1 -0
  265. package/dist/components/menu/checkbox-item/index.d.ts +3 -0
  266. package/dist/components/menu/checkbox-item/index.js +3 -0
  267. package/dist/components/menu/checkbox-item/setup.component.d.ts +53 -0
  268. package/dist/components/menu/checkbox-item/setup.component.js +15 -0
  269. package/dist/components/menu/group/Group.svelte +27 -0
  270. package/dist/components/menu/group/Group.svelte.d.ts +4 -0
  271. package/dist/components/menu/group/base.component.d.ts +5 -0
  272. package/dist/components/menu/group/base.component.js +1 -0
  273. package/dist/components/menu/group/index.d.ts +3 -0
  274. package/dist/components/menu/group/index.js +3 -0
  275. package/dist/components/menu/group/setup.component.d.ts +17 -0
  276. package/dist/components/menu/group/setup.component.js +11 -0
  277. package/dist/components/menu/index.d.ts +20 -0
  278. package/dist/components/menu/index.js +30 -0
  279. package/dist/components/menu/item/Item.svelte +48 -0
  280. package/dist/components/menu/item/Item.svelte.d.ts +4 -0
  281. package/dist/components/menu/item/base.component.d.ts +8 -0
  282. package/dist/components/menu/item/base.component.js +1 -0
  283. package/dist/components/menu/item/index.d.ts +3 -0
  284. package/dist/components/menu/item/index.js +3 -0
  285. package/dist/components/menu/item/setup.component.d.ts +53 -0
  286. package/dist/components/menu/item/setup.component.js +15 -0
  287. package/dist/components/menu/popover-item/PopoverItem.svelte +79 -0
  288. package/dist/components/menu/popover-item/PopoverItem.svelte.d.ts +4 -0
  289. package/dist/components/menu/popover-item/base.component.d.ts +7 -0
  290. package/dist/components/menu/popover-item/base.component.js +1 -0
  291. package/dist/components/menu/popover-item/index.d.ts +3 -0
  292. package/dist/components/menu/popover-item/index.js +3 -0
  293. package/dist/components/menu/popover-item/setup.component.d.ts +75 -0
  294. package/dist/components/menu/popover-item/setup.component.js +15 -0
  295. package/dist/components/menu/radio-group/RadioGroup.svelte +27 -0
  296. package/dist/components/menu/radio-group/RadioGroup.svelte.d.ts +4 -0
  297. package/dist/components/menu/radio-group/base.component.d.ts +5 -0
  298. package/dist/components/menu/radio-group/base.component.js +1 -0
  299. package/dist/components/menu/radio-group/index.d.ts +3 -0
  300. package/dist/components/menu/radio-group/index.js +3 -0
  301. package/dist/components/menu/radio-group/setup.component.d.ts +17 -0
  302. package/dist/components/menu/radio-group/setup.component.js +13 -0
  303. package/dist/components/menu/radio-item/RadioItem.svelte +64 -0
  304. package/dist/components/menu/radio-item/RadioItem.svelte.d.ts +4 -0
  305. package/dist/components/menu/radio-item/base.component.d.ts +8 -0
  306. package/dist/components/menu/radio-item/base.component.js +1 -0
  307. package/dist/components/menu/radio-item/index.d.ts +3 -0
  308. package/dist/components/menu/radio-item/index.js +3 -0
  309. package/dist/components/menu/radio-item/setup.component.d.ts +53 -0
  310. package/dist/components/menu/radio-item/setup.component.js +15 -0
  311. package/dist/components/menu/separator/Separator.svelte +22 -0
  312. package/dist/components/menu/separator/Separator.svelte.d.ts +4 -0
  313. package/dist/components/menu/separator/base.component.d.ts +5 -0
  314. package/dist/components/menu/separator/base.component.js +1 -0
  315. package/dist/components/menu/separator/index.d.ts +3 -0
  316. package/dist/components/menu/separator/index.js +3 -0
  317. package/dist/components/menu/separator/setup.component.d.ts +17 -0
  318. package/dist/components/menu/separator/setup.component.js +10 -0
  319. package/dist/components/menu/setup.component.d.ts +35 -0
  320. package/dist/components/menu/setup.component.js +19 -0
  321. package/dist/components/menu/submenu/Submenu.svelte +180 -0
  322. package/dist/components/menu/submenu/Submenu.svelte.d.ts +15 -0
  323. package/dist/components/menu/submenu/base.component.d.ts +7 -0
  324. package/dist/components/menu/submenu/base.component.js +1 -0
  325. package/dist/components/menu/submenu/index.d.ts +3 -0
  326. package/dist/components/menu/submenu/index.js +3 -0
  327. package/dist/components/menu/submenu/setup.component.d.ts +79 -0
  328. package/dist/components/menu/submenu/setup.component.js +21 -0
  329. package/dist/components/number-input/NumberInput.svelte +119 -0
  330. package/dist/components/number-input/NumberInput.svelte.d.ts +4 -0
  331. package/dist/components/number-input/base.component.d.ts +7 -0
  332. package/dist/components/number-input/base.component.js +1 -0
  333. package/dist/components/number-input/index.d.ts +3 -0
  334. package/dist/components/number-input/index.js +3 -0
  335. package/dist/components/number-input/setup.component.d.ts +51 -0
  336. package/dist/components/number-input/setup.component.js +11 -0
  337. package/dist/components/pagination/Pagination.svelte +80 -0
  338. package/dist/components/pagination/Pagination.svelte.d.ts +4 -0
  339. package/dist/components/pagination/base.component.d.ts +6 -0
  340. package/dist/components/pagination/base.component.js +1 -0
  341. package/dist/components/pagination/index.d.ts +3 -0
  342. package/dist/components/pagination/index.js +3 -0
  343. package/dist/components/pagination/item/Item.svelte +44 -0
  344. package/dist/components/pagination/item/Item.svelte.d.ts +4 -0
  345. package/dist/components/pagination/item/base.component.d.ts +6 -0
  346. package/dist/components/pagination/item/base.component.js +1 -0
  347. package/dist/components/pagination/item/index.d.ts +3 -0
  348. package/dist/components/pagination/item/index.js +3 -0
  349. package/dist/components/pagination/item/setup.component.d.ts +23 -0
  350. package/dist/components/pagination/item/setup.component.js +15 -0
  351. package/dist/components/pagination/setup.component.d.ts +47 -0
  352. package/dist/components/pagination/setup.component.js +19 -0
  353. package/dist/components/popover/Popover.svelte +72 -0
  354. package/dist/components/popover/Popover.svelte.d.ts +4 -0
  355. package/dist/components/popover/base.component.d.ts +6 -0
  356. package/dist/components/popover/base.component.js +1 -0
  357. package/dist/components/popover/index.d.ts +3 -0
  358. package/dist/components/popover/index.js +3 -0
  359. package/dist/components/popover/setup.component.d.ts +47 -0
  360. package/dist/components/popover/setup.component.js +10 -0
  361. package/dist/components/progress-linear/ProgressLinear.svelte +29 -0
  362. package/dist/components/progress-linear/ProgressLinear.svelte.d.ts +4 -0
  363. package/dist/components/progress-linear/base.component.d.ts +5 -0
  364. package/dist/components/progress-linear/base.component.js +1 -0
  365. package/dist/components/progress-linear/index.d.ts +3 -0
  366. package/dist/components/progress-linear/index.js +3 -0
  367. package/dist/components/progress-linear/setup.component.d.ts +33 -0
  368. package/dist/components/progress-linear/setup.component.js +10 -0
  369. package/dist/components/progress-spinner/ProgressSpinner.svelte +35 -0
  370. package/dist/components/progress-spinner/ProgressSpinner.svelte.d.ts +4 -0
  371. package/dist/components/progress-spinner/base.component.d.ts +5 -0
  372. package/dist/components/progress-spinner/base.component.js +1 -0
  373. package/dist/components/progress-spinner/index.d.ts +3 -0
  374. package/dist/components/progress-spinner/index.js +3 -0
  375. package/dist/components/progress-spinner/setup.component.d.ts +33 -0
  376. package/dist/components/progress-spinner/setup.component.js +10 -0
  377. package/dist/components/radio-group/RadioGroup.svelte +34 -0
  378. package/dist/components/radio-group/RadioGroup.svelte.d.ts +4 -0
  379. package/dist/components/radio-group/base.component.d.ts +5 -0
  380. package/dist/components/radio-group/base.component.js +1 -0
  381. package/dist/components/radio-group/index.d.ts +6 -0
  382. package/dist/components/radio-group/index.js +7 -0
  383. package/dist/components/radio-group/item/Item.svelte +51 -0
  384. package/dist/components/radio-group/item/Item.svelte.d.ts +4 -0
  385. package/dist/components/radio-group/item/base.component.d.ts +8 -0
  386. package/dist/components/radio-group/item/base.component.js +1 -0
  387. package/dist/components/radio-group/item/index.d.ts +3 -0
  388. package/dist/components/radio-group/item/index.js +3 -0
  389. package/dist/components/radio-group/item/setup.component.d.ts +49 -0
  390. package/dist/components/radio-group/item/setup.component.js +15 -0
  391. package/dist/components/radio-group/setup.component.d.ts +47 -0
  392. package/dist/components/radio-group/setup.component.js +19 -0
  393. package/dist/components/rating/Rating.svelte +57 -0
  394. package/dist/components/rating/Rating.svelte.d.ts +4 -0
  395. package/dist/components/rating/base.component.d.ts +6 -0
  396. package/dist/components/rating/base.component.js +1 -0
  397. package/dist/components/rating/index.d.ts +3 -0
  398. package/dist/components/rating/index.js +3 -0
  399. package/dist/components/rating/setup.component.d.ts +51 -0
  400. package/dist/components/rating/setup.component.js +11 -0
  401. package/dist/components/scroller/Scroller.svelte +67 -0
  402. package/dist/components/scroller/Scroller.svelte.d.ts +4 -0
  403. package/dist/components/scroller/base.component.d.ts +6 -0
  404. package/dist/components/scroller/base.component.js +1 -0
  405. package/dist/components/scroller/index.d.ts +3 -0
  406. package/dist/components/scroller/index.js +3 -0
  407. package/dist/components/scroller/setup.component.d.ts +43 -0
  408. package/dist/components/scroller/setup.component.js +10 -0
  409. package/dist/components/select/Select.svelte +143 -0
  410. package/dist/components/select/Select.svelte.d.ts +4 -0
  411. package/dist/components/select/base.component.d.ts +7 -0
  412. package/dist/components/select/base.component.js +1 -0
  413. package/dist/components/select/group/Group.svelte +27 -0
  414. package/dist/components/select/group/Group.svelte.d.ts +4 -0
  415. package/dist/components/select/group/base.component.d.ts +5 -0
  416. package/dist/components/select/group/base.component.js +1 -0
  417. package/dist/components/select/group/index.d.ts +3 -0
  418. package/dist/components/select/group/index.js +3 -0
  419. package/dist/components/select/group/setup.component.d.ts +17 -0
  420. package/dist/components/select/group/setup.component.js +11 -0
  421. package/dist/components/select/index.d.ts +8 -0
  422. package/dist/components/select/index.js +9 -0
  423. package/dist/components/select/item/Item.svelte +74 -0
  424. package/dist/components/select/item/Item.svelte.d.ts +4 -0
  425. package/dist/components/select/item/base.component.d.ts +7 -0
  426. package/dist/components/select/item/base.component.js +1 -0
  427. package/dist/components/select/item/index.d.ts +3 -0
  428. package/dist/components/select/item/index.js +3 -0
  429. package/dist/components/select/item/setup.component.d.ts +61 -0
  430. package/dist/components/select/item/setup.component.js +15 -0
  431. package/dist/components/select/setup.component.d.ts +85 -0
  432. package/dist/components/select/setup.component.js +21 -0
  433. package/dist/components/skeleton/Skeleton.svelte +32 -0
  434. package/dist/components/skeleton/Skeleton.svelte.d.ts +4 -0
  435. package/dist/components/skeleton/base.component.d.ts +5 -0
  436. package/dist/components/skeleton/base.component.js +1 -0
  437. package/dist/components/skeleton/index.d.ts +3 -0
  438. package/dist/components/skeleton/index.js +3 -0
  439. package/dist/components/skeleton/setup.component.d.ts +21 -0
  440. package/dist/components/skeleton/setup.component.js +10 -0
  441. package/dist/components/slider/Slider.svelte +68 -0
  442. package/dist/components/slider/Slider.svelte.d.ts +4 -0
  443. package/dist/components/slider/base.component.d.ts +6 -0
  444. package/dist/components/slider/base.component.js +1 -0
  445. package/dist/components/slider/index.d.ts +3 -0
  446. package/dist/components/slider/index.js +3 -0
  447. package/dist/components/slider/setup.component.d.ts +43 -0
  448. package/dist/components/slider/setup.component.js +11 -0
  449. package/dist/components/stylable/base.component.d.ts +5 -0
  450. package/dist/components/stylable/base.component.js +1 -0
  451. package/dist/components/stylable/index.d.ts +2 -0
  452. package/dist/components/stylable/index.js +2 -0
  453. package/dist/components/stylable/setup.component.d.ts +16 -0
  454. package/dist/components/stylable/setup.component.js +10 -0
  455. package/dist/components/switch/Switch.svelte +43 -0
  456. package/dist/components/switch/Switch.svelte.d.ts +4 -0
  457. package/dist/components/switch/base.component.d.ts +7 -0
  458. package/dist/components/switch/base.component.js +1 -0
  459. package/dist/components/switch/index.d.ts +3 -0
  460. package/dist/components/switch/index.js +3 -0
  461. package/dist/components/switch/setup.component.d.ts +51 -0
  462. package/dist/components/switch/setup.component.js +11 -0
  463. package/dist/components/table/Table.svelte +79 -0
  464. package/dist/components/table/Table.svelte.d.ts +4 -0
  465. package/dist/components/table/base.component.d.ts +6 -0
  466. package/dist/components/table/base.component.js +1 -0
  467. package/dist/components/table/column/Column.svelte +70 -0
  468. package/dist/components/table/column/Column.svelte.d.ts +4 -0
  469. package/dist/components/table/column/base.component.d.ts +6 -0
  470. package/dist/components/table/column/base.component.js +1 -0
  471. package/dist/components/table/column/index.d.ts +3 -0
  472. package/dist/components/table/column/index.js +3 -0
  473. package/dist/components/table/column/setup.component.d.ts +17 -0
  474. package/dist/components/table/column/setup.component.js +10 -0
  475. package/dist/components/table/index.d.ts +8 -0
  476. package/dist/components/table/index.js +9 -0
  477. package/dist/components/table/row/Row.svelte +74 -0
  478. package/dist/components/table/row/Row.svelte.d.ts +4 -0
  479. package/dist/components/table/row/base.component.d.ts +6 -0
  480. package/dist/components/table/row/base.component.js +1 -0
  481. package/dist/components/table/row/index.d.ts +3 -0
  482. package/dist/components/table/row/index.js +3 -0
  483. package/dist/components/table/row/setup.component.d.ts +23 -0
  484. package/dist/components/table/row/setup.component.js +15 -0
  485. package/dist/components/table/setup.component.d.ts +53 -0
  486. package/dist/components/table/setup.component.js +23 -0
  487. package/dist/components/tabs/Tabs.svelte +64 -0
  488. package/dist/components/tabs/Tabs.svelte.d.ts +4 -0
  489. package/dist/components/tabs/base.component.d.ts +7 -0
  490. package/dist/components/tabs/base.component.js +1 -0
  491. package/dist/components/tabs/content/Content.svelte +21 -0
  492. package/dist/components/tabs/content/Content.svelte.d.ts +4 -0
  493. package/dist/components/tabs/content/base.component.d.ts +5 -0
  494. package/dist/components/tabs/content/base.component.js +1 -0
  495. package/dist/components/tabs/content/index.d.ts +3 -0
  496. package/dist/components/tabs/content/index.js +3 -0
  497. package/dist/components/tabs/content/setup.component.d.ts +29 -0
  498. package/dist/components/tabs/content/setup.component.js +15 -0
  499. package/dist/components/tabs/index.d.ts +8 -0
  500. package/dist/components/tabs/index.js +9 -0
  501. package/dist/components/tabs/item/Item.svelte +74 -0
  502. package/dist/components/tabs/item/Item.svelte.d.ts +4 -0
  503. package/dist/components/tabs/item/base.component.d.ts +7 -0
  504. package/dist/components/tabs/item/base.component.js +1 -0
  505. package/dist/components/tabs/item/index.d.ts +3 -0
  506. package/dist/components/tabs/item/index.js +3 -0
  507. package/dist/components/tabs/item/setup.component.d.ts +57 -0
  508. package/dist/components/tabs/item/setup.component.js +15 -0
  509. package/dist/components/tabs/setup.component.d.ts +47 -0
  510. package/dist/components/tabs/setup.component.js +21 -0
  511. package/dist/components/tags/Tags.svelte +49 -0
  512. package/dist/components/tags/Tags.svelte.d.ts +4 -0
  513. package/dist/components/tags/base.component.d.ts +6 -0
  514. package/dist/components/tags/base.component.js +1 -0
  515. package/dist/components/tags/index.d.ts +6 -0
  516. package/dist/components/tags/index.js +7 -0
  517. package/dist/components/tags/item/Item.svelte +82 -0
  518. package/dist/components/tags/item/Item.svelte.d.ts +4 -0
  519. package/dist/components/tags/item/base.component.d.ts +7 -0
  520. package/dist/components/tags/item/base.component.js +1 -0
  521. package/dist/components/tags/item/index.d.ts +3 -0
  522. package/dist/components/tags/item/index.js +3 -0
  523. package/dist/components/tags/item/setup.component.d.ts +49 -0
  524. package/dist/components/tags/item/setup.component.js +15 -0
  525. package/dist/components/tags/setup.component.d.ts +47 -0
  526. package/dist/components/tags/setup.component.js +19 -0
  527. package/dist/components/textable/base.component.d.ts +5 -0
  528. package/dist/components/textable/base.component.js +1 -0
  529. package/dist/components/textable/index.d.ts +2 -0
  530. package/dist/components/textable/index.js +2 -0
  531. package/dist/components/textable/setup.component.d.ts +42 -0
  532. package/dist/components/textable/setup.component.js +10 -0
  533. package/dist/components/textarea/Textarea.svelte +42 -0
  534. package/dist/components/textarea/Textarea.svelte.d.ts +4 -0
  535. package/dist/components/textarea/base.component.d.ts +7 -0
  536. package/dist/components/textarea/base.component.js +1 -0
  537. package/dist/components/textarea/index.d.ts +3 -0
  538. package/dist/components/textarea/index.js +3 -0
  539. package/dist/components/textarea/setup.component.d.ts +55 -0
  540. package/dist/components/textarea/setup.component.js +11 -0
  541. package/dist/components/toasts/Toasts.svelte +58 -0
  542. package/dist/components/toasts/Toasts.svelte.d.ts +4 -0
  543. package/dist/components/toasts/base.component.d.ts +6 -0
  544. package/dist/components/toasts/base.component.js +1 -0
  545. package/dist/components/toasts/index.d.ts +3 -0
  546. package/dist/components/toasts/index.js +3 -0
  547. package/dist/components/toasts/item/Item.svelte +94 -0
  548. package/dist/components/toasts/item/Item.svelte.d.ts +4 -0
  549. package/dist/components/toasts/item/base.component.d.ts +6 -0
  550. package/dist/components/toasts/item/base.component.js +1 -0
  551. package/dist/components/toasts/item/index.d.ts +3 -0
  552. package/dist/components/toasts/item/index.js +3 -0
  553. package/dist/components/toasts/item/setup.component.d.ts +21 -0
  554. package/dist/components/toasts/item/setup.component.js +15 -0
  555. package/dist/components/toasts/setup.component.d.ts +25 -0
  556. package/dist/components/toasts/setup.component.js +21 -0
  557. package/dist/components/tooltip/Tooltip.svelte +37 -0
  558. package/dist/components/tooltip/Tooltip.svelte.d.ts +4 -0
  559. package/dist/components/tooltip/base.component.d.ts +6 -0
  560. package/dist/components/tooltip/base.component.js +1 -0
  561. package/dist/components/tooltip/index.d.ts +3 -0
  562. package/dist/components/tooltip/index.js +3 -0
  563. package/dist/components/tooltip/setup.component.d.ts +31 -0
  564. package/dist/components/tooltip/setup.component.js +10 -0
  565. package/dist/components/value-control/base.component.d.ts +6 -0
  566. package/dist/components/value-control/base.component.js +1 -0
  567. package/dist/components/value-control/index.d.ts +2 -0
  568. package/dist/components/value-control/index.js +2 -0
  569. package/dist/components/value-control/setup.component.d.ts +42 -0
  570. package/dist/components/value-control/setup.component.js +10 -0
  571. package/dist/components/virtual/Virtual.svelte +12 -0
  572. package/dist/components/virtual/Virtual.svelte.d.ts +4 -0
  573. package/dist/components/virtual/base.component.d.ts +6 -0
  574. package/dist/components/virtual/base.component.js +1 -0
  575. package/dist/components/virtual/index.d.ts +3 -0
  576. package/dist/components/virtual/index.js +3 -0
  577. package/dist/components/virtual/setup.component.d.ts +10 -0
  578. package/dist/components/virtual/setup.component.js +11 -0
  579. package/dist/index.d.ts +9 -0
  580. package/dist/index.js +5 -0
  581. package/dist/types.d.ts +41 -0
  582. package/dist/types.js +1 -0
  583. package/package.json +61 -4
@@ -0,0 +1,6 @@
1
+ import type { TElevatorFactory } from '@soxa-ui/setup';
2
+ /**
3
+ * Фабрика лифтов сборки — одна на сборку, при инициализации компонента: у
4
+ * второй фабрики `up()` не знал бы опущенного первой.
5
+ */
6
+ export declare function useElevator(): TElevatorFactory;
@@ -0,0 +1,9 @@
1
+ import { TSvelteElevator } from './elevator.class';
2
+ /**
3
+ * Фабрика лифтов сборки — одна на сборку, при инициализации компонента: у
4
+ * второй фабрики `up()` не знал бы опущенного первой.
5
+ */
6
+ export function useElevator() {
7
+ const inherited = new Map();
8
+ return (key) => new TSvelteElevator(key.name, inherited);
9
+ }
@@ -0,0 +1,5 @@
1
+ export * from './common';
2
+ export * from './runtime';
3
+ export * from './elevator';
4
+ export * from './locale';
5
+ export * from './toasts';
@@ -0,0 +1,5 @@
1
+ export * from './common';
2
+ export * from './runtime';
3
+ export * from './elevator';
4
+ export * from './locale';
5
+ export * from './toasts';
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import { untrack } from 'svelte'
3
+ import { TLocaleSource } from '@soxa-ui/plugins'
4
+ import { provideLocale } from './context'
5
+ import type { TLocaleProviderProps } from './types'
6
+
7
+ const props: TLocaleProviderProps = $props()
8
+
9
+ // С локалью первой отрисовки — имена нужны и на сервере; дальше — эффект
10
+ const source = new TLocaleSource(untrack(() => props.locale))
11
+
12
+ provideLocale(source)
13
+
14
+ // Тем же проходом, что и разметка; компоненты не перемонтируются
15
+ $effect.pre(() => {
16
+ source.locale = props.locale
17
+ })
18
+ </script>
19
+
20
+ <!-- Локаль поддерева: источник у провайдера свой, вложенный даёт поддереву свой. -->
21
+ {@render props.children?.()}
@@ -0,0 +1,4 @@
1
+ import type { TLocaleProviderProps } from './types';
2
+ declare const LocaleProvider: import("svelte").Component<TLocaleProviderProps, {}, "">;
3
+ type LocaleProvider = ReturnType<typeof LocaleProvider>;
4
+ export default LocaleProvider;
@@ -0,0 +1,6 @@
1
+ /** Локаль поддерева в контексте Svelte — ключ модуля, только эти две функции. */
2
+ import { TLocaleSource } from '@soxa-ui/plugins';
3
+ import type { ILocaleSource } from '@soxa-ui/plugins';
4
+ export declare function provideLocale(source: TLocaleSource): void;
5
+ /** Источник ближайшего `LocaleProvider`; нет его — `undefined`. */
6
+ export declare function nearestLocale(): ILocaleSource | undefined;
@@ -0,0 +1,12 @@
1
+ /** Локаль поддерева в контексте Svelte — ключ модуля, только эти две функции. */
2
+ import { getContext, setContext } from 'svelte';
3
+ import { TLocaleSource } from '@soxa-ui/plugins';
4
+ const LOCALE_KEY = Symbol('soxa:locale');
5
+ export function provideLocale(source) {
6
+ setContext(LOCALE_KEY, source);
7
+ }
8
+ /** Источник ближайшего `LocaleProvider`; нет его — `undefined`. */
9
+ export function nearestLocale() {
10
+ const source = getContext(LOCALE_KEY);
11
+ return source instanceof TLocaleSource ? source : undefined;
12
+ }
@@ -0,0 +1,2 @@
1
+ export { default as LocaleProvider } from './LocaleProvider.svelte';
2
+ export type { TLocaleProviderProps } from './types';
@@ -0,0 +1 @@
1
+ export { default as LocaleProvider } from './LocaleProvider.svelte';
@@ -0,0 +1,7 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { TLocale } from '@soxa-ui/plugins';
3
+ export type TLocaleProviderProps = {
4
+ /** Тег для Intl и строки библиотеки (`ruRU`, `extendLocale(...)`). */
5
+ locale: TLocale;
6
+ children?: Snippet;
7
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,54 @@
1
+ <script lang="ts">
2
+ import { untrack, type Snippet } from 'svelte'
3
+ import { createAttachmentKey, type Attachment } from 'svelte/attachments'
4
+ import { TRoleIcon } from '../common/icon'
5
+ import RoleIcon from '../common/RoleIcon.svelte'
6
+ import type { TRootAttributes } from '../common/root'
7
+ import { rootStyle, toNodeAttributes } from './root-style.svelte'
8
+ import { isTagComponent } from './tag'
9
+
10
+ type TDynamicProps = {
11
+ /**
12
+ * Whether the root is mounted — `state.rendered` of the component. A root
13
+ * that a block of the template already mounts by its own condition (inside
14
+ * Teleport, the window of Table) passes `true`.
15
+ */
16
+ rendered: boolean | undefined
17
+ /** Name of an element, a Svelte component or a role icon mark (`roleIcon`). */
18
+ tag: string | object | undefined
19
+ /** Attributes of the root — `toRootProps` of the component. */
20
+ attributes: TRootAttributes
21
+ /** `binding.attachElement`; the wrapper of a root takes `consumerRef`, the root in it — `bindRef`. */
22
+ attach: Attachment<Element>
23
+ /**
24
+ * The markup of the component inside `<Dynamic>`: fixed for the instance,
25
+ * it is read once.
26
+ */
27
+ children?: Snippet
28
+ }
29
+
30
+ const { rendered, tag, attributes, attach, children }: TDynamicProps = $props()
31
+
32
+ // One per component: a new one on the same node would take other properties for its own
33
+ const style = { [createAttachmentKey()]: rootStyle(() => attributes.style) }
34
+ const node = $derived(toNodeAttributes(attributes, style))
35
+
36
+ // Svelte compiles the markup inside `<Dynamic>` to one function of the
37
+ // parent instance; read once, it is rendered by a call, not by a block
38
+ const content = untrack(() => children)
39
+ </script>
40
+
41
+ <!--
42
+ The root by `tag`, like `<component :is>` of Vue: `<svelte:element>` takes only a string, so
43
+ there are three branches. A component from `tag` has to put the attributes and attachments on
44
+ its root (`TTagComponent`). `rendered` is a condition of the same branches: one block per root,
45
+ not a block of every template around it.
46
+ -->
47
+ {#if rendered && typeof tag === 'string'}
48
+ <svelte:element this={tag} {...node} {@attach attach}>{@render content?.()}</svelte:element>
49
+ {:else if rendered && tag instanceof TRoleIcon}
50
+ <RoleIcon icon={tag} attributes={node} {attach} />
51
+ {:else if rendered && isTagComponent(tag)}
52
+ {@const Tag = tag}
53
+ <Tag {...node} {@attach attach}>{@render content?.()}</Tag>
54
+ {/if}
@@ -0,0 +1,25 @@
1
+ import { type Snippet } from 'svelte';
2
+ import { type Attachment } from 'svelte/attachments';
3
+ import type { TRootAttributes } from '../common/root';
4
+ type TDynamicProps = {
5
+ /**
6
+ * Whether the root is mounted — `state.rendered` of the component. A root
7
+ * that a block of the template already mounts by its own condition (inside
8
+ * Teleport, the window of Table) passes `true`.
9
+ */
10
+ rendered: boolean | undefined;
11
+ /** Name of an element, a Svelte component or a role icon mark (`roleIcon`). */
12
+ tag: string | object | undefined;
13
+ /** Attributes of the root — `toRootProps` of the component. */
14
+ attributes: TRootAttributes;
15
+ /** `binding.attachElement`; the wrapper of a root takes `consumerRef`, the root in it — `bindRef`. */
16
+ attach: Attachment<Element>;
17
+ /**
18
+ * The markup of the component inside `<Dynamic>`: fixed for the instance,
19
+ * it is read once.
20
+ */
21
+ children?: Snippet;
22
+ };
23
+ declare const Dynamic: import("svelte").Component<TDynamicProps, {}, "">;
24
+ type Dynamic = ReturnType<typeof Dynamic>;
25
+ export default Dynamic;
@@ -0,0 +1,96 @@
1
+ <script lang="ts">
2
+ import { getAllContexts, mount, unmount, untrack } from 'svelte'
3
+ import Teleport from './Teleport.svelte'
4
+ import type { TTeleportProps } from './types'
5
+
6
+ const props: TTeleportProps = $props()
7
+
8
+ /** Фаза только растёт: нет → на месте → в обёртке. */
9
+ type TPhase = 'none' | 'placed' | 'wrapped'
10
+
11
+ // Корень в обёртке получает контексты места: локаль и лифт — как у триггера
12
+ const context = getAllContexts()
13
+
14
+ // Первая отрисовка одна на сервере и в браузере
15
+ let phase: TPhase = $state(untrack(() => props.disabled) ? 'placed' : 'none')
16
+
17
+ /** Одна на всё монтирование, заводится в браузере, когда впервые нужна. */
18
+ let wrapper: HTMLDivElement | null = null
19
+
20
+ function wrapperNode(): HTMLDivElement {
21
+ if (!wrapper) {
22
+ wrapper = document.createElement('div')
23
+ wrapper.style.display = 'contents'
24
+ }
25
+
26
+ return wrapper
27
+ }
28
+
29
+ function targetOf(selector: string | undefined): Element | null {
30
+ return selector ? document.querySelector(selector) : null
31
+ }
32
+
33
+ /** Вынуть обёртку из `parent`, если она ещё там. */
34
+ function takeFrom(parent: Element): void {
35
+ if (wrapper && wrapper.parentNode === parent) wrapper.remove()
36
+ }
37
+
38
+ // До отрисовки: содержимое на месте уходит раньше, чем смонтируется корень
39
+ $effect.pre(() => {
40
+ if (phase === 'wrapped') return
41
+
42
+ const { to, disabled } = props
43
+
44
+ if (phase === 'placed' ? !disabled : disabled || targetOf(to) !== null) {
45
+ phase = 'wrapped'
46
+ }
47
+ })
48
+
49
+ // С `disabled` обёртку держит узел места; цели нет — она вне документа
50
+ $effect(() => {
51
+ if (phase !== 'wrapped' || props.disabled) return
52
+
53
+ const target = targetOf(props.to)
54
+
55
+ if (!target) return
56
+
57
+ target.appendChild(wrapperNode())
58
+
59
+ return () => takeFrom(target)
60
+ })
61
+
62
+ // Корень — в обёртку, один раз (заново — на смену `children`): тот же
63
+ // Teleport, выключенный с первой отрисовки, рисует содержимое на месте
64
+ $effect(() => {
65
+ if (phase !== 'wrapped') return
66
+
67
+ const content = mount(Teleport, {
68
+ target: wrapperNode(),
69
+ props: { to: undefined, disabled: true, children: props.children },
70
+ context,
71
+ })
72
+
73
+ return () => {
74
+ void unmount(content)
75
+ }
76
+ })
77
+
78
+ /** Узел места: обёртку — в него, при снятии — вон. */
79
+ function place(node: Element): () => void {
80
+ node.appendChild(wrapperNode())
81
+
82
+ return () => takeFrom(node)
83
+ }
84
+ </script>
85
+
86
+ <!--
87
+ Портал, как `<teleport :to>` у Vue: содержимое — отдельный корень (`mount`)
88
+ в обёртке `display: contents`, а Teleport двигает саму обёртку — в цель, в
89
+ узел места или вон из документа, — и набранное в панели остаётся.
90
+ AGENTS.md (Svelte), «Teleport».
91
+ -->
92
+ {#if phase === 'placed'}
93
+ {@render props.children?.()}
94
+ {:else if phase === 'wrapped' && props.disabled}
95
+ <div style="display: contents" {@attach place}></div>
96
+ {/if}
@@ -0,0 +1,5 @@
1
+ import Teleport from './Teleport.svelte';
2
+ import type { TTeleportProps } from './types';
3
+ declare const Teleport: import("svelte").Component<TTeleportProps, {}, "">;
4
+ type Teleport = ReturnType<typeof Teleport>;
5
+ export default Teleport;
@@ -0,0 +1,28 @@
1
+ <script lang="ts">
2
+ import { BROWSER } from 'esm-env'
3
+ import type { Attachment } from 'svelte/attachments'
4
+ import type { HTMLAttributes } from 'svelte/elements'
5
+
6
+ type TTextSpanProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
7
+ /** Текст узла целиком; `undefined` — пусто. */
8
+ text: string | undefined
9
+ }
10
+
11
+ const { text, ...attributes }: TTextSpanProps = $props()
12
+
13
+ /** Пишет текст, только когда он разошёлся с узлом; перечитывает на смену. */
14
+ const write: Attachment<HTMLSpanElement> = (node) => {
15
+ const content = text ?? ''
16
+
17
+ if (node.textContent !== content) node.textContent = content
18
+ }
19
+ </script>
20
+
21
+ <!--
22
+ `span`, чей текст пишет только он сам, `textContent`, — часть поля даты:
23
+ её правит браузер, и текстовый узел Svelte оказался бы вне документа.
24
+ На сервере текст — содержимое. AGENTS.md (Svelte), «Текст поля».
25
+ -->
26
+ {#if BROWSER}<span {...attributes} {@attach write}></span>{:else}<span {...attributes}
27
+ >{text}</span
28
+ >{/if}
@@ -0,0 +1,8 @@
1
+ import type { HTMLAttributes } from 'svelte/elements';
2
+ type TTextSpanProps = Omit<HTMLAttributes<HTMLSpanElement>, 'children'> & {
3
+ /** Текст узла целиком; `undefined` — пусто. */
4
+ text: string | undefined;
5
+ };
6
+ declare const TextSpan: import("svelte").Component<TTextSpanProps, {}, "">;
7
+ type TextSpan = ReturnType<typeof TextSpan>;
8
+ export default TextSpan;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Текст поля на узле — свойством и только когда он разошёлся с узлом, как
3
+ * `:value` у Vue: в спреде Svelte писал бы `value` на каждую смену, и запись
4
+ * снимала бы с поля пометку «изменено пользователем». На сервере текст —
5
+ * атрибутом `value`, у `<textarea>` — содержимым. AGENTS.md (Svelte),
6
+ * «Текст поля».
7
+ */
8
+ import { type Attachment } from 'svelte/attachments';
9
+ /** Спредом на `<input>`: в браузере — attachment, на сервере — `value`. */
10
+ export type TFieldText = {
11
+ readonly [key: symbol]: Attachment<HTMLInputElement>;
12
+ } | {
13
+ readonly value: string | undefined;
14
+ };
15
+ export type TTextareaText = {
16
+ /** Спредом на поле, последним: в браузере — attachment, на сервере — ничего. */
17
+ readonly attributes: {
18
+ readonly [key: symbol]: Attachment<HTMLTextAreaElement>;
19
+ };
20
+ /** Атрибутом `value` в разметке: на сервере — текст, в браузере — `undefined`. */
21
+ readonly value: string | undefined;
22
+ };
23
+ /** Один раз на компонент: тот же ключ и та же функция узел не переставляют. */
24
+ export declare function fieldText(getText: () => string | undefined): TFieldText;
25
+ /**
26
+ * У `<textarea>` содержимым сервер Svelte делает только `value`, написанный в
27
+ * разметке, а не в спреде, поэтому текст — отдельной частью.
28
+ */
29
+ export declare function textareaText(getText: () => string | undefined): TTextareaText;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Текст поля на узле — свойством и только когда он разошёлся с узлом, как
3
+ * `:value` у Vue: в спреде Svelte писал бы `value` на каждую смену, и запись
4
+ * снимала бы с поля пометку «изменено пользователем». На сервере текст —
5
+ * атрибутом `value`, у `<textarea>` — содержимым. AGENTS.md (Svelte),
6
+ * «Текст поля».
7
+ */
8
+ import { BROWSER } from 'esm-env';
9
+ import { createAttachmentKey } from 'svelte/attachments';
10
+ function textAttachment(getText) {
11
+ return (node) => {
12
+ const text = getText() ?? '';
13
+ if (node.value !== text)
14
+ node.value = text;
15
+ };
16
+ }
17
+ /** Один раз на компонент: тот же ключ и та же функция узел не переставляют. */
18
+ export function fieldText(getText) {
19
+ if (!BROWSER) {
20
+ return {
21
+ get value() {
22
+ return getText();
23
+ },
24
+ };
25
+ }
26
+ return { [createAttachmentKey()]: textAttachment(getText) };
27
+ }
28
+ /**
29
+ * У `<textarea>` содержимым сервер Svelte делает только `value`, написанный в
30
+ * разметке, а не в спреде, поэтому текст — отдельной частью.
31
+ */
32
+ export function textareaText(getText) {
33
+ if (!BROWSER) {
34
+ return {
35
+ attributes: {},
36
+ get value() {
37
+ return getText();
38
+ },
39
+ };
40
+ }
41
+ return {
42
+ attributes: { [createAttachmentKey()]: textAttachment(getText) },
43
+ value: undefined,
44
+ };
45
+ }
@@ -0,0 +1,8 @@
1
+ export { useAdapter, useCollectionAdapter, joinBindings, type TBinding, type TCollectionBinding, type TRootReceiver, } from './useAdapter.svelte';
2
+ export { default as Dynamic } from './Dynamic.svelte';
3
+ export { default as Teleport } from './Teleport.svelte';
4
+ export { default as TextSpan } from './TextSpan.svelte';
5
+ export { isTagComponent, type TTagComponent } from './tag';
6
+ export { runsOf, type TRun } from './runs';
7
+ export { fieldText, textareaText, type TFieldText, type TTextareaText } from './field-text';
8
+ export type { TTeleportProps } from './types';
@@ -0,0 +1,7 @@
1
+ export { useAdapter, useCollectionAdapter, joinBindings, } from './useAdapter.svelte';
2
+ export { default as Dynamic } from './Dynamic.svelte';
3
+ export { default as Teleport } from './Teleport.svelte';
4
+ export { default as TextSpan } from './TextSpan.svelte';
5
+ export { isTagComponent } from './tag';
6
+ export { runsOf } from './runs';
7
+ export { fieldText, textareaText } from './field-text';
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Стиль корня на узле — по свойствам, как у Vue и React: атрибут `style`
3
+ * Svelte пишет целиком и стирал бы то, что плагины ставят на узел сами.
4
+ * В браузере его ставит attachment, на сервере — строка атрибута (`BROWSER`
5
+ * из `esm-env`). AGENTS.md (Svelte), «Стиль корня».
6
+ */
7
+ import type { Attachment } from 'svelte/attachments';
8
+ import { type TRootAttributes, type TRootNodeAttributes, type TRootStyleLayers } from '../common/root';
9
+ /** Attachment стиля корня под своим ключом (`createAttachmentKey`). */
10
+ export type TRootStyleAttachment = {
11
+ readonly [key: symbol]: Attachment<Element>;
12
+ };
13
+ /**
14
+ * Атрибуты узла корня. В браузере `style` нет: его ставит attachment, первым
15
+ * среди attachment-ов спреда — раньше потребительских.
16
+ */
17
+ export declare function toNodeAttributes(attributes: TRootAttributes, style: TRootStyleAttachment): TRootNodeAttributes;
18
+ /**
19
+ * Sets the properties of the layers as a difference with what it set itself;
20
+ * foreign ones it leaves alone. Created once per component: a new one on the
21
+ * same node would take foreign properties for its own. What stands on the node
22
+ * from the start is the server's style on hydration.
23
+ *
24
+ * One effect: the consumer's style is parsed again only when its string
25
+ * changed — two `$derived` for that were a reaction graph on every root.
26
+ */
27
+ export declare function rootStyle(getStyle: () => TRootStyleLayers): Attachment<Element>;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Стиль корня на узле — по свойствам, как у Vue и React: атрибут `style`
3
+ * Svelte пишет целиком и стирал бы то, что плагины ставят на узел сами.
4
+ * В браузере его ставит attachment, на сервере — строка атрибута (`BROWSER`
5
+ * из `esm-env`). AGENTS.md (Svelte), «Стиль корня».
6
+ */
7
+ import { BROWSER } from 'esm-env';
8
+ import { toStyleAttribute, } from '../common/root';
9
+ const EMPTY = new Map();
10
+ /**
11
+ * Атрибуты узла корня. В браузере `style` нет: его ставит attachment, первым
12
+ * среди attachment-ов спреда — раньше потребительских.
13
+ */
14
+ export function toNodeAttributes(attributes, style) {
15
+ const { style: layers, ...node } = attributes;
16
+ return BROWSER ? { ...style, ...node } : { ...node, style: toStyleAttribute(layers) };
17
+ }
18
+ /**
19
+ * Sets the properties of the layers as a difference with what it set itself;
20
+ * foreign ones it leaves alone. Created once per component: a new one on the
21
+ * same node would take foreign properties for its own. What stands on the node
22
+ * from the start is the server's style on hydration.
23
+ *
24
+ * One effect: the consumer's style is parsed again only when its string
25
+ * changed — two `$derived` for that were a reaction graph on every root.
26
+ */
27
+ export function rootStyle(getStyle) {
28
+ return (node) => {
29
+ if (!hasInlineStyle(node))
30
+ return;
31
+ const { style } = node;
32
+ let applied = readDeclarations(style);
33
+ let forward;
34
+ let parsed = EMPTY;
35
+ $effect(() => {
36
+ const layers = getStyle();
37
+ if (layers.forward !== forward) {
38
+ forward = layers.forward;
39
+ parsed = parseStyle(forward, node.ownerDocument);
40
+ }
41
+ const next = toDeclarations(layers, parsed);
42
+ applyDeclarations(style, applied, next);
43
+ applied = next;
44
+ });
45
+ };
46
+ }
47
+ /** Узел со своим инлайновым стилем — HTML, SVG и MathML. */
48
+ function hasInlineStyle(node) {
49
+ return 'style' in node;
50
+ }
51
+ /** The properties of an inline style; none — the shared empty map. */
52
+ function readDeclarations(style) {
53
+ if (style.length === 0)
54
+ return EMPTY;
55
+ const declarations = new Map();
56
+ for (let index = 0; index < style.length; index++) {
57
+ const name = style.item(index);
58
+ declarations.set(name, {
59
+ value: style.getPropertyValue(name),
60
+ priority: style.getPropertyPriority(name),
61
+ });
62
+ }
63
+ return declarations;
64
+ }
65
+ /** Стиль потребителя свойствами — разбирает браузер, отсоединённым узлом. */
66
+ function parseStyle(text, document) {
67
+ if (!text)
68
+ return EMPTY;
69
+ const probe = document.createElement('div');
70
+ probe.style.cssText = text;
71
+ return readDeclarations(probe.style);
72
+ }
73
+ /**
74
+ * The properties of the layers from the bottom up: of the same name the upper
75
+ * one acts. No properties — the shared empty map: the root keeps the last
76
+ * declarations, and most roots have none.
77
+ */
78
+ function toDeclarations(layers, forward) {
79
+ const declarations = new Map();
80
+ for (const [name, value] of Object.entries(layers.below)) {
81
+ declarations.set(name, { value, priority: '' });
82
+ }
83
+ for (const [name, declaration] of forward)
84
+ declarations.set(name, declaration);
85
+ for (const [name, value] of Object.entries(layers.above)) {
86
+ declarations.set(name, { value, priority: '' });
87
+ }
88
+ return declarations.size > 0 ? declarations : EMPTY;
89
+ }
90
+ /** Пропавшие свойства — снять, новые и сменившиеся — поставить; остальное не трогать. */
91
+ function applyDeclarations(style, previous, next) {
92
+ for (const name of previous.keys()) {
93
+ if (!next.has(name))
94
+ style.removeProperty(name);
95
+ }
96
+ for (const [name, declaration] of next) {
97
+ if (!isSame(previous.get(name), declaration)) {
98
+ style.setProperty(name, declaration.value, declaration.priority);
99
+ }
100
+ }
101
+ }
102
+ /** То же значение с тем же приоритетом. */
103
+ function isSame(previous, next) {
104
+ return previous?.value === next.value && previous.priority === next.priority;
105
+ }
@@ -0,0 +1,13 @@
1
+ /** Серия подряд идущих элементов списка с одним значением признака. */
2
+ export type TRun<T, TValue> = {
3
+ readonly value: TValue;
4
+ readonly items: readonly T[];
5
+ };
6
+ /**
7
+ * Список сериями подряд идущих элементов с одним значением признака `key`:
8
+ * `{#each runsOf(cells, 'rowHeader') as run}`, в серии — ветка по `run.value` и
9
+ * петля по `run.items`. Ветка Svelte — блок с менеджером веток, эффектами и
10
+ * якорем, и ветка по признаку в каждом элементе стоила бы их на элемент, а
11
+ * сериями — на серию. Тот же приём, что пайп `soRuns` адаптера Angular.
12
+ */
13
+ export declare function runsOf<T, K extends keyof T>(items: readonly T[], key: K): TRun<T, T[K]>[];
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Список сериями подряд идущих элементов с одним значением признака `key`:
3
+ * `{#each runsOf(cells, 'rowHeader') as run}`, в серии — ветка по `run.value` и
4
+ * петля по `run.items`. Ветка Svelte — блок с менеджером веток, эффектами и
5
+ * якорем, и ветка по признаку в каждом элементе стоила бы их на элемент, а
6
+ * сериями — на серию. Тот же приём, что пайп `soRuns` адаптера Angular.
7
+ */
8
+ export function runsOf(items, key) {
9
+ const runs = [];
10
+ let run;
11
+ for (const item of items) {
12
+ const value = item[key];
13
+ if (!run || !Object.is(run.value, value)) {
14
+ run = { value, items: [] };
15
+ runs.push(run);
16
+ }
17
+ run.items.push(item);
18
+ }
19
+ return runs;
20
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Состояние двух контекстов — одним видом: прокси, которое читает свойство у
3
+ * состояния на каждое чтение, а не спред, который прочёл бы их один раз при
4
+ * сборке. AGENTS.md (Svelte), «Коллекция: два контекста — одна связка».
5
+ */
6
+ /** Одноимённое свойство берётся из верхнего состояния. */
7
+ export type TJoinedState<TBelow extends object, TAbove extends object> = Omit<TBelow, keyof TAbove> & TAbove;
8
+ export declare function joinState<TBelow extends object, TAbove extends object>(below: TBelow, above: TAbove): TJoinedState<TBelow, TAbove>;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Состояние двух контекстов — одним видом: прокси, которое читает свойство у
3
+ * состояния на каждое чтение, а не спред, который прочёл бы их один раз при
4
+ * сборке. AGENTS.md (Svelte), «Коллекция: два контекста — одна связка».
5
+ */
6
+ /** Состояние, у которого свойство берётся: верхнее, если оно у него есть. */
7
+ function sourceOf({ below, above }, key) {
8
+ return Reflect.has(above, key) ? above : below;
9
+ }
10
+ /**
11
+ * Обработчик один на все виды: геттер на каждое имя обоих состояний —
12
+ * замыкание, его область и пара аксессоров — у строки таблицы стоил килобайты
13
+ * (benchmarks/table/svelte.md).
14
+ */
15
+ const JOINED = {
16
+ get: (states, key) => Reflect.get(sourceOf(states, key), key),
17
+ has: ({ below, above }, key) => Reflect.has(above, key) || Reflect.has(below, key),
18
+ ownKeys: ({ below, above }) => [
19
+ ...new Set([...Reflect.ownKeys(below), ...Reflect.ownKeys(above)]),
20
+ ],
21
+ getOwnPropertyDescriptor: (states, key) => Reflect.getOwnPropertyDescriptor(sourceOf(states, key), key),
22
+ };
23
+ export function joinState(below, above) {
24
+ const joined = new Proxy({ below, above }, JOINED);
25
+ // Граница рантайма и типа, как `toInstanceState`: прокси отдаёт каждое
26
+ // свойство обоих состояний, но связь по именам TypeScript не видит
27
+ return joined;
28
+ }
@@ -0,0 +1,11 @@
1
+ import type { Component, Snippet } from 'svelte';
2
+ import type { TRootNodeAttributes } from '../common/root';
3
+ /**
4
+ * Компонент в `tag`: атрибуты корня — пропсами, вместе с attachment-ами
5
+ * адаптера под ключами-символами; он кладёт их спредом на свой корень.
6
+ */
7
+ export type TTagComponent = Component<TRootNodeAttributes & {
8
+ children?: Snippet;
9
+ }>;
10
+ /** Компонент Svelte 5 — функция; других функций в `tag` ядро не ждёт. */
11
+ export declare function isTagComponent(tag: unknown): tag is TTagComponent;
@@ -0,0 +1,4 @@
1
+ /** Компонент Svelte 5 — функция; других функций в `tag` ядро не ждёт. */
2
+ export function isTagComponent(tag) {
3
+ return typeof tag === 'function';
4
+ }