@dvcol/neo-svelte 1.1.2 → 1.2.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 (466) hide show
  1. package/CHANGELOG.md +90 -0
  2. package/README.md +15 -7
  3. package/dist/badge/neo-badge.model.d.ts +1 -1
  4. package/dist/buttons/NeoArrowButton.svelte +4 -4
  5. package/dist/buttons/NeoButton.svelte +110 -24
  6. package/dist/buttons/NeoButtonGroup.svelte +18 -9
  7. package/dist/buttons/NeoButtonGroup.svelte.d.ts +1 -1
  8. package/dist/buttons/NeoButtonRow.svelte +137 -0
  9. package/dist/buttons/NeoButtonRow.svelte.d.ts +4 -0
  10. package/dist/buttons/NeoCancelButton.svelte +2 -2
  11. package/dist/buttons/NeoCheckboxButton.svelte +6 -4
  12. package/dist/buttons/NeoCheckboxButton.svelte.d.ts +1 -1
  13. package/dist/buttons/NeoCloseButton.svelte +37 -6
  14. package/dist/buttons/NeoCloseButton.svelte.d.ts +2 -2
  15. package/dist/buttons/NeoRadioButton.svelte +6 -4
  16. package/dist/buttons/NeoSwitchButton.svelte +5 -3
  17. package/dist/buttons/index.d.ts +2 -0
  18. package/dist/buttons/index.js +1 -0
  19. package/dist/buttons/neo-arrow-button.model.d.ts +3 -3
  20. package/dist/buttons/neo-button-group.model.d.ts +12 -3
  21. package/dist/buttons/neo-button-row.model.d.ts +33 -0
  22. package/dist/buttons/neo-button-row.model.js +1 -0
  23. package/dist/buttons/neo-button.model.d.ts +11 -4
  24. package/dist/buttons/neo-close-button.model.d.ts +13 -0
  25. package/dist/buttons/neo-close-button.model.js +5 -0
  26. package/dist/buttons/neo-icon-button.model.d.ts +2 -2
  27. package/dist/cards/NeoCard.svelte +22 -20
  28. package/dist/cards/neo-card.model.d.ts +3 -2
  29. package/dist/collapse/NeoAccordion.svelte +3 -1
  30. package/dist/collapse/NeoCollapse.svelte +2 -2
  31. package/dist/collapse/NeoCollapse.svelte.d.ts +3 -1
  32. package/dist/collapse/neo-accordion.model.d.ts +2 -1
  33. package/dist/containers/NeoTransitionContainer.svelte +10 -0
  34. package/dist/containers/neo-transition-container.model.d.ts +9 -0
  35. package/dist/cursor/NeoCursor.svelte.d.ts +1 -1
  36. package/dist/divider/NeoDivider.svelte +4 -2
  37. package/dist/divider/neo-divider.model.d.ts +2 -1
  38. package/dist/floating/common/NeoConfirm.svelte +5 -5
  39. package/dist/floating/common/NeoConfirm.svelte.d.ts +1 -1
  40. package/dist/floating/common/NeoFloatingStepper.svelte +1 -1
  41. package/dist/floating/common/NeoFloatingStepper.svelte.d.ts +1 -1
  42. package/dist/floating/common/NeoHandle.svelte +2 -1
  43. package/dist/floating/common/neo-confirm.model.d.ts +2 -1
  44. package/dist/floating/common/neo-floating-stepper.model.d.ts +1 -1
  45. package/dist/floating/common/neo-placement.model.d.ts +56 -4
  46. package/dist/floating/common/neo-placement.model.js +22 -0
  47. package/dist/floating/dialog/NeoDialog.svelte +23 -21
  48. package/dist/floating/dialog/NeoDialog.svelte.d.ts +1 -1
  49. package/dist/floating/dialog/NeoDialogConfirm.svelte.d.ts +1 -1
  50. package/dist/floating/dialog/NeoDialogStepper.svelte.d.ts +1 -1
  51. package/dist/floating/dialog/neo-dialog-confirm.model.d.ts +5 -5
  52. package/dist/floating/dialog/neo-dialog-stepper.model.d.ts +4 -4
  53. package/dist/floating/dialog/neo-dialog.model.d.ts +2 -1
  54. package/dist/floating/dialog/use-movable.svelte.js +2 -1
  55. package/dist/floating/drawer/NeoDrawer.svelte +9 -9
  56. package/dist/floating/drawer/NeoDrawer.svelte.d.ts +2 -2
  57. package/dist/floating/drawer/NeoDrawerConfirm.svelte +2 -4
  58. package/dist/floating/drawer/NeoDrawerConfirm.svelte.d.ts +2 -2
  59. package/dist/floating/drawer/NeoDrawerStepper.svelte +2 -4
  60. package/dist/floating/drawer/NeoDrawerStepper.svelte.d.ts +2 -2
  61. package/dist/floating/drawer/neo-drawer.model.d.ts +6 -0
  62. package/dist/floating/drawer/neo-drawer.model.js +1 -0
  63. package/dist/floating/index.d.ts +1 -0
  64. package/dist/floating/index.js +1 -0
  65. package/dist/floating/menu/NeoMenu.svelte +55 -17
  66. package/dist/floating/menu/NeoMenu.svelte.d.ts +1 -1
  67. package/dist/floating/menu/NeoMenuList.svelte +60 -67
  68. package/dist/floating/menu/NeoMenuListItem.svelte +157 -24
  69. package/dist/floating/menu/NeoMenuListItem.svelte.d.ts +1 -0
  70. package/dist/floating/menu/index.d.ts +1 -0
  71. package/dist/floating/menu/neo-menu-list-item.model.d.ts +48 -11
  72. package/dist/floating/menu/neo-menu-list.model.d.ts +24 -4
  73. package/dist/floating/menu/neo-menu.model.d.ts +3 -3
  74. package/dist/floating/notification/NeoNotificationItem.svelte +459 -0
  75. package/dist/floating/notification/NeoNotificationItem.svelte.d.ts +4 -0
  76. package/dist/floating/notification/NeoNotificationProvider.svelte +49 -0
  77. package/dist/floating/notification/NeoNotificationProvider.svelte.d.ts +4 -0
  78. package/dist/floating/notification/NeoNotificationStack.svelte +345 -0
  79. package/dist/floating/notification/NeoNotificationStack.svelte.d.ts +16 -0
  80. package/dist/floating/notification/NeoSimpleNotification.svelte +304 -0
  81. package/dist/floating/notification/NeoSimpleNotification.svelte.d.ts +4 -0
  82. package/dist/floating/notification/index.d.ts +8 -0
  83. package/dist/floating/notification/index.js +7 -0
  84. package/dist/floating/notification/neo-notification-item.model.d.ts +54 -0
  85. package/dist/floating/notification/neo-notification-item.model.js +1 -0
  86. package/dist/floating/notification/neo-notification-provider.model.d.ts +78 -0
  87. package/dist/floating/notification/neo-notification-provider.model.js +18 -0
  88. package/dist/floating/notification/neo-notification-stack.model.d.ts +48 -0
  89. package/dist/floating/notification/neo-notification-stack.model.js +1 -0
  90. package/dist/floating/notification/neo-notification.model.d.ts +271 -0
  91. package/dist/floating/notification/neo-notification.model.js +70 -0
  92. package/dist/floating/notification/neo-simple-notification.model.d.ts +14 -0
  93. package/dist/floating/notification/neo-simple-notification.model.js +1 -0
  94. package/dist/floating/portal/NeoPortal.svelte +11 -8
  95. package/dist/floating/portal/NeoPortalTarget.svelte +7 -0
  96. package/dist/floating/portal/NeoPortalTarget.svelte.d.ts +7 -0
  97. package/dist/floating/portal/neo-portal-context.svelte.d.ts +1 -1
  98. package/dist/floating/portal/neo-portal.model.d.ts +4 -5
  99. package/dist/floating/tooltips/NeoPopConfirm.svelte +2 -0
  100. package/dist/floating/tooltips/NeoPopConfirm.svelte.d.ts +1 -1
  101. package/dist/floating/tooltips/NeoPopSelect.svelte +5 -3
  102. package/dist/floating/tooltips/NeoPopSelect.svelte.d.ts +1 -1
  103. package/dist/floating/tooltips/NeoPopStepper.svelte +2 -0
  104. package/dist/floating/tooltips/NeoPopStepper.svelte.d.ts +1 -1
  105. package/dist/floating/tooltips/NeoTooltip.svelte +43 -23
  106. package/dist/floating/tooltips/NeoTooltip.svelte.d.ts +5 -1
  107. package/dist/floating/tooltips/neo-pop-confirm.model.d.ts +1 -1
  108. package/dist/floating/tooltips/neo-pop-select.model.d.ts +1 -3
  109. package/dist/floating/tooltips/neo-pop-stepper.model.d.ts +2 -2
  110. package/dist/floating/tooltips/neo-tooltip.model.d.ts +7 -2
  111. package/dist/form/NeoForm.svelte +1 -1
  112. package/dist/form/NeoForm.svelte.d.ts +3 -1
  113. package/dist/form/neo-form-context.svelte.d.ts +2 -0
  114. package/dist/icons/{IconAccount.svelte → NeoIconAccount.svelte} +2 -2
  115. package/dist/icons/NeoIconAccount.svelte.d.ts +4 -0
  116. package/dist/icons/{IconAdd.svelte → NeoIconAdd.svelte} +11 -6
  117. package/dist/icons/NeoIconAdd.svelte.d.ts +4 -0
  118. package/dist/icons/{IconAddress.svelte → NeoIconAddress.svelte} +2 -2
  119. package/dist/icons/NeoIconAddress.svelte.d.ts +4 -0
  120. package/dist/icons/{IconAlert.svelte → NeoIconAlert.svelte} +11 -6
  121. package/dist/icons/NeoIconAlert.svelte.d.ts +4 -0
  122. package/dist/icons/{IconAlignBottom.svelte → NeoIconAlignBottom.svelte} +11 -6
  123. package/dist/icons/NeoIconAlignBottom.svelte.d.ts +4 -0
  124. package/dist/icons/{IconAlignMiddle.svelte → NeoIconAlignMiddle.svelte} +11 -6
  125. package/dist/icons/NeoIconAlignMiddle.svelte.d.ts +4 -0
  126. package/dist/icons/{IconAlignTop.svelte → NeoIconAlignTop.svelte} +11 -6
  127. package/dist/icons/NeoIconAlignTop.svelte.d.ts +4 -0
  128. package/dist/icons/{IconArrow.svelte → NeoIconArrow.svelte} +9 -9
  129. package/dist/icons/NeoIconArrow.svelte.d.ts +4 -0
  130. package/dist/icons/NeoIconAudio.svelte +83 -0
  131. package/dist/icons/NeoIconAudio.svelte.d.ts +4 -0
  132. package/dist/icons/NeoIconBouncingDots.svelte +82 -0
  133. package/dist/icons/NeoIconBouncingDots.svelte.d.ts +4 -0
  134. package/dist/icons/{IconCalendar.svelte → NeoIconCalendar.svelte} +11 -6
  135. package/dist/icons/NeoIconCalendar.svelte.d.ts +4 -0
  136. package/dist/icons/{IconCancel.svelte → NeoIconCancel.svelte} +2 -2
  137. package/dist/icons/NeoIconCancel.svelte.d.ts +4 -0
  138. package/dist/icons/{IconCheckbox.svelte → NeoIconCheckbox.svelte} +2 -2
  139. package/dist/icons/NeoIconCheckbox.svelte.d.ts +4 -0
  140. package/dist/icons/NeoIconCircle.svelte +18 -0
  141. package/dist/icons/NeoIconCircle.svelte.d.ts +4 -0
  142. package/dist/icons/{IconCircleLoading.svelte → NeoIconCircleLoading.svelte} +2 -2
  143. package/dist/icons/{IconCircleLoading.svelte.d.ts → NeoIconCircleLoading.svelte.d.ts} +55 -39
  144. package/dist/icons/{IconClear.svelte → NeoIconClear.svelte} +11 -6
  145. package/dist/icons/NeoIconClear.svelte.d.ts +4 -0
  146. package/dist/icons/{IconClose.svelte → NeoIconClose.svelte} +2 -2
  147. package/dist/icons/NeoIconClose.svelte.d.ts +4 -0
  148. package/dist/icons/NeoIconCog.svelte +36 -0
  149. package/dist/icons/NeoIconCog.svelte.d.ts +4 -0
  150. package/dist/icons/{IconConfirm.svelte → NeoIconConfirm.svelte} +11 -6
  151. package/dist/icons/NeoIconConfirm.svelte.d.ts +4 -0
  152. package/dist/icons/NeoIconCube.svelte +31 -0
  153. package/dist/icons/NeoIconCube.svelte.d.ts +4 -0
  154. package/dist/icons/{IconDoubleChevron.svelte → NeoIconDoubleChevron.svelte} +11 -5
  155. package/dist/icons/NeoIconDoubleChevron.svelte.d.ts +4 -0
  156. package/dist/icons/{IconDoubleChevronLeft.svelte → NeoIconDoubleChevronLeft.svelte} +11 -6
  157. package/dist/icons/NeoIconDoubleChevronLeft.svelte.d.ts +4 -0
  158. package/dist/icons/{IconDoubleChevronRight.svelte → NeoIconDoubleChevronRight.svelte} +11 -6
  159. package/dist/icons/NeoIconDoubleChevronRight.svelte.d.ts +4 -0
  160. package/dist/icons/{IconDownload.svelte → NeoIconDownload.svelte} +11 -6
  161. package/dist/icons/NeoIconDownload.svelte.d.ts +4 -0
  162. package/dist/icons/NeoIconEmpty.svelte +26 -0
  163. package/dist/icons/NeoIconEmpty.svelte.d.ts +4 -0
  164. package/dist/icons/NeoIconError.svelte +30 -0
  165. package/dist/icons/NeoIconError.svelte.d.ts +4 -0
  166. package/dist/icons/{IconFileUpload.svelte → NeoIconFileUpload.svelte} +11 -6
  167. package/dist/icons/NeoIconFileUpload.svelte.d.ts +4 -0
  168. package/dist/icons/NeoIconFire.svelte +33 -0
  169. package/dist/icons/NeoIconFire.svelte.d.ts +4 -0
  170. package/dist/icons/{IconGithub.svelte → NeoIconGithub.svelte} +11 -6
  171. package/dist/icons/NeoIconGithub.svelte.d.ts +4 -0
  172. package/dist/icons/NeoIconImage.svelte +39 -0
  173. package/dist/icons/NeoIconImage.svelte.d.ts +4 -0
  174. package/dist/icons/NeoIconInfo.svelte +30 -0
  175. package/dist/icons/NeoIconInfo.svelte.d.ts +4 -0
  176. package/dist/icons/{IconList.svelte → NeoIconList.svelte} +11 -6
  177. package/dist/icons/NeoIconList.svelte.d.ts +4 -0
  178. package/dist/icons/{IconListSmall.svelte → NeoIconListSmall.svelte} +2 -2
  179. package/dist/icons/NeoIconListSmall.svelte.d.ts +4 -0
  180. package/dist/icons/{IconLoadingMatrix.svelte → NeoIconLoadingMatrix.svelte} +2 -2
  181. package/dist/icons/NeoIconLoadingMatrix.svelte.d.ts +4 -0
  182. package/dist/icons/{IconMail.svelte → NeoIconMail.svelte} +11 -6
  183. package/dist/icons/NeoIconMail.svelte.d.ts +4 -0
  184. package/dist/icons/{IconMinus.svelte → NeoIconMinus.svelte} +11 -6
  185. package/dist/icons/NeoIconMinus.svelte.d.ts +4 -0
  186. package/dist/icons/{IconPaint.svelte → NeoIconPaint.svelte} +11 -6
  187. package/dist/icons/NeoIconPaint.svelte.d.ts +4 -0
  188. package/dist/icons/{IconPencil.svelte → NeoIconPencil.svelte} +11 -6
  189. package/dist/icons/NeoIconPencil.svelte.d.ts +4 -0
  190. package/dist/icons/{IconPlayPause.svelte → NeoIconPlayPause.svelte} +2 -2
  191. package/dist/icons/NeoIconPlayPause.svelte.d.ts +4 -0
  192. package/dist/icons/{IconQuestionMark.svelte → NeoIconQuestionMark.svelte} +11 -6
  193. package/dist/icons/NeoIconQuestionMark.svelte.d.ts +4 -0
  194. package/dist/icons/{IconRadio.svelte → NeoIconRadio.svelte} +2 -2
  195. package/dist/icons/NeoIconRadio.svelte.d.ts +4 -0
  196. package/dist/icons/NeoIconRefresh.svelte +38 -0
  197. package/dist/icons/NeoIconRefresh.svelte.d.ts +4 -0
  198. package/dist/icons/NeoIconRestore.svelte +20 -0
  199. package/dist/icons/NeoIconRestore.svelte.d.ts +4 -0
  200. package/dist/icons/NeoIconSave.svelte +35 -0
  201. package/dist/icons/NeoIconSave.svelte.d.ts +4 -0
  202. package/dist/icons/NeoIconSaveOff.svelte +42 -0
  203. package/dist/icons/NeoIconSaveOff.svelte.d.ts +4 -0
  204. package/dist/icons/{IconSearch.svelte → NeoIconSearch.svelte} +11 -6
  205. package/dist/icons/NeoIconSearch.svelte.d.ts +4 -0
  206. package/dist/icons/NeoIconSuccess.svelte +26 -0
  207. package/dist/icons/NeoIconSuccess.svelte.d.ts +4 -0
  208. package/dist/icons/{IconSun.svelte → NeoIconSun.svelte} +11 -6
  209. package/dist/icons/NeoIconSun.svelte.d.ts +4 -0
  210. package/dist/icons/{IconSunMoon.svelte → NeoIconSunMoon.svelte} +11 -64
  211. package/dist/icons/NeoIconSunMoon.svelte.d.ts +4 -0
  212. package/dist/icons/{IconTextHighlight.svelte → NeoIconTextHighlight.svelte} +11 -6
  213. package/dist/icons/NeoIconTextHighlight.svelte.d.ts +4 -0
  214. package/dist/icons/NeoIconTheme.svelte +14 -0
  215. package/dist/icons/NeoIconTheme.svelte.d.ts +3 -0
  216. package/dist/icons/NeoIconTrend.svelte +39 -0
  217. package/dist/icons/NeoIconTrend.svelte.d.ts +4 -0
  218. package/dist/icons/NeoIconUnplug.svelte +63 -0
  219. package/dist/icons/NeoIconUnplug.svelte.d.ts +4 -0
  220. package/dist/icons/{IconVideo.svelte → NeoIconVideo.svelte} +11 -6
  221. package/dist/icons/NeoIconVideo.svelte.d.ts +4 -0
  222. package/dist/icons/NeoIconWarning.svelte +30 -0
  223. package/dist/icons/NeoIconWarning.svelte.d.ts +4 -0
  224. package/dist/icons/NeoIconWatch.svelte +41 -0
  225. package/dist/icons/NeoIconWatch.svelte.d.ts +4 -0
  226. package/dist/icons/NeoIconWatchOff.svelte +50 -0
  227. package/dist/icons/NeoIconWatchOff.svelte.d.ts +4 -0
  228. package/dist/icons/NeoIconWave.svelte +31 -0
  229. package/dist/icons/NeoIconWave.svelte.d.ts +4 -0
  230. package/dist/icons/index.d.ts +54 -0
  231. package/dist/icons/index.js +54 -0
  232. package/dist/icons/{icon.model.d.ts → neo-icon.model.d.ts} +41 -13
  233. package/dist/icons/{icon.model.js → neo-icon.model.js} +1 -1
  234. package/dist/index.d.ts +2 -0
  235. package/dist/index.js +2 -0
  236. package/dist/inputs/NeoCheckbox.svelte +6 -4
  237. package/dist/inputs/NeoCheckbox.svelte.d.ts +1 -1
  238. package/dist/inputs/NeoColorPicker.svelte +6 -3
  239. package/dist/inputs/NeoColorPicker.svelte.d.ts +1 -1
  240. package/dist/inputs/NeoColorPickerSelector.svelte +2 -2
  241. package/dist/inputs/NeoColorPickerSelector.svelte.d.ts +1 -1
  242. package/dist/inputs/NeoDateTime.svelte +6 -3
  243. package/dist/inputs/NeoDateTime.svelte.d.ts +1 -1
  244. package/dist/inputs/NeoFilePicker.svelte +11 -6
  245. package/dist/inputs/NeoFilePicker.svelte.d.ts +1 -1
  246. package/dist/inputs/NeoFilePickerCard.svelte +20 -14
  247. package/dist/inputs/NeoNativeSelect.svelte +6 -3
  248. package/dist/inputs/NeoNativeSelect.svelte.d.ts +1 -1
  249. package/dist/inputs/NeoNumberStep.svelte +13 -8
  250. package/dist/inputs/NeoNumberStep.svelte.d.ts +1 -1
  251. package/dist/inputs/NeoPassword.svelte +4 -4
  252. package/dist/inputs/NeoPassword.svelte.d.ts +1 -1
  253. package/dist/inputs/NeoPin.svelte +10 -10
  254. package/dist/inputs/NeoPin.svelte.d.ts +10 -1
  255. package/dist/inputs/NeoRadio.svelte +3 -3
  256. package/dist/inputs/NeoRadio.svelte.d.ts +1 -1
  257. package/dist/inputs/NeoRange.svelte +29 -27
  258. package/dist/inputs/NeoRange.svelte.d.ts +5 -2
  259. package/dist/inputs/NeoSelect.svelte +17 -8
  260. package/dist/inputs/NeoSelect.svelte.d.ts +1 -1
  261. package/dist/inputs/NeoSwitch.svelte +2 -2
  262. package/dist/inputs/NeoSwitch.svelte.d.ts +1 -1
  263. package/dist/inputs/common/NeoAffix.svelte +10 -10
  264. package/dist/inputs/common/NeoBaseInput.svelte +16 -2
  265. package/dist/inputs/common/NeoBaseInput.svelte.d.ts +1 -1
  266. package/dist/inputs/common/NeoInput.svelte +12 -4
  267. package/dist/inputs/common/NeoInput.svelte.d.ts +1 -1
  268. package/dist/inputs/common/NeoTextarea.svelte +18 -6
  269. package/dist/inputs/common/NeoTextarea.svelte.d.ts +2 -1
  270. package/dist/inputs/common/NeoValidation.svelte +6 -4
  271. package/dist/inputs/common/neo-input.model.d.ts +8 -1
  272. package/dist/inputs/common/neo-validation.model.d.ts +2 -1
  273. package/dist/inputs/neo-range.model.d.ts +2 -1
  274. package/dist/inputs/neo-select.model.d.ts +8 -4
  275. package/dist/list/NeoList.svelte +100 -62
  276. package/dist/list/NeoList.svelte.d.ts +5 -2
  277. package/dist/list/NeoListBaseItem.svelte +222 -92
  278. package/dist/list/NeoListBaseItem.svelte.d.ts +1 -1
  279. package/dist/list/NeoListBaseLoader.svelte +28 -4
  280. package/dist/list/NeoListBaseSection.svelte +18 -15
  281. package/dist/list/NeoListSearch.svelte +36 -20
  282. package/dist/list/NeoListSearch.svelte.d.ts +1 -1
  283. package/dist/list/NeoSimpleList.svelte +391 -0
  284. package/dist/list/NeoSimpleList.svelte.d.ts +8 -0
  285. package/dist/list/NeoVirtualList.svelte +388 -0
  286. package/dist/list/NeoVirtualList.svelte.d.ts +22 -0
  287. package/dist/list/index.d.ts +4 -0
  288. package/dist/list/index.js +2 -0
  289. package/dist/list/neo-list-base-item.model.d.ts +36 -7
  290. package/dist/list/neo-list-base-item.model.js +1 -0
  291. package/dist/list/neo-list-base-loader.model.d.ts +18 -1
  292. package/dist/list/neo-list-base-section.model.d.ts +8 -5
  293. package/dist/list/neo-list-search.model.d.ts +2 -2
  294. package/dist/list/neo-list.model.d.ts +120 -51
  295. package/dist/list/neo-list.model.js +18 -0
  296. package/dist/list/neo-simple-list.model.d.ts +124 -0
  297. package/dist/list/neo-simple-list.model.js +1 -0
  298. package/dist/list/neo-virtual-list.model.d.ts +69 -0
  299. package/dist/list/neo-virtual-list.model.js +6 -0
  300. package/dist/loading/NeoLoadingMatrix.svelte +2 -2
  301. package/dist/loading/neo-lazy.model.d.ts +2 -2
  302. package/dist/loading/neo-suspense.model.d.ts +1 -1
  303. package/dist/media/NeoImage.svelte +204 -0
  304. package/dist/media/NeoImage.svelte.d.ts +4 -0
  305. package/dist/media/NeoMedia.svelte +204 -0
  306. package/dist/media/NeoMedia.svelte.d.ts +4 -0
  307. package/dist/media/index.d.ts +2 -0
  308. package/dist/media/index.js +1 -0
  309. package/dist/media/neo-image.model.d.ts +67 -0
  310. package/dist/media/neo-image.model.js +1 -0
  311. package/dist/media/neo-media.model.d.ts +120 -0
  312. package/dist/media/neo-media.model.js +5 -0
  313. package/dist/nav/NeoTab.svelte +20 -15
  314. package/dist/nav/NeoTab.svelte.d.ts +17 -2
  315. package/dist/nav/NeoTabPanel.svelte +7 -5
  316. package/dist/nav/NeoTabPanel.svelte.d.ts +17 -2
  317. package/dist/nav/NeoTabs.svelte +21 -17
  318. package/dist/nav/NeoTabs.svelte.d.ts +19 -3
  319. package/dist/nav/NeoTabsCard.svelte +5 -3
  320. package/dist/nav/NeoTabsCard.svelte.d.ts +17 -2
  321. package/dist/nav/NeoTabsRow.svelte +225 -0
  322. package/dist/nav/NeoTabsRow.svelte.d.ts +19 -0
  323. package/dist/nav/index.d.ts +2 -0
  324. package/dist/nav/index.js +1 -0
  325. package/dist/nav/neo-tab-panel.model.d.ts +3 -3
  326. package/dist/nav/neo-tab.model.d.ts +15 -5
  327. package/dist/nav/neo-tabs-card.model.d.ts +3 -2
  328. package/dist/nav/neo-tabs-context.svelte.d.ts +35 -29
  329. package/dist/nav/neo-tabs-context.svelte.js +17 -3
  330. package/dist/nav/neo-tabs-row.model.d.ts +85 -0
  331. package/dist/nav/neo-tabs-row.model.js +1 -0
  332. package/dist/nav/neo-tabs.model.d.ts +12 -11
  333. package/dist/pill/NeoPill.svelte +73 -14
  334. package/dist/pill/neo-pill.model.d.ts +25 -1
  335. package/dist/progress/NeoProgress.svelte +203 -42
  336. package/dist/progress/NeoProgress.svelte.d.ts +8 -8
  337. package/dist/progress/NeoProgressBar.svelte +37 -6
  338. package/dist/progress/NeoProgressBar.svelte.d.ts +9 -1
  339. package/dist/progress/index.d.ts +1 -0
  340. package/dist/progress/index.js +1 -0
  341. package/dist/progress/neo-progress-bar.model.d.ts +11 -6
  342. package/dist/progress/neo-progress-service.svelte.d.ts +47 -0
  343. package/dist/progress/neo-progress-service.svelte.js +157 -0
  344. package/dist/progress/neo-progress.model.d.ts +98 -41
  345. package/dist/progress/neo-progress.model.js +6 -1
  346. package/dist/providers/NeoRememberSelector.svelte +43 -0
  347. package/dist/providers/NeoRememberSelector.svelte.d.ts +4 -0
  348. package/dist/providers/NeoResetSelector.svelte +40 -0
  349. package/dist/providers/NeoResetSelector.svelte.d.ts +4 -0
  350. package/dist/providers/NeoSourceSelector.svelte +63 -0
  351. package/dist/providers/NeoSourceSelector.svelte.d.ts +4 -0
  352. package/dist/providers/NeoThemeProvider.svelte +25 -10
  353. package/dist/providers/NeoThemeProvider.svelte.d.ts +1 -2
  354. package/dist/providers/NeoThemeSelector.svelte +26 -108
  355. package/dist/providers/NeoThemeSelector.svelte.d.ts +1 -1
  356. package/dist/providers/NeoThemeSelectors.svelte +57 -0
  357. package/dist/providers/NeoThemeSelectors.svelte.d.ts +4 -0
  358. package/dist/providers/NeoTransitionSelector.svelte +57 -0
  359. package/dist/providers/NeoTransitionSelector.svelte.d.ts +4 -0
  360. package/dist/providers/index.d.ts +10 -0
  361. package/dist/providers/index.js +5 -0
  362. package/dist/providers/neo-remember-selector.model.d.ts +9 -0
  363. package/dist/providers/neo-remember-selector.model.js +2 -0
  364. package/dist/providers/neo-reset-selector.model.d.ts +9 -0
  365. package/dist/providers/neo-reset-selector.model.js +1 -0
  366. package/dist/providers/neo-source-selector.model.d.ts +9 -0
  367. package/dist/providers/neo-source-selector.model.js +2 -0
  368. package/dist/providers/neo-theme-provider-context.svelte.d.ts +14 -3
  369. package/dist/providers/neo-theme-provider-context.svelte.js +94 -11
  370. package/dist/providers/neo-theme-provider.model.d.ts +31 -3
  371. package/dist/providers/neo-theme-provider.model.js +9 -0
  372. package/dist/providers/neo-theme-selector.model.d.ts +3 -48
  373. package/dist/providers/neo-theme-selector.model.js +1 -0
  374. package/dist/providers/neo-theme-selectors.model.d.ts +84 -0
  375. package/dist/providers/neo-theme-selectors.model.js +1 -0
  376. package/dist/providers/neo-transition-selector.model.d.ts +9 -0
  377. package/dist/providers/neo-transition-selector.model.js +2 -0
  378. package/dist/skeletons/NeoSkeletonContainer.svelte +3 -1
  379. package/dist/skeletons/NeoSkeletonMedia.svelte +26 -18
  380. package/dist/skeletons/NeoSkeletonText.svelte +5 -3
  381. package/dist/skeletons/neo-skeleton-container.model.d.ts +9 -0
  382. package/dist/skeletons/neo-skeleton-media.model.d.ts +20 -10
  383. package/dist/skeletons/neo-skeleton-media.model.js +7 -1
  384. package/dist/skeletons/neo-skeleton-text.model.d.ts +5 -0
  385. package/dist/stepper/NeoStepper.svelte +20 -20
  386. package/dist/stepper/NeoStepper.svelte.d.ts +9 -2
  387. package/dist/stepper/neo-stepper.model.d.ts +5 -5
  388. package/dist/styles/animation.scss +76 -0
  389. package/dist/styles/common/colors.scss +15 -9
  390. package/dist/styles/common/properties.css +18 -0
  391. package/dist/styles/common/spacing.scss +8 -4
  392. package/dist/styles/common/typography.scss +13 -3
  393. package/dist/styles/common/utils.scss +2 -2
  394. package/dist/styles/mixin.scss +125 -11
  395. package/dist/styles/theme.scss +20 -0
  396. package/dist/styles/transition.scss +101 -0
  397. package/dist/text/NeoEllipsis.svelte +1 -0
  398. package/dist/text/NeoHtml.svelte +26 -0
  399. package/dist/text/NeoHtml.svelte.d.ts +7 -0
  400. package/dist/text/NeoMark.svelte +18 -5
  401. package/dist/text/NeoTypewriter.svelte +5 -4
  402. package/dist/text/NeoTypewriter.svelte.d.ts +5 -1
  403. package/dist/text/index.d.ts +2 -0
  404. package/dist/text/index.js +1 -0
  405. package/dist/text/neo-html.model.d.ts +4 -0
  406. package/dist/text/neo-html.model.js +1 -0
  407. package/dist/text/neo-mark.model.d.ts +8 -0
  408. package/dist/text/typewriter.utils.d.ts +2 -2
  409. package/dist/text/typewriter.utils.js +8 -9
  410. package/dist/utils/action.utils.d.ts +1 -21
  411. package/dist/utils/border.utils.d.ts +13 -0
  412. package/dist/utils/border.utils.js +18 -0
  413. package/dist/utils/colors.utils.d.ts +1 -1
  414. package/dist/utils/error.utils.d.ts +22 -0
  415. package/dist/utils/error.utils.js +36 -0
  416. package/dist/utils/style.utils.d.ts +1 -1
  417. package/package.json +55 -39
  418. package/dist/icons/IconAccount.svelte.d.ts +0 -4
  419. package/dist/icons/IconAdd.svelte.d.ts +0 -26
  420. package/dist/icons/IconAddress.svelte.d.ts +0 -4
  421. package/dist/icons/IconAlert.svelte.d.ts +0 -26
  422. package/dist/icons/IconAlignBottom.svelte.d.ts +0 -26
  423. package/dist/icons/IconAlignMiddle.svelte.d.ts +0 -26
  424. package/dist/icons/IconAlignTop.svelte.d.ts +0 -26
  425. package/dist/icons/IconArrow.svelte.d.ts +0 -4
  426. package/dist/icons/IconBouncingDots.svelte +0 -63
  427. package/dist/icons/IconBouncingDots.svelte.d.ts +0 -4
  428. package/dist/icons/IconCalendar.svelte.d.ts +0 -26
  429. package/dist/icons/IconCancel.svelte.d.ts +0 -4
  430. package/dist/icons/IconCheckbox.svelte.d.ts +0 -4
  431. package/dist/icons/IconClear.svelte.d.ts +0 -26
  432. package/dist/icons/IconClose.svelte.d.ts +0 -4
  433. package/dist/icons/IconConfirm.svelte.d.ts +0 -26
  434. package/dist/icons/IconDoubleChevron.svelte.d.ts +0 -26
  435. package/dist/icons/IconDoubleChevronLeft.svelte.d.ts +0 -26
  436. package/dist/icons/IconDoubleChevronRight.svelte.d.ts +0 -26
  437. package/dist/icons/IconDownload.svelte.d.ts +0 -26
  438. package/dist/icons/IconEmpty.svelte +0 -18
  439. package/dist/icons/IconEmpty.svelte.d.ts +0 -26
  440. package/dist/icons/IconFileUpload.svelte.d.ts +0 -26
  441. package/dist/icons/IconGithub.svelte.d.ts +0 -26
  442. package/dist/icons/IconImage.svelte +0 -26
  443. package/dist/icons/IconImage.svelte.d.ts +0 -26
  444. package/dist/icons/IconList.svelte.d.ts +0 -26
  445. package/dist/icons/IconListSmall.svelte.d.ts +0 -4
  446. package/dist/icons/IconLoadingMatrix.svelte.d.ts +0 -4
  447. package/dist/icons/IconMail.svelte.d.ts +0 -26
  448. package/dist/icons/IconMinus.svelte.d.ts +0 -26
  449. package/dist/icons/IconPaint.svelte.d.ts +0 -26
  450. package/dist/icons/IconPencil.svelte.d.ts +0 -26
  451. package/dist/icons/IconPlayPause.svelte.d.ts +0 -4
  452. package/dist/icons/IconQuestionMark.svelte.d.ts +0 -26
  453. package/dist/icons/IconRadio.svelte.d.ts +0 -4
  454. package/dist/icons/IconSave.svelte +0 -25
  455. package/dist/icons/IconSave.svelte.d.ts +0 -26
  456. package/dist/icons/IconSaveOff.svelte +0 -32
  457. package/dist/icons/IconSaveOff.svelte.d.ts +0 -26
  458. package/dist/icons/IconSearch.svelte.d.ts +0 -26
  459. package/dist/icons/IconSun.svelte.d.ts +0 -26
  460. package/dist/icons/IconSunMoon.svelte.d.ts +0 -4
  461. package/dist/icons/IconTextHighlight.svelte.d.ts +0 -26
  462. package/dist/icons/IconVideo.svelte.d.ts +0 -26
  463. package/dist/icons/IconWatch.svelte +0 -29
  464. package/dist/icons/IconWatch.svelte.d.ts +0 -26
  465. package/dist/icons/IconWatchOff.svelte +0 -34
  466. package/dist/icons/IconWatchOff.svelte.d.ts +0 -26
