@dvcol/neo-svelte 0.1.3 → 0.1.4

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 (150) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +25 -26
  3. package/dist/buttons/NeoButton.svelte +140 -128
  4. package/dist/buttons/NeoButtonGroup.svelte +99 -108
  5. package/dist/buttons/neo-button-group.model.d.ts +18 -19
  6. package/dist/buttons/neo-button.model.d.ts +6 -10
  7. package/dist/cards/NeoCard.svelte +175 -72
  8. package/dist/cards/NeoCard.svelte.d.ts +1 -1
  9. package/dist/cards/neo-card.model.d.ts +29 -1
  10. package/dist/containers/NeoTransitionContainer.svelte +13 -2
  11. package/dist/containers/neo-transition-container.model.d.ts +9 -1
  12. package/dist/divider/NeoDivider.svelte +11 -11
  13. package/dist/icons/IconAccount.svelte +10 -2
  14. package/dist/icons/IconAdd.svelte +10 -2
  15. package/dist/icons/IconAlert.svelte +2 -2
  16. package/dist/icons/IconCalendar.svelte +23 -0
  17. package/dist/icons/IconCalendar.svelte.d.ts +26 -0
  18. package/dist/icons/IconCheckbox.svelte +87 -0
  19. package/dist/icons/IconCheckbox.svelte.d.ts +55 -0
  20. package/dist/icons/IconCircleLoading.svelte +2 -2
  21. package/dist/icons/IconClear.svelte +10 -2
  22. package/dist/icons/IconClose.svelte +2 -2
  23. package/dist/icons/IconConfirm.svelte +2 -2
  24. package/dist/icons/IconDownload.svelte +17 -0
  25. package/dist/icons/IconDownload.svelte.d.ts +26 -0
  26. package/dist/icons/IconEmpty.svelte +2 -2
  27. package/dist/icons/IconFileUpload.svelte +2 -2
  28. package/dist/icons/IconGithub.svelte +2 -2
  29. package/dist/icons/IconImage.svelte +2 -2
  30. package/dist/icons/IconMinus.svelte +2 -2
  31. package/dist/icons/IconMoon.svelte +2 -2
  32. package/dist/icons/IconPaint.svelte +19 -0
  33. package/dist/icons/{IconSunrise.svelte.d.ts → IconPaint.svelte.d.ts} +3 -3
  34. package/dist/icons/IconPencil.svelte +13 -0
  35. package/dist/icons/IconPencil.svelte.d.ts +26 -0
  36. package/dist/icons/IconRadio.svelte +14 -0
  37. package/dist/icons/IconRadio.svelte.d.ts +22 -0
  38. package/dist/icons/IconSave.svelte +1 -1
  39. package/dist/icons/IconSave.svelte.d.ts +3 -3
  40. package/dist/icons/IconSaveOff.svelte +1 -1
  41. package/dist/icons/IconSaveOff.svelte.d.ts +3 -3
  42. package/dist/icons/IconSearch.svelte +2 -2
  43. package/dist/icons/IconSun.svelte +3 -3
  44. package/dist/icons/{IconSunrise.svelte → IconSunFull.svelte} +5 -4
  45. package/dist/icons/IconSunFull.svelte.d.ts +26 -0
  46. package/dist/icons/IconVideo.svelte +2 -2
  47. package/dist/icons/IconWatch.svelte +2 -2
  48. package/dist/icons/IconWatchOff.svelte +2 -2
  49. package/dist/inputs/NeoCheckbox.svelte +316 -0
  50. package/dist/inputs/NeoCheckbox.svelte.d.ts +19 -0
  51. package/dist/inputs/NeoColorPicker.svelte +140 -0
  52. package/dist/inputs/NeoColorPicker.svelte.d.ts +19 -0
  53. package/dist/inputs/NeoDateTime.svelte +96 -0
  54. package/dist/inputs/NeoDateTime.svelte.d.ts +19 -0
  55. package/dist/inputs/NeoFilePicker.svelte +528 -0
  56. package/dist/inputs/NeoFilePicker.svelte.d.ts +19 -0
  57. package/dist/inputs/NeoFilePickerCard.svelte +314 -0
  58. package/dist/inputs/NeoFilePickerCard.svelte.d.ts +19 -0
  59. package/dist/inputs/NeoNumberStep.svelte +174 -0
  60. package/dist/inputs/NeoNumberStep.svelte.d.ts +19 -0
  61. package/dist/inputs/NeoPassword.svelte +86 -17
  62. package/dist/inputs/NeoPassword.svelte.d.ts +19 -16
  63. package/dist/inputs/NeoPin.svelte +589 -0
  64. package/dist/inputs/NeoPin.svelte.d.ts +19 -0
  65. package/dist/inputs/NeoRadio.svelte +254 -0
  66. package/dist/inputs/NeoRadio.svelte.d.ts +19 -0
  67. package/dist/inputs/NeoRange.svelte +518 -0
  68. package/dist/inputs/NeoRange.svelte.d.ts +18 -0
  69. package/dist/inputs/NeoSwitch.svelte +373 -0
  70. package/dist/inputs/NeoSwitch.svelte.d.ts +19 -0
  71. package/dist/inputs/NeoTextarea.svelte +334 -300
  72. package/dist/inputs/NeoTextarea.svelte.d.ts +7 -4
  73. package/dist/inputs/common/NeoAffix.svelte +166 -0
  74. package/dist/inputs/common/NeoAffix.svelte.d.ts +19 -0
  75. package/dist/inputs/common/NeoBaseInput.svelte +338 -0
  76. package/dist/inputs/common/NeoBaseInput.svelte.d.ts +30 -0
  77. package/dist/inputs/common/NeoInput.svelte +684 -0
  78. package/dist/inputs/{NeoInput.svelte.d.ts → common/NeoInput.svelte.d.ts} +2 -10
  79. package/dist/inputs/common/NeoInputValidation.svelte +45 -0
  80. package/dist/inputs/common/NeoInputValidation.svelte.d.ts +22 -0
  81. package/dist/inputs/common/NeoLabel.svelte +93 -0
  82. package/dist/inputs/common/NeoLabel.svelte.d.ts +19 -0
  83. package/dist/inputs/{NeoValidation.svelte → common/NeoValidation.svelte} +9 -16
  84. package/dist/inputs/common/NeoValidation.svelte.d.ts +22 -0
  85. package/dist/inputs/common/neo-affix.model.d.ts +32 -0
  86. package/dist/inputs/common/neo-input-validation.model.d.ts +20 -0
  87. package/dist/inputs/common/neo-input-validation.model.js +1 -0
  88. package/dist/inputs/{neo-input.model.d.ts → common/neo-input.model.d.ts} +136 -57
  89. package/dist/inputs/common/neo-label.model.d.ts +36 -0
  90. package/dist/inputs/common/neo-label.model.js +1 -0
  91. package/dist/inputs/common/neo-validation.model.d.ts +70 -0
  92. package/dist/inputs/common/neo-validation.model.js +1 -0
  93. package/dist/inputs/index.d.ts +2 -2
  94. package/dist/inputs/index.js +1 -1
  95. package/dist/inputs/neo-checkbox.model.d.ts +9 -0
  96. package/dist/inputs/neo-checkbox.model.js +1 -0
  97. package/dist/inputs/neo-color-picker.model.d.ts +17 -0
  98. package/dist/inputs/neo-color-picker.model.js +1 -0
  99. package/dist/inputs/neo-date-time.model.d.ts +8 -0
  100. package/dist/inputs/neo-date-time.model.js +1 -0
  101. package/dist/inputs/neo-file-picker.model.d.ts +138 -0
  102. package/dist/inputs/neo-file-picker.model.js +1 -0
  103. package/dist/inputs/neo-number-step.model.d.ts +24 -0
  104. package/dist/inputs/neo-number-step.model.js +1 -0
  105. package/dist/inputs/neo-password.model.d.ts +13 -0
  106. package/dist/inputs/neo-password.model.js +1 -0
  107. package/dist/inputs/neo-pin.model.d.ts +47 -0
  108. package/dist/inputs/neo-pin.model.js +1 -0
  109. package/dist/inputs/neo-radio.model.d.ts +3 -0
  110. package/dist/inputs/neo-radio.model.js +1 -0
  111. package/dist/inputs/neo-switch.model.d.ts +9 -0
  112. package/dist/inputs/neo-switch.model.js +1 -0
  113. package/dist/nav/NeoTab.svelte +29 -25
  114. package/dist/nav/NeoTabPanel.svelte +1 -1
  115. package/dist/nav/NeoTabs.svelte +51 -44
  116. package/dist/nav/NeoTabsCard.svelte +8 -10
  117. package/dist/nav/neo-tabs-context.svelte.d.ts +2 -11
  118. package/dist/nav/neo-tabs-context.svelte.js +1 -41
  119. package/dist/nav/neo-tabs.model.d.ts +6 -0
  120. package/dist/providers/NeoThemeProvider.svelte +417 -305
  121. package/dist/providers/NeoThemeSelector.svelte +9 -9
  122. package/dist/providers/neo-theme-provider-context.svelte.js +1 -1
  123. package/dist/providers/neo-theme-selector.model.d.ts +1 -1
  124. package/dist/skeletons/NeoSkeletonMedia.svelte +4 -4
  125. package/dist/skeletons/NeoSkeletonText.svelte +12 -12
  126. package/dist/styles/common/colors.scss +85 -97
  127. package/dist/styles/common/filters.scss +17 -0
  128. package/dist/styles/common/shadows.scss +531 -293
  129. package/dist/styles/common/spacing.scss +7 -3
  130. package/dist/styles/common/typography.scss +1 -1
  131. package/dist/styles/common/utils.scss +1 -1
  132. package/dist/styles/common/z-index.scss +1 -1
  133. package/dist/styles/mixin.scss +79 -26
  134. package/dist/styles/reset.scss +8 -1
  135. package/dist/styles/theme.scss +39 -16
  136. package/dist/utils/html-element.utils.d.ts +3 -0
  137. package/dist/utils/regex.utils.d.ts +3 -0
  138. package/dist/utils/regex.utils.js +3 -0
  139. package/dist/utils/shadow.utils.d.ts +30 -3
  140. package/dist/utils/shadow.utils.js +41 -14
  141. package/dist/utils/transition.utils.d.ts +4 -0
  142. package/dist/utils/transition.utils.js +10 -1
  143. package/dist/utils/utils.svelte.d.ts +6 -0
  144. package/dist/utils/utils.svelte.js +13 -0
  145. package/package.json +13 -12
  146. package/dist/inputs/NeoInput.svelte +0 -750
  147. package/dist/inputs/NeoValidation.svelte.d.ts +0 -22
  148. package/dist/inputs/neo-validation.model.d.ts +0 -40
  149. /package/dist/inputs/{neo-validation.model.js → common/neo-affix.model.js} +0 -0
  150. /package/dist/inputs/{neo-input.model.js → common/neo-input.model.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,81 @@
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.4](https://github.com/dvcol/neo-svelte/compare/v0.1.3...v0.1.4) (2024-12-31)
6
+
7
+
8
+ ### Features
9
+
10
+ * **affix:** refactor affix in standalone ([a5574a1](https://github.com/dvcol/neo-svelte/commit/a5574a1b7d0e8340f4ed5dee8cb0397c70165c88))
11
+ * **input:** adds affix to pin ([4f8d9ba](https://github.com/dvcol/neo-svelte/commit/4f8d9babfdd27c9205474f8860e876d027724e59))
12
+ * **input:** adds checkbox input ([c530603](https://github.com/dvcol/neo-svelte/commit/c530603c1ddd833c16b909ee30a0328e69870a04))
13
+ * **input:** adds date-time input ([c170a51](https://github.com/dvcol/neo-svelte/commit/c170a513fd577e75e121843493ac0b12774aee02))
14
+ * **input:** adds drop append for file picker ([fc4b65d](https://github.com/dvcol/neo-svelte/commit/fc4b65d5f3e9132b33930880ba4d68e9ff26331a))
15
+ * **input:** adds expanded files input view ([6576cc8](https://github.com/dvcol/neo-svelte/commit/6576cc868a58324cd7b121a9740517a65280fe05))
16
+ * **input:** adds first draft of pin input ([12cda19](https://github.com/dvcol/neo-svelte/commit/12cda1924250d66b4c47f07b90c8bc69c2c6d96d))
17
+ * **input:** adds flat styles for range ([f5c9f1e](https://github.com/dvcol/neo-svelte/commit/f5c9f1ebdd168f00bc8b01f66cae521c2b06d649))
18
+ * **input:** adds pin labels ([d3651b9](https://github.com/dvcol/neo-svelte/commit/d3651b9b36e702a4728ec80afb58e0a7435470c2))
19
+ * **input:** adds pin password ([2096c45](https://github.com/dvcol/neo-svelte/commit/2096c45712fee3611aa85111591c70ee3fad819e))
20
+ * **input:** adds pin validity check ([cf1452d](https://github.com/dvcol/neo-svelte/commit/cf1452de9211b359d05db7384390b3727f299391))
21
+ * **input:** adds radio input ([1e05949](https://github.com/dvcol/neo-svelte/commit/1e05949a5f80f8ef971f04dbf19d972e17205053))
22
+ * **input:** adds styled number input ([999e90b](https://github.com/dvcol/neo-svelte/commit/999e90b0e76a2f5a6d2d066806469d6786764118))
23
+ * **input:** adds switch ([99bc099](https://github.com/dvcol/neo-svelte/commit/99bc09968871fba1503116ba69af7d98e57d6dd7))
24
+ * **input:** adds validation to expanded file picker ([e6d9a8c](https://github.com/dvcol/neo-svelte/commit/e6d9a8c7d3d79cafcb49433c0a8883346f22f298))
25
+ * **input:** drag & drop file base logic ([9ea5d68](https://github.com/dvcol/neo-svelte/commit/9ea5d6840783c51913e34cf7ff0c48ebb0f9c549))
26
+ * **input:** drag & drop support for default file view ([251cf35](https://github.com/dvcol/neo-svelte/commit/251cf3510471834bf8ed6f94df3ce5f22a50cac9))
27
+ * **input:** first draft range input ([c4509e0](https://github.com/dvcol/neo-svelte/commit/c4509e02b2cc8d806496d581552e951f378b4102))
28
+ * **input:** inset dropzone on drag hover ([ce9311d](https://github.com/dvcol/neo-svelte/commit/ce9311d5ea736cfcaa08d3631c561c8e79e457a8))
29
+ * **inputs:** merge neo-button override within inputs ([5d8b5e4](https://github.com/dvcol/neo-svelte/commit/5d8b5e4869a23da5ae9fafd54acc30fb8c071d5d))
30
+ * **input:** split expanded input into dedicated component ([d4cdfb2](https://github.com/dvcol/neo-svelte/commit/d4cdfb2041a1947687df56e07028b23d1ec649c2))
31
+ * **input:** supports double range ([e1a17e5](https://github.com/dvcol/neo-svelte/commit/e1a17e5d9e6e1a5036f9e4f5a3c3a87b3c96699e))
32
+ * **input:** wip file picker ([deba9d8](https://github.com/dvcol/neo-svelte/commit/deba9d827e3441e5b4e50f402fa71dbc99ab6acd))
33
+ * **shadows:** adds convex & pressed ([52a6748](https://github.com/dvcol/neo-svelte/commit/52a67487bcb4720298bba375c65d01fd64c029db))
34
+ * **shadows:** adds pressed to inputs & cards ([57e8ad0](https://github.com/dvcol/neo-svelte/commit/57e8ad0fc84ac67dda0121b9f078168e8decab6d))
35
+
36
+
37
+ ### Bug Fixes
38
+
39
+ * **affix:** adjust styling and include disable ([a410944](https://github.com/dvcol/neo-svelte/commit/a41094427d3b8ca238535730cb887a4ca6401f2b))
40
+ * **affix:** move inputs to refactored affix ([7549b97](https://github.com/dvcol/neo-svelte/commit/7549b97dc0931c05822a9544b31fdda3173ee80c))
41
+ * **button:** rework button styling ([822518a](https://github.com/dvcol/neo-svelte/commit/822518ad9bccb0a9e933e2c54ae9b2b4ae9c29d4))
42
+ * **buttons:** fix flat border in glass mode ([13bda34](https://github.com/dvcol/neo-svelte/commit/13bda348e860566e33e362119e9fa26394df5172))
43
+ * **elevation:** change pressed default elevation ([aae3eab](https://github.com/dvcol/neo-svelte/commit/aae3eab314923da2a8a64d0a22e7ed8f4f920c62))
44
+ * **flex:** change inputs to inline-flex ([668acb8](https://github.com/dvcol/neo-svelte/commit/668acb8dff879ecf176fdad529b566f6f50e1e5e))
45
+ * **glass:** fix glass shadows and filters ([8f790cd](https://github.com/dvcol/neo-svelte/commit/8f790cd63a564ef8f48c3d0a75cffb26c19c2344))
46
+ * **group:** rework group to use elevation ([2301b64](https://github.com/dvcol/neo-svelte/commit/2301b64053acf65c459deb6271af0055f5f5295d))
47
+ * **groups:** remove shallow & inset ([4171224](https://github.com/dvcol/neo-svelte/commit/417122407c40cf4181a1523b3e740f02cac9cb34))
48
+ * **icon:** adds scaling option to icons ([8822a60](https://github.com/dvcol/neo-svelte/commit/8822a6016d6a7a99aa7444db7437656294f668e4))
49
+ * **input:** add missing context to file picker & type value ([fcc56d8](https://github.com/dvcol/neo-svelte/commit/fcc56d81d5909a7ca3bfee6b8f5cec07f785723c))
50
+ * **input:** adds colour picker ([a5f41e9](https://github.com/dvcol/neo-svelte/commit/a5f41e96fb7d626e949cbadd5442241a9fb7c0ea))
51
+ * **input:** adds disable state to file picker ([ebcc1c9](https://github.com/dvcol/neo-svelte/commit/ebcc1c94e914c2e36320fb78c928d274a8236da2))
52
+ * **input:** adds skeleton to affix & buttons ([fa8ab3f](https://github.com/dvcol/neo-svelte/commit/fa8ab3fb722c21c39d57ed931daea9b3e0545b68))
53
+ * **input:** adds transition to number ([34e5d82](https://github.com/dvcol/neo-svelte/commit/34e5d82b5a461009975b6c2f2ec52dcb6d02bfcb))
54
+ * **input:** adjust ios color picker & fix file validation ([aab6462](https://github.com/dvcol/neo-svelte/commit/aab64621910f6a43ed2d7014cbdf92a81fabc0ee))
55
+ * **input:** adjust styles to support extra long labels ([b433d07](https://github.com/dvcol/neo-svelte/commit/b433d07ab18e7c5f9cf842d6f554034f0697a03d))
56
+ * **input:** adjust styling for ios Safari ([c3e85b3](https://github.com/dvcol/neo-svelte/commit/c3e85b388b2b6cc2a4a439c0fd88427977f756d1))
57
+ * **input:** adjust various css styling in inputs ([21d2653](https://github.com/dvcol/neo-svelte/commit/21d2653147d7341650ec0a43a3e8a84ab44fffda))
58
+ * **input:** await tick before clearing state ([9bd0045](https://github.com/dvcol/neo-svelte/commit/9bd0045638b4300827a6f74f0e4a19807e774418))
59
+ * **input:** clean up styles ([b1ba008](https://github.com/dvcol/neo-svelte/commit/b1ba0082276761185753a1cddea327c0662ba393))
60
+ * **input:** de-correlate toggle width from spacing ([04dd1c8](https://github.com/dvcol/neo-svelte/commit/04dd1c853e5393d0e776ad71e619692de7ffdf59))
61
+ * **input:** emit input event on clear ([cf8731b](https://github.com/dvcol/neo-svelte/commit/cf8731bb181b92ad4aa5fc9050ea146a3a9854b3))
62
+ * **input:** expose container props as group props ([18415bc](https://github.com/dvcol/neo-svelte/commit/18415bce8f19b34e01001f857ad71f563bdbb3f6))
63
+ * **input:** fix flat styles for switch ([4f04bcf](https://github.com/dvcol/neo-svelte/commit/4f04bcf9de82b022644c22f4ff2aef3d4b25c488))
64
+ * **input:** fix styling with prefix & floating ([241a809](https://github.com/dvcol/neo-svelte/commit/241a80928942e2f61df95b83abf2bb3200b48724))
65
+ * **input:** incorrect floating condition ([6a1938a](https://github.com/dvcol/neo-svelte/commit/6a1938af3a365a45d661ffe9dad446106d923fd8))
66
+ * **input:** make checkbox elevation customizable ([a334e40](https://github.com/dvcol/neo-svelte/commit/a334e40ed704e662eb1c1a5242ee7effc52047f6))
67
+ * **input:** override neo-button in textarea after ([4d9c1c9](https://github.com/dvcol/neo-svelte/commit/4d9c1c9ca0c15352ac164ad97b6b8878f402c2e1))
68
+ * **input:** simplify fallback logic ([005ad27](https://github.com/dvcol/neo-svelte/commit/005ad273d1f6ef20ac1264eb17876538a4c63431))
69
+ * **inputs:** update styling on icons & sizing ([b3353d8](https://github.com/dvcol/neo-svelte/commit/b3353d8190a5fbb65b88eeb8ef03e963fd4cbd65))
70
+ * **input:** switch uses absolute positioning instead of width ([5be7a16](https://github.com/dvcol/neo-svelte/commit/5be7a16d4bba5dfffa6b4c15219517ac46644232))
71
+ * **input:** trigger picker on mobile & fix styling ([6838137](https://github.com/dvcol/neo-svelte/commit/6838137fd734514ca6753fa3c94af6d8571ed4bd))
72
+ * **input:** update state on blue by default ([3517bae](https://github.com/dvcol/neo-svelte/commit/3517baea9fab7635bf3be8e8cb7455dce95c6487))
73
+ * **input:** update validity on input number increment ([7a73cf2](https://github.com/dvcol/neo-svelte/commit/7a73cf2b9f3d9ee0d61c1c97d86a9cd95093a161))
74
+ * **mixin:** add transparent mask to border rotate & progress ([d7cb224](https://github.com/dvcol/neo-svelte/commit/d7cb2246c43bbb643c464e510973b2dcd18f836e))
75
+ * **nav:** move to elevation & adds pressed/convex ([9354c3b](https://github.com/dvcol/neo-svelte/commit/9354c3b91b258c7538da5b761c4ff41f6663772c))
76
+ * **styling:** adjust spacing to round pixels ([19caae1](https://github.com/dvcol/neo-svelte/commit/19caae1936116b909582ff7a4adae4a366f34951))
77
+ * **theme:** adjust glass color theme ([00c0817](https://github.com/dvcol/neo-svelte/commit/00c0817ce5930b368197f3976047fca8f728d21f))
78
+ * **theme:** rework glass colors & theme provider styles ([dcb0257](https://github.com/dvcol/neo-svelte/commit/dcb025713be14fd80d72348b28904b464da2c5ce))
79
+
5
80
  ### [0.1.3](https://github.com/dvcol/neo-svelte/compare/v0.1.2...v0.1.3) (2024-11-25)
6
81
 
7
82
 
package/README.md CHANGED
@@ -8,39 +8,34 @@ Neomorphic ui library for svelte 5
8
8
  - [x] Card
9
9
  - [x] Inputs
10
10
  - [x] Password
11
- - [ ] Color picker
12
- - [ ] numbers
13
- - [ } digits
11
+ - [x] Pin
12
+ - [x] Color picker
13
+ - [x] checkbox
14
+ - [x] radio
15
+ - [x] Text Area
16
+ - [ ] @ / # tags
17
+ - [x] file picker
18
+ - [x] drag & drop
19
+ - [x] multiple
20
+ - [x] numbers
21
+ - [x] digits
14
22
  - [ ] range
15
- - [ ] animation ?
16
- - [ ] currency
17
- - [ ] percentage
18
23
  - [ ] phone
19
24
  - [ ] credit card
20
- - [ ] pin
25
+ - [x] pin
26
+ - [x] time/date/week
27
+ - [ ] range
28
+ - [x] switch
21
29
  - [ ] slider
22
30
  - [ ] range
31
+ - [ ] inset
32
+ - [ ] before - after stepper
33
+ - [ ] custom before-after
23
34
  - [ ] steps/ticks
24
35
  - [ ] labels
25
- - [ ] file picker
26
- - [ ] drag & drop ?
27
- - [ ] progress ?
28
- - [ ] multiple
29
36
  - [ ] select
30
- - [ ] Text Area
31
- - [ ] lines
32
- - [ ] auto-resize
33
- - [ ] @ / # tags
34
- - [ ] time/date/week
35
- - [ ] range
36
- - [ ] switch
37
- - [ ] loading
38
- - [ ] border loading
39
- - [ ] skeleton
40
- - [ ] checkbox
41
- - [ ] checkbox (square & round)
42
- - [ ] radio
43
- - [ ] groups
37
+ - [ ] table
38
+ - [ ] pagination
44
39
  - [ ] auto-complete
45
40
  - [ ] @ / # tags
46
41
  - [ ] select
@@ -82,8 +77,12 @@ Neomorphic ui library for svelte 5
82
77
  - [ ] click outside
83
78
  - [ ] scrollbar ?
84
79
  - [ ] container
85
- - [ ] transition
80
+ - [x] transition
86
81
  - [ ] split/resizable
87
82
  - [ ] flex
88
83
  - [ ] grid
89
84
  - [ ] masonry ?
85
+
86
+
87
+ # TODO (work in progress)
88
+
@@ -26,13 +26,12 @@
26
26
  checked = $bindable(false),
27
27
 
28
28
  // Styles
29
- borderless,
30
29
  start,
31
30
  text,
32
31
  flat,
33
32
  glass,
34
- shallow,
35
33
  rounded,
34
+ inset,
36
35
  reverse,
37
36
  coalesce,
38
37
  pulse,
@@ -75,7 +74,7 @@
75
74
  }, 150);
76
75
  };
77
76
 
78
- const onClick = (e: MouseEvent) => {
77
+ const onClick: NeoButtonProps['onclick'] = e => {
79
78
  if (loading || disabled) return;
80
79
  if (toggle) {
81
80
  if (!readonly) checked = !checked;
@@ -88,13 +87,13 @@
88
87
  onActive();
89
88
  };
90
89
 
91
- const onKeydownEnter = (e: KeyboardEvent) => {
90
+ const onKeydownEnter: NeoButtonProps['onkeydown'] = e => {
92
91
  if (loading || disabled) return;
93
92
  if (e.key === 'Enter') enter = true;
94
93
  onkeydown?.(e);
95
94
  };
96
95
 
97
- const onKeyUpEnter = (e: KeyboardEvent) => {
96
+ const onKeyUpEnter: NeoButtonProps['onkeydown'] = e => {
98
97
  if (e.key === 'Enter') enter = false;
99
98
  if (loading || disabled) return;
100
99
  onkeyup?.(e);
@@ -120,18 +119,19 @@
120
119
  {role}
121
120
  {tabindex}
122
121
  class:neo-button={true}
123
- class:pulse
124
- class:coalesce
125
- class:pressed
126
- class:loading
127
- class:skeleton
128
- class:start
129
- class:glass
130
- class:flat={flat || text}
131
- class:borderless={borderless || text}
132
- class:shallow
133
- class:rounded
134
- class:empty
122
+ class:neo-pulse={pulse}
123
+ class:neo-coalesce={coalesce}
124
+ class:neo-pressed={pressed}
125
+ class:neo-toggle={toggle}
126
+ class:neo-loading={loading}
127
+ class:neo-skeleton={skeleton}
128
+ class:neo-start={start}
129
+ class:neo-glass={glass}
130
+ class:neo-flat={flat || text}
131
+ class:neo-borderless={text}
132
+ class:neo-inset={inset}
133
+ class:neo-rounded={rounded}
134
+ class:neo-empty={empty}
135
135
  style:justify-content={justify}
136
136
  style:align-items={align}
137
137
  style:flex
@@ -144,9 +144,9 @@
144
144
  disabled={disabled || skeleton}
145
145
  {...rest}
146
146
  >
147
- <span class="content" class:reverse>
147
+ <span class="neo-content" class:neo-reverse={reverse}>
148
148
  {#if loading || icon}
149
- <span class="icon" class:only={empty} transition:width={enterDefaultTransition}>
149
+ <span class="neo-icon" class:neo-only={empty} transition:width={enterDefaultTransition}>
150
150
  {#if loading}
151
151
  <IconCircleLoading />
152
152
  {:else}
@@ -160,7 +160,7 @@
160
160
  </span>
161
161
  </svelte:element>
162
162
 
163
- <style>.neo-button.pulse::after, .neo-button.pulse::before, .neo-button.coalesce::after, .neo-button.coalesce::before {
163
+ <style>.neo-button.neo-pulse::after, .neo-button.neo-pulse::before, .neo-button.neo-coalesce::after, .neo-button.neo-coalesce::before {
164
164
  position: absolute;
165
165
  top: 0;
166
166
  left: 0;
@@ -178,138 +178,153 @@
178
178
  align-items: center;
179
179
  justify-content: center;
180
180
  box-sizing: border-box;
181
+ min-width: var(--neo-btn-min-width);
181
182
  min-height: calc(var(--neo-btn-min-height, var(--neo-line-height)) + 0.5rem);
182
- margin: var(--neo-shadow-margin, 0.6rem);
183
- padding: 0.25rem 0.75rem;
183
+ margin: var(--neo-btn-margin, var(--neo-shadow-margin, 0.625rem));
184
+ padding: var(--neo-btn-padding, 0.25rem 0.75rem);
184
185
  color: var(--neo-btn-text-color, inherit);
185
186
  font: inherit;
186
187
  text-decoration: inherit;
187
188
  background-color: var(--neo-btn-bg-color, transparent);
188
189
  border: var(--neo-border-width, 1px) var(--neo-btn-border-color, transparent) solid;
189
190
  border-radius: var(--neo-btn-border-radius, var(--neo-border-radius));
190
- box-shadow: var(--neo-box-shadow-raised-3);
191
+ box-shadow: var(--neo-btn-box-shadow, var(--neo-box-shadow-raised-3));
191
192
  cursor: pointer;
192
193
  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.3s ease-out;
193
194
  }
194
- .neo-button.empty {
195
- padding: 0.5rem;
195
+ .neo-button.neo-empty {
196
+ padding: var(--neo-btn-padding-empty, 0.5rem);
196
197
  }
197
- .neo-button.loading {
198
+ .neo-button.neo-loading {
198
199
  cursor: wait;
199
200
  }
200
- .neo-button.borderless {
201
- border-color: transparent !important;
202
- }
203
- .neo-button.flat, .neo-button.shallow {
204
- --neo-coalesce-box-shadow: var(--neo-box-shadow-raised-2);
205
- --neo-pulse-box-shadow: var(--neo-box-shadow-raised-2);
206
- }
207
- .neo-button.shallow {
208
- --neo-coalesce-box-shadow-reverse: var(--neo-box-shadow-inset-1);
209
- --neo-pulse-box-shadow-reverse: var(--neo-box-shadow-inset-1);
201
+ .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);
210
204
  }
211
205
  .neo-button:hover {
212
206
  color: var(--neo-btn-text-color-hover, inherit);
207
+ box-shadow: var(--neo-btn-box-shadow-hover, var(--neo-box-shadow-raised-2));
213
208
  }
214
- .neo-button.glass {
215
- background-color: var(--neo-btn-bg-color, var(--neo-glass-background-color));
216
- box-shadow: var(--neo-glass-box-shadow-raised-3);
217
- backdrop-filter: var(--neo-blur-4) var(--neo-saturate-2);
209
+ .neo-button.neo-pressed, .neo-button:active:not(.neo-loading) {
210
+ color: var(--neo-btn-text-color-active, var(--neo-text-color-active));
211
+ box-shadow: var(--neo-btn-box-shadow-active, var(--neo-box-shadow-pressed-2));
212
+ 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;
218
213
  }
219
- .neo-button.glass:focus-visible {
220
- background-color: var(--neo-glass-background-color-focus);
221
- box-shadow: var(--neo-glass-box-shadow-raised-2);
214
+ .neo-button:focus-visible {
215
+ color: var(--neo-btn-text-color-focused, var(--neo-text-color-focused));
216
+ outline: none;
217
+ 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;
222
219
  }
223
- .neo-button.glass.pressed, .neo-button.glass:active {
224
- box-shadow: var(--neo-glass-box-shadow-inset-3);
225
- backdrop-filter: var(--neo-blur-2) var(--neo-saturate-3);
220
+ .neo-button:focus-visible:hover {
221
+ color: var(--neo-btn-text-color-focused-hover, var(--neo-text-color-focused));
226
222
  }
227
- .neo-button.glass.pressed.shallow, .neo-button.glass:active.shallow {
228
- box-shadow: var(--neo-glass-box-shadow-flat);
223
+ .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
+ box-shadow: var(--neo-btn-box-shadow-focus-active, var(--neo-box-shadow-pressed-2));
229
226
  }
230
- .neo-button.glass:not(:hover, :active, .neo-button.glass.pressed, .neo-button.glass.skeleton) {
231
- border-color: var(--neo-btn-border-color, var(--neo-glass-top-border-color) var(--neo-glass-right-border-color) var(--neo-glass-bottom-border-color) var(--neo-glass-left-border-color));
227
+ .neo-button.neo-borderless {
228
+ border-color: transparent !important;
232
229
  }
233
- .neo-button.glass.loading:active:not(.pressed), .neo-button.glass:hover:not(:active, .neo-button.glass.pressed) {
234
- background-color: var(--neo-glass-background-color-hover);
235
- border-color: var(--neo-btn-border-color-hover, var(--neo-glass-border-color-hover));
230
+ .neo-button.neo-flat {
231
+ --neo-coalesce-box-shadow: var(--neo-box-shadow-raised-2);
232
+ --neo-pulse-box-shadow: var(--neo-box-shadow-raised-2);
233
+ margin: var(--neo-btn-margin, 0);
234
+ border-color: var(--neo-btn-border-color, var(--neo-border-color));
236
235
  box-shadow: var(--neo-box-shadow-flat);
237
- backdrop-filter: var(--neo-blur-3) var(--neo-saturate-2);
238
236
  }
239
- .neo-button.glass.loading:active:not(.pressed).shallow, .neo-button.glass:hover:not(:active, .neo-button.glass.pressed).shallow {
240
- border-color: transparent;
241
- box-shadow: var(--neo-glass-box-shadow-raised-2);
237
+ .neo-button.neo-flat:focus-visible {
238
+ border-color: var(--neo-btn-border-color-focused, var(--neo-border-color-focused));
242
239
  }
243
- .neo-button.pressed, .neo-button:active {
244
- color: var(--neo-btn-text-color-active, var(--neo-text-color-active));
245
- box-shadow: var(--neo-box-shadow-inset-3);
246
- 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;
240
+ .neo-button.neo-flat:hover {
241
+ border-color: transparent;
242
+ box-shadow: var(--neo-btn-box-shadow-hover-flat, var(--neo-box-shadow-inset-1));
247
243
  }
248
- .neo-button.pressed.shallow, .neo-button:active.shallow {
249
- box-shadow: var(--neo-box-shadow-flat);
244
+ .neo-button.neo-flat.neo-pressed, .neo-button.neo-flat:active:not(.neo-loading) {
245
+ border-color: transparent;
246
+ box-shadow: var(--neo-btn-box-shadow-active-flat, var(--neo-box-shadow-inset-3));
247
+ }
248
+ .neo-button.neo-flat.neo-pressed.neo-toggle, .neo-button.neo-flat:active:not(.neo-loading).neo-toggle {
249
+ box-shadow: var(--neo-btn-box-shadow-active-flat-toggle, var(--neo-box-shadow-inset-3));
250
+ }
251
+ .neo-button.neo-glass {
252
+ /** Box Shadows raised */
253
+ --neo-box-shadow-raised-5: var(--neo-glass-box-shadow-raised-5);
254
+ --neo-box-shadow-raised-4: var(--neo-glass-box-shadow-raised-4);
255
+ --neo-box-shadow-raised-3: var(--neo-glass-box-shadow-raised-3);
256
+ --neo-box-shadow-raised-2: var(--neo-glass-box-shadow-raised-2);
257
+ --neo-box-shadow-raised-1: var(--neo-glass-box-shadow-raised-1);
258
+ /** Box Shadows inset */
259
+ --neo-box-shadow-inset-1: var(--neo-glass-box-shadow-inset-1);
260
+ --neo-box-shadow-inset-2: var(--neo-glass-box-shadow-inset-2);
261
+ --neo-box-shadow-inset-3: var(--neo-glass-box-shadow-inset-3);
262
+ --neo-box-shadow-inset-4: var(--neo-glass-box-shadow-inset-4);
263
+ --neo-box-shadow-inset-5: var(--neo-glass-box-shadow-inset-5);
264
+ /** Box Shadows pressed */
265
+ --neo-box-shadow-pressed-1: var(--neo-glass-box-shadow-pressed-1);
266
+ --neo-box-shadow-pressed-2: var(--neo-glass-box-shadow-pressed-2);
267
+ --neo-box-shadow-pressed-3: var(--neo-glass-box-shadow-pressed-3);
268
+ --neo-box-shadow-pressed-4: var(--neo-glass-box-shadow-pressed-4);
269
+ --neo-box-shadow-pressed-5: var(--neo-glass-box-shadow-pressed-5);
270
+ /** Box Shadows convex */
271
+ --neo-box-shadow-convex-1: var(--neo-glass-box-shadow-convex-1);
272
+ --neo-box-shadow-convex-2: var(--neo-glass-box-shadow-convex-2);
273
+ --neo-box-shadow-convex-3: var(--neo-glass-box-shadow-convex-3);
274
+ --neo-box-shadow-convex-4: var(--neo-glass-box-shadow-convex-4);
275
+ --neo-box-shadow-convex-5: var(--neo-glass-box-shadow-convex-5);
276
+ /** Skeleton color */
277
+ --neo-skeleton-color: var(--neo-glass-skeleton-color);
278
+ background-color: var(--neo-btn-bg-color, var(--neo-glass-background-color));
279
+ border-color: var(--neo-btn-border-color, var(--neo-glass-top-border-color) var(--neo-glass-right-border-color) var(--neo-glass-bottom-border-color) var(--neo-glass-left-border-color));
280
+ backdrop-filter: var(--neo-btn-backdrop-filter, var(--neo-blur-2) var(--neo-saturate-3));
250
281
  }
251
- .neo-button.pressed.shallow.flat, .neo-button:active.shallow.flat {
252
- box-shadow: var(--neo-box-shadow-inset-2);
282
+ .neo-button.neo-glass:focus-visible {
283
+ background-color: var(--neo-btn-bg-color, var(--neo-glass-background-color-focus));
284
+ backdrop-filter: var(--neo-btn-backdrop-filter-focus, var(--neo-blur-1) var(--neo-saturate-3));
253
285
  }
254
- .neo-button.pressed.shallow:not(.flat, .glass, .loading), .neo-button:active.shallow:not(.flat, .glass, .loading) {
255
- border-color: var(--neo-btn-border-color, var(--neo-border-color));
286
+ .neo-button.neo-glass:hover {
287
+ background-color: var(--neo-btn-bg-color, var(--neo-glass-background-color-hover));
288
+ backdrop-filter: var(--neo-btn-backdrop-filter-hover, var(--neo-blur-1) var(--neo-saturate-2));
256
289
  }
257
- .neo-button:focus-visible {
258
- color: var(--neo-btn-text-color-focused, var(--neo-text-color-focused));
259
- outline: none;
260
- 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;
290
+ .neo-button.neo-glass.neo-pressed, .neo-button.neo-glass:active:not(.neo-loading) {
291
+ backdrop-filter: var(--neo-btn-backdrop-filter-active, var(--neo-blur-0) var(--neo-saturate-2));
261
292
  }
262
- .neo-button:focus-visible:hover {
263
- color: var(--neo-btn-text-color-focused-hover, var(--neo-text-color-focused));
293
+ .neo-button.neo-glass:disabled, .neo-button.neo-glass[disabled]:not([disabled=false]) {
294
+ backdrop-filter: var(--neo-btn-backdrop-filter-disabled, var(--neo-blur-1));
264
295
  }
265
- .neo-button:focus-visible.pressed, .neo-button:focus-visible:active {
266
- color: var(--neo-btn-text-color-focused-active, var(--neo-text-color-focused-active));
296
+ .neo-button.neo-glass.neo-inset:hover:not(.neo-button.neo-glass.neo-inset.neo-pressed, .neo-button.neo-glass.neo-inset:active:not(.neo-loading), .neo-button.neo-glass.neo-inset:disabled, .neo-button.neo-glass.neo-inset[disabled]:not([disabled=false])) {
297
+ border-color: var(--neo-btn-border-color-hover, var(--neo-glass-border-color-hover));
298
+ box-shadow: var(--neo-box-shadow-flat);
267
299
  }
268
- .neo-button:focus-visible:not(.pressed, :active) {
269
- box-shadow: var(--neo-box-shadow-raised-2);
300
+ .neo-button.neo-glass.neo-inset.neo-pressed, .neo-button.neo-glass.neo-inset:active:not(.neo-loading) {
301
+ border-color: transparent;
270
302
  }
271
- .flat:not(:active, :hover, .neo-button.pressed):focus-visible {
272
- border-color: var(--neo-btn-border-color-focused, var(--neo-border-color-focused));
303
+ .neo-button.neo-glass.neo-flat {
304
+ border-color: var(--neo-btn-border-color, var(--neo-glass-border-color));
273
305
  }
274
306
  @starting-style {
275
- .neo-button.start {
307
+ .neo-button.neo-start {
276
308
  box-shadow: var(--neo-box-shadow-flat);
277
309
  }
278
- .neo-button.start:not(.borderless, .glass) {
310
+ .neo-button.neo-start:not(.neo-borderless, .neo-glass) {
279
311
  border-color: var(--neo-btn-border-color, var(--neo-border-color));
280
312
  }
281
313
  }
282
- .neo-button:disabled:not(.skeleton), .neo-button[disabled]:not([disabled=false], .skeleton) {
283
- color: var(--neo-btn-text-color-disabled, var(--neo-text-color-disabled)) !important;
314
+ .neo-button:disabled:disabled, .neo-button[disabled]:not([disabled=false]) {
315
+ color: var(--neo-btn-text-color-disabled, var(--neo-text-color-disabled));
284
316
  cursor: not-allowed;
285
317
  opacity: var(--neo-btn-opacity-disabled, var(--neo-opacity-disabled));
286
318
  }
287
- .neo-button:disabled:not(.skeleton):not(.pressed), .neo-button[disabled]:not([disabled=false], .skeleton):not(.pressed) {
319
+ .neo-button:disabled:disabled:not(.neo-pressed), .neo-button[disabled]:not([disabled=false]):not(.neo-pressed) {
320
+ border-color: var(--neo-btn-border-color-disabled, var(--neo-border-color-disabled));
288
321
  box-shadow: var(--neo-box-shadow-flat);
289
322
  }
290
- .neo-button:disabled:not(.skeleton):not(.borderless), .neo-button[disabled]:not([disabled=false], .skeleton):not(.borderless) {
291
- border-color: var(--neo-btn-border-color-disabled, var(--neo-border-color-disabled)) !important;
292
- }
293
- .neo-button:disabled:not(.skeleton)::after, .neo-button:disabled:not(.skeleton)::before, .neo-button[disabled]:not([disabled=false], .skeleton)::after, .neo-button[disabled]:not([disabled=false], .skeleton)::before {
323
+ .neo-button:disabled:disabled::after, .neo-button:disabled:disabled::before, .neo-button[disabled]:not([disabled=false])::after, .neo-button[disabled]:not([disabled=false])::before {
294
324
  box-shadow: none;
295
325
  animation-play-state: paused;
296
326
  }
297
- .neo-button.flat:not(:active, .neo-button.pressed), .neo-button.loading:active:not(.pressed), .neo-button:hover:not(:active, .neo-button.pressed) {
298
- box-shadow: var(--neo-box-shadow-flat);
299
- }
300
- .neo-button.flat:not(:active, .neo-button.pressed):not(.glass, .borderless, .flat:hover, .flat:focus-visible, .shallow:not(.flat)), .neo-button.loading:active:not(.pressed):not(.glass, .borderless, .flat:hover, .flat:focus-visible, .shallow:not(.flat)), .neo-button:hover:not(:active, .neo-button.pressed):not(.glass, .borderless, .flat:hover, .flat:focus-visible, .shallow:not(.flat)) {
301
- border-color: var(--neo-btn-border-color-hover, var(--neo-border-color));
302
- }
303
- .neo-button.flat:not(:active, .neo-button.pressed).shallow:not(.flat, .glass), .neo-button.loading:active:not(.pressed).shallow:not(.flat, .glass), .neo-button:hover:not(:active, .neo-button.pressed).shallow:not(.flat, .glass) {
304
- box-shadow: var(--neo-box-shadow-raised-2);
305
- }
306
- .neo-button.flat.loading:active:not(.pressed), .neo-button.flat:hover:not(:active, .neo-button.pressed) {
307
- box-shadow: var(--neo-box-shadow-inset-2);
308
- }
309
- .neo-button.flat.loading:active:not(.pressed).shallow, .neo-button.flat:hover:not(:active, .neo-button.pressed).shallow {
310
- box-shadow: var(--neo-box-shadow-inset-1);
311
- }
312
- .neo-button.skeleton {
327
+ .neo-button.neo-skeleton {
313
328
  box-shadow: var(--neo-box-shadow-flat) !important;
314
329
  pointer-events: none;
315
330
  --neo-skeleton-color-start: var(--neo-skeleton-color);
@@ -321,10 +336,10 @@
321
336
  animation: skeleton 3s var(--neo-transition-skeleton) infinite;
322
337
  animation-delay: 1s;
323
338
  }
324
- .neo-button.skeleton::before, .neo-button.skeleton::after,
325
- .neo-button.skeleton :global(> *::before),
326
- .neo-button.skeleton :global(> *::after),
327
- .neo-button.skeleton :global(> *) {
339
+ .neo-button.neo-skeleton::before, .neo-button.neo-skeleton::after,
340
+ .neo-button.neo-skeleton :global(> *::before),
341
+ .neo-button.neo-skeleton :global(> *::after),
342
+ .neo-button.neo-skeleton :global(> *) {
328
343
  visibility: hidden;
329
344
  pointer-events: none;
330
345
  }
@@ -350,26 +365,23 @@
350
365
  border-color: var(--neo-skeleton-color-start);
351
366
  }
352
367
  }
353
- .neo-button.skeleton.glass {
354
- --neo-skeleton-color: var(--neo-glass-skeleton-color);
355
- }
356
- .neo-button.rounded {
368
+ .neo-button.neo-rounded {
357
369
  border-radius: var(--neo-btn-border-radius-rounded, var(--neo-border-radius-lg));
358
370
  }
359
- .neo-button.pulse {
371
+ .neo-button.neo-pulse {
360
372
  position: relative;
361
373
  }
362
- .neo-button.pulse::after, .neo-button.pulse::before {
374
+ .neo-button.neo-pulse::after, .neo-button.neo-pulse::before {
363
375
  box-shadow: var(--neo-pulse-box-shadow, var(--neo-box-shadow-raised-3));
364
376
  will-change: transform, opacity;
365
377
  }
366
- .neo-button.pulse::before {
378
+ .neo-button.neo-pulse::before {
367
379
  animation: pulse var(--neo-pulse-duration, 6s) linear var(--neo-pulse-delay, 1s) infinite;
368
380
  }
369
- .neo-button.pulse::after {
381
+ .neo-button.neo-pulse::after {
370
382
  animation: pulse var(--neo-pulse-duration, 6s) linear calc(var(--neo-pulse-delay, 1s) + var(--neo-pulse-interval, 3s)) infinite;
371
383
  }
372
- .neo-button.pulse.pressed::after, .neo-button.pulse.pressed::before, .neo-button.pulse:focus-visible::after, .neo-button.pulse:focus-visible::before, .neo-button.pulse:hover::after, .neo-button.pulse:hover::before, .neo-button.pulse:active::after, .neo-button.pulse:active::before {
384
+ .neo-button.neo-pulse.pressed::after, .neo-button.neo-pulse.pressed::before, .neo-button.neo-pulse:focus-visible::after, .neo-button.neo-pulse:focus-visible::before, .neo-button.neo-pulse:hover::after, .neo-button.neo-pulse:hover::before, .neo-button.neo-pulse:active::after, .neo-button.neo-pulse:active::before {
373
385
  box-shadow: var(--neo-pulse-box-shadow-reverse, var(--neo-box-shadow-inset-2));
374
386
  animation-name: coalesce;
375
387
  animation-timing-function: ease-out;
@@ -400,20 +412,20 @@
400
412
  opacity: 0;
401
413
  }
402
414
  }
403
- .neo-button.coalesce {
415
+ .neo-button.neo-coalesce {
404
416
  position: relative;
405
417
  }
406
- .neo-button.coalesce::after, .neo-button.coalesce::before {
418
+ .neo-button.neo-coalesce::after, .neo-button.neo-coalesce::before {
407
419
  box-shadow: var(--neo-coalesce-box-shadow, var(--neo-box-shadow-raised-3));
408
420
  will-change: transform, opacity;
409
421
  }
410
- .neo-button.coalesce::before {
422
+ .neo-button.neo-coalesce::before {
411
423
  animation: coalesce var(--neo-coalesce-duration, 6s) ease-out var(--neo-coalesce-delay, 1s) infinite;
412
424
  }
413
- .neo-button.coalesce::after {
425
+ .neo-button.neo-coalesce::after {
414
426
  animation: coalesce var(--neo-coalesce-duration, 6s) ease-out calc(var(--neo-coalesce-delay, 1s) + var(--neo-coalesce-interval, 3s)) infinite;
415
427
  }
416
- .neo-button.coalesce.pressed::after, .neo-button.coalesce.pressed::before, .neo-button.coalesce:focus-visible::after, .neo-button.coalesce:focus-visible::before, .neo-button.coalesce:hover::after, .neo-button.coalesce:hover::before, .neo-button.coalesce:active::after, .neo-button.coalesce:active::before {
428
+ .neo-button.neo-coalesce.pressed::after, .neo-button.neo-coalesce.pressed::before, .neo-button.neo-coalesce:focus-visible::after, .neo-button.neo-coalesce:focus-visible::before, .neo-button.neo-coalesce:hover::after, .neo-button.neo-coalesce:hover::before, .neo-button.neo-coalesce:active::after, .neo-button.neo-coalesce:active::before {
417
429
  box-shadow: var(--neo-coalesce-box-shadow-reverse, var(--neo-box-shadow-inset-2));
418
430
  animation-name: pulse;
419
431
  animation-timing-function: linear;
@@ -444,23 +456,23 @@
444
456
  opacity: 0;
445
457
  }
446
458
  }
447
- .neo-button .icon,
448
- .neo-button .content {
459
+ .neo-button .neo-icon,
460
+ .neo-button .neo-content {
449
461
  display: inline-flex;
450
462
  align-items: center;
451
463
  justify-content: center;
452
464
  }
453
- .neo-button .content {
465
+ .neo-button .neo-content {
454
466
  height: 100%;
455
467
  }
456
- .neo-button .content .icon:not(.only) {
468
+ .neo-button .neo-content .neo-icon:not(.neo-only) {
457
469
  margin-right: var(--neo-btn-icon-gap, 0.35rem);
458
470
  margin-left: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.35rem)));
459
471
  }
460
- .neo-button .content.reverse {
472
+ .neo-button .neo-content.neo-reverse {
461
473
  flex-direction: row-reverse;
462
474
  }
463
- .neo-button .content.reverse .icon:not(.only) {
475
+ .neo-button .neo-content.neo-reverse .neo-icon:not(.neo-only) {
464
476
  margin-right: var(--neo-btn-icon-offset, calc(0.25rem - var(--neo-btn-icon-gap, 0.35rem)));
465
477
  margin-left: var(--neo-btn-icon-gap, 0.35rem);
466
478
  }</style>