@govtechsg/sgds-web-component 0.0.7 → 0.0.10

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 (263) hide show
  1. package/.github/workflows/publish-latest.yml +22 -0
  2. package/.github/workflows/publish-pr.yml +28 -0
  3. package/.husky/commit-msg +4 -0
  4. package/.husky/prepare-commit-msg +8 -0
  5. package/.storybook/main.js +16 -0
  6. package/.storybook/preview-head.html +11 -0
  7. package/.storybook/preview.js +9 -0
  8. package/.vscode/settings.json +7 -0
  9. package/CONTRIBUTING.md +56 -0
  10. package/LICENSE +20 -0
  11. package/amplify.yml +22 -0
  12. package/commitlint.config.js +1 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/button-element.scss.html +112 -0
  16. package/coverage/lcov-report/button-element.ts.html +145 -0
  17. package/coverage/lcov-report/favicon.png +0 -0
  18. package/coverage/lcov-report/index.html +116 -0
  19. package/coverage/lcov-report/prettify.css +1 -0
  20. package/coverage/lcov-report/prettify.js +2 -0
  21. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  22. package/coverage/lcov-report/sorter.js +196 -0
  23. package/coverage/lcov.info +32 -0
  24. package/index.html +430 -0
  25. package/{Button → lib/Button}/index.d.ts +0 -0
  26. package/{Button → lib/Button}/index.js +304 -39
  27. package/lib/Button/index.js.map +1 -0
  28. package/{Button → lib/Button}/package.json +0 -0
  29. package/lib/Button/sgds-button.d.ts +48 -0
  30. package/lib/Card/index.d.ts +1 -0
  31. package/lib/Card/index.js +6150 -0
  32. package/lib/Card/index.js.map +1 -0
  33. package/lib/Card/package.json +7 -0
  34. package/lib/Card/sgds-action-card.d.ts +20 -0
  35. package/lib/Checkbox/index.d.ts +1 -0
  36. package/lib/Checkbox/index.js +6366 -0
  37. package/lib/Checkbox/index.js.map +1 -0
  38. package/lib/Checkbox/package.json +7 -0
  39. package/lib/Checkbox/sgds-checkbox.d.ts +36 -0
  40. package/lib/Dropdown/index.d.ts +3 -0
  41. package/{Mainnav → lib/Dropdown}/index.js +2786 -9258
  42. package/lib/Dropdown/index.js.map +1 -0
  43. package/lib/Dropdown/package.json +7 -0
  44. package/lib/Dropdown/sgds-dropdown-item.d.ts +7 -0
  45. package/lib/Dropdown/sgds-dropdown.d.ts +7 -0
  46. package/{Footer → lib/Footer}/index.d.ts +0 -0
  47. package/{Footer → lib/Footer}/index.js +111 -95
  48. package/lib/Footer/index.js.map +1 -0
  49. package/{Footer → lib/Footer}/package.json +0 -0
  50. package/{Footer → lib/Footer}/sgds-footer.d.ts +2 -2
  51. package/lib/Input/index.d.ts +1 -0
  52. package/lib/Input/index.js +6656 -0
  53. package/lib/Input/index.js.map +1 -0
  54. package/lib/Input/package.json +7 -0
  55. package/lib/Input/sgds-input.d.ts +42 -0
  56. package/{Mainnav → lib/Mainnav}/index.d.ts +1 -0
  57. package/{index.js → lib/Mainnav/index.js} +3876 -23415
  58. package/lib/Mainnav/index.js.map +1 -0
  59. package/{Mainnav → lib/Mainnav}/package.json +0 -0
  60. package/lib/Mainnav/sgds-mainnav-dropdown.d.ts +5 -0
  61. package/lib/Mainnav/sgds-mainnav-item.d.ts +4 -0
  62. package/{Mainnav → lib/Mainnav}/sgds-mainnav.d.ts +3 -2
  63. package/{Masthead → lib/Masthead}/index.d.ts +0 -0
  64. package/{Masthead → lib/Masthead}/index.js +140 -114
  65. package/lib/Masthead/index.js.map +1 -0
  66. package/{Masthead → lib/Masthead}/package.json +0 -0
  67. package/{Masthead → lib/Masthead}/sgds-masthead.d.ts +1 -1
  68. package/lib/Modal/index.d.ts +1 -0
  69. package/lib/Modal/index.js +6432 -0
  70. package/lib/Modal/index.js.map +1 -0
  71. package/lib/Modal/package.json +7 -0
  72. package/lib/Modal/sgds-modal.d.ts +28 -0
  73. package/lib/QuantityToggle/index.d.ts +1 -0
  74. package/lib/QuantityToggle/index.js +7049 -0
  75. package/lib/QuantityToggle/index.js.map +1 -0
  76. package/lib/QuantityToggle/package.json +7 -0
  77. package/lib/QuantityToggle/sgds-quantitytoggle.d.ts +30 -0
  78. package/lib/Radio/index.d.ts +2 -0
  79. package/lib/Radio/index.js +12607 -0
  80. package/lib/Radio/index.js.map +1 -0
  81. package/lib/Radio/package.json +7 -0
  82. package/lib/Radio/sgds-radio.d.ts +31 -0
  83. package/lib/Radio/sgds-radiogroup.d.ts +41 -0
  84. package/{Sidenav → lib/Sidenav}/index.d.ts +0 -0
  85. package/{Sidenav → lib/Sidenav}/index.js +2266 -2171
  86. package/lib/Sidenav/index.js.map +1 -0
  87. package/{Sidenav → lib/Sidenav}/package.json +0 -0
  88. package/{Sidenav → lib/Sidenav}/sgds-sidenav-item.d.ts +2 -1
  89. package/lib/Sidenav/sgds-sidenav-link.d.ts +4 -0
  90. package/{Sidenav → lib/Sidenav}/sgds-sidenav.d.ts +1 -1
  91. package/lib/Tab/index.d.ts +3 -0
  92. package/lib/Tab/index.js +13557 -0
  93. package/lib/Tab/index.js.map +1 -0
  94. package/lib/Tab/package.json +7 -0
  95. package/lib/Tab/sgds-tab.d.ts +26 -0
  96. package/lib/Tab/sgds-tabgroup.d.ts +47 -0
  97. package/lib/Tab/sgds-tabpanel.d.ts +25 -0
  98. package/lib/Textarea/index.d.ts +1 -0
  99. package/lib/Textarea/index.js +6696 -0
  100. package/lib/Textarea/index.js.map +1 -0
  101. package/lib/Textarea/package.json +7 -0
  102. package/lib/Textarea/sgds-textarea.d.ts +53 -0
  103. package/lib/index.d.ts +16 -0
  104. package/lib/index.js +134580 -0
  105. package/lib/index.js.map +1 -0
  106. package/lib/umd/index.js +134587 -0
  107. package/lib/umd/index.js.map +1 -0
  108. package/lib/utils/animate.d.ts +10 -0
  109. package/lib/utils/animation-registry.d.ts +18 -0
  110. package/{utils → lib/utils}/breakpoints.d.ts +0 -0
  111. package/lib/utils/card-element.d.ts +11 -0
  112. package/lib/utils/defaultvalue.d.ts +2 -0
  113. package/lib/utils/dropdown-element.d.ts +37 -0
  114. package/lib/utils/event.d.ts +2 -0
  115. package/lib/utils/form.d.ts +38 -0
  116. package/{utils → lib/utils}/generateId.d.ts +0 -0
  117. package/lib/utils/link-element.d.ts +7 -0
  118. package/lib/utils/mergeDeep.d.ts +2 -0
  119. package/lib/utils/modal.d.ts +12 -0
  120. package/lib/utils/object.d.ts +2 -0
  121. package/lib/utils/offset.d.ts +4 -0
  122. package/lib/utils/scroll.d.ts +13 -0
  123. package/{utils → lib/utils}/sgds-element.d.ts +0 -0
  124. package/lib/utils/slot.d.ts +22 -0
  125. package/lib/utils/tabbable.d.ts +8 -0
  126. package/lib/utils/watch.d.ts +14 -0
  127. package/mocks/dropdown.d.ts +4 -0
  128. package/mocks/dropdown.ts +27 -0
  129. package/mocks/link.d.ts +3 -0
  130. package/mocks/link.ts +6 -0
  131. package/package.json +65 -10
  132. package/rollup.config.js +73 -0
  133. package/rollup.test.config.js +42 -0
  134. package/scripts/buildUtils.js +30 -0
  135. package/scripts/frankBuild.js +49 -0
  136. package/src/Button/index.ts +1 -0
  137. package/src/Button/sgds-button.scss +28 -0
  138. package/src/Button/sgds-button.ts +153 -0
  139. package/src/Card/index.ts +1 -0
  140. package/src/Card/sgds-action-card.scss +27 -0
  141. package/src/Card/sgds-action-card.ts +115 -0
  142. package/src/Checkbox/index.ts +1 -0
  143. package/src/Checkbox/sgds-checkbox.scss +4 -0
  144. package/src/Checkbox/sgds-checkbox.ts +149 -0
  145. package/src/Dropdown/index.ts +3 -0
  146. package/src/Dropdown/sgds-dropdown-item.ts +39 -0
  147. package/src/Dropdown/sgds-dropdown.scss +5 -0
  148. package/src/Dropdown/sgds-dropdown.ts +54 -0
  149. package/src/Footer/index.ts +3 -0
  150. package/src/Footer/sgds-footer.scss +5 -0
  151. package/src/Footer/sgds-footer.ts +121 -0
  152. package/src/Input/index.ts +1 -0
  153. package/src/Input/sgds-input.scss +20 -0
  154. package/src/Input/sgds-input.ts +178 -0
  155. package/src/Mainnav/index.ts +4 -0
  156. package/src/Mainnav/sgds-mainnav-dropdown.scss +13 -0
  157. package/src/Mainnav/sgds-mainnav-dropdown.ts +45 -0
  158. package/src/Mainnav/sgds-mainnav-item.scss +24 -0
  159. package/src/Mainnav/sgds-mainnav-item.ts +8 -0
  160. package/src/Mainnav/sgds-mainnav.scss +39 -0
  161. package/src/Mainnav/sgds-mainnav.ts +183 -0
  162. package/src/Masthead/index.ts +1 -0
  163. package/src/Masthead/sgds-masthead.scss +217 -0
  164. package/src/Masthead/sgds-masthead.ts +189 -0
  165. package/src/Modal/index.ts +1 -0
  166. package/src/Modal/sgds-modal.scss +128 -0
  167. package/src/Modal/sgds-modal.ts +309 -0
  168. package/src/QuantityToggle/index.ts +1 -0
  169. package/src/QuantityToggle/sgds-quantitytoggle.scss +10 -0
  170. package/src/QuantityToggle/sgds-quantitytoggle.ts +130 -0
  171. package/src/Radio/index.ts +2 -0
  172. package/src/Radio/sgds-radio.scss +5 -0
  173. package/src/Radio/sgds-radio.ts +120 -0
  174. package/src/Radio/sgds-radiogroup.scss +22 -0
  175. package/src/Radio/sgds-radiogroup.ts +221 -0
  176. package/src/Sidenav/index.ts +4 -0
  177. package/src/Sidenav/sgds-sidenav-item.scss +73 -0
  178. package/src/Sidenav/sgds-sidenav-item.ts +145 -0
  179. package/src/Sidenav/sgds-sidenav-link.scss +25 -0
  180. package/src/Sidenav/sgds-sidenav-link.ts +8 -0
  181. package/src/Sidenav/sgds-sidenav.scss +6 -0
  182. package/src/Sidenav/sgds-sidenav.ts +33 -0
  183. package/src/Tab/index.ts +3 -0
  184. package/src/Tab/sgds-tab.scss +84 -0
  185. package/src/Tab/sgds-tab.ts +87 -0
  186. package/src/Tab/sgds-tabgroup.scss +198 -0
  187. package/src/Tab/sgds-tabgroup.ts +295 -0
  188. package/src/Tab/sgds-tabpanel.scss +12 -0
  189. package/src/Tab/sgds-tabpanel.ts +55 -0
  190. package/src/Textarea/index.ts +1 -0
  191. package/src/Textarea/sgds-textarea.scss +23 -0
  192. package/src/Textarea/sgds-textarea.ts +201 -0
  193. package/src/index.ts +16 -0
  194. package/src/utils/animate.ts +69 -0
  195. package/src/utils/animation-registry.ts +71 -0
  196. package/src/utils/base.scss +14 -0
  197. package/src/utils/breakpoints.ts +5 -0
  198. package/src/utils/card-element.ts +42 -0
  199. package/src/utils/components.style.scss +531 -0
  200. package/src/utils/defaultvalue.ts +51 -0
  201. package/src/utils/dropdown-element.ts +244 -0
  202. package/src/utils/event.ts +13 -0
  203. package/src/utils/form.ts +183 -0
  204. package/src/utils/generateId.ts +4 -0
  205. package/src/utils/link-element.ts +34 -0
  206. package/src/utils/mergeDeep.ts +22 -0
  207. package/src/utils/modal.ts +64 -0
  208. package/src/utils/object.ts +2 -0
  209. package/src/utils/offset.ts +6 -0
  210. package/src/utils/scroll.ts +57 -0
  211. package/src/utils/sgds-element.ts +18 -0
  212. package/src/utils/slot.ts +102 -0
  213. package/src/utils/tabbable.ts +81 -0
  214. package/src/utils/watch.ts +62 -0
  215. package/stories/ActionCard.stories.mdx +199 -0
  216. package/stories/Button.stories.mdx +194 -0
  217. package/stories/Checkbox.stories.mdx +196 -0
  218. package/stories/Dropdown.stories.mdx +152 -0
  219. package/stories/Footer.stories.mdx +261 -0
  220. package/stories/Input.stories.mdx +236 -0
  221. package/stories/MainNav.stories.mdx +169 -0
  222. package/stories/Masthead.stories.mdx +112 -0
  223. package/stories/Modal.stories.mdx +103 -0
  224. package/stories/QuantityToggle.stories.mdx +97 -0
  225. package/stories/Radio.stories.mdx +262 -0
  226. package/stories/Sample.stories.js +29 -0
  227. package/stories/Sample.stories.mdx +33 -0
  228. package/stories/SideNav.stories.mdx +245 -0
  229. package/stories/common.js +185 -0
  230. package/stories/textarea.stories.mdx +253 -0
  231. package/test/button.element.test.ts +185 -0
  232. package/test/checkbox.test.ts +240 -0
  233. package/test/dropdown.test.ts +637 -0
  234. package/test/footer.test.ts +181 -0
  235. package/test/generateId.test.ts +18 -0
  236. package/test/input.element.test.ts +316 -0
  237. package/test/link-element.test.ts +38 -0
  238. package/test/mainnav.test.ts +313 -0
  239. package/test/masthead.test.ts +116 -0
  240. package/test/modal.test.ts +149 -0
  241. package/test/quantitytoggle.test.ts +76 -0
  242. package/test/radio.test.ts +310 -0
  243. package/test/selectable-card.test.ts +159 -0
  244. package/test/sidenav.test.ts +390 -0
  245. package/test/tab.test.ts +76 -0
  246. package/test/textarea.test.ts +126 -0
  247. package/tsconfig.json +26 -0
  248. package/tsconfig.test.json +24 -0
  249. package/typings/scss.d.ts +5 -0
  250. package/web-dev-server.config.mjs +7 -0
  251. package/web-test-runner.config.mjs +47 -0
  252. package/Button/index.js.map +0 -1
  253. package/Button/sgds-button.d.ts +0 -23
  254. package/Footer/index.js.map +0 -1
  255. package/Mainnav/index.js.map +0 -1
  256. package/Mainnav/sgds-mainnav-item.d.ts +0 -7
  257. package/Masthead/index.js.map +0 -1
  258. package/Sidenav/index.js.map +0 -1
  259. package/Sidenav/sgds-sidenav-link.d.ts +0 -7
  260. package/index.d.ts +0 -5
  261. package/index.js.map +0 -1
  262. package/umd/index.js +0 -52092
  263. package/umd/index.js.map +0 -1