@@ -1,4 +1,6 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="Id extends TabId, Value = any">
2
+ import type { TabId } from '../index.js';
3
+
2
4
  import type { NeoTabProps } from './neo-tab.model.js';
3
5
 
4
6
  import { getUUID } from '@dvcol/common-utils/common/string';
@@ -7,7 +9,7 @@
7
9
  import { tick } from 'svelte';
8
10
 
9
11
  import NeoButton from '../buttons/NeoButton.svelte';
10
- import IconClose from '../icons/IconClose.svelte';
12
+ import NeoIconClose from '../icons/NeoIconClose.svelte';
11
13
  import { getTabContext } from './neo-tabs-context.svelte.js';
12
14
  import { toAction, toActionProps } from '../utils/action.utils.js';
13
15
  import { shortDuration, shortFreezeTransition } from '../utils/transition.utils.js';
@@ -19,8 +21,9 @@
19
21
  // States
20
22
  ref = $bindable(),
21
23
  tag = 'div',
22
- tabId = getUUID(),
24
+ tabId = `neo-tab-${getUUID()}` as Id,
23
25
  value,
26
+ register = true,
24
27
 
25
28
  // styles
26
29
  close,
@@ -32,9 +35,9 @@
32
35
  // Other props
33
36
  tabProps,
