@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,15 +1,20 @@
1
1
  <script lang="ts">
2
- import type { NeoProgressContext, NeoProgressMethods, NeoProgressProps } from './neo-progress.model.js';
2
+ import type {
3
+ NeoProgressChange,
4
+ NeoProgressComplete,
5
+ NeoProgressContext,
6
+ NeoProgressMethods,
7
+ NeoProgressProps,
8
+ NeoProgressStart,
9
+ NeoProgressStatuses,
10
+ } from './neo-progress.model.js';
3
11
 
4
12
  import { percent } from '@dvcol/common-utils';
5
13
  import { clamp } from '@dvcol/common-utils/common/math';
14
+ import { onDestroy, onMount } from 'svelte';
6
15
 
7
- import {
8
-
9
- NeoProgressDirection,
10
-
11
- NeoProgressStatus,
12
- } from './neo-progress.model.js';
16
+ import { setProgressContext } from './neo-progress-service.svelte.js';
17
+ import { NeoProgressDirection, NeoProgressStatus } from './neo-progress.model.js';
13
18
  import { getColorVariable } from '../utils/colors.utils.js';
14
19
  import { toSize } from '../utils/style.utils.js';
15
20
 
@@ -31,6 +36,8 @@
31
36
  step = 1,
32
37
  tick = 500,
33
38
  timeout,
39
+ autoStart,
40
+ autoComplete,
34
41
 
35
42
  // Styles
36
43
  low, // threshold for tinting
@@ -41,17 +48,25 @@
41
48
  track = true,
42
49
  color,
43
50
  direction = NeoProgressDirection.Right,
51
+ immediate = $bindable(false),
44
52
 
45
53
  // Other Props
46
54
  ...rest
47
55
  }: NeoProgressProps = $props();
48
56
 
49
57
  // TODO: circular progress
58
+ const isIndeterminate = $derived(indeterminate || status === NeoProgressStatus.Indeterminate);
50
59
 
51
60
  const buffered = $derived((buffer ?? 0) > value ? buffer : value);
52
61
 
53
- const valueProgress = $derived(value ? `${percent(clamp(value, min, max), 100)}%` : '-0.125rem');
54
- const bufferProgress = $derived(buffered ? `${percent(clamp(buffered, min, max), 100)}%` : '-0.125rem');
62
+ const valueProgress = $derived.by(() => {
63
+ if (isIndeterminate) return '100%';
64
+ return value ? `${percent(clamp(value, min, max), 100)}%` : '-0.125rem';
65
+ });
66
+ const bufferProgress = $derived.by(() => {
67
+ if (isIndeterminate) return '100%';
68
+ return buffered ? `${percent(clamp(buffered, min, max), 100)}%` : '-0.125rem';
69
+ });
55
70
 
56
71
  const colorArray = $derived(Array.isArray(color) ? color.map(getColorVariable) : [getColorVariable(color)]);
57
72
  const background = $derived.by(() => {
@@ -71,7 +86,23 @@
71
86
  }
72
87
  });
73
88
 
74
- const controlled = $derived(status && ([NeoProgressStatus.Active, NeoProgressStatus.Indeterminate] as string[]).includes(status));
89
+ const controlled = $derived(status === NeoProgressStatus.Active || status === NeoProgressStatus.Indeterminate);
90
+
91
+ /** Method to execute on the next animation iteration. */
92
+ let nextIteration = $state<() => void>();
93
+ /** Deferred function to be called on the next animation iteration. */
94
+ async function deferIteration<T extends () => Promise<undefined | NeoProgressStatuses>>(fn: T, defer = true) {
95
+ if (!defer || nextIteration) return fn();
96
+ const { promise, resolve } = Promise.withResolvers<undefined | NeoProgressStatuses>();
97
+ nextIteration = async () => resolve(await fn());
98
+ return promise;
99
+ };
100
+ /** Triggered when the animation iteration ends to gracefully transition the progress bar out of the indeterminate state. */
101
+ async function onIteration() {
102
+ if (!nextIteration) return;
103
+ await nextIteration();
104
+ nextIteration = undefined;
105
+ };
75
106
 
