@phcdevworks/spectre-components 1.20.0 → 1.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +672 -49
  2. package/dist/accordion-item.cjs +540 -0
  3. package/dist/accordion-item.cjs.map +1 -0
  4. package/dist/accordion-item.d.cts +59 -0
  5. package/dist/accordion-item.d.ts +59 -0
  6. package/dist/accordion-item.js +537 -0
  7. package/dist/accordion-item.js.map +1 -0
  8. package/dist/accordion.cjs +468 -0
  9. package/dist/accordion.cjs.map +1 -0
  10. package/dist/accordion.d.cts +38 -0
  11. package/dist/accordion.d.ts +38 -0
  12. package/dist/accordion.js +465 -0
  13. package/dist/accordion.js.map +1 -0
  14. package/dist/alert.cjs +166 -65
  15. package/dist/alert.cjs.map +1 -1
  16. package/dist/alert.d.cts +41 -8
  17. package/dist/alert.d.ts +41 -8
  18. package/dist/alert.js +168 -67
  19. package/dist/alert.js.map +1 -1
  20. package/dist/avatar.cjs +27 -1
  21. package/dist/avatar.cjs.map +1 -1
  22. package/dist/avatar.d.cts +19 -3
  23. package/dist/avatar.d.ts +19 -3
  24. package/dist/avatar.js +27 -1
  25. package/dist/avatar.js.map +1 -1
  26. package/dist/badge.cjs +35 -2
  27. package/dist/badge.cjs.map +1 -1
  28. package/dist/badge.d.cts +31 -3
  29. package/dist/badge.d.ts +31 -3
  30. package/dist/badge.js +35 -2
  31. package/dist/badge.js.map +1 -1
  32. package/dist/breadcrumb.cjs +464 -0
  33. package/dist/breadcrumb.cjs.map +1 -0
  34. package/dist/breadcrumb.d.cts +32 -0
  35. package/dist/breadcrumb.d.ts +32 -0
  36. package/dist/breadcrumb.js +461 -0
  37. package/dist/breadcrumb.js.map +1 -0
  38. package/dist/button.cjs +32 -2
  39. package/dist/button.cjs.map +1 -1
  40. package/dist/button.d.cts +19 -3
  41. package/dist/button.d.ts +19 -3
  42. package/dist/button.js +32 -2
  43. package/dist/button.js.map +1 -1
  44. package/dist/card-bleed.cjs +458 -0
  45. package/dist/card-bleed.cjs.map +1 -0
  46. package/dist/card-bleed.d.cts +37 -0
  47. package/dist/card-bleed.d.ts +37 -0
  48. package/dist/card-bleed.js +455 -0
  49. package/dist/card-bleed.js.map +1 -0
  50. package/dist/card.cjs +27 -1
  51. package/dist/card.cjs.map +1 -1
  52. package/dist/card.d.cts +19 -3
  53. package/dist/card.d.ts +19 -3
  54. package/dist/card.js +27 -1
  55. package/dist/card.js.map +1 -1
  56. package/dist/carousel.cjs +655 -0
  57. package/dist/carousel.cjs.map +1 -0
  58. package/dist/carousel.d.cts +79 -0
  59. package/dist/carousel.d.ts +79 -0
  60. package/dist/carousel.js +652 -0
  61. package/dist/carousel.js.map +1 -0
  62. package/dist/checkbox.cjs +3 -1
  63. package/dist/checkbox.cjs.map +1 -1
  64. package/dist/checkbox.js +3 -1
  65. package/dist/checkbox.js.map +1 -1
  66. package/dist/choice-card.cjs +524 -0
  67. package/dist/choice-card.cjs.map +1 -0
  68. package/dist/choice-card.d.cts +81 -0
  69. package/dist/choice-card.d.ts +81 -0
  70. package/dist/choice-card.js +521 -0
  71. package/dist/choice-card.js.map +1 -0
  72. package/dist/container.cjs +23 -6
  73. package/dist/container.cjs.map +1 -1
  74. package/dist/container.d.cts +9 -3
  75. package/dist/container.d.ts +9 -3
  76. package/dist/container.js +23 -7
  77. package/dist/container.js.map +1 -1
  78. package/dist/datepicker.cjs +580 -0
  79. package/dist/datepicker.cjs.map +1 -0
  80. package/dist/datepicker.d.cts +78 -0
  81. package/dist/datepicker.d.ts +78 -0
  82. package/dist/datepicker.js +577 -0
  83. package/dist/datepicker.js.map +1 -0
  84. package/dist/dom-CX9bgbcQ.d.cts +3 -0
  85. package/dist/dom-CX9bgbcQ.d.ts +3 -0
  86. package/dist/dropdown.cjs +24 -0
  87. package/dist/dropdown.cjs.map +1 -1
  88. package/dist/dropdown.d.cts +3 -2
  89. package/dist/dropdown.d.ts +3 -2
  90. package/dist/dropdown.js +25 -1
  91. package/dist/dropdown.js.map +1 -1
  92. package/dist/external-auth-button.cjs +494 -0
  93. package/dist/external-auth-button.cjs.map +1 -0
  94. package/dist/external-auth-button.d.cts +71 -0
  95. package/dist/external-auth-button.d.ts +71 -0
  96. package/dist/external-auth-button.js +491 -0
  97. package/dist/external-auth-button.js.map +1 -0
  98. package/dist/fieldset.cjs +3 -1
  99. package/dist/fieldset.cjs.map +1 -1
  100. package/dist/fieldset.js +3 -1
  101. package/dist/fieldset.js.map +1 -1
  102. package/dist/file-input.cjs +371 -0
  103. package/dist/file-input.cjs.map +1 -0
  104. package/dist/file-input.d.cts +96 -0
  105. package/dist/file-input.d.ts +96 -0
  106. package/dist/file-input.js +367 -0
  107. package/dist/file-input.js.map +1 -0
  108. package/dist/footer-chip.cjs +22 -2
  109. package/dist/footer-chip.cjs.map +1 -1
  110. package/dist/footer-chip.d.cts +12 -1
  111. package/dist/footer-chip.d.ts +12 -1
  112. package/dist/footer-chip.js +22 -2
  113. package/dist/footer-chip.js.map +1 -1
  114. package/dist/footer-link.cjs +19 -1
  115. package/dist/footer-link.cjs.map +1 -1
  116. package/dist/footer-link.d.cts +12 -1
  117. package/dist/footer-link.d.ts +12 -1
  118. package/dist/footer-link.js +19 -1
  119. package/dist/footer-link.js.map +1 -1
  120. package/dist/footer.cjs +30 -1
  121. package/dist/footer.cjs.map +1 -1
  122. package/dist/footer.d.cts +2 -1
  123. package/dist/footer.d.ts +2 -1
  124. package/dist/footer.js +31 -2
  125. package/dist/footer.js.map +1 -1
  126. package/dist/{form-DpPtizpY.d.cts → form-CVO7mlDa.d.cts} +38 -9
  127. package/dist/{form-DpPtizpY.d.ts → form-CVO7mlDa.d.ts} +38 -9
  128. package/dist/grid.cjs +35 -1
  129. package/dist/grid.cjs.map +1 -1
  130. package/dist/grid.d.cts +9 -3
  131. package/dist/grid.d.ts +9 -3
  132. package/dist/grid.js +35 -2
  133. package/dist/grid.js.map +1 -1
  134. package/dist/icon-box.cjs +27 -1
  135. package/dist/icon-box.cjs.map +1 -1
  136. package/dist/icon-box.d.cts +19 -3
  137. package/dist/icon-box.d.ts +19 -3
  138. package/dist/icon-box.js +27 -1
  139. package/dist/icon-box.js.map +1 -1
  140. package/dist/index.cjs +3654 -107
  141. package/dist/index.cjs.map +1 -1
  142. package/dist/index.d.cts +26 -1
  143. package/dist/index.d.ts +26 -1
  144. package/dist/index.js +3594 -110
  145. package/dist/index.js.map +1 -1
  146. package/dist/input-group.cjs +471 -0
  147. package/dist/input-group.cjs.map +1 -0
  148. package/dist/input-group.d.cts +31 -0
  149. package/dist/input-group.d.ts +31 -0
  150. package/dist/input-group.js +468 -0
  151. package/dist/input-group.js.map +1 -0
  152. package/dist/input.cjs +96 -4
  153. package/dist/input.cjs.map +1 -1
  154. package/dist/input.d.cts +45 -6
  155. package/dist/input.d.ts +45 -6
  156. package/dist/input.js +98 -6
  157. package/dist/input.js.map +1 -1
  158. package/dist/label.cjs +3 -1
  159. package/dist/label.cjs.map +1 -1
  160. package/dist/label.js +3 -1
  161. package/dist/label.js.map +1 -1
  162. package/dist/list-group-item.cjs +367 -0
  163. package/dist/list-group-item.cjs.map +1 -0
  164. package/dist/list-group-item.d.cts +73 -0
  165. package/dist/list-group-item.d.ts +73 -0
  166. package/dist/list-group-item.js +364 -0
  167. package/dist/list-group-item.js.map +1 -0
  168. package/dist/list-group.cjs +610 -0
  169. package/dist/list-group.cjs.map +1 -0
  170. package/dist/list-group.d.cts +58 -0
  171. package/dist/list-group.d.ts +58 -0
  172. package/dist/list-group.js +607 -0
  173. package/dist/list-group.js.map +1 -0
  174. package/dist/modal.cjs +38 -35
  175. package/dist/modal.cjs.map +1 -1
  176. package/dist/modal.d.cts +1 -3
  177. package/dist/modal.d.ts +1 -3
  178. package/dist/modal.js +38 -35
  179. package/dist/modal.js.map +1 -1
  180. package/dist/nav-item.cjs +107 -4
  181. package/dist/nav-item.cjs.map +1 -1
  182. package/dist/nav-item.d.cts +52 -2
  183. package/dist/nav-item.d.ts +52 -2
  184. package/dist/nav-item.js +108 -5
  185. package/dist/nav-item.js.map +1 -1
  186. package/dist/nav.cjs +25 -1
  187. package/dist/nav.cjs.map +1 -1
  188. package/dist/nav.d.cts +2 -1
  189. package/dist/nav.d.ts +2 -1
  190. package/dist/nav.js +26 -2
  191. package/dist/nav.js.map +1 -1
  192. package/dist/offcanvas.cjs +621 -0
  193. package/dist/offcanvas.cjs.map +1 -0
  194. package/dist/offcanvas.d.cts +61 -0
  195. package/dist/offcanvas.d.ts +61 -0
  196. package/dist/offcanvas.js +617 -0
  197. package/dist/offcanvas.js.map +1 -0
  198. package/dist/pagination.cjs +452 -0
  199. package/dist/pagination.cjs.map +1 -0
  200. package/dist/pagination.d.cts +69 -0
  201. package/dist/pagination.d.ts +69 -0
  202. package/dist/pagination.js +448 -0
  203. package/dist/pagination.js.map +1 -0
  204. package/dist/popover.cjs +534 -0
  205. package/dist/popover.cjs.map +1 -0
  206. package/dist/popover.d.cts +59 -0
  207. package/dist/popover.d.ts +59 -0
  208. package/dist/popover.js +530 -0
  209. package/dist/popover.js.map +1 -0
  210. package/dist/pricing-card.cjs +121 -64
  211. package/dist/pricing-card.cjs.map +1 -1
  212. package/dist/pricing-card.d.cts +21 -7
  213. package/dist/pricing-card.d.ts +21 -7
  214. package/dist/pricing-card.js +122 -65
  215. package/dist/pricing-card.js.map +1 -1
  216. package/dist/progress.cjs +403 -0
  217. package/dist/progress.cjs.map +1 -0
  218. package/dist/progress.d.cts +70 -0
  219. package/dist/progress.d.ts +70 -0
  220. package/dist/progress.js +398 -0
  221. package/dist/progress.js.map +1 -0
  222. package/dist/prose.cjs +425 -0
  223. package/dist/prose.cjs.map +1 -0
  224. package/dist/prose.d.cts +21 -0
  225. package/dist/prose.d.ts +21 -0
  226. package/dist/prose.js +422 -0
  227. package/dist/prose.js.map +1 -0
  228. package/dist/radio.cjs +3 -1
  229. package/dist/radio.cjs.map +1 -1
  230. package/dist/radio.js +3 -1
  231. package/dist/radio.js.map +1 -1
  232. package/dist/range.cjs +381 -0
  233. package/dist/range.cjs.map +1 -0
  234. package/dist/range.d.cts +76 -0
  235. package/dist/range.d.ts +76 -0
  236. package/dist/range.js +378 -0
  237. package/dist/range.js.map +1 -0
  238. package/dist/rating.cjs +33 -0
  239. package/dist/rating.cjs.map +1 -1
  240. package/dist/rating.d.cts +38 -3
  241. package/dist/rating.d.ts +38 -3
  242. package/dist/rating.js +33 -0
  243. package/dist/rating.js.map +1 -1
  244. package/dist/section.cjs +27 -3
  245. package/dist/section.cjs.map +1 -1
  246. package/dist/section.d.cts +16 -1
  247. package/dist/section.d.ts +16 -1
  248. package/dist/section.js +27 -4
  249. package/dist/section.js.map +1 -1
  250. package/dist/select.cjs +6 -1
  251. package/dist/select.cjs.map +1 -1
  252. package/dist/select.d.cts +7 -1
  253. package/dist/select.d.ts +7 -1
  254. package/dist/select.js +6 -1
  255. package/dist/select.js.map +1 -1
  256. package/dist/sidebar-link.cjs +19 -1
  257. package/dist/sidebar-link.cjs.map +1 -1
  258. package/dist/sidebar-link.d.cts +13 -2
  259. package/dist/sidebar-link.d.ts +13 -2
  260. package/dist/sidebar-link.js +19 -1
  261. package/dist/sidebar-link.js.map +1 -1
  262. package/dist/sidebar-toggle.cjs +3 -1
  263. package/dist/sidebar-toggle.cjs.map +1 -1
  264. package/dist/sidebar-toggle.js +3 -1
  265. package/dist/sidebar-toggle.js.map +1 -1
  266. package/dist/sidebar.cjs +33 -1
  267. package/dist/sidebar.cjs.map +1 -1
  268. package/dist/sidebar.d.cts +1 -0
  269. package/dist/sidebar.d.ts +1 -0
  270. package/dist/sidebar.js +34 -2
  271. package/dist/sidebar.js.map +1 -1
  272. package/dist/spinner.cjs +2 -1
  273. package/dist/spinner.cjs.map +1 -1
  274. package/dist/spinner.d.cts +2 -2
  275. package/dist/spinner.d.ts +2 -2
  276. package/dist/spinner.js +2 -1
  277. package/dist/spinner.js.map +1 -1
  278. package/dist/stack.cjs +4 -2
  279. package/dist/stack.cjs.map +1 -1
  280. package/dist/stack.d.cts +2 -2
  281. package/dist/stack.d.ts +2 -2
  282. package/dist/stack.js +4 -2
  283. package/dist/stack.js.map +1 -1
  284. package/dist/states-Bgzwu_XZ.d.cts +9 -0
  285. package/dist/states-Bgzwu_XZ.d.ts +9 -0
  286. package/dist/stepper.cjs +495 -0
  287. package/dist/stepper.cjs.map +1 -0
  288. package/dist/stepper.d.cts +40 -0
  289. package/dist/stepper.d.ts +40 -0
  290. package/dist/stepper.js +491 -0
  291. package/dist/stepper.js.map +1 -0
  292. package/dist/switch.cjs +492 -0
  293. package/dist/switch.cjs.map +1 -0
  294. package/dist/switch.d.cts +82 -0
  295. package/dist/switch.d.ts +82 -0
  296. package/dist/switch.js +488 -0
  297. package/dist/switch.js.map +1 -0
  298. package/dist/tab-panel.cjs +465 -0
  299. package/dist/tab-panel.cjs.map +1 -0
  300. package/dist/tab-panel.d.cts +48 -0
  301. package/dist/tab-panel.d.ts +48 -0
  302. package/dist/tab-panel.js +462 -0
  303. package/dist/tab-panel.js.map +1 -0
  304. package/dist/table.cjs +506 -0
  305. package/dist/table.cjs.map +1 -0
  306. package/dist/table.d.cts +54 -0
  307. package/dist/table.d.ts +54 -0
  308. package/dist/table.js +501 -0
  309. package/dist/table.js.map +1 -0
  310. package/dist/tabs.cjs +596 -0
  311. package/dist/tabs.cjs.map +1 -0
  312. package/dist/tabs.d.cts +65 -0
  313. package/dist/tabs.d.ts +65 -0
  314. package/dist/tabs.js +592 -0
  315. package/dist/tabs.js.map +1 -0
  316. package/dist/tag.cjs +27 -1
  317. package/dist/tag.cjs.map +1 -1
  318. package/dist/tag.d.cts +19 -3
  319. package/dist/tag.d.ts +19 -3
  320. package/dist/tag.js +27 -1
  321. package/dist/tag.js.map +1 -1
  322. package/dist/testimonial.cjs +130 -64
  323. package/dist/testimonial.cjs.map +1 -1
  324. package/dist/testimonial.d.cts +23 -8
  325. package/dist/testimonial.d.ts +23 -8
  326. package/dist/testimonial.js +131 -65
  327. package/dist/testimonial.js.map +1 -1
  328. package/dist/text.cjs +65 -6
  329. package/dist/text.cjs.map +1 -1
  330. package/dist/text.d.cts +24 -3
  331. package/dist/text.d.ts +24 -3
  332. package/dist/text.js +64 -8
  333. package/dist/text.js.map +1 -1
  334. package/dist/textarea.cjs +3 -0
  335. package/dist/textarea.cjs.map +1 -1
  336. package/dist/textarea.d.cts +7 -1
  337. package/dist/textarea.d.ts +7 -1
  338. package/dist/textarea.js +3 -0
  339. package/dist/textarea.js.map +1 -1
  340. package/dist/toast.cjs +2 -1
  341. package/dist/toast.cjs.map +1 -1
  342. package/dist/toast.d.cts +2 -2
  343. package/dist/toast.d.ts +2 -2
  344. package/dist/toast.js +2 -1
  345. package/dist/toast.js.map +1 -1
  346. package/dist/tooltip.cjs.map +1 -1
  347. package/dist/tooltip.d.cts +2 -2
  348. package/dist/tooltip.d.ts +2 -2
  349. package/dist/tooltip.js.map +1 -1
  350. package/package.json +126 -11