@@ -0,0 +1,531 @@
1
+ :host {
2
+ box-sizing: border-box;
3
+ --sl-color-gray-50: hsl(0 0% 97.5%);
4
+ --sl-color-gray-100: hsl(240 4.8% 95.9%);
5
+ --sl-color-gray-200: hsl(240 5.9% 90%);
6
+ --sl-color-gray-300: hsl(240 4.9% 83.9%);
7
+ --sl-color-gray-400: hsl(240 5% 64.9%);
8
+ --sl-color-gray-500: hsl(240 3.8% 46.1%);
9
+ --sl-color-gray-600: hsl(240 5.2% 33.9%);
10
+ --sl-color-gray-700: hsl(240 5.3% 26.1%);
11
+ --sl-color-gray-800: hsl(240 3.7% 15.9%);
12
+ --sl-color-gray-900: hsl(240 5.9% 10%);
13
+ --sl-color-gray-950: hsl(240 7.3% 8%);
14
+
15
+ /* Red */
16
+ --sl-color-red-50: hsl(0 85.7% 97.3%);
17
+ --sl-color-red-100: hsl(0 93.3% 94.1%);
18
+ --sl-color-red-200: hsl(0 96.3% 89.4%);
19
+ --sl-color-red-300: hsl(0 93.5% 81.8%);
20
+ --sl-color-red-400: hsl(0 90.6% 70.8%);
21
+ --sl-color-red-500: hsl(0 84.2% 60.2%);
22
+ --sl-color-red-600: hsl(0 72.2% 50.6%);
23
+ --sl-color-red-700: hsl(0 73.7% 41.8%);
24
+ --sl-color-red-800: hsl(0 70% 35.3%);
25
+ --sl-color-red-900: hsl(0 62.8% 30.6%);
26
+ --sl-color-red-950: hsl(0 60% 19.6%);
27
+
28
+ /* Orange */
29
+ --sl-color-orange-50: hsl(33.3 100% 96.5%);
30
+ --sl-color-orange-100: hsl(34.3 100% 91.8%);
31
+ --sl-color-orange-200: hsl(32.1 97.7% 83.1%);
32
+ --sl-color-orange-300: hsl(30.7 97.2% 72.4%);
33
+ --sl-color-orange-400: hsl(27 96% 61%);
34
+ --sl-color-orange-500: hsl(24.6 95% 53.1%);
35
+ --sl-color-orange-600: hsl(20.5 90.2% 48.2%);
36
+ --sl-color-orange-700: hsl(17.5 88.3% 40.4%);
37
+ --sl-color-orange-800: hsl(15 79.1% 33.7%);
38
+ --sl-color-orange-900: hsl(15.3 74.6% 27.8%);
39
+ --sl-color-orange-950: hsl(15.2 69.1% 19%);
40
+
41
+ /* Amber */
42
+ --sl-color-amber-50: hsl(48 100% 96.1%);
43
+ --sl-color-amber-100: hsl(48 96.5% 88.8%);
44
+ --sl-color-amber-200: hsl(48 96.6% 76.7%);
45
+ --sl-color-amber-300: hsl(45.9 96.7% 64.5%);
46
+ --sl-color-amber-400: hsl(43.3 96.4% 56.3%);
47
+ --sl-color-amber-500: hsl(37.7 92.1% 50.2%);
48
+ --sl-color-amber-600: hsl(32.1 94.6% 43.7%);
49
+ --sl-color-amber-700: hsl(26 90.5% 37.1%);
50
+ --sl-color-amber-800: hsl(22.7 82.5% 31.4%);
51
+ --sl-color-amber-900: hsl(21.7 77.8% 26.5%);
52
+ --sl-color-amber-950: hsl(22.9 74.1% 16.7%);
53
+
54
+ /* Yellow */
55
+ --sl-color-yellow-50: hsl(54.5 91.7% 95.3%);
56
+ --sl-color-yellow-100: hsl(54.9 96.7% 88%);
57
+ --sl-color-yellow-200: hsl(52.8 98.3% 76.9%);
58
+ --sl-color-yellow-300: hsl(50.4 97.8% 63.5%);
59
+ --sl-color-yellow-400: hsl(47.9 95.8% 53.1%);
60
+ --sl-color-yellow-500: hsl(45.4 93.4% 47.5%);
61
+ --sl-color-yellow-600: hsl(40.6 96.1% 40.4%);
62
+ --sl-color-yellow-700: hsl(35.5 91.7% 32.9%);
63
+ --sl-color-yellow-800: hsl(31.8 81% 28.8%);
64
+ --sl-color-yellow-900: hsl(28.4 72.5% 25.7%);
65
+ --sl-color-yellow-950: hsl(33.1 69% 13.9%);
66
+
67
+ /* Lime */
68
+ --sl-color-lime-50: hsl(78.3 92% 95.1%);
69
+ --sl-color-lime-100: hsl(79.6 89.1% 89.2%);
70
+ --sl-color-lime-200: hsl(80.9 88.5% 79.6%);
71
+ --sl-color-lime-300: hsl(82 84.5% 67.1%);
72
+ --sl-color-lime-400: hsl(82.7 78% 55.5%);
73
+ --sl-color-lime-500: hsl(83.7 80.5% 44.3%);
74
+ --sl-color-lime-600: hsl(84.8 85.2% 34.5%);
75
+ --sl-color-lime-700: hsl(85.9 78.4% 27.3%);
76
+ --sl-color-lime-800: hsl(86.3 69% 22.7%);
77
+ --sl-color-lime-900: hsl(87.6 61.2% 20.2%);
78
+ --sl-color-lime-950: hsl(86.5 60.6% 13.9%);
79
+
80
+ /* Green */
81
+ --sl-color-green-50: hsl(138.5 76.5% 96.7%);
82
+ --sl-color-green-100: hsl(140.6 84.2% 92.5%);
83
+ --sl-color-green-200: hsl(141 78.9% 85.1%);
84
+ --sl-color-green-300: hsl(141.7 76.6% 73.1%);
85
+ --sl-color-green-400: hsl(141.9 69.2% 58%);
86
+ --sl-color-green-500: hsl(142.1 70.6% 45.3%);
87
+ --sl-color-green-600: hsl(142.1 76.2% 36.3%);
88
+ --sl-color-green-700: hsl(142.4 71.8% 29.2%);
89
+ --sl-color-green-800: hsl(142.8 64.2% 24.1%);
90
+ --sl-color-green-900: hsl(143.8 61.2% 20.2%);
91
+ --sl-color-green-950: hsl(144.3 60.7% 12%);
92
+
93
+ /* Emerald */
94
+ --sl-color-emerald-50: hsl(151.8 81% 95.9%);
95
+ --sl-color-emerald-100: hsl(149.3 80.4% 90%);
96
+ --sl-color-emerald-200: hsl(152.4 76% 80.4%);
97
+ --sl-color-emerald-300: hsl(156.2 71.6% 66.9%);
98
+ --sl-color-emerald-400: hsl(158.1 64.4% 51.6%);
99
+ --sl-color-emerald-500: hsl(160.1 84.1% 39.4%);
100
+ --sl-color-emerald-600: hsl(161.4 93.5% 30.4%);
101
+ --sl-color-emerald-700: hsl(162.9 93.5% 24.3%);
102
+ --sl-color-emerald-800: hsl(163.1 88.1% 19.8%);
103
+ --sl-color-emerald-900: hsl(164.2 85.7% 16.5%);
104
+ --sl-color-emerald-950: hsl(164.3 87.5% 9.4%);
105
+
106
+ /* Teal */
107
+ --sl-color-teal-50: hsl(166.2 76.5% 96.7%);
108
+ --sl-color-teal-100: hsl(167.2 85.5% 89.2%);
109
+ --sl-color-teal-200: hsl(168.4 83.8% 78.2%);
110
+ --sl-color-teal-300: hsl(170.6 76.9% 64.3%);
111
+ --sl-color-teal-400: hsl(172.5 66% 50.4%);
112
+ --sl-color-teal-500: hsl(173.4 80.4% 40%);
113
+ --sl-color-teal-600: hsl(174.7 83.9% 31.6%);
114
+ --sl-color-teal-700: hsl(175.3 77.4% 26.1%);
115
+ --sl-color-teal-800: hsl(176.1 69.4% 21.8%);
116
+ --sl-color-teal-900: hsl(175.9 60.8% 19%);
117
+ --sl-color-teal-950: hsl(176.5 58.6% 11.4%);
118
+
119
+ /* Cyan */
120
+ --sl-color-cyan-50: hsl(183.2 100% 96.3%);
121
+ --sl-color-cyan-100: hsl(185.1 95.9% 90.4%);
122
+ --sl-color-cyan-200: hsl(186.2 93.5% 81.8%);
123
+ --sl-color-cyan-300: hsl(187 92.4% 69%);
124
+ --sl-color-cyan-400: hsl(187.9 85.7% 53.3%);
125
+ --sl-color-cyan-500: hsl(188.7 94.5% 42.7%);
126
+ --sl-color-cyan-600: hsl(191.6 91.4% 36.5%);
127
+ --sl-color-cyan-700: hsl(192.9 82.3% 31%);
128
+ --sl-color-cyan-800: hsl(194.4 69.6% 27.1%);
129
+ --sl-color-cyan-900: hsl(196.4 63.6% 23.7%);
130
+ --sl-color-cyan-950: hsl(196.8 61% 16.1%);
131
+
132
+ /* Sky */
133
+ --sl-color-sky-50: hsl(204 100% 97.1%);
134
+ --sl-color-sky-100: hsl(204 93.8% 93.7%);
135
+ --sl-color-sky-200: hsl(200.6 94.4% 86.1%);
136
+ --sl-color-sky-300: hsl(199.4 95.5% 73.9%);
137
+ --sl-color-sky-400: hsl(198.4 93.2% 59.6%);
138
+ --sl-color-sky-500: hsl(198.6 88.7% 48.4%);
139
+ --sl-color-sky-600: #0f71bb;
140
+ --sl-color-sky-700: hsl(201.3 96.3% 32.2%);
141
+ --sl-color-sky-800: hsl(201 90% 27.5%);
142
+ --sl-color-sky-900: hsl(202 80.3% 23.9%);
143
+ --sl-color-sky-950: hsl(202.3 73.8% 16.5%);
144
+
145
+ /* Blue */
146
+ --sl-color-blue-50: hsl(213.8 100% 96.9%);
147
+ --sl-color-blue-100: hsl(214.3 94.6% 92.7%);
148
+ --sl-color-blue-200: hsl(213.3 96.9% 87.3%);
149
+ --sl-color-blue-300: hsl(211.7 96.4% 78.4%);
150
+ --sl-color-blue-400: hsl(213.1 93.9% 67.8%);
151
+ --sl-color-blue-500: hsl(217.2 91.2% 59.8%);
152
+ --sl-color-blue-600: hsl(221.2 83.2% 53.3%);
153
+ --sl-color-blue-700: hsl(224.3 76.3% 48%);
154
+ --sl-color-blue-800: hsl(225.9 70.7% 40.2%);
155
+ --sl-color-blue-900: hsl(224.4 64.3% 32.9%);
156
+ --sl-color-blue-950: hsl(226.2 55.3% 18.4%);
157
+
158
+ /* Indigo */
159
+ --sl-color-indigo-50: hsl(225.9 100% 96.7%);
160
+ --sl-color-indigo-100: hsl(226.5 100% 93.9%);
161
+ --sl-color-indigo-200: hsl(228 96.5% 88.8%);
162
+ --sl-color-indigo-300: hsl(229.7 93.5% 81.8%);
163
+ --sl-color-indigo-400: hsl(234.5 89.5% 73.9%);
164
+ --sl-color-indigo-500: hsl(238.7 83.5% 66.7%);
165
+ --sl-color-indigo-600: hsl(243.4 75.4% 58.6%);
166
+ --sl-color-indigo-700: hsl(244.5 57.9% 50.6%);
167
+ --sl-color-indigo-800: hsl(243.7 54.5% 41.4%);
168
+ --sl-color-indigo-900: hsl(242.2 47.4% 34.3%);
169
+ --sl-color-indigo-950: hsl(243.5 43.6% 22.9%);
170
+
171
+ /* Violet */
172
+ --sl-color-violet-50: hsl(250 100% 97.6%);
173
+ --sl-color-violet-100: hsl(251.4 91.3% 95.5%);
174
+ --sl-color-violet-200: hsl(250.5 95.2% 91.8%);
175
+ --sl-color-violet-300: hsl(252.5 94.7% 85.1%);
176
+ --sl-color-violet-400: hsl(255.1 91.7% 76.3%);
177
+ --sl-color-violet-500: hsl(258.3 89.5% 66.3%);
178
+ --sl-color-violet-600: hsl(262.1 83.3% 57.8%);
179
+ --sl-color-violet-700: hsl(263.4 70% 50.4%);
180
+ --sl-color-violet-800: hsl(263.4 69.3% 42.2%);
181
+ --sl-color-violet-900: hsl(263.5 67.4% 34.9%);
182
+ --sl-color-violet-950: hsl(265.1 61.5% 21.4%);
183
+
184
+ /* Purple */
185
+ --sl-color-purple-50: hsl(270 100% 98%);
186
+ --sl-color-purple-100: hsl(268.7 100% 95.5%);
187
+ --sl-color-purple-200: hsl(268.6 100% 91.8%);
188
+ --sl-color-purple-300: hsl(269.2 97.4% 85.1%);
189
+ --sl-color-purple-400: hsl(270 95.2% 75.3%);
190
+ --sl-color-purple-500: hsl(270.7 91% 65.1%);
191
+ --sl-color-purple-600: hsl(271.5 81.3% 55.9%);
192
+ --sl-color-purple-700: hsl(272.1 71.7% 47.1%);
193
+ --sl-color-purple-800: hsl(272.9 67.2% 39.4%);
194
+ --sl-color-purple-900: hsl(273.6 65.6% 32%);
195
+ --sl-color-purple-950: hsl(276 59.5% 16.5%);
196
+
197
+ /* Fuchsia */
198
+ --sl-color-fuchsia-50: hsl(289.1 100% 97.8%);
199
+ --sl-color-fuchsia-100: hsl(287 100% 95.5%);
200
+ --sl-color-fuchsia-200: hsl(288.3 95.8% 90.6%);
201
+ --sl-color-fuchsia-300: hsl(291.1 93.1% 82.9%);
202
+ --sl-color-fuchsia-400: hsl(292 91.4% 72.5%);
203
+ --sl-color-fuchsia-500: hsl(292.2 84.1% 60.6%);
204
+ --sl-color-fuchsia-600: hsl(293.4 69.5% 48.8%);
205
+ --sl-color-fuchsia-700: hsl(294.7 72.4% 39.8%);
206
+ --sl-color-fuchsia-800: hsl(295.4 70.2% 32.9%);
207
+ --sl-color-fuchsia-900: hsl(296.7 63.6% 28%);
208
+ --sl-color-fuchsia-950: hsl(297.1 56.8% 14.5%);
209
+
210
+ /* Pink */
211
+ --sl-color-pink-50: hsl(327.3 73.3% 97.1%);
212
+ --sl-color-pink-100: hsl(325.7 77.8% 94.7%);
213
+ --sl-color-pink-200: hsl(325.9 84.6% 89.8%);
214
+ --sl-color-pink-300: hsl(327.4 87.1% 81.8%);
215
+ --sl-color-pink-400: hsl(328.6 85.5% 70.2%);
216
+ --sl-color-pink-500: hsl(330.4 81.2% 60.4%);
217
+ --sl-color-pink-600: hsl(333.3 71.4% 50.6%);
218
+ --sl-color-pink-700: hsl(335.1 77.6% 42%);
219
+ --sl-color-pink-800: hsl(335.8 74.4% 35.3%);
220
+ --sl-color-pink-900: hsl(335.9 69% 30.4%);
221
+ --sl-color-pink-950: hsl(336.2 65.4% 15.9%);
222
+
223
+ /* Rose */
224
+ --sl-color-rose-50: hsl(355.7 100% 97.3%);
225
+ --sl-color-rose-100: hsl(355.6 100% 94.7%);
226
+ --sl-color-rose-200: hsl(352.7 96.1% 90%);
227
+ --sl-color-rose-300: hsl(352.6 95.7% 81.8%);
228
+ --sl-color-rose-400: hsl(351.3 94.5% 71.4%);
229
+ --sl-color-rose-500: hsl(349.7 89.2% 60.2%);
230
+ --sl-color-rose-600: hsl(346.8 77.2% 49.8%);
231
+ --sl-color-rose-700: hsl(345.3 82.7% 40.8%);
232
+ --sl-color-rose-800: hsl(343.4 79.7% 34.7%);
233
+ --sl-color-rose-900: hsl(341.5 75.5% 30.4%);
234
+ --sl-color-rose-950: hsl(341.3 70.1% 17.1%);
235
+
236
+ /*
237
+ * Theme Tokens
238
+ */
239
+
240
+ /* Primary */
241
+ --sl-color-primary-50: var(--sl-color-sky-50);
242
+ --sl-color-primary-100: var(--sl-color-sky-100);
243
+ --sl-color-primary-200: var(--sl-color-sky-200);
244
+ --sl-color-primary-300: var(--sl-color-sky-300);
245
+ --sl-color-primary-400: var(--sl-color-sky-400);
246
+ --sl-color-primary-500: var(--sl-color-sky-500);
247
+ --sl-color-primary-600: var(--sl-color-sky-600);
248
+ --sl-color-primary-700: var(--sl-color-sky-700);
249
+ --sl-color-primary-800: var(--sl-color-sky-800);
250
+ --sl-color-primary-900: var(--sl-color-sky-900);
251
+ --sl-color-primary-950: var(--sl-color-sky-950);
252
+
253
+ /* Success */
254
+ --sl-color-success-50: var(--sl-color-green-50);
255
+ --sl-color-success-100: var(--sl-color-green-100);
256
+ --sl-color-success-200: var(--sl-color-green-200);
257
+ --sl-color-success-300: var(--sl-color-green-300);
258
+ --sl-color-success-400: var(--sl-color-green-400);
259
+ --sl-color-success-500: var(--sl-color-green-500);
260
+ --sl-color-success-600: var(--sl-color-green-600);
261
+ --sl-color-success-700: var(--sl-color-green-700);
262
+ --sl-color-success-800: var(--sl-color-green-800);
263
+ --sl-color-success-900: var(--sl-color-green-900);
264
+ --sl-color-success-950: var(--sl-color-green-950);
265
+
266
+ /* Warning */
267
+ --sl-color-warning-50: var(--sl-color-amber-50);
268
+ --sl-color-warning-100: var(--sl-color-amber-100);
269
+ --sl-color-warning-200: var(--sl-color-amber-200);
270
+ --sl-color-warning-300: var(--sl-color-amber-300);
271
+ --sl-color-warning-400: var(--sl-color-amber-400);
272
+ --sl-color-warning-500: var(--sl-color-amber-500);
273
+ --sl-color-warning-600: var(--sl-color-amber-600);
274
+ --sl-color-warning-700: var(--sl-color-amber-700);
275
+ --sl-color-warning-800: var(--sl-color-amber-800);
276
+ --sl-color-warning-900: var(--sl-color-amber-900);
277
+ --sl-color-warning-950: var(--sl-color-amber-950);
278
+
279
+ /* Danger */
280
+ --sl-color-danger-50: var(--sl-color-red-50);
281
+ --sl-color-danger-100: var(--sl-color-red-100);
282
+ --sl-color-danger-200: var(--sl-color-red-200);
283
+ --sl-color-danger-300: var(--sl-color-red-300);
284
+ --sl-color-danger-400: var(--sl-color-red-400);
285
+ --sl-color-danger-500: var(--sl-color-red-500);
286
+ --sl-color-danger-600: var(--sl-color-red-600);
287
+ --sl-color-danger-700: var(--sl-color-red-700);
288
+ --sl-color-danger-800: var(--sl-color-red-800);
289
+ --sl-color-danger-900: var(--sl-color-red-900);
290
+ --sl-color-danger-950: var(--sl-color-red-950);
291
+
292
+ /* Neutral */
293
+ --sl-color-neutral-50: var(--sl-color-gray-50);
294
+ --sl-color-neutral-100: var(--sl-color-gray-100);
295
+ --sl-color-neutral-200: var(--sl-color-gray-200);
296
+ --sl-color-neutral-300: var(--sl-color-gray-300);
297
+ --sl-color-neutral-400: var(--sl-color-gray-400);
298
+ --sl-color-neutral-500: var(--sl-color-gray-500);
299
+ --sl-color-neutral-600: var(--sl-color-gray-600);
300
+ --sl-color-neutral-700: var(--sl-color-gray-700);
301
+ --sl-color-neutral-800: var(--sl-color-gray-800);
302
+ --sl-color-neutral-900: var(--sl-color-gray-900);
303
+ --sl-color-neutral-950: var(--sl-color-gray-950);
304
+
305
+ /* Neutral one-offs */
306
+ --sl-color-neutral-0: hsl(0, 0%, 100%);
307
+ --sl-color-neutral-1000: hsl(0, 0%, 0%);
308
+
309
+ /*
310
+ * Border radii
311
+ */
312
+
313
+ --sl-border-radius-small: 0.1875rem; /* 3px */
314
+ --sl-border-radius-medium: 0.25rem; /* 4px */
315
+ --sl-border-radius-large: 0.5rem; /* 8px */
316
+ --sl-border-radius-x-large: 1rem; /* 16px */
317
+
318
+ --sl-border-radius-circle: 50%;
319
+ --sl-border-radius-pill: 9999px;
320
+
321
+ /*
322
+ * Elevations
323
+ */
324
+
325
+ --sl-shadow-x-small: 0 1px 2px hsl(240 3.8% 46.1% / 6%);
326
+ --sl-shadow-small: 0 1px 2px hsl(240 3.8% 46.1% / 12%);
327
+ --sl-shadow-medium: 0 2px 4px hsl(240 3.8% 46.1% / 12%);
328
+ --sl-shadow-large: 0 2px 8px hsl(240 3.8% 46.1% / 12%);
329
+ --sl-shadow-x-large: 0 4px 16px hsl(240 3.8% 46.1% / 12%);
330
+
331
+ /*
332
+ * Spacings
333
+ */
334
+
335
+ --sl-spacing-3x-small: 0.125rem; /* 2px */
336
+ --sl-spacing-2x-small: 0.25rem; /* 4px */
337
+ --sl-spacing-x-small: 0.5rem; /* 8px */
338
+ --sl-spacing-small: 0.75rem; /* 12px */
339
+ --sl-spacing-medium: 1rem; /* 16px */
340
+ --sl-spacing-large: 1.25rem; /* 20px */
341
+ --sl-spacing-x-large: 1.75rem; /* 28px */
342
+ --sl-spacing-2x-large: 2.25rem; /* 36px */
343
+ --sl-spacing-3x-large: 3rem; /* 48px */
344
+ --sl-spacing-4x-large: 4.5rem; /* 72px */
345
+
346
+ /*
347
+ * Transitions
348
+ */
349
+
350
+ --sl-transition-x-slow: 1000ms;
351
+ --sl-transition-slow: 500ms;
352
+ --sl-transition-medium: 250ms;
353
+ --sl-transition-fast: 150ms;
354
+ --sl-transition-x-fast: 50ms;
355
+
356
+ /*
357
+ * Typography
358
+ */
359
+
360
+ /* Fonts */
361
+ --sl-font-mono: SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
362
+ --sl-font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif,
363
+ 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
364
+ --sl-font-serif: Georgia, 'Times New Roman', serif;
365
+
366
+ /* Font sizes */
367
+ --sl-font-size-2x-small: 0.625rem; /* 10px */
368
+ --sl-font-size-x-small: 0.75rem; /* 12px */
369
+ --sl-font-size-small: 0.875rem; /* 14px */
370
+ --sl-font-size-medium: 1rem; /* 16px */
371
+ --sl-font-size-large: 1.25rem; /* 20px */
372
+ --sl-font-size-x-large: 1.5rem; /* 24px */
373
+ --sl-font-size-2x-large: 2.25rem; /* 36px */
374
+ --sl-font-size-3x-large: 3rem; /* 48px */
375
+ --sl-font-size-4x-large: 4.5rem; /* 72px */
376
+
377
+ /* Font weights */
378
+ --sl-font-weight-light: 300;
379
+ --sl-font-weight-normal: 400;
380
+ --sl-font-weight-semibold: 500;
381
+ --sl-font-weight-bold: 700;
382
+
383
+ /* Letter spacings */
384
+ --sl-letter-spacing-denser: -0.03em;
385
+ --sl-letter-spacing-dense: -0.015em;
386
+ --sl-letter-spacing-normal: normal;
387
+ --sl-letter-spacing-loose: 0.075em;
388
+ --sl-letter-spacing-looser: 0.15em;
389
+
390
+ /* Line heights */
391
+ --sl-line-height-denser: 1;
392
+ --sl-line-height-dense: 1.4;
393
+ --sl-line-height-normal: 1.8;
394
+ --sl-line-height-loose: 2.2;
395
+ --sl-line-height-looser: 2.6;
396
+
397
+ /*
398
+ * Forms
399
+ */
400
+
401
+ /* Focus rings */
402
+ --sl-focus-ring-color: var(--sl-color-primary-600);
403
+ --sl-focus-ring-style: solid;
404
+ --sl-focus-ring-width: 3px;
405
+ --sl-focus-ring: var(--sl-focus-ring-style) var(--sl-focus-ring-width) var(--sl-focus-ring-color);
406
+ --sl-focus-ring-offset: 1px;
407
+
408
+ /* Buttons */
409
+ --sl-button-font-size-small: var(--sl-font-size-x-small);
410
+ --sl-button-font-size-medium: var(--sl-font-size-small);
411
+ --sl-button-font-size-large: var(--sl-font-size-medium);
412
+
413
+ /* Inputs */
414
+ --sl-input-height-small: 1.875rem; /* 30px */
415
+ --sl-input-height-medium: 2.5rem; /* 40px */
416
+ --sl-input-height-large: 3.125rem; /* 50px */
417
+
418
+ --sl-input-background-color: var(--sl-color-neutral-0);
419
+ --sl-input-background-color-hover: var(--sl-input-background-color);
420
+ --sl-input-background-color-focus: var(--sl-input-background-color);
421
+ --sl-input-background-color-disabled: var(--sl-color-neutral-100);
422
+ --sl-input-border-color: var(--sl-color-neutral-300);
423
+ --sl-input-border-color-hover: var(--sl-color-neutral-400);
424
+ --sl-input-border-color-focus: var(--sl-color-primary-500);
425
+ --sl-input-border-color-disabled: var(--sl-color-neutral-300);
426
+ --sl-input-border-width: 1px;
427
+ --sl-input-required-content: '*';
428
+ --sl-input-required-content-offset: -2px;
429
+ --sl-input-required-content-color: var(--sl-input-label-color);
430
+
431
+ --sl-input-border-radius-small: var(--sl-border-radius-medium);
432
+ --sl-input-border-radius-medium: var(--sl-border-radius-medium);
433
+ --sl-input-border-radius-large: var(--sl-border-radius-medium);
434
+
435
+ --sl-input-font-family: var(--sl-font-sans);
436
+ --sl-input-font-weight: var(--sl-font-weight-normal);
437
+ --sl-input-font-size-small: var(--sl-font-size-small);
438
+ --sl-input-font-size-medium: var(--sl-font-size-medium);
439
+ --sl-input-font-size-large: var(--sl-font-size-large);
440
+ --sl-input-letter-spacing: var(--sl-letter-spacing-normal);
441
+
442
+ --sl-input-color: var(--sl-color-neutral-700);
443
+ --sl-input-color-hover: var(--sl-color-neutral-700);
444
+ --sl-input-color-focus: var(--sl-color-neutral-700);
445
+ --sl-input-color-disabled: var(--sl-color-neutral-900);
446
+ --sl-input-icon-color: var(--sl-color-neutral-500);
447
+ --sl-input-icon-color-hover: var(--sl-color-neutral-600);
448
+ --sl-input-icon-color-focus: var(--sl-color-neutral-600);
449
+ --sl-input-placeholder-color: var(--sl-color-neutral-500);
450
+ --sl-input-placeholder-color-disabled: var(--sl-color-neutral-600);
451
+ --sl-input-spacing-small: var(--sl-spacing-small);
452
+ --sl-input-spacing-medium: var(--sl-spacing-medium);
453
+ --sl-input-spacing-large: var(--sl-spacing-large);
454
+
455
+ --sl-input-filled-background-color: var(--sl-color-neutral-100);
456
+ --sl-input-filled-background-color-hover: var(--sl-color-neutral-100);
457
+ --sl-input-filled-background-color-focus: var(--sl-color-neutral-100);
458
+ --sl-input-filled-background-color-disabled: var(--sl-color-neutral-100);
459
+ --sl-input-filled-color: var(--sl-color-neutral-800);
460
+ --sl-input-filled-color-hover: var(--sl-color-neutral-800);
461
+ --sl-input-filled-color-focus: var(--sl-color-neutral-700);
462
+ --sl-input-filled-color-disabled: var(--sl-color-neutral-800);
463
+
464
+ --sl-input-focus-ring-color: hsl(198.6 88.7% 48.4% / 40%);
465
+ --sl-input-focus-ring-offset: 0;
466
+
467
+ /* Labels */
468
+ --sl-input-label-font-size-small: var(--sl-font-size-small);
469
+ --sl-input-label-font-size-medium: var(--sl-font-size-medium);
470
+ --sl-input-label-font-size-large: var(--sl-font-size-large);
471
+
472
+ --sl-input-label-color: inherit;
473
+
474
+ /* Help text */
475
+ --sl-input-help-text-font-size-small: var(--sl-font-size-x-small);
476
+ --sl-input-help-text-font-size-medium: var(--sl-font-size-small);
477
+ --sl-input-help-text-font-size-large: var(--sl-font-size-medium);
478
+
479
+ --sl-input-help-text-color: var(--sl-color-neutral-500);
480
+
481
+ /* Toggles (checkboxes, radios, switches) */
482
+ --sl-toggle-size-small: 0.875rem; /* 14px @ 16px base */
483
+ --sl-toggle-size-medium: 1.125rem; /* 18px @ 16px base */
484
+ --sl-toggle-size-large: 1.375rem; /* 22px @ 16px base */
485
+
486
+ /*
487
+ * Overlays
488
+ */
489
+
490
+ --sl-overlay-background-color: hsl(240 3.8% 46.1% / 33%);
491
+
492
+ /*
493
+ * Panels
494
+ */
495
+
496
+ --sl-panel-background-color: var(--sl-color-neutral-0);
497
+ --sl-panel-border-color: var(--sl-color-neutral-200);
498
+ --sl-panel-border-width: 1px;
499
+
500
+ /*
501
+ * Tooltips
502
+ */
503
+
504
+ --sl-tooltip-border-radius: var(--sl-border-radius-medium);
505
+ --sl-tooltip-background-color: var(--sl-color-neutral-800);
506
+ --sl-tooltip-color: var(--sl-color-neutral-0);
507
+ --sl-tooltip-font-family: var(--sl-font-sans);
508
+ --sl-tooltip-font-weight: var(--sl-font-weight-normal);
509
+ --sl-tooltip-font-size: var(--sl-font-size-small);
510
+ --sl-tooltip-line-height: var(--sl-line-height-dense);
511
+ --sl-tooltip-padding: var(--sl-spacing-2x-small) var(--sl-spacing-x-small);
512
+ --sl-tooltip-arrow-size: 6px;
513
+
514
+ /*
515
+ * Z-indexes
516
+ */
517
+
518
+ --sl-z-index-drawer: 700;
519
+ --sl-z-index-dialog: 800;
520
+ --sl-z-index-dropdown: 900;
521
+ --sl-z-index-toast: 950;
522
+ --sl-z-index-tooltip: 1000;
523
+ }
524
+ :host *,
525
+ :host *::before,
526
+ :host *::after {
527
+ box-sizing: inherit;
528
+ }
529
+ [hidden] {
530
+ display: none !important;
531
+ }
@@ -0,0 +1,51 @@
1
+ // @defaultValue decorator
2
+ //
3
+ // Runs when the corresponding attribute of the observed property changes, e.g. after calling Element.setAttribute or after updating
4
+ // the observed property.
5
+ //
6
+ // The decorator checks whether the value of the attribute is different from the value of the property and in that case
7
+ // it saves the new value.
8
+ //
9
+ //
10
+ // Usage:
11
+ //
12
+ // @property({ type: Boolean, reflect: true })
13
+ // checked = false;
14
+ //
15
+ // @defaultValue('checked')
16
+ // defaultChecked = false;
17
+ //
18
+
19
+ import { defaultConverter } from 'lit';
20
+ import type { ReactiveElement } from 'lit';
21
+
22
+ export const defaultValue =
23
+ (propertyName = 'value') =>
24
+ (proto: ReactiveElement, key: string) => {
25
+ const ctor = proto.constructor as typeof ReactiveElement;
26
+
27
+ const attributeChangedCallback = ctor.prototype.attributeChangedCallback;
28
+ ctor.prototype.attributeChangedCallback = function (
29
+ this: ReactiveElement & { [name: string]: unknown },
30
+ name,
31
+ old,
32
+ value
33
+ ) {
34
+ const options = ctor.getPropertyOptions(propertyName);
35
+ const attributeName = typeof options.attribute === 'string' ? options.attribute : propertyName;
36
+
37
+ if (name === attributeName) {
38
+ const converter = options.converter || defaultConverter;
39
+ const fromAttribute =
40
+ typeof converter === 'function' ? converter : converter?.fromAttribute ?? defaultConverter.fromAttribute;
41
+
42
+ const newValue: unknown = fromAttribute!(value, options.type);
43
+
44
+ if (this[propertyName] !== newValue) {
45
+ this[key] = newValue;
46
+ }
47
+ }
48
+
49
+ attributeChangedCallback.call(this, name, old, value);
50
+ };
51
+ };