76
107
  let intervalId: ReturnType<typeof setTimeout>;
77
108
  let timeoutId: ReturnType<typeof setTimeout>;
@@ -80,49 +111,87 @@
80
111
  clearTimeout(timeoutId);
81
112
  };
82
113
 
83
- export const change: NeoProgressMethods['change'] = (newValue?: number, newBuffer = buffer) => {
84
- if (newValue === undefined && newBuffer === undefined) return;
114
+ export function change({ value: newValue, buffer: newBuffer, state }: NeoProgressChange = {}): undefined | NeoProgressStatuses {
115
+ if (newValue === undefined && newBuffer === undefined) return status;
85
116
  clear();
86
117
  if (newValue !== undefined) value = newValue;
87
118
  if (newBuffer !== undefined) buffer = newBuffer;
88
- status = NeoProgressStatus.Idle;
89
- };
119
+ status = state ?? (value >= (min ?? 0) ? NeoProgressStatus.Paused : NeoProgressStatus.Idle);
120
+ return status;
121
+ }
90
122
 
91
- export const stop: NeoProgressMethods['stop'] = () => {
92
- clear();
93
- status = NeoProgressStatus.Paused;
94
- };
123
+ function deferComplete(opts: NeoProgressComplete) {
124
+ const _immediate = immediate;
125
+ immediate = true;
126
+ change({ value: min, buffer: min });
127
+ const { promise, resolve } = Promise.withResolvers<undefined | NeoProgressStatuses>();
128
+ setTimeout(async () => {
129
+ immediate = _immediate;
130
+ const status = await complete({ ...opts, defer: false });
131
+ resolve(status);
132
+ }, 0);
133
+ return promise;
134
+ }
95
135
 
96
- export const complete: NeoProgressMethods['complete'] = (pending = indeterminate) => {
136
+ export function complete({ pending = indeterminate, state, defer = true }: NeoProgressComplete = {}): undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses> {
137
+ if (status === NeoProgressStatus.Indeterminate) return deferIteration(() => deferComplete({ pending, state }), defer);
97
138
  clear();
98
139
  value = max ?? 100;
99
140
  buffer = max ?? 100;
100
- status = pending ? NeoProgressStatus.Indeterminate : NeoProgressStatus.Completed;
101
- };
141
+ status = state ?? (pending ? NeoProgressStatus.Indeterminate : NeoProgressStatus.Completed);
142
+ return status;
143
+ }
102
144
 
103
- export const start: NeoProgressMethods['start'] = (pending = indeterminate, expire = timeout) => {
104
- status = NeoProgressStatus.Active;
145
+ function deferCancel() {
146
+ const _immediate = immediate;
147
+ immediate = true;
105
148
  clear();
106
- intervalId = setInterval(() => {
107
- if (value < max) value += step;
108
- else complete(pending);
109
- }, tick);
110
- if (expire) timeoutId = setTimeout(() => complete(), expire);
111
- };
149
+ change({ value: min, buffer: min, state: NeoProgressStatus.Cancelled });
150
+ const { promise, resolve } = Promise.withResolvers<undefined | NeoProgressStatuses>();
151
+ setTimeout(() => {
152
+ immediate = _immediate;
153
+ resolve(status);
154
+ }, 0);
155
+ return promise;
156
+ }
112
157
 
113
- export const reset: NeoProgressMethods['reset'] = (restart = status === NeoProgressStatus.Active) => {
158
+ export function cancel(defer = true): undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses> {
159
+ if (status === NeoProgressStatus.Indeterminate) return deferIteration(deferCancel, defer);
114
160
  clear();
115
- value = min ?? 0;
116
- buffer = min ?? 0;
117
- if (restart) start();
118
- else status = NeoProgressStatus.Idle;
119
- };
161
+ change({ value: min, buffer: min, state: NeoProgressStatus.Cancelled });
162
+ return status;
163
+ }
164
+
165
+ function stepUp({ pending = indeterminate } = {}) {
166
+ if (value < max) value += step;
167
+ else complete({ pending });
168
+ }
120
169
 
