@dvcol/neo-svelte 0.1.6 → 0.1.7

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 (226) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +65 -12
  3. package/dist/buttons/NeoButton.svelte +109 -70
  4. package/dist/buttons/NeoButtonGroup.svelte +48 -44
  5. package/dist/buttons/NeoCheckboxButton.svelte +146 -0
  6. package/dist/buttons/NeoCheckboxButton.svelte.d.ts +19 -0
  7. package/dist/buttons/NeoRadioButton.svelte +144 -0
  8. package/dist/buttons/NeoRadioButton.svelte.d.ts +19 -0
  9. package/dist/buttons/NeoSwitchButton.svelte +272 -0
  10. package/dist/buttons/NeoSwitchButton.svelte.d.ts +19 -0
  11. package/dist/buttons/index.d.ts +8 -2
  12. package/dist/buttons/index.js +3 -0
  13. package/dist/buttons/neo-button-group.model.d.ts +10 -10
  14. package/dist/buttons/neo-button.model.d.ts +30 -5
  15. package/dist/buttons/neo-checkbox-button.model.d.ts +18 -0
  16. package/dist/buttons/neo-checkbox-button.model.js +1 -0
  17. package/dist/buttons/neo-radio-button.model.d.ts +18 -0
  18. package/dist/buttons/neo-radio-button.model.js +1 -0
  19. package/dist/buttons/neo-switch-button.model.d.ts +31 -0
  20. package/dist/buttons/neo-switch-button.model.js +1 -0
  21. package/dist/cards/NeoCard.svelte +108 -79
  22. package/dist/cards/NeoCard.svelte.d.ts +1 -1
  23. package/dist/cards/index.d.ts +1 -1
  24. package/dist/cards/neo-card.model.d.ts +31 -7
  25. package/dist/containers/NeoTransitionContainer.svelte +14 -1
  26. package/dist/containers/index.d.ts +1 -1
  27. package/dist/containers/neo-transition-container.model.d.ts +4 -3
  28. package/dist/divider/NeoDivider.svelte +80 -15
  29. package/dist/divider/index.d.ts +1 -1
  30. package/dist/divider/neo-divider.model.d.ts +33 -1
  31. package/dist/icons/IconAccount.svelte +9 -1
  32. package/dist/icons/IconAdd.svelte +9 -1
  33. package/dist/icons/IconAlert.svelte +9 -1
  34. package/dist/icons/IconAlignBottom.svelte +21 -0
  35. package/dist/icons/IconAlignBottom.svelte.d.ts +26 -0
  36. package/dist/icons/IconAlignMiddle.svelte +21 -0
  37. package/dist/icons/IconAlignMiddle.svelte.d.ts +26 -0
  38. package/dist/icons/IconAlignTop.svelte +21 -0
  39. package/dist/icons/IconAlignTop.svelte.d.ts +26 -0
  40. package/dist/icons/IconBouncingDots.svelte +60 -0
  41. package/dist/icons/IconBouncingDots.svelte.d.ts +23 -0
  42. package/dist/icons/IconCalendar.svelte +9 -1
  43. package/dist/icons/IconCheckbox.svelte +41 -28
  44. package/dist/icons/IconCheckbox.svelte.d.ts +4 -0
  45. package/dist/icons/IconCircleLoading.svelte +9 -5
  46. package/dist/icons/IconCircleLoading.svelte.d.ts +20 -14
  47. package/dist/icons/IconClear.svelte +9 -1
  48. package/dist/icons/IconClose.svelte +9 -1
  49. package/dist/icons/IconConfirm.svelte +9 -1
  50. package/dist/icons/IconDoubleChevron.svelte +34 -0
  51. package/dist/icons/IconDoubleChevron.svelte.d.ts +26 -0
  52. package/dist/icons/IconDownload.svelte +9 -1
  53. package/dist/icons/IconEmpty.svelte +9 -1
  54. package/dist/icons/IconFileUpload.svelte +9 -1
  55. package/dist/icons/IconGithub.svelte +9 -1
  56. package/dist/icons/IconImage.svelte +9 -1
  57. package/dist/icons/IconList.svelte +36 -0
  58. package/dist/icons/IconList.svelte.d.ts +26 -0
  59. package/dist/icons/IconMinus.svelte +9 -1
  60. package/dist/icons/IconMoon.svelte +9 -1
  61. package/dist/icons/IconPaint.svelte +9 -1
  62. package/dist/icons/IconPencil.svelte +9 -1
  63. package/dist/icons/IconRadio.svelte +12 -8
  64. package/dist/icons/IconRadio.svelte.d.ts +2 -0
  65. package/dist/icons/IconSave.svelte +2 -2
  66. package/dist/icons/IconSaveOff.svelte +2 -2
  67. package/dist/icons/IconSearch.svelte +9 -1
  68. package/dist/icons/IconSun.svelte +9 -1
  69. package/dist/icons/IconSunFull.svelte +9 -1
  70. package/dist/icons/IconVideo.svelte +9 -1
  71. package/dist/icons/IconWatch.svelte +9 -1
  72. package/dist/icons/IconWatchOff.svelte +9 -1
  73. package/dist/index.d.ts +3 -0
  74. package/dist/index.js +3 -0
  75. package/dist/inputs/NeoCheckbox.svelte +51 -145
  76. package/dist/inputs/NeoCheckbox.svelte.d.ts +1 -1
  77. package/dist/inputs/NeoColorPicker.svelte +23 -38
  78. package/dist/inputs/NeoColorPicker.svelte.d.ts +1 -1
  79. package/dist/inputs/NeoColorPickerSelector.svelte +51 -0
  80. package/dist/inputs/NeoColorPickerSelector.svelte.d.ts +19 -0
  81. package/dist/inputs/NeoDateTime.svelte +16 -3
  82. package/dist/inputs/NeoDateTime.svelte.d.ts +1 -1
  83. package/dist/inputs/NeoFilePicker.svelte +57 -19
  84. package/dist/inputs/NeoFilePicker.svelte.d.ts +1 -1
  85. package/dist/inputs/NeoFilePickerCard.svelte +40 -23
  86. package/dist/inputs/NeoFilePickerCard.svelte.d.ts +1 -1
  87. package/dist/inputs/NeoNumberStep.svelte +20 -4
  88. package/dist/inputs/NeoNumberStep.svelte.d.ts +1 -1
  89. package/dist/inputs/NeoPassword.svelte +18 -5
  90. package/dist/inputs/NeoPassword.svelte.d.ts +1 -1
  91. package/dist/inputs/NeoPin.svelte +11 -5
  92. package/dist/inputs/NeoPin.svelte.d.ts +1 -1
  93. package/dist/inputs/NeoRadio.svelte +37 -144
  94. package/dist/inputs/NeoRadio.svelte.d.ts +1 -1
  95. package/dist/inputs/NeoRange.svelte +139 -105
  96. package/dist/inputs/NeoRange.svelte.d.ts +1 -1
  97. package/dist/inputs/NeoSelect.svelte +118 -0
  98. package/dist/inputs/NeoSelect.svelte.d.ts +19 -0
  99. package/dist/inputs/NeoSwitch.svelte +55 -206
  100. package/dist/inputs/NeoSwitch.svelte.d.ts +1 -1
  101. package/dist/inputs/NeoTextarea.svelte +77 -42
  102. package/dist/inputs/NeoTextarea.svelte.d.ts +1 -1
  103. package/dist/inputs/common/NeoAffix.svelte +48 -34
  104. package/dist/inputs/common/NeoBaseInput.svelte +15 -0
  105. package/dist/inputs/common/NeoBaseInput.svelte.d.ts +1 -1
  106. package/dist/inputs/common/NeoInput.svelte +121 -46
  107. package/dist/inputs/common/NeoInput.svelte.d.ts +1 -1
  108. package/dist/inputs/common/NeoInputValidation.svelte +5 -2
  109. package/dist/inputs/common/NeoInputValidation.svelte.d.ts +1 -1
  110. package/dist/inputs/common/NeoLabel.svelte +2 -1
  111. package/dist/inputs/common/NeoLabel.svelte.d.ts +1 -1
  112. package/dist/inputs/common/NeoValidation.svelte +9 -7
  113. package/dist/inputs/common/NeoValidation.svelte.d.ts +1 -1
  114. package/dist/inputs/common/neo-affix.model.d.ts +27 -2
  115. package/dist/inputs/common/neo-input.model.d.ts +40 -5
  116. package/dist/inputs/common/neo-label.model.d.ts +4 -0
  117. package/dist/inputs/common/neo-validation.model.d.ts +5 -3
  118. package/dist/inputs/index.d.ts +2 -1
  119. package/dist/inputs/index.js +1 -0
  120. package/dist/inputs/neo-checkbox.model.d.ts +4 -5
  121. package/dist/inputs/neo-color-picker.model.d.ts +13 -2
  122. package/dist/inputs/neo-date-time.model.d.ts +4 -0
  123. package/dist/inputs/neo-file-picker.model.d.ts +20 -0
  124. package/dist/inputs/neo-number-step.model.d.ts +8 -0
  125. package/dist/inputs/neo-password.model.d.ts +7 -0
  126. package/dist/inputs/neo-radio.model.d.ts +4 -5
  127. package/dist/inputs/neo-range.model.d.ts +17 -2
  128. package/dist/inputs/neo-select.model.d.ts +22 -0
  129. package/dist/inputs/neo-select.model.js +1 -0
  130. package/dist/inputs/neo-switch.model.d.ts +4 -5
  131. package/dist/list/NeoList.svelte +449 -0
  132. package/dist/list/NeoList.svelte.d.ts +19 -0
  133. package/dist/list/NeoListBaseItem.svelte +227 -0
  134. package/dist/list/NeoListBaseItem.svelte.d.ts +19 -0
  135. package/dist/list/NeoListBaseLoader.svelte +142 -0
  136. package/dist/list/NeoListBaseLoader.svelte.d.ts +19 -0
  137. package/dist/list/NeoListBaseSection.svelte +55 -0
  138. package/dist/list/NeoListBaseSection.svelte.d.ts +19 -0
  139. package/dist/list/NeoListSearch.svelte +146 -0
  140. package/dist/list/NeoListSearch.svelte.d.ts +19 -0
  141. package/dist/list/index.d.ts +12 -0
  142. package/dist/list/index.js +7 -0
  143. package/dist/list/neo-list-base-item.model.d.ts +55 -0
  144. package/dist/list/neo-list-base-item.model.js +1 -0
  145. package/dist/list/neo-list-base-loader.model.d.ts +55 -0
  146. package/dist/list/neo-list-base-loader.model.js +1 -0
  147. package/dist/list/neo-list-base-section.model.d.ts +30 -0
  148. package/dist/list/neo-list-base-section.model.js +1 -0
  149. package/dist/list/neo-list-search.model.d.ts +43 -0
  150. package/dist/list/neo-list-search.model.js +17 -0
  151. package/dist/list/neo-list.model.d.ts +317 -0
  152. package/dist/list/neo-list.model.js +6 -0
  153. package/dist/nav/NeoTab.svelte +12 -8
  154. package/dist/nav/NeoTabDivider.svelte +15 -0
  155. package/dist/nav/NeoTabDivider.svelte.d.ts +19 -0
  156. package/dist/nav/NeoTabPanel.svelte +1 -1
  157. package/dist/nav/NeoTabs.svelte +30 -17
  158. package/dist/nav/index.d.ts +5 -4
  159. package/dist/nav/index.js +1 -0
  160. package/dist/nav/neo-tab-panel.model.d.ts +8 -7
  161. package/dist/nav/neo-tab.model.d.ts +5 -5
  162. package/dist/nav/neo-tabs.model.d.ts +23 -11
  163. package/dist/providers/NeoThemePicker.svelte +93 -0
  164. package/dist/providers/NeoThemePicker.svelte.d.ts +19 -0
  165. package/dist/providers/NeoThemeProvider.svelte +2 -765
  166. package/dist/providers/NeoThemeProvider.svelte.d.ts +1 -0
  167. package/dist/providers/NeoThemeSelector.svelte +11 -3
  168. package/dist/providers/index.d.ts +5 -3
  169. package/dist/providers/index.js +2 -1
  170. package/dist/providers/neo-theme-picker.model.d.ts +21 -0
  171. package/dist/providers/neo-theme-picker.model.js +1 -0
  172. package/dist/providers/neo-theme-provider.scss +8 -0
  173. package/dist/providers/neo-theme-selector.model.d.ts +15 -0
  174. package/dist/skeletons/NeoSkeletonContainer.svelte +75 -11
  175. package/dist/skeletons/NeoSkeletonContainer.svelte.d.ts +1 -1
  176. package/dist/skeletons/NeoSkeletonMedia.svelte +41 -32
  177. package/dist/skeletons/NeoSkeletonMedia.svelte.d.ts +1 -1
  178. package/dist/skeletons/NeoSkeletonText.svelte +88 -46
  179. package/dist/skeletons/NeoSkeletonText.svelte.d.ts +1 -1
  180. package/dist/skeletons/index.d.ts +2 -2
  181. package/dist/skeletons/neo-skeleton-container.model.d.ts +8 -2
  182. package/dist/skeletons/neo-skeleton-media.model.d.ts +23 -2
  183. package/dist/skeletons/neo-skeleton-text.model.d.ts +36 -5
  184. package/dist/styles/animation.scss +6 -20
  185. package/dist/styles/common/colors.scss +174 -135
  186. package/dist/styles/common/properties.css +6 -0
  187. package/dist/styles/common/shadows.scss +97 -22
  188. package/dist/styles/common/spacing.scss +1 -0
  189. package/dist/styles/mixin.scss +99 -21
  190. package/dist/text/NeoEllipsis.svelte +29 -0
  191. package/dist/text/NeoEllipsis.svelte.d.ts +19 -0
  192. package/dist/text/NeoMark.svelte +32 -0
  193. package/dist/text/NeoMark.svelte.d.ts +19 -0
  194. package/dist/text/NeoScrollShadow.svelte +71 -0
  195. package/dist/text/NeoScrollShadow.svelte.d.ts +19 -0
  196. package/dist/text/index.d.ts +6 -0
  197. package/dist/text/index.js +3 -0
  198. package/dist/text/neo-ellipsis.model.d.ts +24 -0
  199. package/dist/text/neo-ellipsis.model.js +1 -0
  200. package/dist/text/neo-mark.model.d.ts +26 -0
  201. package/dist/text/neo-mark.model.js +1 -0
  202. package/dist/text/neo-scroll-shadow.model.d.ts +34 -0
  203. package/dist/text/neo-scroll-shadow.model.js +1 -0
  204. package/dist/tooltips/NeoTooltip.svelte +267 -0
  205. package/dist/tooltips/NeoTooltip.svelte.d.ts +19 -0
  206. package/dist/tooltips/index.d.ts +2 -0
  207. package/dist/tooltips/index.js +1 -0
  208. package/dist/tooltips/neo-tooltip.model.d.ts +128 -0
  209. package/dist/tooltips/neo-tooltip.model.js +1 -0
  210. package/dist/utils/action.utils.d.ts +22 -7
  211. package/dist/utils/action.utils.js +5 -3
  212. package/dist/utils/colors.utils.d.ts +16 -0
  213. package/dist/utils/colors.utils.js +19 -0
  214. package/dist/utils/html-element.utils.d.ts +8 -1
  215. package/dist/utils/html-element.utils.js +29 -1
  216. package/dist/utils/shadow.utils.d.ts +22 -5
  217. package/dist/utils/shadow.utils.js +20 -8
  218. package/dist/utils/transition.utils.d.ts +9 -3
  219. package/dist/utils/transition.utils.js +15 -5
  220. package/package.json +29 -18
  221. package/dist/utils/math.utils.d.ts +0 -1
  222. package/dist/utils/math.utils.js +0 -7
  223. package/dist/utils/timeout.util.d.ts +0 -5
  224. package/dist/utils/timeout.util.js +0 -15
  225. package/dist/utils/utils.svelte.d.ts +0 -6
  226. package/dist/utils/utils.svelte.js +0 -13