34
37
  ...rest
35
- }: NeoTabProps = $props();
38
+ }: NeoTabProps<Id, Value> = $props();
36
39
 
37
- const context = getTabContext();
40
+ const context = getTabContext<Id, Value>();
38
41
  const pane = $derived(context?.getPane(tabId)?.toString());
39
42
  const active = $derived(context?.active === tabId);
40
43
  const disabled = $derived(rest.disabled || (rest.disabled !== false && context?.state?.disabled));
@@ -45,7 +48,7 @@
45
48
  });
46
49
  const slide = $derived(context?.state?.slide);
47
50
 
48
- const onClick: NeoTabProps['onclick'] = (e) => {
51
+ const onClick: NeoTabProps<Id, Value>['onclick'] = (e) => {
49
52
  context?.onChange(tabId);
50
53
  onclick?.(e);
51
54
  };
@@ -64,11 +67,11 @@
64
67
 
65
68
  watch(
66
69
  () => {
67
- if (!ref) return;
68
- context?.register(tabId, { ref, value });
69
- return () => context?.remove(tabId);
70
+ if (!ref || !register) return;
71
+ context?.register(tabId, { ref, value }, register === 'force');
72
+ return () => register && context?.remove(tabId);
70
73
  },
71
- () => ref,
74
+ () => [ref, register],
72
75
  );
73
76
 
74
77
  const onClose = (e: MouseEvent) => {
@@ -82,6 +85,10 @@
82
85
  const useProps = $derived(toActionProps(tabProps?.use));
83
86
  </script>
84
87
 
88
+ {#snippet innerChildren()}
89
+ {@render children?.({ active, tabId, value })}
90
+ {/snippet}
91
+
85
92
  <svelte:element
86
93
  this={tag}
87
94
  bind:this={ref}
@@ -103,13 +110,11 @@
103
110
  toggle
104
111
  checked={active}
105
112
  onclick={onClick}
106
- empty={!children}
107
113
  {...rest}
108
114
  {disabled}
109
115
  class={['neo-tab-button', rest.class]}
110
- >
111
- {@render children?.({ active, tabId, value })}
112
- </NeoButton>
116
+ children={children ? innerChildren : undefined}
117
+ />
113
118
  {#if closeable}
114
119
  <button
115
120
  type="button"
@@ -119,7 +124,7 @@
119
124
  transition:width={{ duration: skip ? 0 : shortDuration }}
120
125
  onclick={onClose}
121
126
  >
122
- <IconClose class="neo-icon-close" size="1rem" />
127
+ <NeoIconClose class="neo-icon-close" size="1rem" />
123
128
  </button>
124
129
  {/if}
125
130
  </svelte:element>
@@ -1,4 +1,19 @@
1
+ import type { TabId } from '../index.js';
1
2
  import type { NeoTabProps } from './neo-tab.model.js';
2
- declare const NeoTab: import("svelte").Component<NeoTabProps, {}, "ref">;
3
- type NeoTab = ReturnType<typeof NeoTab>;
3
+ declare class __sveltets_Render<Id extends TabId, Value = any> {
4
+ props(): NeoTabProps<Id, Value>;
5
+ events(): {};
6
+ slots(): {};
7
+ bindings(): "ref";
8
+ exports(): {};
9
+ }
10
+ interface $$IsomorphicComponent {
11
+ new <Id extends TabId, Value = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Id, Value>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Id, Value>['props']>, ReturnType<__sveltets_Render<Id, Value>['events']>, ReturnType<__sveltets_Render<Id, Value>['slots']>> & {
12
+ $$bindings?: ReturnType<__sveltets_Render<Id, Value>['bindings']>;
13
+ } & ReturnType<__sveltets_Render<Id, Value>['exports']>;
14
+ <Id extends TabId, Value = any>(internal: unknown, props: ReturnType<__sveltets_Render<Id, Value>['props']> & {}): ReturnType<__sveltets_Render<Id, Value>['exports']>;
15
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
16
+ }
17
+ declare const NeoTab: $$IsomorphicComponent;
18
+ type NeoTab<Id extends TabId, Value = any> = InstanceType<typeof NeoTab<Id, Value>>;
4
19
  export default NeoTab;
@@ -1,4 +1,6 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="Id extends TabId, Value = any">
2
+ import type { TabId } from '../index.js';
3
+
2
4
  import type { NeoTabPanelProps } from './neo-tab-panel.model.js';
3
5
 
4
6
  import { emptyTransition } from '@dvcol/svelte-utils/transition';
@@ -29,9 +31,9 @@
29
31
 
30
32
  // Other props
31
33
  ...rest
32
- }: NeoTabPanelProps = $props();
34
+ }: NeoTabPanelProps<Id, Value> = $props();
33
35
 
34
- const context = getTabContext();
36
+ const context = getTabContext<Id, Value>();
35
37
  const active = $derived(context?.active === tabId);
36
38
  const orientation = $derived(context?.state?.vertical ? 'y' : 'x');
37
39
 
@@ -53,7 +55,7 @@
53
55
  toTransitionProps(outAction ?? transitionAction, animated ? { [orientation]: `${100 * direction}%`, duration: 600 } : undefined),
54
56
  );
55
57
 
56
- const paneId = $derived(tabId ? `neo-tab-panel-${String(tabId)}` : undefined);
58
+ const paneId = $derived(tabId ? `neo-tab-panel-${String(tabId)}` as Id : undefined);
57
59
  $effect.pre(() => {
58
60
  untrack(() => {
59
61
  if (!tabId || !paneId) return;
@@ -70,7 +72,7 @@
70
72
  <svelte:element
71
73
  this={tag}
72
74
  role="tabpanel"
73
- id={paneId}
75
+ id={paneId?.toString()}
74
76
  aria-labelledby={tabId ? `neo-tab-${String(tabId)}` : undefined}
75
77
  data-tab-id={tabId ?? (empty ? 'empty' : undefined)}
76
78
  bind:this={ref}
@@ -1,4 +1,19 @@
1
+ import type { TabId } from '../index.js';
1
2
  import type { NeoTabPanelProps } from './neo-tab-panel.model.js';
2
- declare const NeoTabPanel: import("svelte").Component<NeoTabPanelProps, {}, "ref">;
3
- type NeoTabPanel = ReturnType<typeof NeoTabPanel>;
3
+ declare class __sveltets_Render<Id extends TabId, Value = any> {
4
+ props(): NeoTabPanelProps<Id, Value>;
5
+ events(): {};
6
+ slots(): {};
7
+ bindings(): "ref";
8
+ exports(): {};
9
+ }
10
+ interface $$IsomorphicComponent {
11
+ new <Id extends TabId, Value = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Id, Value>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Id, Value>['props']>, ReturnType<__sveltets_Render<Id, Value>['events']>, ReturnType<__sveltets_Render<Id, Value>['slots']>> & {
12
+ $$bindings?: ReturnType<__sveltets_Render<Id, Value>['bindings']>;
13
+ } & ReturnType<__sveltets_Render<Id, Value>['exports']>;
14
+ <Id extends TabId, Value = any>(internal: unknown, props: ReturnType<__sveltets_Render<Id, Value>['props']> & {}): ReturnType<__sveltets_Render<Id, Value>['exports']>;
15
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
16
+ }
17
+ declare const NeoTabPanel: $$IsomorphicComponent;
18
+ type NeoTabPanel<Id extends TabId, Value = any> = InstanceType<typeof NeoTabPanel<Id, Value>>;
4
19
  export default NeoTabPanel;
@@ -1,6 +1,6 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="Id extends TabId, Value = any">
2
2
  import type { NeoTabContextPositions } from './neo-tabs-context.svelte.js';
3
- import type { NeoTabsProps, OnChange } from './neo-tabs.model.js';
3
+ import type { NeoTabsProps, OnChange, TabId } from './neo-tabs.model.js';
4
4
 
5
5
  import { toStyle } from '@dvcol/common-utils/common/class';
6
6
  import { height, width } from '@dvcol/svelte-utils/transition';
@@ -8,9 +8,10 @@
8
8
 
9
9
  import NeoButton from '../buttons/NeoButton.svelte';
10
10
  import NeoButtonGroup from '../buttons/NeoButtonGroup.svelte';
11
- import IconAdd from '../icons/IconAdd.svelte';
11
+ import NeoIconAdd from '../icons/NeoIconAdd.svelte';
12
12
  import { setTabContext } from './neo-tabs-context.svelte.js';
13
13
  import { toAction, toActionProps, toTransition, toTransitionProps } from '../utils/action.utils.js';
14
+ import { computeBorderRadius } from '../utils/border.utils.js';
14
15
  import { coerce, computeShadowElevation, getDefaultElevation, getDefaultSlideElevation } from '../utils/shadow.utils.js';
15
16
  import { shortFreezeTransition } from '../utils/transition.utils.js';
16
17
 
@@ -25,6 +26,10 @@
25
26
  value = $bindable(),
26
27
  disabled,
27
28
 
29
+ // Group Props
30
+ offsetWidth = $bindable(),
31
+ offsetHeight = $bindable(),
32
+
28
33
  // Styles
29
34
  before,
30
35
  toggle,
@@ -48,7 +53,7 @@
48
53
  // Other props
49
54
  containerProps,
50
55
  ...rest
51
- }: NeoTabsProps = $props();
56
+ }: NeoTabsProps<Id, Value> = $props();
52
57
 
53
58
  const { tag: containerTag = 'div', ...containerRest } = $derived(containerProps ?? {});
54
59
 
@@ -56,17 +61,17 @@
56
61
  const slideElevation = $derived(coerce(_slideElevation ?? getDefaultSlideElevation(elevation)));
57
62
 
58
63
  // reflect context active to component
59
- const onChange: OnChange = (_tabId, _new, _old) => {
64
+ const onChange: OnChange<Id, Value> = (_tabId, _new, _old) => {
60
65
  active = _tabId;
61
66
  value = _new;
62
67
  onchange?.(_tabId, _new, _old);
63
68
  };
64
69
 
65
- const context = setTabContext({ onChange, onClose: onclose });
70
+ export const context = setTabContext<Id, Value>({ onChange, onClose: onclose });
66
71
  const transition = $derived(rest.vertical ? height : width);
67
72
 
68
73
  // Function to compute the transform
69
- function transform({ oldTab, newTab }: NeoTabContextPositions) {
74
+ function transform({ oldTab, newTab }: NeoTabContextPositions<Id>) {
70
75
  if (!newTab) return;
71
76
  if (!oldTab) return;
72
77
 
@@ -121,11 +126,11 @@
121
126
  </script>
122
127
 
123
128
  {#snippet icon()}
124
- <IconAdd class="neo-tabs-add" />
129
+ <NeoIconAdd class="neo-tabs-add" />
125
130
  {/snippet}
126
131
 
127
132
  {#if before}
128
- {@render panes?.(context.state)}
133
+ {@render panes?.(context.state, context)}
129
134
  {/if}
130
135
 
131
136
  <svelte:element
@@ -142,14 +147,15 @@
142
147
  class:neo-rounded={rest.rounded}
143
148
  class:neo-dim={dim}
144
149
  style:--neo-tabs-slide-box-shadow={slideShadow}
150
+ style:--neo-tab-border-radius={computeBorderRadius(rest.rounded)}
145
151
  {...containerRest}
146
152
  use:useFn={useProps}
147
153
  out:outFn={outProps}
148
154
  in:inFn={inProps}
149
155
  {style}
150
156
  >
151
- <NeoButtonGroup role="tablist" {pressed} {elevation} {...rest} class={['neo-tabs-group', rest.class]}>
152
- {@render children?.(context.state)}
157
+ <NeoButtonGroup bind:offsetWidth bind:offsetHeight role="tablist" {pressed} {elevation} {...rest} class={['neo-tabs-group', rest.class]}>
158
+ {@render children?.(context.state, context)}
153
159
  {#if add}
154
160
  <div transition:transition={shortFreezeTransition}>
155
161
  <NeoButton aria-label="Add new tab" onclick={onadd} {icon} />
@@ -159,7 +165,7 @@
159
165
  </svelte:element>
160
166
 
161
167
  {#if !before}
162
- {@render panes?.(context.state)}
168
+ {@render panes?.(context.state, context)}
163
169
  {/if}
164
170
 
165
171
  <style>.neo-tabs {
@@ -197,7 +203,7 @@
197
203
  height: 0;
198
204
  max-height: var(--neo-tab-max-height);
199
205
  margin-left: 0.3rem;
200
- transition: box-shadow 0.3s ease-out, height 0.3s var(--neo-transition-bezier);
206
+ transition: height 0.3s var(--neo-transition-bezier);
201
207
  margin-block: 0.5rem;
202
208
  }
203
209
  .neo-tabs.neo-vertical.neo-line :global(> .neo-tabs-group .neo-tab.neo-active::before) {
@@ -228,7 +234,6 @@
228
234
  border-radius: var(--neo-tab-border-radius, var(--neo-border-radius));
229
235
  box-shadow: var(--neo-box-shadow-flat);
230
236
  backface-visibility: hidden;
231
- transition: box-shadow 0.3s ease-out;
232
237
  content: "";
233
238
  pointer-events: none;
234
239
  inset: 0;
@@ -250,7 +255,7 @@
250
255
  max-width: var(--neo-tab-max-width);
251
256
  height: 2px;
252
257
  margin-bottom: 0.125rem;
253
- transition: box-shadow 0.3s ease-out, height 0.3s var(--neo-transition-bezier);
258
+ transition: height 0.3s var(--neo-transition-bezier);
254
259
  margin-inline: 0.75rem;
255
260
  }
256
261
  .neo-tabs.neo-slide.neo-line:not(.neo-vertical) :global(> .neo-tabs-group .neo-tab.neo-active::before) {
@@ -259,7 +264,6 @@
259
264
  .neo-tabs.neo-slide.neo-pill:not(.neo-line) :global(> .neo-tabs-group .neo-tab::before) {
260
265
  --neo-tabs-slide-box-shadow: var(--neo-box-shadow-flat);
261
266
  z-index: var(--neo-z-index-behind, -1) !important;
262
- transition: box-shadow 0.3s ease-out, background-color 0.3s linear;
263
267
  }
264
268
  .neo-tabs.neo-slide.neo-pill:not(.neo-line) :global(> .neo-tabs-group .neo-tab.neo-active::before) {
265
269
  background-color: var(--neo-tab-bg-color, var(--neo-background-color-secondary));
@@ -300,5 +304,5 @@
300
304
  }
301
305
  }
302
306
  .neo-tabs.neo-slide.neo-rounded :global(> .neo-tabs-group .neo-tab::before) {
303
- border-radius: var(--neo-tab-border-radius, var(--neo-border-radius-lg));
307
+ border-radius: var(--neo-tab-border-radius, var(--neo-border-radius-xxl));
304
308
  }</style>
@@ -1,4 +1,20 @@
1
- import type { NeoTabsProps } from './neo-tabs.model.js';
2
- declare const NeoTabs: import("svelte").Component<NeoTabsProps, {}, "ref" | "value" | "active">;
3
- type NeoTabs = ReturnType<typeof NeoTabs>;
1
+ import type { NeoTabsProps, TabId } from './neo-tabs.model.js';
2
+ declare class __sveltets_Render<Id extends TabId, Value = any> {
3
+ props(): NeoTabsProps<Id, Value>;
4
+ events(): {};
5
+ slots(): {};
6
+ bindings(): "value" | "ref" | "active" | "offsetHeight" | "offsetWidth";
7
+ exports(): {
8
+ context: import("./neo-tabs-context.svelte.js").NeoTabContext<Id, Value>;
9
+ };
10
+ }
11
+ interface $$IsomorphicComponent {
12
+ new <Id extends TabId, Value = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Id, Value>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Id, Value>['props']>, ReturnType<__sveltets_Render<Id, Value>['events']>, ReturnType<__sveltets_Render<Id, Value>['slots']>> & {
13
+ $$bindings?: ReturnType<__sveltets_Render<Id, Value>['bindings']>;
14
+ } & ReturnType<__sveltets_Render<Id, Value>['exports']>;
15
+ <Id extends TabId, Value = any>(internal: unknown, props: ReturnType<__sveltets_Render<Id, Value>['props']> & {}): ReturnType<__sveltets_Render<Id, Value>['exports']>;
16
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
17
+ }
18
+ declare const NeoTabs: $$IsomorphicComponent;
19
+ type NeoTabs<Id extends TabId, Value = any> = InstanceType<typeof NeoTabs<Id, Value>>;
4
20
  export default NeoTabs;
@@ -1,4 +1,6 @@
1
- <script lang="ts">
1
+ <script lang="ts" generics="Id extends TabId, Value = any">
2
+ import type { TabId } from '../index.js';
3
+
2
4
  import type { NeoTabsCardProps } from './neo-tabs-card.model.js';
3
5
 
4
6
  import NeoCard from '../cards/NeoCard.svelte';
@@ -19,9 +21,9 @@
19
21
  // Other props
20
22
  containerProps,
21
23
  ...rest
22
- }: NeoTabsCardProps = $props();
24
+ }: NeoTabsCardProps<Id, Value> = $props();
23
25
 
24
- const context = getTabContext();
26
+ const context = getTabContext<Id, Value>();
25
27
  const borderless = $derived(context?.state?.borderless);
26
28
  const elevation = $derived(context?.state?.elevation);
27
29
  const pressed = $derived(context?.state?.pressed);
@@ -1,4 +1,19 @@
1
+ import type { TabId } from '../index.js';
1
2
  import type { NeoTabsCardProps } from './neo-tabs-card.model.js';
2
- declare const NeoTabsCard: import("svelte").Component<NeoTabsCardProps, {}, "ref">;
3
- type NeoTabsCard = ReturnType<typeof NeoTabsCard>;
3
+ declare class __sveltets_Render<Id extends TabId, Value = any> {
4
+ props(): NeoTabsCardProps<Id, Value>;
5
+ events(): {};
6
+ slots(): {};
7
+ bindings(): "ref";
8
+ exports(): {};
9
+ }
10
+ interface $$IsomorphicComponent {
11
+ new <Id extends TabId, Value = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Id, Value>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Id, Value>['props']>, ReturnType<__sveltets_Render<Id, Value>['events']>, ReturnType<__sveltets_Render<Id, Value>['slots']>> & {
12
+ $$bindings?: ReturnType<__sveltets_Render<Id, Value>['bindings']>;
13
+ } & ReturnType<__sveltets_Render<Id, Value>['exports']>;
14
+ <Id extends TabId, Value = any>(internal: unknown, props: ReturnType<__sveltets_Render<Id, Value>['props']> & {}): ReturnType<__sveltets_Render<Id, Value>['exports']>;
15
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
16
+ }
17
+ declare const NeoTabsCard: $$IsomorphicComponent;
18
+ type NeoTabsCard<Id extends TabId, Value = any> = InstanceType<typeof NeoTabsCard<Id, Value>>;
4
19
  export default NeoTabsCard;
@@ -0,0 +1,225 @@
1
+ <script lang="ts" generics="Id extends TabId, Value = any">
2
+ import type { NeoMenuItem } from '../floating/menu/neo-menu-list-item.model.js';
3
+ import type { TabId } from './neo-tab.model.js';
4
+ import type { NeoTabContext, NeoTabsContext } from './neo-tabs-context.svelte.js';
5
+ import type { NeoTabRowItem, NeoTabsRowProps } from './neo-tabs-row.model.js';
6
+
7
+ import { getUUID } from '@dvcol/common-utils/common/string';
8
+ import { watch } from '@dvcol/svelte-utils/watch';
9
+ import { tick } from 'svelte';
10
+ import { innerHeight, innerWidth } from 'svelte/reactivity/window';
11
+
12
+ import NeoButton from '../buttons/NeoButton.svelte';
13
+ import NeoMenu from '../floating/menu/NeoMenu.svelte';
14
+ import NeoIconBouncingDots from '../icons/NeoIconBouncingDots.svelte';
15
+ import { isTabRowDivider } from './neo-tabs-row.model.js';
16
+ import NeoTab from './NeoTab.svelte';
17
+ import NeoTabDivider from './NeoTabDivider.svelte';
18
+ import NeoTabs from './NeoTabs.svelte';
19
+
20
+ let {
21
+ // Snippets
22
+ children: innerChildren,
23
+ collapsed,
24
+
25
+ // State
26
+ tabs = [],
27
+ threshold = $bindable(0),
28
+
29
+ // Tabs props
30
+ ref = $bindable(),
31
+ active = $bindable(),
32
+ value = $bindable(),
33
+ offsetWidth = $bindable(),
34
+ offsetHeight = $bindable(),
35
+ vertical,
36
+
37
+ // Button props
38
+ hovered = $bindable(false),
39
+ focused = $bindable(false),
40
+
41
+ // Events
42
+ ontabfocus,
43
+ ontabhover,
44
+
45
+ // Other props
46
+ menuProps,
47
+ iconProps,
48
+ tabProps,
49
+ collapseProps,
50
+ ...rest
51
+ }: NeoTabsRowProps<Id, Value> = $props();
52
+
53
+ function tabRowItemToMenuItem(item: NeoTabRowItem<Id, Value>, next?: NeoTabRowItem<Id, Value>): NeoMenuItem<Value> | undefined {
54
+ if (isTabRowDivider(item)) return undefined;
55
+ return {
56
+ id: item.tabId ?? `neo-tab-${getUUID()}`,
57
+ label: item.label,
58
+ value: item.value!,
59
+ before: item.icon,
60
+ reverse: item.reverse,
61
+ disabled: item.disabled,
62
+ readonly: item.readonly,
63
+ color: item.color,
64
+ href: item.href,
65
+ onclick: item.onclick,
66
+ divider: {
67
+ bottom: next && isTabRowDivider(next),
68
+ },
69
+ ...item.menuProps,
70
+ buttonProps: {
71
+ get checked() {
72
+ return item.tabId === active;
73
+ },
74
+ ...item.menuProps?.buttonProps,
75
+ onfocus: (e) => {
76
+ item.menuProps?.buttonProps?.onfocus?.(e);
77
+ ontabfocus?.(e, {
78
+ tabId: item.tabId ?? tabProps?.tabId,
79
+ value: item.value ?? tabProps?.value,
80
+ });
81
+ },
82
+ onpointerenter: (e) => {
83
+ item.menuProps?.buttonProps?.onpointerenter?.(e);
84
+ ontabhover?.(e, {
85
+ tabId: item.tabId ?? tabProps?.tabId,
86
+ value: item.value ?? tabProps?.value,
87
+ });
88
+ },
89
+ },
90
+ } satisfies NeoMenuItem<Value>;
91
+ }
92
+
93
+ const visible = $derived(threshold ? tabs?.slice(0, -threshold) : tabs);
94
+ const hidden = $derived(threshold ? tabs?.slice(-threshold) : []);
95
+ const items = $derived(
96
+ hidden?.map((t, i, arr) => tabRowItemToMenuItem(t, arr[i + 1]))
97
+ .filter(Boolean) as NeoMenuItem[],
98
+ );
99
+
100
+ const isOverflown = (el?: Element) => {
101
+ if (!el || !tabs?.length) return false;
102
+ if (vertical) return el.scrollHeight > el.clientHeight;
103
+ return el.scrollWidth > el.clientWidth;
104
+ };
105
+
106
+ let instance = $state<{ context: NeoTabContext<Id, Value> }>();
107
+ let menu = $state<HTMLElement>();
108
+
109
+ watch(
110
+ () => {
111
+ if (!instance?.context) return;
112
+ hidden?.forEach((item) => {
113
+ if (isTabRowDivider(item) || item.tabId === undefined) return;
114
+ instance?.context?.register(item.tabId, { ref: menu, value: item.value }, true);
115
+ });
116
+ return () => hidden?.forEach((item) => {
117
+ if (isTabRowDivider(item) || item.tabId === undefined) return;
118
+ instance?.context?.remove(item.tabId, false);
119
+ });
120
+ },
121
+ () => [instance?.context, hidden],
122
+ );
123
+
124
+ const onSelect = (item: NeoMenuItem, ctx: NeoTabContext<Id, Value>) => {
125
+ if (item?.id === undefined) return;
126
+ ctx.onChange(item.id as Id);
127
+ };
128
+
129
+ const activeMenu = $derived(items.some(t => t.id === active));
130
+
131
+ const autoSize = async (el = ref?.firstElementChild) => {
132
+ threshold = 0;
133
+ await tick();
134
+ if (!el || !tabs?.length) return;
135
+ while (threshold < tabs.length && isOverflown(el)) {
136
+ threshold += 1;
137
+ await tick();
138
+ }
139
+ };
140
+
141
+ watch(
142
+ () => {
143
+ void autoSize();
144
+ },
145
+ () => [
146
+ vertical,
147
+ offsetWidth,
148
+ offsetHeight,
149
+ innerWidth.current,
150
+ innerHeight.current,
151
+ ],
152
+ );
153
+ </script>
154
+
155
+ <NeoTabs bind:this={instance} bind:ref bind:active bind:value bind:offsetWidth bind:offsetHeight nowrap {vertical} {...rest}>
156
+ {#snippet children(ctx: NeoTabsContext<Id, Value>, context: NeoTabContext<Id, Value>)}
157
+
158
+ {@render innerChildren?.(ctx, { items, threshold, menuProps, collapseProps, iconProps })}
159
+
160
+ {#each visible as _props, index ((isTabRowDivider(_props) ? _props.id : _props.tabId) ?? index)}
161
+ {#if (isTabRowDivider(_props))}
162
+ <NeoTabDivider vertical={!vertical} {..._props} />
163
+ {:else}
164
+ {@const { menuProps: _, label: __, icon: ___, ...tabItemProps } = _props}
165
+ <NeoTab
166
+ register="force"
167
+ {...tabProps}
168
+ {...tabItemProps}
169
+ onfocus={(e) => {
170
+ tabProps?.onfocus?.(e);
171
+ _props?.onfocus?.(e);
172
+ ontabfocus?.(e, {
173
+ tabId: _props?.tabId ?? tabProps?.tabId,
174
+ value: _props?.value ?? tabProps?.value,
175
+ });
176
+ }}
177
+ onpointerenter={(e) => {
178
+ tabProps?.onpointerenter?.(e);
179
+ _props?.onpointerenter?.(e);
180
+ ontabhover?.(e, {
181
+ tabId: _props?.tabId ?? tabProps?.tabId,
182
+ value: _props?.value ?? tabProps?.value,
183
+ });
184
+ }}
185
+ />
186
+ {/if}
187
+ {/each}
188
+
189
+ {#if items?.length && collapsed}
190
+ {@render collapsed(ctx, { items, threshold, menuProps, collapseProps, iconProps })}
191
+ {:else if items?.length}
192
+ <div bind:this={menu} class="neo-tab neo-tabs-row-collapse" class:neo-vertical={vertical} class:neo-active={activeMenu}>
193
+ <NeoMenu {items} openOnClick onSelect={item => onSelect(item, context)} {...menuProps}>
194
+ <NeoButton
195
+ bind:hovered
196
+ bind:focused
197
+ toggle
198
+ checked={activeMenu}
199
+ disabled={rest.disabled}
200
+ {...collapseProps}
201
+ class={['neo-tab-button', collapseProps?.class]}
202
+ >
203
+ {#snippet icon()}
204
+ <NeoIconBouncingDots bounce={hovered || focused} {...iconProps} />
205
+ {/snippet}
206
+ </NeoButton>
207
+ </NeoMenu>
208
+ </div>
209
+ {/if}
210
+ {/snippet}
211
+ </NeoTabs>
212
+
213
+ <style>.neo-tabs-row-collapse {
214
+ display: inline-flex;
215
+ }
216
+ .neo-tabs-row-collapse.neo-vertical {
217
+ width: 100%;
218
+ }
219
+ .neo-tabs-row-collapse :global(> .neo-tooltip-trigger) {
220
+ width: 100%;
221
+ height: 100%;
222
+ }
223
+ .neo-tabs-row-collapse :global(> .neo-tooltip-trigger) :global(svg) {
224
+ margin-inline: 0.25rem;
225
+ }</style>
@@ -0,0 +1,19 @@
1
+ import type { TabId } from './neo-tab.model.js';
2
+ import type { NeoTabsRowProps } from './neo-tabs-row.model.js';
3
+ declare class __sveltets_Render<Id extends TabId, Value = any> {
4
+ props(): NeoTabsRowProps<Id, Value>;
5
+ events(): {};
6
+ slots(): {};
7
+ bindings(): "value" | "ref" | "active" | "hovered" | "focused" | "offsetHeight" | "offsetWidth" | "threshold";
8
+ exports(): {};
9
+ }
10
+ interface $$IsomorphicComponent {
11
+ new <Id extends TabId, Value = any>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<Id, Value>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<Id, Value>['props']>, ReturnType<__sveltets_Render<Id, Value>['events']>, ReturnType<__sveltets_Render<Id, Value>['slots']>> & {
12
+ $$bindings?: ReturnType<__sveltets_Render<Id, Value>['bindings']>;
13
+ } & ReturnType<__sveltets_Render<Id, Value>['exports']>;
14
+ <Id extends TabId, Value = any>(internal: unknown, props: ReturnType<__sveltets_Render<Id, Value>['props']> & {}): ReturnType<__sveltets_Render<Id, Value>['exports']>;
15
+ z_$$bindings?: ReturnType<__sveltets_Render<any, any>['bindings']>;
16
+ }
17
+ declare const NeoTabsRow: $$IsomorphicComponent;
18
+ type NeoTabsRow<Id extends TabId, Value = any> = InstanceType<typeof NeoTabsRow<Id, Value>>;
19
+ export default NeoTabsRow;
@@ -3,7 +3,9 @@ export { default as NeoTabDivider } from './NeoTabDivider.svelte';
3
3
  export { default as NeoTabPanel } from './NeoTabPanel.svelte';
4
4
  export { default as NeoTabs } from './NeoTabs.svelte';
5
5
  export { default as NeoTabsCard } from './NeoTabsCard.svelte';
6
+ export { default as NeoTabsRow } from './NeoTabsRow.svelte';
6
7
  export type * from './neo-tab-panel.model.js';
7
8
  export type * from './neo-tab.model.js';
8
9
  export type * from './neo-tabs-card.model.js';
10
+ export type * from './neo-tabs-row.model.js';
9
11
  export type * from './neo-tabs.model.js';
package/dist/nav/index.js CHANGED
@@ -3,3 +3,4 @@ export { default as NeoTabDivider } from './NeoTabDivider.svelte';
3
3
  export { default as NeoTabPanel } from './NeoTabPanel.svelte';
4
4
  export { default as NeoTabs } from './NeoTabs.svelte';
5
5
  export { default as NeoTabsCard } from './NeoTabsCard.svelte';
6
+ export { default as NeoTabsRow } from './NeoTabsRow.svelte';
@@ -3,15 +3,15 @@ import type { TabId } from './neo-tab.model.js';
3
3
  import type { NeoTabsContext } from './neo-tabs-context.svelte.js';
4
4
  import type { HTMLTransitionProps } from '../utils/action.utils.js';
5
5
  import type { HTMLNeoBaseElement, HTMLRefProps } from '../utils/html-element.utils.js';
6
- export type NeoTabPanelProps<Value = unknown, Tag extends keyof HTMLElementTagNameMap = 'div'> = {
6
+ export type NeoTabPanelProps<Id extends TabId, Value = unknown, Tag extends keyof HTMLElementTagNameMap = 'div'> = {
7
7
  /**
8
8
  * Snippet to display as the tab content.
9
9
  */
10
- children?: Snippet<[NeoTabsContext<Value> | undefined]>;
10
+ children?: Snippet<[NeoTabsContext<Id, Value> | undefined]>;
11
11
  /**
12
12
  * The tab id to associate with this panel.
13
13
  */
14
- tabId?: TabId;
14
+ tabId?: Id;
15
15
  /**
16
16
  * If `true`, the pane will appear when no other tabs are active.
17
17
  */