@@ -0,0 +1,76 @@
1
+ import * as lit_html from 'lit-html';
2
+ import { S as SpectreBaseElement } from './base-D0s95V2v.cjs';
3
+ import 'lit';
4
+
5
+ interface SpectreRangeProps {
6
+ ariaLabel?: string | null;
7
+ ariaLabelledBy?: string | null;
8
+ ariaDescribedBy?: string | null;
9
+ disabled?: boolean | undefined;
10
+ focused?: boolean | undefined;
11
+ form?: string | undefined;
12
+ id?: string | null | undefined;
13
+ max?: number | undefined;
14
+ min?: number | undefined;
15
+ name?: string | undefined;
16
+ step?: number | undefined;
17
+ title?: string | null | undefined;
18
+ value?: number | undefined;
19
+ }
20
+ declare class SpectreRangeElement extends SpectreBaseElement implements SpectreRangeProps {
21
+ static properties: {
22
+ disabled: {
23
+ type: BooleanConstructor;
24
+ reflect: boolean;
25
+ };
26
+ focused: {
27
+ type: BooleanConstructor;
28
+ reflect: boolean;
29
+ };
30
+ form: {
31
+ type: StringConstructor;
32
+ };
33
+ max: {
34
+ type: NumberConstructor;
35
+ reflect: boolean;
36
+ };
37
+ min: {
38
+ type: NumberConstructor;
39
+ reflect: boolean;
40
+ };
41
+ name: {
42
+ type: StringConstructor;
43
+ reflect: boolean;
44
+ };
45
+ step: {
46
+ type: NumberConstructor;
47
+ reflect: boolean;
48
+ };
49
+ value: {
50
+ type: NumberConstructor;
51
+ reflect: boolean;
52
+ };
53
+ };
54
+ disabled: boolean | undefined;
55
+ focused: boolean | undefined;
56
+ form: string | undefined;
57
+ max: number | undefined;
58
+ min: number | undefined;
59
+ name: string | undefined;
60
+ step: number | undefined;
61
+ value: number | undefined;
62
+ get id(): string;
63
+ set id(value: string | null | undefined);
64
+ get title(): string;
65
+ set title(value: string | null | undefined);
66
+ protected willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
67
+ protected updated(changedProperties: Map<PropertyKey, unknown>): void;
68
+ private get nativeInput();
69
+ focus(options?: FocusOptions): void;
70
+ blur(): void;
71
+ private handleInput;
72
+ render(): lit_html.TemplateResult<1>;
73
+ }
74
+ declare function defineSpectreRange(tagName?: string): typeof SpectreRangeElement;
75
+
76
+ export { SpectreRangeElement, type SpectreRangeProps, defineSpectreRange };
@@ -0,0 +1,76 @@
1
+ import * as lit_html from 'lit-html';
2
+ import { S as SpectreBaseElement } from './base-D0s95V2v.js';
3
+ import 'lit';
4
+
5
+ interface SpectreRangeProps {
6
+ ariaLabel?: string | null;
7
+ ariaLabelledBy?: string | null;
8
+ ariaDescribedBy?: string | null;
9
+ disabled?: boolean | undefined;
10
+ focused?: boolean | undefined;
11
+ form?: string | undefined;
12
+ id?: string | null | undefined;
13
+ max?: number | undefined;
14
+ min?: number | undefined;
15
+ name?: string | undefined;
16
+ step?: number | undefined;
17
+ title?: string | null | undefined;
18
+ value?: number | undefined;
19
+ }
20
+ declare class SpectreRangeElement extends SpectreBaseElement implements SpectreRangeProps {
21
+ static properties: {
22
+ disabled: {
23
+ type: BooleanConstructor;
24
+ reflect: boolean;
25
+ };
26
+ focused: {
27
+ type: BooleanConstructor;
28
+ reflect: boolean;
29
+ };
30
+ form: {
31
+ type: StringConstructor;
32
+ };
33
+ max: {
34
+ type: NumberConstructor;
35
+ reflect: boolean;
36
+ };
37
+ min: {
38
+ type: NumberConstructor;
39
+ reflect: boolean;
40
+ };
41
+ name: {
42
+ type: StringConstructor;
43
+ reflect: boolean;
44
+ };
45
+ step: {
46
+ type: NumberConstructor;
47
+ reflect: boolean;
48
+ };
49
+ value: {
50
+ type: NumberConstructor;
51
+ reflect: boolean;
52
+ };
53
+ };
54
+ disabled: boolean | undefined;
55
+ focused: boolean | undefined;
56
+ form: string | undefined;
57
+ max: number | undefined;
58
+ min: number | undefined;
59
+ name: string | undefined;
60
+ step: number | undefined;
61
+ value: number | undefined;
62
+ get id(): string;
63
+ set id(value: string | null | undefined);
64
+ get title(): string;
65
+ set title(value: string | null | undefined);
66
+ protected willUpdate(changedProperties: Map<PropertyKey, unknown>): void;
67
+ protected updated(changedProperties: Map<PropertyKey, unknown>): void;
68
+ private get nativeInput();
69
+ focus(options?: FocusOptions): void;
70
+ blur(): void;
71
+ private handleInput;
72
+ render(): lit_html.TemplateResult<1>;
73
+ }
74
+ declare function defineSpectreRange(tagName?: string): typeof SpectreRangeElement;
75
+
76
+ export { SpectreRangeElement, type SpectreRangeProps, defineSpectreRange };
package/dist/range.js ADDED
@@ -0,0 +1,378 @@
1
+ import { LitElement, html } from 'lit';
2
+ import { ifDefined } from 'lit/directives/if-defined.js';
3
+ import { live } from 'lit/directives/live.js';
4
+ import { getRangeClasses } from '@phcdevworks/spectre-ui';
5
+
6
+ // src/components/range/sp-range.ts
7
+ var SpectreBaseElement = class extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this._ariaLabel = null;
11
+ this._ariaLabelledBy = null;
12
+ this._ariaDescribedBy = null;
13
+ this._autocapitalize = "";
14
+ this._autofocus = false;
15
+ this._spellcheck = null;
16
+ this._title = "";
17
+ this._id = "";
18
+ }
19
+ get ariaLabel() {
20
+ return this._ariaLabel;
21
+ }
22
+ set ariaLabel(value) {
23
+ if (this._ariaLabel === value) {
24
+ return;
25
+ }
26
+ this._ariaLabel = value;
27
+ this._removeHostAttribute("aria-label");
28
+ this.requestUpdate();
29
+ }
30
+ get ariaLabelledBy() {
31
+ return this._ariaLabelledBy;
32
+ }
33
+ set ariaLabelledBy(value) {
34
+ if (this._ariaLabelledBy === value) {
35
+ return;
36
+ }
37
+ this._ariaLabelledBy = value;
38
+ this._removeHostAttribute("aria-labelledby");
39
+ this.requestUpdate();
40
+ }
41
+ get ariaDescribedBy() {
42
+ return this._ariaDescribedBy;
43
+ }
44
+ set ariaDescribedBy(value) {
45
+ if (this._ariaDescribedBy === value) {
46
+ return;
47
+ }
48
+ this._ariaDescribedBy = value;
49
+ this._removeHostAttribute("aria-describedby");
50
+ this.requestUpdate();
51
+ }
52
+ get autocapitalize() {
53
+ return this._autocapitalize;
54
+ }
55
+ set autocapitalize(value) {
56
+ const normalizedValue = value ?? "";
57
+ if (this._autocapitalize === normalizedValue) {
58
+ return;
59
+ }
60
+ this._autocapitalize = normalizedValue;
61
+ this._removeHostAttribute("autocapitalize");
62
+ this.requestUpdate();
63
+ }
64
+ get spellcheck() {
65
+ return this._spellcheck ?? super.spellcheck;
66
+ }
67
+ set spellcheck(value) {
68
+ if (this._spellcheck === value) {
69
+ return;
70
+ }
71
+ this._spellcheck = value ?? null;
72
+ this._removeHostAttribute("spellcheck");
73
+ this.requestUpdate();
74
+ }
75
+ get title() {
76
+ return this._title;
77
+ }
78
+ set title(value) {
79
+ const normalizedValue = value ?? "";
80
+ if (this._title === normalizedValue) {
81
+ return;
82
+ }
83
+ this._title = normalizedValue;
84
+ this._removeHostAttribute("title");
85
+ this.requestUpdate();
86
+ }
87
+ get id() {
88
+ return this._id;
89
+ }
90
+ set id(value) {
91
+ const normalizedValue = value ?? "";
92
+ if (this._id === normalizedValue) {
93
+ return;
94
+ }
95
+ this._id = normalizedValue;
96
+ this._removeHostAttribute("id");
97
+ this.requestUpdate();
98
+ }
99
+ get autofocus() {
100
+ return this._autofocus;
101
+ }
102
+ set autofocus(value) {
103
+ const normalizedValue = !!value;
104
+ if (this._autofocus === normalizedValue) {
105
+ return;
106
+ }
107
+ this._autofocus = normalizedValue;
108
+ this._removeHostAttribute("autofocus");
109
+ this.requestUpdate();
110
+ }
111
+ // Spectre components intentionally render in light DOM so the global
112
+ // `@phcdevworks/spectre-ui` styling contract can apply directly.
113
+ createRenderRoot() {
114
+ return this;
115
+ }
116
+ connectedCallback() {
117
+ super.connectedCallback();
118
+ const proxiedAttributes = [
119
+ "id",
120
+ "title",
121
+ "autocapitalize",
122
+ "autofocus",
123
+ "spellcheck",
124
+ "aria-label",
125
+ "aria-labelledby",
126
+ "aria-describedby"
127
+ ];
128
+ proxiedAttributes.forEach((attr) => {
129
+ const value = super.getAttribute(attr);
130
+ if (value !== null) {
131
+ this.setAttribute(attr, value);
132
+ }
133
+ });
134
+ }
135
+ getAttribute(qualifiedName) {
136
+ switch (qualifiedName) {
137
+ case "id":
138
+ return this.id || null;
139
+ case "title":
140
+ return this.title || null;
141
+ case "autocapitalize":
142
+ return this.autocapitalize || null;
143
+ case "autofocus":
144
+ return this.autofocus ? "" : null;
145
+ case "spellcheck":
146
+ return this._spellcheck !== null ? String(this._spellcheck) : null;
147
+ case "aria-label":
148
+ return this.ariaLabel;
149
+ case "aria-labelledby":
150
+ return this.ariaLabelledBy;
151
+ case "aria-describedby":
152
+ return this.ariaDescribedBy;
153
+ default:
154
+ return super.getAttribute(qualifiedName);
155
+ }
156
+ }
157
+ hasAttribute(qualifiedName) {
158
+ switch (qualifiedName) {
159
+ case "id":
160
+ return this.id !== "";
161
+ case "title":
162
+ return this.title !== "";
163
+ case "autocapitalize":
164
+ return this.autocapitalize !== "";
165
+ case "autofocus":
166
+ return this.autofocus;
167
+ case "spellcheck":
168
+ return this._spellcheck !== null;
169
+ case "aria-label":
170
+ return this.ariaLabel !== null;
171
+ case "aria-labelledby":
172
+ return this.ariaLabelledBy !== null;
173
+ case "aria-describedby":
174
+ return this.ariaDescribedBy !== null;
175
+ default:
176
+ return super.hasAttribute(qualifiedName);
177
+ }
178
+ }
179
+ setAttribute(qualifiedName, value) {
180
+ switch (qualifiedName) {
181
+ case "id":
182
+ this.id = value;
183
+ break;
184
+ case "title":
185
+ this.title = value;
186
+ break;
187
+ case "autocapitalize":
188
+ this.autocapitalize = value;
189
+ break;
190
+ case "autofocus":
191
+ this.autofocus = true;
192
+ break;
193
+ case "spellcheck":
194
+ this.spellcheck = value !== "false";
195
+ break;
196
+ case "aria-label":
197
+ this.ariaLabel = value;
198
+ break;
199
+ case "aria-labelledby":
200
+ this.ariaLabelledBy = value;
201
+ break;
202
+ case "aria-describedby":
203
+ this.ariaDescribedBy = value;
204
+ break;
205
+ default:
206
+ super.setAttribute(qualifiedName, value);
207
+ }
208
+ }
209
+ removeAttribute(qualifiedName) {
210
+ switch (qualifiedName) {
211
+ case "id":
212
+ this.id = "";
213
+ break;
214
+ case "title":
215
+ this.title = "";
216
+ break;
217
+ case "autocapitalize":
218
+ this.autocapitalize = "";
219
+ break;
220
+ case "autofocus":
221
+ this.autofocus = false;
222
+ break;
223
+ case "spellcheck":
224
+ this.spellcheck = null;
225
+ break;
226
+ case "aria-label":
227
+ this.ariaLabel = null;
228
+ break;
229
+ case "aria-labelledby":
230
+ this.ariaLabelledBy = null;
231
+ break;
232
+ case "aria-describedby":
233
+ this.ariaDescribedBy = null;
234
+ break;
235
+ default:
236
+ super.removeAttribute(qualifiedName);
237
+ }
238
+ }
239
+ _removeHostAttribute(name) {
240
+ const host = this;
241
+ if (HTMLElement.prototype.hasAttribute.call(host, name)) {
242
+ HTMLElement.prototype.removeAttribute.call(host, name);
243
+ }
244
+ }
245
+ get forwardedAriaLabel() {
246
+ const value = this.ariaLabel?.trim();
247
+ return value ? value : void 0;
248
+ }
249
+ get forwardedAriaLabelledBy() {
250
+ const value = this.ariaLabelledBy?.trim();
251
+ return value ? value : void 0;
252
+ }
253
+ get forwardedAriaDescribedBy() {
254
+ const value = this.ariaDescribedBy?.trim();
255
+ return value ? value : void 0;
256
+ }
257
+ // Subclasses that expose `disabled`/`loading` properties get this disabled
258
+ // calculation for free instead of redeclaring it per component.
259
+ get isDisabled() {
260
+ const self = this;
261
+ return (self.disabled ?? false) || (self.loading ?? false);
262
+ }
263
+ // Subclasses get this for free instead of redeclaring it per component.
264
+ get hasForwardedLabel() {
265
+ return Boolean(this.forwardedAriaLabel || this.forwardedAriaLabelledBy);
266
+ }
267
+ };
268
+ SpectreBaseElement.properties = {};
269
+ var SpectreRangeElement = class extends SpectreBaseElement {
270
+ constructor() {
271
+ super(...arguments);
272
+ this.disabled = false;
273
+ this.focused = false;
274
+ this.form = void 0;
275
+ this.max = 100;
276
+ this.min = 0;
277
+ this.name = void 0;
278
+ this.step = 1;
279
+ this.value = 50;
280
+ }
281
+ get id() {
282
+ return super.id;
283
+ }
284
+ set id(value) {
285
+ super.id = value;
286
+ }
287
+ get title() {
288
+ return super.title;
289
+ }
290
+ set title(value) {
291
+ super.title = value;
292
+ }
293
+ willUpdate(changedProperties) {
294
+ if (changedProperties.has("disabled") && this.disabled == null) {
295
+ this.disabled = false;
296
+ }
297
+ if (changedProperties.has("min") && typeof this.min !== "number") {
298
+ this.min = 0;
299
+ }
300
+ if (changedProperties.has("max") && (typeof this.max !== "number" || this.max <= (this.min ?? 0))) {
301
+ this.max = (this.min ?? 0) + 100;
302
+ }
303
+ if (changedProperties.has("value") || changedProperties.has("min") || changedProperties.has("max")) {
304
+ const value = typeof this.value === "number" ? this.value : 0;
305
+ this.value = Math.min(Math.max(value, this.min ?? 0), this.max ?? 100);
306
+ }
307
+ }
308
+ // WebKit/Blink paint the filled track from this recipe-defined variable;
309
+ // Firefox fills natively.
310
+ updated(changedProperties) {
311
+ super.updated(changedProperties);
312
+ const min = this.min ?? 0;
313
+ const span = (this.max ?? 100) - min;
314
+ const percent = span > 0 ? ((this.value ?? min) - min) / span * 100 : 0;
315
+ this.nativeInput?.style.setProperty(
316
+ "--sp-component-range-value",
317
+ `${percent}%`
318
+ );
319
+ }
320
+ get nativeInput() {
321
+ return this.querySelector("[data-sp-range-native]");
322
+ }
323
+ focus(options) {
324
+ this.nativeInput?.focus(options);
325
+ }
326
+ blur() {
327
+ this.nativeInput?.blur();
328
+ }
329
+ handleInput(event) {
330
+ this.value = event.currentTarget.valueAsNumber;
331
+ }
332
+ render() {
333
+ return html`<input
334
+ aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
335
+ aria-label="${ifDefined(this.forwardedAriaLabel)}"
336
+ aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
337
+ class="${getRangeClasses({
338
+ disabled: this.disabled ?? false,
339
+ focused: this.focused ?? false
340
+ })}"
341
+ data-sp-range-native
342
+ ?disabled="${this.disabled ?? false}"
343
+ form="${ifDefined(this.form || void 0)}"
344
+ id="${ifDefined(this.id || void 0)}"
345
+ max="${this.max ?? 100}"
346
+ min="${this.min ?? 0}"
347
+ name="${ifDefined(this.name || void 0)}"
348
+ step="${this.step ?? 1}"
349
+ title="${ifDefined(this.title || void 0)}"
350
+ type="range"
351
+ .value="${live(String(this.value ?? 0))}"
352
+ @change="${this.handleInput}"
353
+ @input="${this.handleInput}"
354
+ />`;
355
+ }
356
+ };
357
+ SpectreRangeElement.properties = {
358
+ disabled: { type: Boolean, reflect: true },
359
+ focused: { type: Boolean, reflect: true },
360
+ form: { type: String },
361
+ max: { type: Number, reflect: true },
362
+ min: { type: Number, reflect: true },
363
+ name: { type: String, reflect: true },
364
+ step: { type: Number, reflect: true },
365
+ value: { type: Number, reflect: true }
366
+ };
367
+ function defineSpectreRange(tagName = "sp-range") {
368
+ const existingElement = customElements.get(tagName);
369
+ if (existingElement) {
370
+ return existingElement;
371
+ }
372
+ customElements.define(tagName, SpectreRangeElement);
373
+ return SpectreRangeElement;
374
+ }
375
+
376
+ export { SpectreRangeElement, defineSpectreRange };
377
+ //# sourceMappingURL=range.js.map
378
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/base.ts","../src/components/range/sp-range.ts"],"names":[],"mappings":"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","file":"range.js","sourcesContent":["import { LitElement, type PropertyDeclarations } from 'lit'\n\nexport class SpectreBaseElement extends LitElement {\n static properties: PropertyDeclarations = {}\n\n private _ariaLabel: string | null = null\n private _ariaLabelledBy: string | null = null\n private _ariaDescribedBy: string | null = null\n private _autocapitalize = ''\n private _autofocus = false\n private _spellcheck: boolean | null = null\n private _title = ''\n private _id = ''\n\n get ariaLabel(): string | null {\n return this._ariaLabel\n }\n\n set ariaLabel(value: string | null) {\n if (this._ariaLabel === value) {\n return\n }\n this._ariaLabel = value\n this._removeHostAttribute('aria-label')\n this.requestUpdate()\n }\n\n get ariaLabelledBy(): string | null {\n return this._ariaLabelledBy\n }\n\n set ariaLabelledBy(value: string | null) {\n if (this._ariaLabelledBy === value) {\n return\n }\n this._ariaLabelledBy = value\n this._removeHostAttribute('aria-labelledby')\n this.requestUpdate()\n }\n\n get ariaDescribedBy(): string | null {\n return this._ariaDescribedBy\n }\n\n set ariaDescribedBy(value: string | null) {\n if (this._ariaDescribedBy === value) {\n return\n }\n this._ariaDescribedBy = value\n this._removeHostAttribute('aria-describedby')\n this.requestUpdate()\n }\n\n override get autocapitalize(): string {\n return this._autocapitalize\n }\n\n override set autocapitalize(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._autocapitalize === normalizedValue) {\n return\n }\n this._autocapitalize = normalizedValue\n this._removeHostAttribute('autocapitalize')\n this.requestUpdate()\n }\n\n override get spellcheck(): boolean {\n return this._spellcheck ?? super.spellcheck\n }\n\n override set spellcheck(value: boolean | undefined | null) {\n if (this._spellcheck === value) {\n return\n }\n this._spellcheck = value ?? null\n this._removeHostAttribute('spellcheck')\n this.requestUpdate()\n }\n\n override get title(): string {\n return this._title\n }\n\n override set title(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._title === normalizedValue) {\n return\n }\n this._title = normalizedValue\n this._removeHostAttribute('title')\n this.requestUpdate()\n }\n\n override get id(): string {\n return this._id\n }\n\n override set id(value: string | undefined | null) {\n const normalizedValue = value ?? ''\n if (this._id === normalizedValue) {\n return\n }\n this._id = normalizedValue\n this._removeHostAttribute('id')\n this.requestUpdate()\n }\n\n override get autofocus(): boolean {\n return this._autofocus\n }\n\n override set autofocus(value: boolean | undefined | null) {\n const normalizedValue = !!value\n if (this._autofocus === normalizedValue) {\n return\n }\n this._autofocus = normalizedValue\n this._removeHostAttribute('autofocus')\n this.requestUpdate()\n }\n\n // Spectre components intentionally render in light DOM so the global\n // `@phcdevworks/spectre-ui` styling contract can apply directly.\n createRenderRoot(): this {\n return this\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n\n const proxiedAttributes = [\n 'id',\n 'title',\n 'autocapitalize',\n 'autofocus',\n 'spellcheck',\n 'aria-label',\n 'aria-labelledby',\n 'aria-describedby'\n ]\n\n proxiedAttributes.forEach((attr) => {\n const value = super.getAttribute(attr)\n if (value !== null) {\n this.setAttribute(attr, value)\n }\n })\n }\n\n override getAttribute(qualifiedName: string): string | null {\n switch (qualifiedName) {\n case 'id':\n return this.id || null\n case 'title':\n return this.title || null\n case 'autocapitalize':\n return this.autocapitalize || null\n case 'autofocus':\n return this.autofocus ? '' : null\n case 'spellcheck':\n return this._spellcheck !== null ? String(this._spellcheck) : null\n case 'aria-label':\n return this.ariaLabel\n case 'aria-labelledby':\n return this.ariaLabelledBy\n case 'aria-describedby':\n return this.ariaDescribedBy\n default:\n return super.getAttribute(qualifiedName)\n }\n }\n\n override hasAttribute(qualifiedName: string): boolean {\n switch (qualifiedName) {\n case 'id':\n return this.id !== ''\n case 'title':\n return this.title !== ''\n case 'autocapitalize':\n return this.autocapitalize !== ''\n case 'autofocus':\n return this.autofocus\n case 'spellcheck':\n return this._spellcheck !== null\n case 'aria-label':\n return this.ariaLabel !== null\n case 'aria-labelledby':\n return this.ariaLabelledBy !== null\n case 'aria-describedby':\n return this.ariaDescribedBy !== null\n default:\n return super.hasAttribute(qualifiedName)\n }\n }\n\n override setAttribute(qualifiedName: string, value: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = value\n break\n case 'title':\n this.title = value\n break\n case 'autocapitalize':\n this.autocapitalize = value\n break\n case 'autofocus':\n this.autofocus = true\n break\n case 'spellcheck':\n this.spellcheck = value !== 'false'\n break\n case 'aria-label':\n this.ariaLabel = value\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = value\n break\n case 'aria-describedby':\n this.ariaDescribedBy = value\n break\n default:\n super.setAttribute(qualifiedName, value)\n }\n }\n\n override removeAttribute(qualifiedName: string): void {\n switch (qualifiedName) {\n case 'id':\n this.id = ''\n break\n case 'title':\n this.title = ''\n break\n case 'autocapitalize':\n this.autocapitalize = ''\n break\n case 'autofocus':\n this.autofocus = false\n break\n case 'spellcheck':\n this.spellcheck = null\n break\n case 'aria-label':\n this.ariaLabel = null\n break\n case 'aria-labelledby':\n this.ariaLabelledBy = null\n break\n case 'aria-describedby':\n this.ariaDescribedBy = null\n break\n default:\n super.removeAttribute(qualifiedName)\n }\n }\n\n private _removeHostAttribute(name: string): void {\n const host = this as unknown as HTMLElement\n if (HTMLElement.prototype.hasAttribute.call(host, name)) {\n // Use the native removeAttribute to avoid our own overridden version\n // which would reset the internal state.\n HTMLElement.prototype.removeAttribute.call(host, name)\n }\n }\n\n protected get forwardedAriaLabel(): string | undefined {\n const value = this.ariaLabel?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaLabelledBy(): string | undefined {\n const value = this.ariaLabelledBy?.trim()\n return value ? value : undefined\n }\n\n protected get forwardedAriaDescribedBy(): string | undefined {\n const value = this.ariaDescribedBy?.trim()\n return value ? value : undefined\n }\n\n // Subclasses that expose `disabled`/`loading` properties get this disabled\n // calculation for free instead of redeclaring it per component.\n protected get isDisabled(): boolean {\n const self = this as unknown as { disabled?: boolean; loading?: boolean }\n return (self.disabled ?? false) || (self.loading ?? false)\n }\n\n // Subclasses get this for free instead of redeclaring it per component.\n protected get hasForwardedLabel(): boolean {\n return Boolean(this.forwardedAriaLabel || this.forwardedAriaLabelledBy)\n }\n}\n","import { html } from 'lit'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { live } from 'lit/directives/live.js'\n\nimport { SpectreBaseElement } from '../../utils/base'\n\nimport { getRangeClasses } from '@phcdevworks/spectre-ui'\n\nexport interface SpectreRangeProps {\n ariaLabel?: string | null\n ariaLabelledBy?: string | null\n ariaDescribedBy?: string | null\n disabled?: boolean | undefined\n focused?: boolean | undefined\n form?: string | undefined\n id?: string | null | undefined\n max?: number | undefined\n min?: number | undefined\n name?: string | undefined\n step?: number | undefined\n title?: string | null | undefined\n value?: number | undefined\n}\n\nexport class SpectreRangeElement\n extends SpectreBaseElement\n implements SpectreRangeProps\n{\n static properties = {\n disabled: { type: Boolean, reflect: true },\n focused: { type: Boolean, reflect: true },\n form: { type: String },\n max: { type: Number, reflect: true },\n min: { type: Number, reflect: true },\n name: { type: String, reflect: true },\n step: { type: Number, reflect: true },\n value: { type: Number, reflect: true }\n }\n\n disabled: boolean | undefined = false\n focused: boolean | undefined = false\n form: string | undefined = undefined\n max: number | undefined = 100\n min: number | undefined = 0\n name: string | undefined = undefined\n step: number | undefined = 1\n value: number | undefined = 50\n\n override get id(): string {\n return super.id\n }\n\n override set id(value: string | null | undefined) {\n super.id = value\n }\n\n override get title(): string {\n return super.title\n }\n\n override set title(value: string | null | undefined) {\n super.title = value\n }\n\n protected override willUpdate(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n if (changedProperties.has('disabled') && this.disabled == null) {\n this.disabled = false\n }\n if (changedProperties.has('min') && typeof this.min !== 'number') {\n this.min = 0\n }\n if (\n changedProperties.has('max') &&\n (typeof this.max !== 'number' || this.max <= (this.min ?? 0))\n ) {\n this.max = (this.min ?? 0) + 100\n }\n if (\n changedProperties.has('value') ||\n changedProperties.has('min') ||\n changedProperties.has('max')\n ) {\n const value = typeof this.value === 'number' ? this.value : 0\n this.value = Math.min(Math.max(value, this.min ?? 0), this.max ?? 100)\n }\n }\n\n // WebKit/Blink paint the filled track from this recipe-defined variable;\n // Firefox fills natively.\n protected override updated(\n changedProperties: Map<PropertyKey, unknown>\n ): void {\n super.updated(changedProperties)\n const min = this.min ?? 0\n const span = (this.max ?? 100) - min\n const percent = span > 0 ? (((this.value ?? min) - min) / span) * 100 : 0\n this.nativeInput?.style.setProperty(\n '--sp-component-range-value',\n `${percent}%`\n )\n }\n\n private get nativeInput(): HTMLInputElement | null {\n return this.querySelector('[data-sp-range-native]')\n }\n\n override focus(options?: FocusOptions): void {\n this.nativeInput?.focus(options)\n }\n\n override blur(): void {\n this.nativeInput?.blur()\n }\n\n private handleInput(event: Event): void {\n this.value = (event.currentTarget as HTMLInputElement).valueAsNumber\n }\n\n override render() {\n return html`<input\n aria-describedby=\"${ifDefined(this.forwardedAriaDescribedBy)}\"\n aria-label=\"${ifDefined(this.forwardedAriaLabel)}\"\n aria-labelledby=\"${ifDefined(this.forwardedAriaLabelledBy)}\"\n class=\"${getRangeClasses({\n disabled: this.disabled ?? false,\n focused: this.focused ?? false\n })}\"\n data-sp-range-native\n ?disabled=\"${this.disabled ?? false}\"\n form=\"${ifDefined(this.form || undefined)}\"\n id=\"${ifDefined(this.id || undefined)}\"\n max=\"${this.max ?? 100}\"\n min=\"${this.min ?? 0}\"\n name=\"${ifDefined(this.name || undefined)}\"\n step=\"${this.step ?? 1}\"\n title=\"${ifDefined(this.title || undefined)}\"\n type=\"range\"\n .value=\"${live(String(this.value ?? 0))}\"\n @change=\"${this.handleInput}\"\n @input=\"${this.handleInput}\"\n />`\n }\n}\n\nexport function defineSpectreRange(\n tagName = 'sp-range'\n): typeof SpectreRangeElement {\n const existingElement = customElements.get(tagName)\n\n if (existingElement) {\n return existingElement as unknown as typeof SpectreRangeElement\n }\n\n customElements.define(tagName, SpectreRangeElement)\n return SpectreRangeElement\n}\n"]}
package/dist/rating.cjs CHANGED
@@ -277,9 +277,34 @@ var SpectreBaseElement = class extends lit.LitElement {
277
277
  }