package/CHANGELOG.md CHANGED
@@ -2,6 +2,85 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [0.1.7](https://github.com/dvcol/neo-svelte/compare/v0.1.6...v0.1.7) (2025-02-03)
6
+
7
+
8
+ ### Features
9
+
10
+ * **affix:** adds custom loading/close/validation snippets ([fcefc30](https://github.com/dvcol/neo-svelte/commit/fcefc309853a6566edacc244e59a3b288b534dd9))
11
+ * **button:** adds support for theme colors ([e01c567](https://github.com/dvcol/neo-svelte/commit/e01c5679bf3b7d48fe822e2a43634b0fd6ac18f4))
12
+ * **buttons:** adds indeterminate to switch and shallow to buttons ([a196c57](https://github.com/dvcol/neo-svelte/commit/a196c57c2b4c3eabcd2eb9dbce2b71492ebec848))
13
+ * **buttons:** adds label snippet ([b39de08](https://github.com/dvcol/neo-svelte/commit/b39de087d34c78c8ea93236801e9c79fe99ad44e))
14
+ * **buttons:** split checkbox, switch, radio buttons out ([536b353](https://github.com/dvcol/neo-svelte/commit/536b3539868fbf78bf720a807744bb6c6a2d0e2a))
15
+ * **button:** support label in switch buttons ([9d69d2a](https://github.com/dvcol/neo-svelte/commit/9d69d2ac3832308482c5ba0f91ba66282739cad8))
16
+ * **divider:** expand divider api ([fb2e932](https://github.com/dvcol/neo-svelte/commit/fb2e9327b8c5cbb41f322f53eaae9aaf61766782))
17
+ * **elevation:** adds support for string elevations ([45d1cd0](https://github.com/dvcol/neo-svelte/commit/45d1cd00d59e3ef8e3df415099ff91022938eaa4))
18
+ * **input:** adds native select component ([0b7dfc1](https://github.com/dvcol/neo-svelte/commit/0b7dfc105e6b65a13665423c37a42bde61f51580))
19
+ * **inputs:** adds customisable icons ([054f4d7](https://github.com/dvcol/neo-svelte/commit/054f4d73d273e7abc8d34f21789776293d02da18))
20
+ * **input:** style multi select native inputs ([308a6de](https://github.com/dvcol/neo-svelte/commit/308a6de8ae6f7a2892926a8defe6dc6cca7b1ba7))
21
+ * **list:** adds aria roles ([165693d](https://github.com/dvcol/neo-svelte/commit/165693d7c55aa1ee58f260f72c92dbbecac0aa3d))
22
+ * **list:** adds arrow navigation ([f339b75](https://github.com/dvcol/neo-svelte/commit/f339b75a2fbe3749e51a4c7d893e3486915335c0))
23
+ * **list:** adds basic support for filtering/sorting ([bcf1c8f](https://github.com/dvcol/neo-svelte/commit/bcf1c8f46dda64ac29775886cd9960fe45296e1c))
24
+ * **list:** adds custom base loader ([01bc010](https://github.com/dvcol/neo-svelte/commit/01bc010de72117d3cad4af9cf2f23e1cc20df3d9))
25
+ * **list:** adds description support ([f7a2025](https://github.com/dvcol/neo-svelte/commit/f7a20254c586b6806547c7c014cd10ef27d7aa90))
26
+ * **list:** adds onclick & href support ([da844ea](https://github.com/dvcol/neo-svelte/commit/da844eadc3da4fd15370601dba6c7b03e95a4948))
27
+ * **list:** adds search input ([8d1593a](https://github.com/dvcol/neo-svelte/commit/8d1593a8548f7bf4c10251869f4b92874efc718c))
28
+ * **list:** adds section support ([ce8f7ce](https://github.com/dvcol/neo-svelte/commit/ce8f7ce2d7ea0ed038432fd171921e856aaf40e0))
29
+ * **list:** adds sticky section header ([9276852](https://github.com/dvcol/neo-svelte/commit/9276852220729eee5413aa17c4845cf48fcf7fc2))
30
+ * **list:** adds support for disabled items ([6180f4c](https://github.com/dvcol/neo-svelte/commit/6180f4cfa17034622e9294fe0d4f12913d30866e))
31
+ * **list:** clear selected if list mutates ([086d1bf](https://github.com/dvcol/neo-svelte/commit/086d1bf66210c8a527e4c7e595d1c93b75267bdd))
32
+ * **list:** first draft for lists ([502885c](https://github.com/dvcol/neo-svelte/commit/502885ce92ba5525566f57440be75e76d32aaafc))
33
+ * **list:** initial support for selectable lists ([1451253](https://github.com/dvcol/neo-svelte/commit/145125319e90e5896347b287873809d1676e32a3))
34
+ * **list:** support after & before loading skeleton ([331a21d](https://github.com/dvcol/neo-svelte/commit/331a21d656d5f0902774b42878b2287edf1546f9))
35
+ * **list:** support checkmarks ([45564ba](https://github.com/dvcol/neo-svelte/commit/45564ba73a681a1c82ec41e5967ef5aeba4cd52b))
36
+ * **nav:** adds tab divider support ([5d07d80](https://github.com/dvcol/neo-svelte/commit/5d07d800a1d38248b7c2b3da6ef7eea1de22c031))
37
+ * **scroll:** makes custom scrollbar optional ([2b54880](https://github.com/dvcol/neo-svelte/commit/2b54880ba24b38f1eff1dedafb8b97487bbf35fb))
38
+ * **select:** basic option array input ([6b412fd](https://github.com/dvcol/neo-svelte/commit/6b412fd240ef848ba895a9024ec446c390e004de))
39
+ * **skeleton:** adds auto-line discovery for skeleton ([1c54529](https://github.com/dvcol/neo-svelte/commit/1c54529f9c5c7078ef07b0c1637bb777eb2fe1a7))
40
+ * **skeleton:** adds glass skeleton to generic component ([e0fe4f4](https://github.com/dvcol/neo-svelte/commit/e0fe4f4a1bac3c8a506e0e57ed76354ca07dacc6))
41
+ * **skeleton:** auto-size skeleton containers ([10938e2](https://github.com/dvcol/neo-svelte/commit/10938e2a6f09f27e5186957d6dd64ca79919d000))
42
+ * **tabs:** adds pill mode ([84d3615](https://github.com/dvcol/neo-svelte/commit/84d36158dac3a80d33b36bd3f8e7233a0abef0b3))
43
+ * **tabs:** adjust hover colors & transitions ([a6a8fed](https://github.com/dvcol/neo-svelte/commit/a6a8fed31343b1c93dab4b8163d4a878ca8b92dc))
44
+ * **text:** adds ellipsis and mark components ([0719445](https://github.com/dvcol/neo-svelte/commit/0719445b9f6ae0229c887bfb7000cad165995c91))
45
+ * **text:** adds scroll-shadow ([9c6fd29](https://github.com/dvcol/neo-svelte/commit/9c6fd29a75796427a264dd9f97ec3e9444796bf0))
46
+ * **theme:** adds colour pickers ([9757934](https://github.com/dvcol/neo-svelte/commit/97579340e0b143b182267b36c35905234bf4644e))
47
+ * **tooltip:** adds custom tooltip snippets ([33d2d59](https://github.com/dvcol/neo-svelte/commit/33d2d59bd90052462d4b16618900e6ed82e860ba))
48
+ * **tooltip:** adds generic tooltip component ([813fc2f](https://github.com/dvcol/neo-svelte/commit/813fc2ff5b43d8157954bf79186ee9e3913bb9a5))
49
+ * **tooltip:** adds supports for external refs ([09f1be1](https://github.com/dvcol/neo-svelte/commit/09f1be1d748e34e45d157b0d40d2b5f039253c2e))
50
+ * **tooltip:** match width with trigger ([853ed32](https://github.com/dvcol/neo-svelte/commit/853ed324ac5a647e3ad94d1bd4cff5c641604b84))
51
+ * **tooltips:** adds tooltip styling ([4e5418b](https://github.com/dvcol/neo-svelte/commit/4e5418b60aa8d840a543dabdca3ef8b2958a4e14))
52
+
53
+
54
+ ### Bug Fixes
55
+
56
+ * **button:** adjust icon spacing ([cb6f163](https://github.com/dvcol/neo-svelte/commit/cb6f163fb939ba382361dc0ff8ff28ef141f8d8a))
57
+ * **button:** remove enter pressed state on blur ([9c53dd1](https://github.com/dvcol/neo-svelte/commit/9c53dd16aa68da20495fae09c5ffe051f865d4ad))
58
+ * **buttons:** correct border color for flat glass style ([65b9e12](https://github.com/dvcol/neo-svelte/commit/65b9e121bd740119182f852ff7ece796a4742c28))
59
+ * **card:** fix media card css ([8dd8088](https://github.com/dvcol/neo-svelte/commit/8dd8088fcaae8ec0764b6cae6a3edbd5695d3b61))
60
+ * **card:** makes scrollbar transition additive ([59e2a8f](https://github.com/dvcol/neo-svelte/commit/59e2a8ff4c976cd63a30f4e2f7940ddb39bbde9d))
61
+ * **checkbox:** adds missing touched binding ([8736cb6](https://github.com/dvcol/neo-svelte/commit/8736cb68507e6d465a4267e9c0667a0009dd974f))
62
+ * **colors:** adjust variables to be relative to theme color ([754e4d2](https://github.com/dvcol/neo-svelte/commit/754e4d2effe5d74e67eff20a85413c39c84fd7be))
63
+ * **glass:** adjust border color when flat ([01995fe](https://github.com/dvcol/neo-svelte/commit/01995fe9757b9d2504c60f7416338f8b5be1178a))
64
+ * **glass:** adjust pressed glass shadow ([2182943](https://github.com/dvcol/neo-svelte/commit/21829437e5fbc5e832aeda9f963fd7a529099902))
65
+ * **glass:** remove border when inset ([631efbe](https://github.com/dvcol/neo-svelte/commit/631efbe00268c3546e7d3b097695c3f0eeb528a3))
66
+ * **icon:** make checkbox prop reactive ([7f72fb6](https://github.com/dvcol/neo-svelte/commit/7f72fb6c324a640f124362f2a4b54dab23ca484f))
67
+ * **input:** adjust color picker min height/width ([8536e03](https://github.com/dvcol/neo-svelte/commit/8536e03709a4a03132fe7f5e0c30317baf8ee82b))
68
+ * **input:** adjust label translate ([3e35382](https://github.com/dvcol/neo-svelte/commit/3e3538250314464afca4e9ed0582df33ab7e15fd))
69
+ * **input:** debounce clearable to fix touch flashing on mobile ([72b86d8](https://github.com/dvcol/neo-svelte/commit/72b86d81269d4ef800dd3f0dacf813279b041afe))
70
+ * **input:** keep close button visible on focusin ([761ac31](https://github.com/dvcol/neo-svelte/commit/761ac31461cae17bff17caa41cf77f723e226f3f))
71
+ * **input:** resize floating values on element resize ([f77acc2](https://github.com/dvcol/neo-svelte/commit/f77acc2c903c8ee02c19b3663ebec6e4f35fe824))
72
+ * **list:** handle reflow dividers ([8b7ca36](https://github.com/dvcol/neo-svelte/commit/8b7ca36dceacb46006719263b5e31325a23c55f9))
73
+ * **list:** keep selection when sorting/filtering ([48c43ec](https://github.com/dvcol/neo-svelte/commit/48c43ec2194a9eb4f39e38b1b737552d98001abb))
74
+ * **list:** move to simple scale and scrollToBottom ([80165fa](https://github.com/dvcol/neo-svelte/commit/80165fa73d988e48ad8748ed45187d86fb53ef74))
75
+ * **list:** only animate top level list ([9106151](https://github.com/dvcol/neo-svelte/commit/9106151154dec7fec0ec7b386c0f60816b1447de))
76
+ * **list:** remove scroll shadow when empty ([2654975](https://github.com/dvcol/neo-svelte/commit/2654975c22e68ea9590d2f60a11dcda3b8c47f23))
77
+ * **list:** rework transitions ([3bf6de9](https://github.com/dvcol/neo-svelte/commit/3bf6de959206f844a6964e57c3af1839624f73cf))
78
+ * **skeleton:** adjust font & line height to match defaults ([06eb497](https://github.com/dvcol/neo-svelte/commit/06eb4973b2d72fef3e12effd6cbdbcb927e28332))
79
+ * **skeleton:** adjust line spacing in alt mode ([7ec1ec9](https://github.com/dvcol/neo-svelte/commit/7ec1ec91906f6aabffe61d49c5b4ce795819a1ff))
80
+ * **style:** improve :global scoping in tabs & list ([363e106](https://github.com/dvcol/neo-svelte/commit/363e106b1ade7ba0baa7c788146a757fc270f972))
81
+ * **tabs:** fix line regression & add dynamic default slide elevation ([8894bdf](https://github.com/dvcol/neo-svelte/commit/8894bdffd7006e44186852c60da733304964e20b))
82
+ * **tooltip:** keep open while focused ([ac5df59](https://github.com/dvcol/neo-svelte/commit/ac5df592a96fc793b7637b1a6117a66c0f5cc797))
83
+
5
84
  ### [0.1.6](https://github.com/dvcol/neo-svelte/compare/v0.1.5...v0.1.6) (2025-01-10)
6
85
 
7
86
 
package/README.md CHANGED
@@ -51,6 +51,8 @@ See examples in the demo (code [here](https://github.com/dvcol/neo-svelte/tree/f
51
51
  ## TODO
52
52
  - [ ] @media any-pointer:coarse any-hover:none
53
53
  - [x] Buttons
54
+ - [x] toggle
55
+ - [x] groups
54
56
  - [x] Tabs
55
57
  - [x] Card
56
58
  - [x] Inputs
@@ -78,9 +80,67 @@ See examples in the demo (code [here](https://github.com/dvcol/neo-svelte/tree/f
78
80
  - [x] custom before-after
79
81
  - [x] steps
80
82
  - [ ] vertical
81
- - [ ] select
83
+ - [ ] rating (stars)
84
+ - [x] select
85
+ - [x] native
86
+ - [ ] custom
87
+ - [x] tooltip
88
+ - [ ] popconfirm
89
+ - [ ] popselect
90
+ - [ ] nested menus
91
+
92
+ - [x] list
93
+ - [x] select
94
+ - [X] multiple
95
+ - [x] disabled
96
+ - [x] readonly
97
+ - [x] sections
98
+ - [x] keyboard navigation
99
+ - [x] scroll shadow
100
+ - [ ] virtualized
101
+ - [ ] infinite scroll
102
+ - [ ] drag & drop
103
+ - [ ] pagination
104
+ - [ ] pull/scroll to refresh
105
+ - [x] filter
106
+ - [x] sort
107
+ - [ ] tree
108
+
109
+ - [ ] stepper
110
+ - [ ] vertical
111
+ - [ ] progress/dots
112
+
113
+ - [ ] Chat
114
+ - [ ] infinite scroll
115
+ - [ ] virtual scroll
116
+ - [ ] async
117
+ - [ ] stream
118
+ - [ ] generative text animation
119
+ - [ ] scroll to bottom
120
+ - [ ] typing indicator
121
+ - [ ] read indicator
122
+ - [ ] reactions
123
+ - [ ] threads
124
+ - [ ] @ / # tags
125
+ - [ ] mentions
126
+ - [ ] attachments
127
+ - [ ] gifs/images
128
+ - [ ] videos
129
+ - [ ] audio
130
+ - [ ] custom cards (contact, etc.)
131
+ - [ ] custom bubbles
132
+ - [ ] custom input
133
+
134
+ - [ ] Modal/dialog
135
+ - [ ] drawer/panel
136
+ - [ ] collapsible
137
+ - [ ] position
138
+ - [ ] backdrop
139
+ - [ ] click outside
140
+
82
141
  - [ ] table
83
142
  - [ ] pagination
143
+
84
144
  - [ ] auto-complete
85
145
  - [ ] @ / # tags
86
146
  - [ ] select
@@ -104,23 +164,16 @@ See examples in the demo (code [here](https://github.com/dvcol/neo-svelte/tree/f
104
164
  - [ ] summary
105
165
  - [ ] details (html semantic tags)
106
166
 
107
- - [ ] tooltip
108
- - [ ] popconfirm
109
- - [ ] popselect
110
167
  - [ ] text
111
168
  - [ ] elevation
112
- - [ ] elipsis
169
+ - [x] ellipsis
170
+ - [x] mark
171
+ - [x] scroll & shadow
172
+ - [ ] typing animation
113
173
 
114
174
  - [ ] Alerts
115
175
  - [ ] toast
116
176
  - [ ] rich notification
117
- - [ ] Modal/dialog
118
- - [ ] drawer/panel
119
- - [ ] collapsible
120
- - [ ] position
121
- - [ ] backdrop
122
- - [ ] click outside
123
- - [ ] scrollbar ?
124
177
  - [ ] container
125
178
  - [x] transition
126
179
  - [ ] split/resizable
@@ -5,12 +5,14 @@
5
5
 
6
6
  import IconCircleLoading from '../icons/IconCircleLoading.svelte';
7
7
  import { toAction, toActionProps, toTransition, toTransitionProps } from '../utils/action.utils.js';
8
- import { enterDefaultTransition } from '../utils/transition.utils.js';
8
+ import { getColorVariable } from '../utils/colors.utils.js';
9
+ import { enterTransitionProps } from '../utils/transition.utils.js';
9
10
 
10
11
  /* eslint-disable prefer-const -- necessary for binding checked */
11
12
  let {
12
13
  // Snippets
13
14
  children,
15
+ label,
14
16
  icon,
15
17
 
16
18
  // States
@@ -27,11 +29,14 @@
27
29
 
28
30
  // Styles
29
31
  start,
32
+ color,
33
+ ghost,
30
34
  text,
31
35
  flat,
32
36
  glass,
33
37
  rounded,
34
38
  inset,
39
+ shallow,
35
40
  reverse,
36
41
  coalesce,
37
42
  pulse,
@@ -46,6 +51,7 @@
46
51
  onclick,
47
52
  onkeydown,
48
53
  onkeyup,
54
+ onblur,
49
55
 
50
56
  // Transition
51
57
  in: inAction,
@@ -63,7 +69,7 @@
63
69
  let enter = $state(false);
64
70
  let active = $state(false);
65
71
  const pressed = $derived(enter || active || checked);
66
- const empty = $derived(only || !children);
72
+ const empty = $derived(only || (!children && !label));
67
73
 
68
74
  let timeout: ReturnType<typeof setTimeout>;
69
75
  const onActive = () => {
@@ -99,6 +105,11 @@
99
105
  onkeyup?.(e);
100
106
  };
101
107
 
108
+ const onBlur: NeoButtonProps['onblur'] = e => {
109
+ enter = false;
110
+ onblur?.(e);
111
+ };
112
+
102
113
  const element = $derived(tag ?? (href ? 'a' : 'button'));
103
114
  const role = $derived(!['button', 'a'].includes(element) ? 'button' : undefined);
104
115
  const tabindex = $derived(!disabled && role ? 0 : undefined);
@@ -115,7 +126,7 @@
115
126
  <svelte:element
116
127
  this={element}
117
128
  bind:this={ref}
118
- {href}
129
+ href={loading || disabled ? undefined : href}
119
130
  {role}
120
131
  {tabindex}
121
132
  class:neo-button={true}
@@ -127,11 +138,14 @@
127
138
  class:neo-skeleton={skeleton}
128
139
  class:neo-start={start}
129
140
  class:neo-glass={glass}
130
- class:neo-flat={flat || text}
131
- class:neo-borderless={text}
141
+ class:neo-flat={flat || text || ghost}
142
+ class:neo-ghost={ghost}
143
+ class:neo-borderless={text || ghost}
132
144
  class:neo-inset={inset}
145
+ class:neo-shallow={shallow}
133
146
  class:neo-rounded={rounded}
134
147
  class:neo-empty={empty}
148
+ style:--neo-btn-text-color={getColorVariable(color)}
135
149
  style:justify-content={justify}
136
150
  style:align-items={align}
137
151
  style:flex
@@ -141,12 +155,13 @@
141
155
  onkeydown={onKeydownEnter}
142
156
  onkeyup={onKeyUpEnter}
143
157
  onclick={onClick}
144
- disabled={disabled || skeleton}
158
+ onblur={onBlur}
159
+ {disabled}
145
160
  {...rest}
146
161
  >
147
- <span class="neo-content" class:neo-reverse={reverse}>
162
+ <div class="neo-content" class:neo-reverse={reverse}>
148
163
  {#if loading || icon}
149
- <span class="neo-icon" class:neo-only={empty} transition:width={enterDefaultTransition}>
164
+ <span class="neo-icon" class:neo-only={empty} transition:width={enterTransitionProps}>
150
165
  {#if loading}
151
166
  <IconCircleLoading />
152
167
  {:else}
@@ -155,9 +170,14 @@
155
170
  </span>
156
171
  {/if}
157
172
  {#if !empty}
173
+ {#if typeof label === 'string'}
174
+ <span class="neo-label">{label}</span>
175
+ {:else}
176
+ {@render label?.()}
177
+ {/if}
158
178
  {@render children?.()}
159
179
  {/if}
160
- </span>
180
+ </div>
161
181
  </svelte:element>
162
182
 
163
183
  <style>.neo-button.neo-pulse::after, .neo-button.neo-pulse::before, .neo-button.neo-coalesce::after, .neo-button.neo-coalesce::before {
@@ -174,12 +194,12 @@
174
194
  }
175
195
 
176
196
  .neo-button {
177
- display: flex;
197
+ display: inline-flex;
178
198
  align-items: center;
179
199
  justify-content: center;
180
200
  box-sizing: border-box;
181
201
  min-width: var(--neo-btn-min-width);
182
- min-height: calc(var(--neo-btn-min-height, var(--neo-line-height)) + 0.5rem);
202
+ min-height: var(--neo-btn-min-height, var(--neo-line-height));
183
203
  margin: var(--neo-btn-margin, var(--neo-shadow-margin, 0.625rem));
184
204
  padding: var(--neo-btn-padding, 0.25rem 0.75rem);
185
205
  color: var(--neo-btn-text-color, inherit);
@@ -199,31 +219,84 @@
199
219
  cursor: wait;
200
220
  }
201
221
  .neo-button.neo-inset {
202
- --neo-box-shadow-pressed-2: var(--neo-box-shadow-inset-2);
203
- --neo-glass-box-shadow-pressed-2: var(--neo-glass-box-shadow-inset-2);
222
+ --neo-btn-box-shadow-active: var(--neo-box-shadow-inset-1);
223
+ --neo-btn-box-shadow-focus-active: var(--neo-box-shadow-inset-1);
224
+ }
225
+ .neo-button.neo-shallow {
226
+ --neo-btn-box-shadow-active: var(--neo-box-shadow-pressed-1);
227
+ --neo-btn-box-shadow-focus-active: var(--neo-box-shadow-pressed-1);
228
+ --neo-btn-box-shadow-active-flat: var(--neo-box-shadow-inset-2);
229
+ --neo-btn-box-shadow-active-flat-toggle: var(--neo-box-shadow-inset-2);
230
+ --neo-btn-scale-pressed: 1;
231
+ }
232
+ .neo-button .neo-content {
233
+ display: inline-flex;
234
+ align-items: center;
235
+ justify-content: center;
236
+ width: 100%;
237
+ height: 100%;
238
+ backface-visibility: hidden;
239
+ transition: color 0.3s ease, scale 0.3s ease;
240
+ scale: 1;
241
+ }
242
+ .neo-button .neo-content .neo-icon:not(.neo-only) {
243
+ margin-right: var(--neo-btn-icon-gap, 0.35rem);
244
+ margin-left: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.5rem)));
245
+ }
246
+ .neo-button .neo-content.neo-reverse {
247
+ flex-direction: row-reverse;
248
+ }
249
+ .neo-button .neo-content.neo-reverse .neo-icon:not(.neo-only) {
250
+ margin-right: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.5rem)));
251
+ margin-left: var(--neo-btn-icon-gap, 0.35rem);
252
+ }
253
+ .neo-button.neo-ghost {
254
+ justify-content: unset;
255
+ padding: var(--neo-btn-padding, 0);
256
+ border: none;
257
+ }
258
+ .neo-button.neo-ghost .neo-content {
259
+ justify-content: unset;
260
+ text-align: start;
204
261
  }
205
262
  .neo-button:hover {
206
- color: var(--neo-btn-text-color-hover, inherit);
207
263
  box-shadow: var(--neo-btn-box-shadow-hover, var(--neo-box-shadow-raised-2));
208
264
  }
265
+ .neo-button:hover .neo-content {
266
+ color: var(--neo-btn-text-color-hover, var(--neo-text-color-hover));
267
+ }
268
+ .neo-button:focus-visible .neo-content {
269
+ color: var(--neo-btn-text-color-focused, var(--neo-text-color-focused));
270
+ }
209
271
  .neo-button.neo-pressed, .neo-button:active:not(.neo-loading) {
210
- color: var(--neo-btn-text-color-active, var(--neo-text-color-active));
211
272
  box-shadow: var(--neo-btn-box-shadow-active, var(--neo-box-shadow-pressed-2));
212
273
  transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, backdrop-filter 0.3s ease, border-radius 0.3s ease, box-shadow 0.15s ease-out;
213
274
  }
275
+ .neo-button.neo-pressed .neo-content, .neo-button:active:not(.neo-loading) .neo-content {
276
+ scale: var(--neo-btn-scale-pressed, 0.98);
277
+ color: var(--neo-btn-text-color-active, var(--neo-text-color-active));
278
+ }
279
+ .neo-button:disabled:disabled .neo-content, .neo-button[disabled]:not([disabled=false]) .neo-content {
280
+ color: var(--neo-btn-text-color-disabled, var(--neo-text-color-disabled));
281
+ scale: 1;
282
+ }
214
283
  .neo-button:focus-visible {
215
- color: var(--neo-btn-text-color-focused, var(--neo-text-color-focused));
216
284
  outline: none;
217
285
  box-shadow: var(--neo-btn-box-shadow-focus, var(--neo-box-shadow-raised-2));
218
- transition: opacity 0.3s ease, color 0s, background-color 0.3s ease, border-color 0.3s ease, backdrop-filter 0.3s ease, border-radius 0.3s ease, box-shadow 0.15s ease-out;
286
+ transition: opacity 0.3s ease, color 0.3s ease, background-color 0.3s ease, border-color 0.3s ease, backdrop-filter 0.3s ease, border-radius 0.3s ease, box-shadow 0.15s ease-out;
219
287
  }
220
- .neo-button:focus-visible:hover {
288
+ .neo-button:focus-visible:not(:hover) .neo-content {
289
+ transition: color 0s ease, scale 0.3s ease;
290
+ }
291
+ .neo-button:focus-visible:hover .neo-content {
221
292
  color: var(--neo-btn-text-color-focused-hover, var(--neo-text-color-focused));
222
293
  }
223
294
  .neo-button:focus-visible.neo-pressed, .neo-button:focus-visible:active:not(.neo-loading) {
224
- color: var(--neo-btn-text-color-focused-active, var(--neo-text-color-focused-active));
225
295
  box-shadow: var(--neo-btn-box-shadow-focus-active, var(--neo-box-shadow-pressed-2));
226
296
  }
297
+ .neo-button:focus-visible.neo-pressed .neo-content, .neo-button:focus-visible:active:not(.neo-loading) .neo-content {
298
+ color: var(--neo-btn-text-color-focused-active, var(--neo-text-color-focused-active));
299
+ }
227
300
  .neo-button.neo-borderless {
228
301
  border-color: transparent !important;
229
302
  }
@@ -234,10 +307,7 @@
234
307
  border-color: var(--neo-btn-border-color, var(--neo-border-color));
235
308
  box-shadow: var(--neo-box-shadow-flat);
236
309
  }
237
- .neo-button.neo-flat:focus-visible {
238
- border-color: var(--neo-btn-border-color-focused, var(--neo-border-color-focused));
239
- }
240
- .neo-button.neo-flat:hover {
310
+ .neo-button.neo-flat:focus-visible, .neo-button.neo-flat:hover {
241
311
  border-color: transparent;
242
312
  box-shadow: var(--neo-btn-box-shadow-hover-flat, var(--neo-box-shadow-inset-1));
243
313
  }
@@ -300,8 +370,11 @@
300
370
  .neo-button.neo-glass.neo-inset.neo-pressed, .neo-button.neo-glass.neo-inset:active:not(.neo-loading) {
301
371
  border-color: transparent;
302
372
  }
303
- .neo-button.neo-glass.neo-flat {
304
- border-color: var(--neo-btn-border-color, var(--neo-glass-border-color));
373
+ .neo-button.neo-glass.neo-flat:not(.neo-pressed, :active:not(.neo-loading)) {
374
+ border-color: var(--neo-btn-border-color, var(--neo-glass-border-color-flat));
375
+ }
376
+ .neo-button.neo-glass.neo-flat:not(.neo-pressed, :active:not(.neo-loading)):hover {
377
+ border-color: transparent;
305
378
  }
306
379
  @starting-style {
307
380
  .neo-button.neo-start {
@@ -312,7 +385,6 @@
312
385
  }
313
386
  }
314
387
  .neo-button:disabled:disabled, .neo-button[disabled]:not([disabled=false]) {
315
- color: var(--neo-btn-text-color-disabled, var(--neo-text-color-disabled));
316
388
  cursor: not-allowed;
317
389
  opacity: var(--neo-btn-opacity-disabled, var(--neo-opacity-disabled));
318
390
  }
@@ -327,12 +399,14 @@
327
399
  .neo-button.neo-skeleton {
328
400
  box-shadow: var(--neo-box-shadow-flat) !important;
329
401
  pointer-events: none;
330
- --neo-skeleton-color-start: var(--neo-skeleton-color);
331
- --neo-skeleton-color-end: oklch(from var(--neo-skeleton-color) calc(l - var(--neo-skeleton-color-step, 0.05)) c h);
332
- color: var(--neo-skeleton-color-start);
333
- background-color: var(--neo-skeleton-color-start);
334
- border-color: var(--neo-skeleton-color-start);
335
- transition: background-color 1s ease, color 1s ease, border-color 1s ease;
402
+ --neo-skeleton-start: 1;
403
+ --neo-skeleton-end: calc(1 + var(--neo-skeleton-step, -0.3));
404
+ color: var(--neo-skeleton-color);
405
+ background-color: var(--neo-skeleton-color);
406
+ background-clip: padding-box;
407
+ border-color: var(--neo-skeleton-color);
408
+ opacity: 1;
409
+ transition: background-color 1s ease, color 1s ease, border-color 1s ease, opacity 1s ease;
336
410
  animation: skeleton 3s var(--neo-transition-skeleton) infinite;
337
411
  animation-delay: 1s;
338
412
  }
@@ -344,25 +418,11 @@
344
418
  pointer-events: none;
345
419
  }
346
420
  @keyframes skeleton {
347
- 0% {
348
- color: var(--neo-skeleton-color-start);
349
- background-color: var(--neo-skeleton-color-start);
350
- border-color: var(--neo-skeleton-color-start);
421
+ 0%, 80%, 100% {
422
+ opacity: var(--neo-skeleton-start);
351
423
  }
352
424
  40% {
353
- color: var(--neo-skeleton-color-end);
354
- background-color: var(--neo-skeleton-color-end);
355
- border-color: var(--neo-skeleton-color-end);
356
- }
357
- 80% {
358
- color: var(--neo-skeleton-color-start);
359
- background-color: var(--neo-skeleton-color-start);
360
- border-color: var(--neo-skeleton-color-start);
361
- }
362
- 100% {
363
- color: var(--neo-skeleton-color-start);
364
- background-color: var(--neo-skeleton-color-start);
365
- border-color: var(--neo-skeleton-color-start);
425
+ opacity: var(--neo-skeleton-end);
366
426
  }
367
427
  }
368
428
  .neo-button.neo-rounded {
@@ -455,25 +515,4 @@
455
515
  transform: scale(1);
456
516
  opacity: 0;
457
517
  }
458
- }
459
- .neo-button .neo-icon,
460
- .neo-button .neo-content {
461
- display: inline-flex;
462
- align-items: center;
463
- justify-content: center;
464
- min-width: max-content;
465
- }
466
- .neo-button .neo-content {
467
- height: 100%;
468
- }
469
- .neo-button .neo-content .neo-icon:not(.neo-only) {
470
- margin-right: var(--neo-btn-icon-gap, 0.35rem);
471
- margin-left: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.35rem)));
472
- }
473
- .neo-button .neo-content.neo-reverse {
474
- flex-direction: row-reverse;
475
- }
476
- .neo-button .neo-content.neo-reverse .neo-icon:not(.neo-only) {
477
- margin-right: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.35rem)));
478
- margin-left: var(--neo-btn-icon-gap, 0.35rem);
479
518
  }</style>