121
- export const cancel: NeoProgressMethods['cancel'] = () => {
170
+ export function start({ pending = indeterminate, expire = timeout, indeterminate: startIndeterminate, ...seed }: NeoProgressStart = {}): undefined | NeoProgressStatuses {
122
171
  clear();
123
- reset(false);
172
+ if (startIndeterminate) {
173
+ change({ value: min, buffer: min, state: NeoProgressStatus.Indeterminate });
174
+ } else {
175
+ change(seed);
176
+ status = NeoProgressStatus.Active;
177
+ intervalId = setInterval(stepUp, tick, { pending });
178
+ }
179
+ if (expire) timeoutId = setTimeout(complete, expire);
180
+ return status;
181
+ }
182
+
183
+ export function stop(): undefined | NeoProgressStatuses {
184
+ clear();
185
+ status = NeoProgressStatus.Paused;
186
+ return status;
124
187
  };
125
188
 
189
+ export function reset(restart = status === NeoProgressStatus.Active, _start?: NeoProgressStart): undefined | NeoProgressStatuses {
190
+ clear();
191
+ if (restart) return start({ value: min, buffer: min, ..._start });
192
+ return change({ value: min, buffer: min });
193
+ }
194
+
126
195
  const width = $derived(toSize(_width));
127
196
  const height = $derived(toSize(_height));
128
197
 
@@ -141,6 +210,58 @@
141
210
 
142
211
  color,
143
212
  direction,
213
+
214
+ start,
215
+ stop,
216
+ reset,
217
+ cancel,
218
+ change,
219
+ complete,
220
+ });
221
+
222
+ setProgressContext({
223
+ get status() {
224
+ return status;
225
+ },
226
+ get value() {
227
+ return value;
228
+ },
229
+ get buffer() {
230
+ return buffer;
231
+ },
232
+ get min() {
233
+ return min;
234
+ },
235
+ get max() {
236
+ return max;
237
+ },
238
+ get indeterminate() {
239
+ return indeterminate;
240
+ },
241
+
242
+ get step() {
243
+ return step;
244
+ },
245
+ get tick() {
246
+ return tick;
247
+ },
248
+ get timeout() {
249
+ return timeout;
250
+ },
251
+
252
+ get color() {
253
+ return color;
254
+ },
255
+ get direction() {
256
+ return direction;
257
+ },
258
+
259
+ start,
260
+ stop,
261
+ reset,
262
+ cancel,
263
+ change,
264
+ complete,
144
265
  });
145
266
 
146
267
  $effect(() => {
@@ -152,7 +273,18 @@
152
273
  cancel,
153
274
  change,
154
275
  complete,
155
- });
276
+ } satisfies NeoProgressMethods);
277
+ });
278
+
279
+ onMount(() => {
280
+ if (!autoStart) return;
281
+ stepUp(typeof autoStart === 'boolean' ? {} : autoStart);
282
+ start(typeof autoStart === 'boolean' ? {} : autoStart);
283
+ });
284
+
285
+ onDestroy(() => {
286
+ if (!autoComplete) return;
287
+ complete(typeof autoComplete === 'boolean' ? {} : autoComplete);
156
288
  });
157
289
  </script>
158
290
 
@@ -161,9 +293,10 @@
161
293
  role="progressbar"
162
294
  bind:this={ref}
163
295
  class:neo-progress={true}
164
- class:neo-indeterminate={indeterminate || status === NeoProgressStatus.Indeterminate}
296
+ class:neo-indeterminate={isIndeterminate}
165
297
  class:neo-controlled={controlled}
166
298
  class:neo-track={track}
299
+ class:neo-immediate={immediate}
167
300
  data-direction={direction}
168
301
  data-indeterminate={indeterminate}
169
302
  data-status={status}
@@ -182,8 +315,8 @@
182
315
  style:--neo-progress-background={background}
183
316
  {...rest}
184
317
  >
185
- <span class="neo-progress-value" style:--neo-progress-value={valueProgress}></span>
186
- <span class="neo-progress-buffer" style:--neo-progress-buffer={bufferProgress}></span>
318
+ <span class="neo-progress-value" style:--neo-progress-value={valueProgress} onanimationiteration={onIteration}></span>
319
+ <span class="neo-progress-buffer" style:--neo-progress-buffer={bufferProgress} onanimationiteration={onIteration}></span>
187
320
  {@render children?.(context)}
