@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
@@ -0,0 +1,157 @@
1
+ import { getUUID } from '@dvcol/common-utils/common/string';
2
+ import { getContext, setContext } from 'svelte';
3
+ import { SvelteMap, SvelteSet } from 'svelte/reactivity';
4
+ import { NeoProgressStatus } from './neo-progress.model.js';
5
+ import { NeoErrorProgressContextNotFound } from '../utils/error.utils.js';
6
+ /**
7
+ * Queuing service to keep track of concurrent call to progress bar
8
+ */
9
+ export class NeoProgressService {
10
+ /** State of the progress bar */
11
+ #context;
12
+ /** Set of active progress IDs */
13
+ #active = new SvelteSet();
14
+ /** Queue of progress IDs with their timeout */
15
+ #queue = new SvelteMap();
16
+ /** Options for the progress service */
17
+ #options;
18
+ get context() {
19
+ return this.#context;
20
+ }
21
+ get value() {
22
+ return this.context.value;
23
+ }
24
+ get buffer() {
25
+ return this.context.buffer;
26
+ }
27
+ get status() {
28
+ return this.context.status;
29
+ }
30
+ get active() {
31
+ return this.#active;
32
+ }
33
+ constructor(context, options = {}) {
34
+ this.#context = context;
35
+ this.#options = options;
36
+ }
37
+ /**
38
+ * Synchronizes the progress state working with the current active IDs set.
39
+ */
40
+ sync() {
41
+ if (this.status === NeoProgressStatus.Active)
42
+ return;
43
+ if (this.status === NeoProgressStatus.Indeterminate)
44
+ return;
45
+ this.#active.clear();
46
+ return this.active;
47
+ }
48
+ /**
49
+ * Starts the progress bar with the given ID and options.
50
+ * If the progress bar is already active, it resets it with the provided options instead.
51
+ */
52
+ #start(id, opts) {
53
+ if (this.status === NeoProgressStatus.Active)
54
+ return this.context.reset(true, opts);
55
+ return this.context.start(opts);
56
+ }
57
+ /**
58
+ * Dequeues the progress bar with the given ID if it exists in the queue.
59
+ * @param id
60
+ * @private
61
+ */
62
+ #deque(id) {
63
+ const timeout = this.#queue.get(id);
64
+ if (timeout === undefined)
65
+ return;
66
+ clearTimeout(timeout);
67
+ this.#queue.delete(id);
68
+ }
69
+ /**
70
+ * Deletes the progress bar with the given ID from the active set and dequeues it if it exists.
71
+ */
72
+ #delete(id) {
73
+ this.#active.delete(id);
74
+ this.#deque(id);
75
+ }
76
+ /**
77
+ * Generates a unique ID for the progress bar.
78
+ */
79
+ #generateId() {
80
+ return this.#options.uuid?.() ?? getUUID();
81
+ }
82
+ /**
83
+ * Starts a new progress bar with the given options.
84
+ * If an ID is provided, it will be used to track the progress bar.
85
+ * If no ID is provided, a new UUID will be generated.
86
+ * If a delay is provided, the progress bar will start after the specified delay.
87
+ */
88
+ start(opts, { id = this.#generateId(), delay = this.#options.delay } = {}) {
89
+ this.sync();
90
+ this.#delete(id); // debounce queue if delay, skip queue if not
91
+ if (!delay) {
92
+ this.#active.add(id);
93
+ this.#start(id, opts);
94
+ }
95
+ else {
96
+ this.#queue.set(id, setTimeout(() => {
97
+ this.#active.add(id);
98
+ this.#start(id, opts);
99
+ this.#queue.delete(id);
100
+ }, delay));
101
+ }
102
+ return id;
103
+ }
104
+ cancel(id, force = !id) {
105
+ this.sync();
106
+ if (id)
107
+ this.#delete(id);
108
+ if (force || this.#active.size === 0)
109
+ void this.context.cancel();
110
+ return id;
111
+ }
112
+ complete(id, force = !id) {
113
+ this.sync();
114
+ if (id)
115
+ this.#delete(id);
116
+ if (force || this.#active.size === 0)
117
+ void this.context.complete();
118
+ return id;
119
+ }
120
+ error(id, force = !id) {
121
+ this.sync();
122
+ if (id)
123
+ this.#delete(id);
124
+ if (force || this.#active.size === 0)
125
+ void this.context.complete({ state: NeoProgressStatus.Error });
126
+ return id;
127
+ }
128
+ success(id, force = !id) {
129
+ this.sync();
130
+ if (id)
131
+ this.#delete(id);
132
+ if (force || this.#active.size === 0)
133
+ void this.context.complete({ state: NeoProgressStatus.Success });
134
+ return id;
135
+ }
136
+ warning(id, force = !id) {
137
+ this.sync();
138
+ if (id)
139
+ this.#delete(id);
140
+ if (force || this.#active.size === 0)
141
+ void this.context.complete({ state: NeoProgressStatus.Warning });
142
+ return id;
143
+ }
144
+ }
145
+ const NeoProgressContextSymbol = Symbol('NeoProgressContext');
146
+ export function getProgressContext() {
147
+ return getContext(NeoProgressContextSymbol);
148
+ }
149
+ export function setProgressContext(context) {
150
+ return setContext(NeoProgressContextSymbol, context);
151
+ }
152
+ export function useNeoProgressService() {
153
+ const context = getProgressContext();
154
+ if (!context)
155
+ throw new NeoErrorProgressContextNotFound();
156
+ return new NeoProgressService(context);
157
+ }
@@ -3,11 +3,16 @@ import type { Color } from '../utils/colors.utils.js';
3
3
  import type { HTMLNeoBaseElement, HTMLRefProps } from '../utils/html-element.utils.js';
4
4
  import type { SizeInput } from '../utils/style.utils.js';
5
5
  export declare const NeoProgressStatus: {
6
+ readonly Indeterminate: "indeterminate";
6
7
  readonly Active: "active";
7
8
  readonly Idle: "idle";
8
9
  readonly Paused: "paused";
10
+ readonly Cancelled: "cancelled";
11
+ readonly Timeout: "timeout";
9
12
  readonly Completed: "completed";
10
- readonly Indeterminate: "indeterminate";
13
+ readonly Error: "error";
14
+ readonly Success: "success";
15
+ readonly Warning: "warning";
11
16
  };
12
17
  export type NeoProgressStatuses = (typeof NeoProgressStatus)[keyof typeof NeoProgressStatus];
13
18
  export declare const NeoProgressDirection: {
@@ -17,7 +22,7 @@ export declare const NeoProgressDirection: {
17
22
  readonly Bottom: "bottom";
18
23
  };
19
24
  export type NeoProgressDirections = (typeof NeoProgressDirection)[keyof typeof NeoProgressDirection];
20
- export interface NeoProgressContext {
25
+ export interface NeoProgressState {
21
26
  /**
22
27
  * The current state of the progress if controlled.
23
28
  */
@@ -63,6 +68,14 @@ export interface NeoProgressContext {
63
68
  * Optional timeout in milliseconds to complete the progress, regardless of value, buffer, tick rate or step size.
64
69
  */
65
70
  timeout?: number;
71
+ /**
72
+ * If true, the progress will start automatically when the component is mounted.
73
+ */
74
+ autoStart?: boolean | NeoProgressStart;
75
+ /**
76
+ * If true, the progress will complete automatically when the component is unmounted.
77
+ */
78
+ autoComplete?: boolean | NeoProgressComplete;
66
79
  /**
67
80
  * The color or background to use for the progress.
68
81
  * If color is an array, the first color will be used for the low threshold, the second for the middle and the third for the high threshold.
@@ -78,7 +91,58 @@ export interface NeoProgressContext {
78
91
  */
79
92
  direction?: NeoProgressDirections;
80
93
  }
81
- export type NeoProgressProps<Tag extends keyof HTMLElementTagNameMap = 'div'> = NeoProgressContext & {
94
+ export interface NeoProgressMethods {
95
+ /**
96
+ * Starts a controlled progress and sets the state to {@link NeoProgressStatus.Active}.
97
+ *
98
+ * Once the progress reaches the max value, it will either switch to a {@link NeoProgressStatus.Completed} state or a {@link NeoProgressStatus.Indeterminate} state.
99
+ *
100
+ * @param options Stat options
101
+ * @param options.pending Whether to switch to a pending indeterminate state when max is reached. (end as {@link NeoProgressStatus.Indeterminate})
102
+ * @param options.expire Whether to switch to a completed state when timeout is reached. (ends as {@link NeoProgressStatus.Timeout})
103
+ * @param options.indeterminate Whether to start the progress in an indeterminate state. (starts as {@link NeoProgressStatus.Indeterminate})
104
+ * @param options.value A beginning value for the progress.
105
+ * @param options.buffer A beginning buffer value for the progress.
106
+ */
107
+ start: (options?: NeoProgressStart) => undefined | NeoProgressStatuses;
108
+ /**
109
+ * Stops the progress and sets the state to {@link NeoProgressStatus.Paused}.
110
+ */
111
+ stop: () => undefined | NeoProgressStatuses;
112
+ /**
113
+ * Resets the progress to the minimum value.
114
+ * If restart is true, the progress will start again and the state will be set to {@link NeoProgressStatus.Active}.
115
+ * If restart is false, the state will be set to {@link NeoProgressStatus.Idle}.
116
+ * @param restart Whether to restart the progress. (defaults to true if state is {@link NeoProgressStatus.Active}, false otherwise)
117
+ * @param start Optional starting config for the progress if restart is true.
118
+ */
119
+ reset: (restart?: boolean, start?: NeoProgressStart) => undefined | NeoProgressStatuses;
120
+ /**
121
+ * Cancels timeout and interval and sets value and buffer;
122
+ * Also sets the state to {@link NeoProgressStatus.Idle} if value is as or under the minimum, {@link NeoProgressStatus.Paused} otherwise.
123
+ * @param options Change options
124
+ * @param options.value The new value of the progress.
125
+ * @param options.buffer The new buffer value of the progress.
126
+ */
127
+ change: (options?: NeoProgressChange) => undefined | NeoProgressStatuses;
128
+ /**
129
+ * Sets the progress to the maximum value.
130
+ * If pending is true, the state will be set to {@link NeoProgressStatus.Indeterminate}.
131
+ * If pending is false, the state will be set to {@link NeoProgressStatus.Completed}.
132
+ * @param options Complete options
133
+ * @param options.pending whether to set the state to pending. (ends as {@link NeoProgressProps.indeterminate})
134
+ * @param options.state whether to set the status on completion ({@link NeoProgressStatus})
135
+ * @param options.defer Whether to await indeterminate animation before completing. (defaults to true)
136
+ */
137
+ complete: (options?: NeoProgressComplete) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
138
+ /**
139
+ * Reset the progress and sets the state to {@link NeoProgressStatus.Cancelled}.
140
+ * @param defer Whether to await indeterminate animation before cancelling. (defaults to true)
141
+ */
142
+ cancel: (defer?: boolean) => undefined | NeoProgressStatuses | Promise<undefined | NeoProgressStatuses>;
143
+ }
144
+ export type NeoProgressContext = NeoProgressState & NeoProgressMethods;
145
+ export type NeoProgressProps<Tag extends keyof HTMLElementTagNameMap = 'div'> = NeoProgressState & {
82
146
  /**
83
147
  * Optional content to display inside the progress.
84
148
  */
@@ -122,45 +186,38 @@ export type NeoProgressProps<Tag extends keyof HTMLElementTagNameMap = 'div'> =
122
186
  * @default true
123
187
  */
124
188
  track?: boolean;
125
- } & HTMLRefProps<HTMLElementTagNameMap[Tag]> & HTMLNeoBaseElement<HTMLElementTagNameMap[Tag]>;
126
- export interface NeoProgressMethods {
127
- /**
128
- * Starts a controlled progress and sets the state to {@link NeoProgressStatus.Active}.
129
- *
130
- * Once the progress reaches the max value, it will either switch to a {@link NeoProgressStatus.Completed} state or a {@link NeoProgressStatus.Indeterminate} state.
131
- *
132
- * @param pending Whether to switch to a pending indeterminate state when max is reached. (defaults to {@link NeoProgressProps.indeterminate})
133
- * @param expire Whether to switch to a completed state when timeout is reached. (defaults to {@link NeoProgressProps.timeout})
134
- */
135
- start: (pending?: boolean, expire?: number) => void;
136
- /**
137
- * Stops the progress and sets the state to {@link NeoProgressStatus.Idle}.
138
- */
139
- stop: () => void;
140
- /**
141
- * Resets the progress to the minimum value.
142
- * If restart is true, the progress will start again and the state will be set to {@link NeoProgressStatus.Active}.
143
- * If restart is false, the state will be set to {@link NeoProgressStatus.Idle}.
144
- * @param restart Whether to restart the progress. (defaults to true if state is {@link NeoProgressStatus.Active}, false otherwise)
145
- */
146
- reset: (restart?: boolean) => void;
147
189
  /**
148
- * Sets the progress to the maximum value.
149
- * If pending is true, the state will be set to {@link NeoProgressStatus.Indeterminate}.
150
- * If pending is false, the state will be set to {@link NeoProgressStatus.Completed}.
151
- * @param pending whether to set the state to pending. (defaults to {@link NeoProgressProps.indeterminate})
152
- */
153
- complete: (pending?: boolean) => void;
154
- /**
155
- * Reset the progress and sets the state to {@link NeoProgressStatus.Paused}.
156
- */
157
- cancel: () => void;
158
- /**
159
- * Cancels timeout and interval and sets value and buffer;
160
- * Also sets the state to {@link NeoProgressStatus.Idle}.
161
- * @param value The new value of the progress.
162
- * @param buffer The new buffer value of the progress.
190
+ * If true, the progress will change immediately without animation.
191
+ * @default false
163
192
  */
164
- change: (value?: number, buffer?: number) => void;
193
+ immediate?: boolean;
194
+ } & HTMLRefProps<HTMLElementTagNameMap[Tag]> & HTMLNeoBaseElement<HTMLElementTagNameMap[Tag]>;
195
+ export interface NeoProgressChange {
196
+ /** The new value of the progress. */
197
+ value?: number;
198
+ /** The new buffer value of the progress. */
199
+ buffer?: number;
200
+ /** State override. If omitted {@link NeoProgressStatus.Idle} will be set if value <= min, {@link NeoProgressStatus.Paused} otherwise. */
201
+ state?: NeoProgressStatuses;
202
+ }
203
+ export interface NeoProgressStart {
204
+ /** Whether to switch to a pending indeterminate state when max is reached. (end as {@link NeoProgressStatus.Indeterminate}) */
205
+ pending?: boolean;
206
+ /** Whether to switch to a completed state when timeout is reached. (ends as {@link NeoProgressStatus.Timeout}) */
207
+ expire?: number;
208
+ /** Whether to start the progress in an indeterminate state. (starts as {@link NeoProgressStatus.Indeterminate}) */
209
+ indeterminate?: boolean;
210
+ /** A beginning value for the progress. */
211
+ value?: number;
212
+ /** A beginning buffer value for the progress. */
213
+ buffer?: number;
214
+ }
215
+ export interface NeoProgressComplete {
216
+ /** Whether to set the state to pending. (ends as {@link NeoProgressStatus.Indeterminate}) */
217
+ pending?: boolean;
218
+ /** Whether to set the status on completion ({@link NeoProgressStatus}) */
219
+ state?: NeoProgressStatuses;
220
+ /** Whether to await indeterminate animation before completing. (defaults to true) */
221
+ defer?: boolean;
165
222
  }
166
223
  export type NeoProgressHTMLElement<Tag extends keyof HTMLElementTagNameMap = 'div'> = HTMLElementTagNameMap[Tag] & NeoProgressMethods;
@@ -1,9 +1,14 @@
1
1
  export const NeoProgressStatus = {
2
+ Indeterminate: 'indeterminate',
2
3
  Active: 'active',
3
4
  Idle: 'idle',
4
5
  Paused: 'paused',
6
+ Cancelled: 'cancelled',
7
+ Timeout: 'timeout',
5
8
  Completed: 'completed',
6
- Indeterminate: 'indeterminate',
9
+ Error: 'error',
10
+ Success: 'success',
11
+ Warning: 'warning',
7
12
  };
8
13
  export const NeoProgressDirection = {
9
14
  Right: 'right',
@@ -0,0 +1,43 @@
1
+ <script lang="ts">
2
+ import type { NeoRememberSelectorProps } from './neo-remember-selector.model.js';
3
+
4
+ import NeoButton from '../buttons/NeoButton.svelte';
5
+ import NeoIconSave from '../icons/NeoIconSave.svelte';
6
+ import NeoIconSaveOff from '../icons/NeoIconSaveOff.svelte';
7
+ import { useNeoThemeContext } from './neo-theme-provider-context.svelte.js';
8
+
9
+ const {
10
+ // state
11
+ label = 'Remember',
12
+
13
+ // Button props
14
+ ref = $bindable(),
15
+ hovered = $bindable(false),
16
+ focused = $bindable(false),
17
+
18
+ // Other props
19
+ ...rest
20
+ }: NeoRememberSelectorProps = $props();
21
+
22
+ const context = useNeoThemeContext();
23
+ const remember = $derived(context.remember);
24
+ const onRemember = () => context.update({ remember: !remember });
25
+ </script>
26
+
27
+ <NeoButton
28
+ aria-label="Remember theme settings"
29
+ title="Remember theme settings"
30
+ toggle
31
+ checked={remember}
32
+ onclick={onRemember}
33
+ {label}
34
+ {...rest}
35
+ >
36
+ {#snippet icon()}
37
+ {#if remember}
38
+ <NeoIconSave />
39
+ {:else}
40
+ <NeoIconSaveOff />
41
+ {/if}
42
+ {/snippet}
43
+ </NeoButton>
@@ -0,0 +1,4 @@
1
+ import type { NeoRememberSelectorProps } from './neo-remember-selector.model.js';
2
+ declare const NeoRememberSelector: import("svelte").Component<NeoRememberSelectorProps, {}, "ref" | "hovered" | "focused">;
3
+ type NeoRememberSelector = ReturnType<typeof NeoRememberSelector>;
4
+ export default NeoRememberSelector;
@@ -0,0 +1,40 @@
1
+ <script lang="ts">
2
+ import type { NeoResetSelectorProps } from './neo-reset-selector.model.js';
3
+
4
+ import NeoButton from '../buttons/NeoButton.svelte';
5
+ import NeoIconImage from '../icons/NeoIconImage.svelte';
6
+ import { useNeoThemeContext } from './neo-theme-provider-context.svelte.js';
7
+
8
+ const {
9
+ // state
10
+ label = 'Reset',
11
+
12
+ // Button props
13
+ ref = $bindable(),
14
+ hovered = $bindable(false),
15
+ focused = $bindable(false),
16
+
17
+ // Other props
18
+ ...rest
19
+ }: NeoResetSelectorProps = $props();
20
+
21
+ const context = useNeoThemeContext();
22
+
23
+ const reset = $derived(context.reset);
24
+
25
+ const onReset = () => context.update({ reset: !reset });
26
+ </script>
27
+
28
+ <NeoButton
29
+ aria-label="Toggle {reset ? 'off' : 'on'} style reset"
30
+ title="Toggle {reset ? 'off' : 'on'} style reset"
31
+ toggle
32
+ checked={reset}
33
+ onclick={onReset}
34
+ {label}
35
+ {...rest}
36
+ >
37
+ {#snippet icon()}
38
+ <NeoIconImage />
39
+ {/snippet}
40
+ </NeoButton>
@@ -0,0 +1,4 @@
1
+ import type { NeoResetSelectorProps } from './neo-reset-selector.model.js';
2
+ declare const NeoResetSelector: import("svelte").Component<NeoResetSelectorProps, {}, "ref" | "hovered" | "focused">;
3
+ type NeoResetSelector = ReturnType<typeof NeoResetSelector>;
4
+ export default NeoResetSelector;
@@ -0,0 +1,63 @@
1
+ <script lang="ts">
2
+ import type { NeoSourceSelectorProps } from './neo-source-selector.model.js';
3
+
4
+ import NeoButton from '../buttons/NeoButton.svelte';
5
+ import NeoIconSun from '../icons/NeoIconSun.svelte';
6
+ import { useNeoThemeContext } from './neo-theme-provider-context.svelte.js';
7
+ import { NeoSource } from './neo-theme-provider.model.js';
8
+
9
+ const {
10
+ // state
11
+ label = 'Source',
12
+
13
+ // Button props
14
+ ref = $bindable(),
15
+ hovered = $bindable(false),
16
+ focused = $bindable(false),
17
+
18
+ // Other props
19
+ ...rest
20
+ }: NeoSourceSelectorProps = $props();
21
+
22
+ const context = useNeoThemeContext();
23
+
24
+ const source = $derived(context.source);
25
+
26
+ const sources = Object.values(NeoSource);
27
+ const sourceMap = { ...sources };
28
+ const sourceIndexMap = Object.fromEntries(Object.entries(sourceMap).map(([k, v]) => [v, Number(k)]));
29
+
30
+ let angle = $state(sourceIndexMap[context.source] * 90);
31
+ const onCycleSource = () => {
32
+ angle += 90;
33
+ context.update({ source: sourceMap[(sourceIndexMap[source] + 1) % sources.length] });
34
+ };
35
+
36
+ </script>
37
+
38
+ <NeoButton
39
+ aria-label="Cycle light source origin"
40
+ title="Cycle light source origin"
41
+ checked
42
+ onclick={onCycleSource}
43
+ {label}
44
+ {...rest}
45
+ >
46
+ {#snippet icon()}
47
+ <span class="neo-source-icon" style:--neo-source-rotate="{angle}deg">
48
+ <NeoIconSun />
49
+ </span>
50
+ {/snippet}
51
+ </NeoButton>
52
+
53
+ <style>.neo-source-icon {
54
+ overflow: hidden;
55
+ border-radius: var(--neo-theme-selector-border-radius, var(--neo-border-radius-xxl));
56
+ rotate: var(--neo-source-rotate, 0);
57
+ transition: rotate 0.5s ease;
58
+ }
59
+ .neo-source-icon :global(> svg) {
60
+ width: 1.25rem;
61
+ height: 1.25rem;
62
+ translate: -30% -30%;
63
+ }</style>
@@ -0,0 +1,4 @@
1
+ import type { NeoSourceSelectorProps } from './neo-source-selector.model.js';
2
+ declare const NeoSourceSelector: import("svelte").Component<NeoSourceSelectorProps, {}, "ref" | "hovered" | "focused">;
3
+ type NeoSourceSelector = ReturnType<typeof NeoSourceSelector>;
4
+ export default NeoSourceSelector;
@@ -1,29 +1,44 @@
1
1
  <script lang="ts">
2
2
  import type { NeoThemeProviderProps } from './neo-theme-provider.model.js';
3
3
 
4
- import { onDestroy } from 'svelte';
5
-
6
4
  import { setNeoThemeContext } from './neo-theme-provider-context.svelte.js';
7
5
 
8
- import './neo-theme-provider.scss';
9
-
10
- /* eslint-disable prefer-const -- necessary for binding checked */
11
6
  let {
12
7
  // Snippets
13
8
  children,
14
9
 
15
10
  // States
11
+ ref = $bindable(),
12
+ tag = 'div',
16
13
  reset,
17
14
  theme,
18
15
  source,
19
16
  remember,
20
17
  target,
18
+
19
+ // Other props
20
+ ...rest
21
21
  }: NeoThemeProviderProps = $props();
22
- /* eslint-enable prefer-const */
23
22
 
24
- const context = setNeoThemeContext({ reset, theme, source, remember, root: target });
25
- $effect(() => context.update({ reset, theme, source, remember, root: target }));
26
- onDestroy(() => context.destroy());
23
+ const context = setNeoThemeContext({ reset, theme, source, remember, root: target === 'self' ? ref : target });
24
+ $effect.pre(() => {
25
+ context.update({ reset, theme, source, remember, root: target === 'self' ? ref : target });
26
+ return () => context.destroy();
27
+ });
27
28
  </script>
28
29
 
29
- {@render children?.(context.state)}
30
+ {#if target === 'self'}
31
+ <svelte:element class:neo-theme-provider={true} this={tag} bind:this={ref} {...rest}>
32
+ {#if context.ready}
33
+ {@render children?.(context.state)}
34
+ {/if}
35
+ </svelte:element>
36
+ {:else if context.ready}
37
+ {@render children?.(context.state)}
38
+ {/if}
39
+
40
+ <style>.neo-theme-provider {
41
+ display: flex;
42
+ flex: 1 1 auto;
43
+ flex-direction: column;
44
+ }</style>
@@ -1,5 +1,4 @@
1
1
  import type { NeoThemeProviderProps } from './neo-theme-provider.model.js';
2
- import './neo-theme-provider.scss';
3
- declare const NeoThemeProvider: import("svelte").Component<NeoThemeProviderProps, {}, "">;
2
+ declare const NeoThemeProvider: import("svelte").Component<NeoThemeProviderProps<"div">, {}, "ref">;
4
3
  type NeoThemeProvider = ReturnType<typeof NeoThemeProvider>;
5
4
  export default NeoThemeProvider;