278
278
  };
279
279
  SpectreBaseElement.properties = {};
280
+
281
+ // src/utils/states.ts
282
+ var hoverFocusStateProperties = {
283
+ focused: { type: Boolean, reflect: true },
284
+ hovered: { type: Boolean, reflect: true }
285
+ };
286
+ var interactionStateProperties = {
287
+ ...hoverFocusStateProperties,
288
+ active: { type: Boolean, reflect: true }
289
+ };
290
+ function hoverFocusStates(element) {
291
+ return {
292
+ focused: element.focused ?? false,
293
+ hovered: element.hovered ?? false
294
+ };
295
+ }
296
+ function interactionStates(element) {
297
+ return { ...hoverFocusStates(element), active: element.active ?? false };
298
+ }
280
299
  var SpectreRatingElement = class extends SpectreBaseElement {
281
300
  constructor() {
282
301
  super(...arguments);
302
+ this.fullWidth = false;
303
+ this.pill = false;
304
+ this.interactive = false;
305
+ this.active = false;
306
+ this.focused = false;
307
+ this.hovered = false;
283
308
  this.disabled = false;
284
309
  this.loading = false;
285
310
  this.max = 5;
@@ -319,6 +344,10 @@ var SpectreRatingElement = class extends SpectreBaseElement {
319
344
  }
320
345
  get ratingClasses() {
321
346
  return spectreUi.getRatingClasses({
347
+ fullWidth: this.fullWidth ?? false,
348
+ pill: this.pill ?? false,
349
+ interactive: this.interactive ?? false,
350
+ ...interactionStates(this),
322
351
  disabled: this.isDisabled,
323
352
  loading: this.loading ?? false,
324
353
  size: this.size
@@ -368,6 +397,10 @@ var SpectreRatingElement = class extends SpectreBaseElement {
368
397
  }
369
398
  };
370
399
  SpectreRatingElement.properties = {
400
+ fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
401
+ pill: { type: Boolean, reflect: true },
402
+ interactive: { type: Boolean, reflect: true },
403
+ ...interactionStateProperties,
371
404
  disabled: { type: Boolean, reflect: true },
372
405
  label: { type: String, reflect: true },
373
406
  loading: { type: Boolean, reflect: true },