188
321
  </svelte:element>
189
322
 
@@ -215,6 +348,35 @@
215
348
  .neo-progress.neo-controlled .neo-progress-value {
216
349
  transition: translate 1s linear, background-color 1.5s ease;
217
350
  }
351
+ .neo-progress.neo-immediate .neo-progress-buffer,
352
+ .neo-progress.neo-immediate .neo-progress-value {
353
+ transition: none;
354
+ }
355
+ .neo-progress[data-status=completed] .neo-progress-value,
356
+ .neo-progress[data-status=completed] .neo-progress-buffer, .neo-progress[data-status=error] .neo-progress-value,
357
+ .neo-progress[data-status=error] .neo-progress-buffer, .neo-progress[data-status=success] .neo-progress-value,
358
+ .neo-progress[data-status=success] .neo-progress-buffer, .neo-progress[data-status=warning] .neo-progress-value,
359
+ .neo-progress[data-status=warning] .neo-progress-buffer {
360
+ transition: translate 0.5s linear, background-color 0.1s ease;
361
+ }
362
+ .neo-progress[data-status=error] .neo-progress-value {
363
+ background: var(--neo-progress-background, var(--neo-color-error));
364
+ }
365
+ .neo-progress[data-status=error] .neo-progress-buffer {
366
+ background: var(--neo-progress-buffer-background, color-mix(in srgb, var(--neo-progress-background, var(--neo-color-error)), transparent 85%));
367
+ }
368
+ .neo-progress[data-status=success] .neo-progress-value {
369
+ background: var(--neo-progress-background, var(--neo-color-success));
370
+ }
371
+ .neo-progress[data-status=success] .neo-progress-buffer {
372
+ background: var(--neo-progress-buffer-background, color-mix(in srgb, var(--neo-progress-background, var(--neo-color-success)), transparent 85%));
373
+ }
374
+ .neo-progress[data-status=warning] .neo-progress-value {
375
+ background: var(--neo-progress-background, var(--neo-color-warning));
376
+ }
377
+ .neo-progress[data-status=warning] .neo-progress-buffer {
378
+ background: var(--neo-progress-buffer-background, color-mix(in srgb, var(--neo-progress-background, var(--neo-color-warning)), transparent 85%));
379
+ }
218
380
  .neo-progress[data-direction=right], .neo-progress[data-direction=left] {
219
381
  width: 100%;
220
382
  height: 0.375rem;
@@ -269,7 +431,6 @@
269
431
  animation-duration: var(--neo-progress-indeterminate-duration, 3s);
270
432
  animation-timing-function: var(--neo-progress-indeterminate-timing, linear);
271
433
  animation-iteration-count: var(--neo-progress-indeterminate-iteration, infinite);
272
- translate: 0;
273
434
  }
274
435
  .neo-progress.neo-indeterminate[data-direction=right] .neo-progress-buffer {
275
436
  animation-name: indeterminate-fast-right;
@@ -1,11 +1,11 @@
1
- import type { NeoProgressMethods, NeoProgressProps } from './neo-progress.model.js';
1
+ import type { NeoProgressChange, NeoProgressComplete, NeoProgressProps, NeoProgressStart, NeoProgressStatuses } from './neo-progress.model.js';
2
2
  declare const NeoProgress: import("svelte").Component<NeoProgressProps, {
3
- change: NeoProgressMethods["change"];
4
- stop: NeoProgressMethods["stop"];
5
- complete: NeoProgressMethods["complete"];
6
- start: NeoProgressMethods["start"];
7
- reset: NeoProgressMethods["reset"];
8
- cancel: NeoProgressMethods["cancel"];
9
- }, "ref" | "value" | "status" | "buffer">;
3
+ change: ({ value: newValue, buffer: newBuffer, state }?: NeoProgressChange) => undefined | NeoProgressStatuses;
4
+ complete: ({ pending, state, defer }?: NeoProgressComplete) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
5
+ cancel: (defer?: boolean) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
6
+ start: ({ pending, expire, indeterminate: startIndeterminate, ...seed }?: NeoProgressStart) => undefined | NeoProgressStatuses;
7
+ stop: () => undefined | NeoProgressStatuses;
8
+ reset: (restart?: boolean, _start?: NeoProgressStart) => undefined | NeoProgressStatuses;
9
+ }, "value" | "status" | "ref" | "buffer" | "immediate">;
10
10
  type NeoProgress = ReturnType<typeof NeoProgress>;
11
11
  export default NeoProgress;
@@ -1,17 +1,20 @@
1
1
  <script lang="ts">
2
2
  import type { NeoProgressBarContext, NeoProgressBarProps } from './neo-progress-bar.model.js';
3
+ import type { NeoProgressChange, NeoProgressComplete, NeoProgressStart, NeoProgressStatuses } from './neo-progress.model.js';
3
4
 
4
5
  import { watch } from '@dvcol/svelte-utils/watch';
5
6
  import { innerHeight, innerWidth } from 'svelte/reactivity/window';
6
7
 
7
- import { NeoProgressDirection } from './neo-progress.model.js';
8
+ import { NeoProgressDirection, NeoProgressStatus } from './neo-progress.model.js';
8
9
  import NeoProgress from './NeoProgress.svelte';
10
+ import { computeBorderRadius } from '../utils/border.utils.js';
9
11
  import { coerce, computeGlassFilter, computeShadowElevation, DefaultShallowMinMaxElevation, parseBlur } from '../utils/shadow.utils.js';
10
12
  import { toPixel, toSize } from '../utils/style.utils.js';
11
13
 
12
14
  let {
13
15
  // Snippets
14
16
  children,
17
+ progress,
15
18
  before,
16
19
  after,
17
20
  mark,
@@ -35,8 +38,9 @@
35
38
  rounded,
36
39
  pressed,
37
40
  glass,
38
- start,
41
+ start: startOnEnter,
39
42
  track = true,
43
+ immediate = $bindable(false),
40
44
 
41
45
  // Shadow
42
46
  elevation: _elevation = pressed ? -1 : 1,
@@ -105,13 +109,39 @@
105
109
  rounded,
106
110
  pressed,
107
111
  glass,
108
- start,
112
+ start: startOnEnter,
109
113
  track,
110
114
 
111
115
  // Shadow
112
116
  elevation,
113
117
  blur,
114
118
  });
119
+
120
+ let instance = $state<NeoProgress>();
121
+
122
+ export function change(payload: NeoProgressChange = {}): undefined | NeoProgressStatuses {
123
+ return instance!.change(payload);
124
+ }
125
+
126
+ export function complete(payload: NeoProgressComplete = {}): undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses> {
127
+ return instance!.complete(payload);
128
+ }
129
+
130
+ export function cancel(defer = true): undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses> {
131
+ return instance!.cancel(defer);
132
+ }
133
+
134
+ export function start(payload: NeoProgressStart = {}): undefined | NeoProgressStatuses {
135
+ return instance!.start(payload);
136
+ }
137
+
138
+ export function stop(): undefined | NeoProgressStatuses {
139
+ return instance!.stop();
140
+ }
141
+
142
+ export function reset(restart = status === NeoProgressStatus.Active, _start?: NeoProgressStart): undefined | NeoProgressStatuses {
143
+ return instance!.reset(restart, _start);
144
+ }
115
145
  </script>
116
146
 
117
147
  {#if typeof before === 'function'}
@@ -126,7 +156,7 @@
126
156
  class:neo-progress-bar={true}
127
157
  class:neo-borderless={borderless || !track}
128
158
  class:neo-flat={!elevation}
129
- class:neo-start={start}
159
+ class:neo-start={startOnEnter}
130
160
  class:neo-glass={glass}
131
161
  class:neo-inset={elevation < 0}
132
162
  class:neo-rounded={rounded}
@@ -142,9 +172,10 @@
142
172
  style:--neo-progress-mark-margin-inline={margin?.width}
143
173
  style:--neo-progress-bar-glass-blur={filter}
144
174
  style:--neo-progress-bar-box-shadow={boxShadow}
175
+ style:--neo-progress-bar-border-radius={computeBorderRadius(rounded)}
145
176
  {...containerRest}
146
177
  >
147
- <NeoProgress bind:ref bind:status bind:value bind:buffer {direction} {width} {height} {track} {...rest} />
178
+ <NeoProgress bind:this={instance} bind:ref bind:status bind:value bind:buffer {direction} {width} {height} {track} {immediate} children={progress} {...rest} />
148
179
  {#each marks as position, index (index)}
149
180
  {#if position !== undefined}
150
181
  <span bind:this={refs[index]} class="neo-progress-bar-mark" style:--neo-progress-bar-mark-position="{position}%">
@@ -225,7 +256,7 @@
225
256
  border-color: var(--neo-progress-bar-border-color-hover, var(--neo-border-color-highlight));
226
257
  }
227
258
  .neo-progress-bar.neo-rounded {
228
- border-radius: var(--neo-pill-border-radius, var(--neo-border-radius-lg));
259
+ border-radius: var(--neo-progress-bar-border-radius, var(--neo-border-radius-xxl));
229
260
  }
230
261
  .neo-progress-bar.neo-glass {
231
262
  --neo-border-color: var(--neo-glass-border-color);
@@ -1,4 +1,12 @@
1
1
  import type { NeoProgressBarProps } from './neo-progress-bar.model.js';
2
- declare const NeoProgressBar: import("svelte").Component<NeoProgressBarProps, {}, "ref" | "value" | "status" | "refs" | "buffer">;
2
+ import type { NeoProgressChange, NeoProgressComplete, NeoProgressStart, NeoProgressStatuses } from './neo-progress.model.js';
3
+ declare const NeoProgressBar: import("svelte").Component<NeoProgressBarProps, {
4
+ change: (payload?: NeoProgressChange) => undefined | NeoProgressStatuses;
5
+ complete: (payload?: NeoProgressComplete) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
6
+ cancel: (defer?: boolean) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
7
+ start: (payload?: NeoProgressStart) => undefined | NeoProgressStatuses;
8
+ stop: () => undefined | NeoProgressStatuses;
9
+ reset: (restart?: boolean, _start?: NeoProgressStart) => undefined | NeoProgressStatuses;
10
+ }, "value" | "status" | "ref" | "refs" | "buffer" | "immediate">;
3
11
  type NeoProgressBar = ReturnType<typeof NeoProgressBar>;
4
12
  export default NeoProgressBar;
@@ -1,5 +1,6 @@
1
1
  export { default as NeoProgress } from './NeoProgress.svelte';
2
2
  export { default as NeoProgressBar } from './NeoProgressBar.svelte';
3
+ export { NeoProgressService, useNeoProgressService } from './neo-progress-service.svelte.js';
3
4
  export { NeoProgressDirection, NeoProgressStatus } from './neo-progress.model.js';
4
5
  export type * from './neo-progress-bar.model.js';
5
6
  export type * from './neo-progress.model.js';
@@ -1,3 +1,4 @@
1
1
  export { default as NeoProgress } from './NeoProgress.svelte';
2
2
  export { default as NeoProgressBar } from './NeoProgressBar.svelte';
3
+ export { NeoProgressService, useNeoProgressService } from './neo-progress-service.svelte.js';
3
4
  export { NeoProgressDirection, NeoProgressStatus } from './neo-progress.model.js';
@@ -1,5 +1,6 @@
1
1
  import type { Snippet } from 'svelte';
2
- import type { NeoProgressContext, NeoProgressProps } from './neo-progress.model.js';
2
+ import type { NeoProgressProps, NeoProgressState } from './neo-progress.model.js';
3
+ import type { BorderRadiusInput } from '../utils/border.utils.js';
3
4
  import type { HTMLNeoBaseElement, HTMLTagProps } from '../utils/html-element.utils.js';
4
5
  import type { BlurElevation, BlurElevationString, ShadowShallowElevation, ShadowShallowElevationString } from '../utils/shadow.utils.js';
5
6
  export type NeoProgressBlur = BlurElevation | BlurElevationString;
@@ -23,7 +24,7 @@ interface NeoProgressBarStyle {
23
24
  /**
24
25
  * Rounds border radius.
25
26
  */
26
- rounded?: boolean;
27
+ rounded?: BorderRadiusInput;
27
28
  /**
28
29
  * Recess the content of the progress if elevation is inset (< 0).
29
30
  */
@@ -41,7 +42,7 @@ interface NeoProgressBarStyle {
41
42
  */
42
43
  track?: boolean;
43
44
  }
44
- export type NeoProgressBarContext = NeoProgressContext & NeoProgressBarStyle;
45
+ export type NeoProgressBarContext = NeoProgressState & NeoProgressBarStyle;
45
46
  export interface NeoProgressBarMarkContext {
46
47
  index: number;
47
48
  position: number;
@@ -49,15 +50,19 @@ export interface NeoProgressBarMarkContext {
49
50
  }
50
51
  export type NeoProgressBarProps<Tag extends keyof HTMLElementTagNameMap = 'div', ContainerTag extends keyof HTMLElementTagNameMap = 'div'> = {
51
52
  /**
52
- * Optional content to display inside the progress.
53
+ * Optional content to display inside the progress bar.
53
54
  */
54
55
  children?: Snippet<[NeoProgressBarContext]>;
55
56
  /**
56
- * Optional content to display before the progress.
57
+ * Optional content to display inside the inner progress component.
58
+ */
59
+ progress?: NeoProgressProps<Tag>['children'];
60
+ /**
61
+ * Optional content to display before the progress bar.
57
62
  */
58
63
  before?: Snippet<[NeoProgressBarContext]> | string;
59
64
  /**
60
- * Optional content to display after the progress.
65
+ * Optional content to display after the progress bar.
61
66
  */
62
67
  after?: Snippet<[NeoProgressBarContext]> | string;
63
68
  /**
@@ -0,0 +1,47 @@
1
+ import type { NeoProgressContext, NeoProgressStart } from './neo-progress.model.js';
2
+ export interface NeoProgressServiceOptions {
3
+ /**
4
+ * Delay in milliseconds before the progress bar starts.
5
+ * This is useful to debounce multiple calls to the progress bar.
6
+ */
7
+ delay?: number;
8
+ /**
9
+ * Function to generate a unique ID for the progress bar.
10
+ * If not provided, a UUID will be generated.
11
+ */
12
+ uuid?: () => string;
13
+ }
14
+ /**
15
+ * Queuing service to keep track of concurrent call to progress bar
16
+ */
17
+ export declare class NeoProgressService {
18
+ #private;
19
+ get context(): NeoProgressContext;
20
+ get value(): number | undefined;
21
+ get buffer(): number | undefined;
22
+ get status(): import("./neo-progress.model.js").NeoProgressStatuses | undefined;
23
+ get active(): Set<string>;
24
+ constructor(context: NeoProgressContext, options?: NeoProgressServiceOptions);
25
+ /**
26
+ * Synchronizes the progress state working with the current active IDs set.
27
+ */
28
+ sync(): Set<string> | undefined;
29
+ /**
30
+ * Starts a new progress bar with the given options.
31
+ * If an ID is provided, it will be used to track the progress bar.
32
+ * If no ID is provided, a new UUID will be generated.
33
+ * If a delay is provided, the progress bar will start after the specified delay.
34
+ */
35
+ start(opts?: NeoProgressStart, { id, delay }?: {
36
+ id?: string;
37
+ delay?: number;
38
+ }): string | undefined;
39
+ cancel(id?: string, force?: boolean): string | undefined;
40
+ complete(id?: string, force?: boolean): string | undefined;
41
+ error(id?: string, force?: boolean): string | undefined;
42
+ success(id?: string, force?: boolean): string | undefined;
43
+ warning(id?: string, force?: boolean): string | undefined;
44
+ }
45
+ export declare function getProgressContext(): NeoProgressContext;
46
+ export declare function setProgressContext(context: NeoProgressContext): NeoProgressContext | undefined;
47
+ export declare function useNeoProgressService(): NeoProgressService;