@andespindola/ui-core 0.2.0 → 0.3.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 (285) hide show
  1. package/dist/cjs/{floating-ui.dom-BPemvNRD.js → floating-ui.dom-BZk7Blsu.js} +93 -0
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/ui-accordion-item.cjs.entry.js +1 -1
  4. package/dist/cjs/ui-accordion.cjs.entry.js +1 -1
  5. package/dist/cjs/ui-avatar-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ui-avatar.cjs.entry.js +1 -1
  7. package/dist/cjs/ui-breadcrumb-item.cjs.entry.js +1 -1
  8. package/dist/cjs/ui-breadcrumb.cjs.entry.js +1 -1
  9. package/dist/cjs/ui-button.cjs.entry.js +1 -1
  10. package/dist/cjs/ui-card.cjs.entry.js +1 -1
  11. package/dist/cjs/ui-checkbox.cjs.entry.js +1 -1
  12. package/dist/cjs/ui-combobox.cjs.entry.js +153 -0
  13. package/dist/cjs/ui-container.cjs.entry.js +1 -1
  14. package/dist/cjs/ui-date-picker.cjs.entry.js +171 -0
  15. package/dist/cjs/ui-dialog.cjs.entry.js +1 -1
  16. package/dist/cjs/ui-drawer.cjs.entry.js +1 -1
  17. package/dist/cjs/ui-dropdown-item.cjs.entry.js +1 -1
  18. package/dist/cjs/ui-dropdown-menu.cjs.entry.js +2 -2
  19. package/dist/cjs/ui-field.cjs.entry.js +1 -1
  20. package/dist/cjs/ui-file-upload.cjs.entry.js +57 -0
  21. package/dist/cjs/ui-grid.cjs.entry.js +1 -1
  22. package/dist/cjs/ui-input.cjs.entry.js +1 -1
  23. package/dist/cjs/ui-label.cjs.entry.js +1 -1
  24. package/dist/cjs/ui-navbar.cjs.entry.js +17 -0
  25. package/dist/cjs/ui-pagination.cjs.entry.js +2 -2
  26. package/dist/cjs/ui-popover.cjs.entry.js +2 -2
  27. package/dist/cjs/ui-progress-circular.cjs.entry.js +44 -0
  28. package/dist/cjs/ui-progress.cjs.entry.js +1 -1
  29. package/dist/cjs/ui-radio-group.cjs.entry.js +1 -1
  30. package/dist/cjs/ui-rating.cjs.entry.js +45 -0
  31. package/dist/cjs/ui-reveal.cjs.entry.js +1 -1
  32. package/dist/cjs/ui-scroll-progress.cjs.entry.js +1 -1
  33. package/dist/cjs/ui-section.cjs.entry.js +1 -1
  34. package/dist/cjs/ui-segmented.cjs.entry.js +1 -1
  35. package/dist/cjs/ui-select.cjs.entry.js +1 -1
  36. package/dist/cjs/ui-separator.cjs.entry.js +1 -1
  37. package/dist/cjs/ui-skeleton.cjs.entry.js +1 -1
  38. package/dist/cjs/ui-slider.cjs.entry.js +1 -1
  39. package/dist/cjs/ui-spinner.cjs.entry.js +1 -1
  40. package/dist/cjs/ui-stack.cjs.entry.js +1 -1
  41. package/dist/cjs/ui-stat.cjs.entry.js +1 -1
  42. package/dist/cjs/ui-switch.cjs.entry.js +1 -1
  43. package/dist/cjs/ui-table.cjs.entry.js +25 -0
  44. package/dist/cjs/ui-tabs.cjs.entry.js +2 -2
  45. package/dist/cjs/ui-textarea.cjs.entry.js +1 -1
  46. package/dist/cjs/ui-theme-toggle.cjs.entry.js +1 -1
  47. package/dist/cjs/ui-toast.cjs.entry.js +1 -1
  48. package/dist/cjs/ui-toaster.cjs.entry.js +1 -1
  49. package/dist/cjs/ui-tooltip.cjs.entry.js +2 -2
  50. package/dist/cjs/uikit.cjs.js +1 -1
  51. package/dist/collection/collection-manifest.json +7 -0
  52. package/dist/collection/components/ui-accordion/ui-accordion.js +1 -1
  53. package/dist/collection/components/ui-accordion-item/ui-accordion-item.js +1 -1
  54. package/dist/collection/components/ui-avatar/ui-avatar.js +1 -1
  55. package/dist/collection/components/ui-avatar-group/ui-avatar-group.js +1 -1
  56. package/dist/collection/components/ui-breadcrumb/ui-breadcrumb.js +1 -1
  57. package/dist/collection/components/ui-breadcrumb-item/ui-breadcrumb-item.js +1 -1
  58. package/dist/collection/components/ui-button/ui-button.css +2 -0
  59. package/dist/collection/components/ui-card/ui-card.js +1 -1
  60. package/dist/collection/components/ui-checkbox/ui-checkbox.js +1 -1
  61. package/dist/collection/components/ui-combobox/ui-combobox.css +93 -0
  62. package/dist/collection/components/ui-combobox/ui-combobox.js +248 -0
  63. package/dist/collection/components/ui-container/ui-container.js +1 -1
  64. package/dist/collection/components/ui-date-picker/ui-date-picker.css +176 -0
  65. package/dist/collection/components/ui-date-picker/ui-date-picker.js +243 -0
  66. package/dist/collection/components/ui-dialog/ui-dialog.js +1 -1
  67. package/dist/collection/components/ui-drawer/ui-drawer.js +1 -1
  68. package/dist/collection/components/ui-dropdown-item/ui-dropdown-item.js +1 -1
  69. package/dist/collection/components/ui-dropdown-menu/ui-dropdown-menu.js +1 -1
  70. package/dist/collection/components/ui-field/ui-field.js +1 -1
  71. package/dist/collection/components/ui-file-upload/ui-file-upload.css +79 -0
  72. package/dist/collection/components/ui-file-upload/ui-file-upload.js +151 -0
  73. package/dist/collection/components/ui-grid/ui-grid.js +1 -1
  74. package/dist/collection/components/ui-input/ui-input.js +1 -1
  75. package/dist/collection/components/ui-label/ui-label.js +1 -1
  76. package/dist/collection/components/ui-navbar/ui-navbar.css +36 -0
  77. package/dist/collection/components/ui-navbar/ui-navbar.js +18 -0
  78. package/dist/collection/components/ui-pagination/ui-pagination.js +2 -2
  79. package/dist/collection/components/ui-popover/ui-popover.js +1 -1
  80. package/dist/collection/components/ui-progress/ui-progress.js +1 -1
  81. package/dist/collection/components/ui-progress-circular/ui-progress-circular.css +46 -0
  82. package/dist/collection/components/ui-progress-circular/ui-progress-circular.js +171 -0
  83. package/dist/collection/components/ui-radio-group/ui-radio-group.js +1 -1
  84. package/dist/collection/components/ui-rating/ui-rating.css +52 -0
  85. package/dist/collection/components/ui-rating/ui-rating.js +134 -0
  86. package/dist/collection/components/ui-reveal/ui-reveal.js +1 -1
  87. package/dist/collection/components/ui-scroll-progress/ui-scroll-progress.js +1 -1
  88. package/dist/collection/components/ui-section/ui-section.js +1 -1
  89. package/dist/collection/components/ui-segmented/ui-segmented.js +1 -1
  90. package/dist/collection/components/ui-select/ui-select.js +1 -1
  91. package/dist/collection/components/ui-separator/ui-separator.js +1 -1
  92. package/dist/collection/components/ui-skeleton/ui-skeleton.js +1 -1
  93. package/dist/collection/components/ui-slider/ui-slider.js +1 -1
  94. package/dist/collection/components/ui-spinner/ui-spinner.js +1 -1
  95. package/dist/collection/components/ui-stack/ui-stack.js +1 -1
  96. package/dist/collection/components/ui-stat/ui-stat.js +1 -1
  97. package/dist/collection/components/ui-switch/ui-switch.js +1 -1
  98. package/dist/collection/components/ui-table/ui-table.css +46 -0
  99. package/dist/collection/components/ui-table/ui-table.js +119 -0
  100. package/dist/collection/components/ui-tabs/ui-tabs.js +2 -2
  101. package/dist/collection/components/ui-textarea/ui-textarea.js +1 -1
  102. package/dist/collection/components/ui-theme-toggle/ui-theme-toggle.js +1 -1
  103. package/dist/collection/components/ui-toast/ui-toast.js +1 -1
  104. package/dist/collection/components/ui-toaster/ui-toaster.js +1 -1
  105. package/dist/collection/components/ui-tooltip/ui-tooltip.js +1 -1
  106. package/dist/components/{p-CgsjJD8o.js → p-DDJE__UC.js} +1 -1
  107. package/dist/{uikit/p-CyBRmmbs.js → components/p-DDtwbwIl.js} +1 -1
  108. package/dist/components/{p-BwNtNvTb.js → p-DUT2Q8Df.js} +1 -1
  109. package/dist/components/ui-accordion-item.js +1 -1
  110. package/dist/components/ui-accordion.js +1 -1
  111. package/dist/components/ui-avatar-group.js +1 -1
  112. package/dist/components/ui-avatar.js +1 -1
  113. package/dist/components/ui-breadcrumb-item.js +1 -1
  114. package/dist/components/ui-breadcrumb.js +1 -1
  115. package/dist/components/ui-button.js +1 -1
  116. package/dist/components/ui-card.js +1 -1
  117. package/dist/components/ui-checkbox.js +1 -1
  118. package/dist/components/ui-combobox.d.ts +11 -0
  119. package/dist/components/ui-combobox.js +1 -0
  120. package/dist/components/ui-container.js +1 -1
  121. package/dist/components/ui-date-picker.d.ts +11 -0
  122. package/dist/components/ui-date-picker.js +1 -0
  123. package/dist/components/ui-dialog.js +1 -1
  124. package/dist/components/ui-drawer.js +1 -1
  125. package/dist/components/ui-dropdown-item.js +1 -1
  126. package/dist/components/ui-dropdown-menu.js +1 -1
  127. package/dist/components/ui-field.js +1 -1
  128. package/dist/components/ui-file-upload.d.ts +11 -0
  129. package/dist/components/ui-file-upload.js +1 -0
  130. package/dist/components/ui-grid.js +1 -1
  131. package/dist/components/ui-input.js +1 -1
  132. package/dist/components/ui-label.js +1 -1
  133. package/dist/components/ui-loading-overlay.js +1 -1
  134. package/dist/components/ui-navbar.d.ts +11 -0
  135. package/dist/components/ui-navbar.js +1 -0
  136. package/dist/components/ui-pagination.js +1 -1
  137. package/dist/components/ui-popover.js +1 -1
  138. package/dist/components/ui-progress-circular.d.ts +11 -0
  139. package/dist/components/ui-progress-circular.js +1 -0
  140. package/dist/components/ui-progress.js +1 -1
  141. package/dist/components/ui-radio-group.js +1 -1
  142. package/dist/components/ui-rating.d.ts +11 -0
  143. package/dist/components/ui-rating.js +1 -0
  144. package/dist/components/ui-reveal.js +1 -1
  145. package/dist/components/ui-scroll-progress.js +1 -1
  146. package/dist/components/ui-section.js +1 -1
  147. package/dist/components/ui-segmented.js +1 -1
  148. package/dist/components/ui-select.js +1 -1
  149. package/dist/components/ui-separator.js +1 -1
  150. package/dist/components/ui-skeleton.js +1 -1
  151. package/dist/components/ui-slider.js +1 -1
  152. package/dist/components/ui-spinner.js +1 -1
  153. package/dist/components/ui-stack.js +1 -1
  154. package/dist/components/ui-stat.js +1 -1
  155. package/dist/components/ui-switch.js +1 -1
  156. package/dist/components/ui-table.d.ts +11 -0
  157. package/dist/components/ui-table.js +1 -0
  158. package/dist/components/ui-tabs.js +1 -1
  159. package/dist/components/ui-textarea.js +1 -1
  160. package/dist/components/ui-theme-toggle.js +1 -1
  161. package/dist/components/ui-toast.js +1 -1
  162. package/dist/components/ui-toaster.js +1 -1
  163. package/dist/components/ui-tooltip.js +1 -1
  164. package/dist/esm/{floating-ui.dom-CyBRmmbs.js → floating-ui.dom-DDtwbwIl.js} +93 -1
  165. package/dist/esm/loader.js +1 -1
  166. package/dist/esm/ui-accordion-item.entry.js +1 -1
  167. package/dist/esm/ui-accordion.entry.js +1 -1
  168. package/dist/esm/ui-avatar-group.entry.js +1 -1
  169. package/dist/esm/ui-avatar.entry.js +1 -1
  170. package/dist/esm/ui-breadcrumb-item.entry.js +1 -1
  171. package/dist/esm/ui-breadcrumb.entry.js +1 -1
  172. package/dist/esm/ui-button.entry.js +1 -1
  173. package/dist/esm/ui-card.entry.js +1 -1
  174. package/dist/esm/ui-checkbox.entry.js +1 -1
  175. package/dist/esm/ui-combobox.entry.js +151 -0
  176. package/dist/esm/ui-container.entry.js +1 -1
  177. package/dist/esm/ui-date-picker.entry.js +169 -0
  178. package/dist/esm/ui-dialog.entry.js +1 -1
  179. package/dist/esm/ui-drawer.entry.js +1 -1
  180. package/dist/esm/ui-dropdown-item.entry.js +1 -1
  181. package/dist/esm/ui-dropdown-menu.entry.js +2 -2
  182. package/dist/esm/ui-field.entry.js +1 -1
  183. package/dist/esm/ui-file-upload.entry.js +55 -0
  184. package/dist/esm/ui-grid.entry.js +1 -1
  185. package/dist/esm/ui-input.entry.js +1 -1
  186. package/dist/esm/ui-label.entry.js +1 -1
  187. package/dist/esm/ui-navbar.entry.js +15 -0
  188. package/dist/esm/ui-pagination.entry.js +2 -2
  189. package/dist/esm/ui-popover.entry.js +2 -2
  190. package/dist/esm/ui-progress-circular.entry.js +42 -0
  191. package/dist/esm/ui-progress.entry.js +1 -1
  192. package/dist/esm/ui-radio-group.entry.js +1 -1
  193. package/dist/esm/ui-rating.entry.js +43 -0
  194. package/dist/esm/ui-reveal.entry.js +1 -1
  195. package/dist/esm/ui-scroll-progress.entry.js +1 -1
  196. package/dist/esm/ui-section.entry.js +1 -1
  197. package/dist/esm/ui-segmented.entry.js +1 -1
  198. package/dist/esm/ui-select.entry.js +1 -1
  199. package/dist/esm/ui-separator.entry.js +1 -1
  200. package/dist/esm/ui-skeleton.entry.js +1 -1
  201. package/dist/esm/ui-slider.entry.js +1 -1
  202. package/dist/esm/ui-spinner.entry.js +1 -1
  203. package/dist/esm/ui-stack.entry.js +1 -1
  204. package/dist/esm/ui-stat.entry.js +1 -1
  205. package/dist/esm/ui-switch.entry.js +1 -1
  206. package/dist/esm/ui-table.entry.js +23 -0
  207. package/dist/esm/ui-tabs.entry.js +2 -2
  208. package/dist/esm/ui-textarea.entry.js +1 -1
  209. package/dist/esm/ui-theme-toggle.entry.js +1 -1
  210. package/dist/esm/ui-toast.entry.js +1 -1
  211. package/dist/esm/ui-toaster.entry.js +1 -1
  212. package/dist/esm/ui-tooltip.entry.js +2 -2
  213. package/dist/esm/uikit.js +1 -1
  214. package/dist/types/components/ui-combobox/ui-combobox.d.ts +38 -0
  215. package/dist/types/components/ui-date-picker/ui-date-picker.d.ts +42 -0
  216. package/dist/types/components/ui-file-upload/ui-file-upload.d.ts +24 -0
  217. package/dist/types/components/ui-navbar/ui-navbar.d.ts +3 -0
  218. package/dist/types/components/ui-progress-circular/ui-progress-circular.d.ts +17 -0
  219. package/dist/types/components/ui-rating/ui-rating.d.ts +17 -0
  220. package/dist/types/components/ui-table/ui-table.d.ts +16 -0
  221. package/dist/types/components.d.ts +409 -0
  222. package/dist/types/index.d.ts +1 -0
  223. package/dist/uikit/{p-81b45a43.entry.js → p-008118af.entry.js} +1 -1
  224. package/dist/uikit/p-0715db16.entry.js +1 -0
  225. package/dist/uikit/p-10afa395.entry.js +1 -0
  226. package/dist/uikit/{p-25637424.entry.js → p-1449f229.entry.js} +1 -1
  227. package/dist/uikit/{p-567f7496.entry.js → p-1514ae37.entry.js} +1 -1
  228. package/dist/uikit/{p-cd0ec835.entry.js → p-1685191b.entry.js} +1 -1
  229. package/dist/uikit/p-1ef7948f.entry.js +1 -0
  230. package/dist/uikit/p-283e7623.entry.js +1 -0
  231. package/dist/uikit/p-2d92ce04.entry.js +1 -0
  232. package/dist/uikit/{p-faa98928.entry.js → p-3995852d.entry.js} +1 -1
  233. package/dist/uikit/p-3b1f92da.entry.js +1 -0
  234. package/dist/uikit/p-3fdfad2e.entry.js +1 -0
  235. package/dist/uikit/p-4044ebde.entry.js +1 -0
  236. package/dist/uikit/{p-95cd976e.entry.js → p-413cfbc6.entry.js} +1 -1
  237. package/dist/uikit/p-4ba0e4bc.entry.js +1 -0
  238. package/dist/uikit/{p-635862e6.entry.js → p-5e0bc34a.entry.js} +1 -1
  239. package/dist/uikit/{p-86ed6154.entry.js → p-60910c03.entry.js} +1 -1
  240. package/dist/uikit/{p-c73c1009.entry.js → p-62881327.entry.js} +1 -1
  241. package/dist/uikit/p-6c51a216.entry.js +1 -0
  242. package/dist/uikit/p-6d363a02.entry.js +1 -0
  243. package/dist/uikit/{p-67963692.entry.js → p-8535f5c9.entry.js} +1 -1
  244. package/dist/uikit/{p-2601d8b6.entry.js → p-88238a16.entry.js} +1 -1
  245. package/dist/uikit/{p-595e146f.entry.js → p-894fc85f.entry.js} +1 -1
  246. package/dist/uikit/p-8b882367.entry.js +1 -0
  247. package/dist/uikit/{p-12db6a6e.entry.js → p-9310b73b.entry.js} +1 -1
  248. package/dist/uikit/{p-1d016ea4.entry.js → p-99b7e461.entry.js} +1 -1
  249. package/dist/uikit/p-9d8d420e.entry.js +1 -0
  250. package/dist/uikit/{p-55a23f91.entry.js → p-9dbe7e12.entry.js} +1 -1
  251. package/dist/uikit/{p-09895cd0.entry.js → p-9f09fcec.entry.js} +1 -1
  252. package/dist/{components/p-CyBRmmbs.js → uikit/p-DDtwbwIl.js} +1 -1
  253. package/dist/uikit/{p-a977a0db.entry.js → p-a3d819cd.entry.js} +1 -1
  254. package/dist/uikit/{p-979f6178.entry.js → p-b0f2b1c8.entry.js} +1 -1
  255. package/dist/uikit/{p-3996590f.entry.js → p-b7e30398.entry.js} +1 -1
  256. package/dist/uikit/p-bac2c523.entry.js +1 -0
  257. package/dist/uikit/p-bbc718ef.entry.js +1 -0
  258. package/dist/uikit/{p-74b60a60.entry.js → p-bdd30484.entry.js} +1 -1
  259. package/dist/uikit/{p-fd832f52.entry.js → p-c1a9db7c.entry.js} +1 -1
  260. package/dist/uikit/p-c2138fb9.entry.js +1 -0
  261. package/dist/uikit/{p-ddd70374.entry.js → p-c94492ff.entry.js} +1 -1
  262. package/dist/uikit/{p-7f2c2924.entry.js → p-ccca2aeb.entry.js} +1 -1
  263. package/dist/uikit/{p-a01305a5.entry.js → p-d7ab158f.entry.js} +1 -1
  264. package/dist/uikit/p-da807078.entry.js +1 -0
  265. package/dist/uikit/p-e2065caa.entry.js +1 -0
  266. package/dist/uikit/{p-dca9f6f9.entry.js → p-f2983e94.entry.js} +1 -1
  267. package/dist/uikit/{p-2de05aac.entry.js → p-f4344cce.entry.js} +1 -1
  268. package/dist/uikit/{p-3fc062a6.entry.js → p-fb89d9a4.entry.js} +1 -1
  269. package/dist/uikit/p-fbe7806c.entry.js +1 -0
  270. package/dist/uikit/p-ffcd1faf.entry.js +1 -0
  271. package/dist/uikit/uikit.esm.js +1 -1
  272. package/package.json +1 -1
  273. package/dist/uikit/p-0cba0d11.entry.js +0 -1
  274. package/dist/uikit/p-6c0e9809.entry.js +0 -1
  275. package/dist/uikit/p-7a3d85da.entry.js +0 -1
  276. package/dist/uikit/p-94ad46a5.entry.js +0 -1
  277. package/dist/uikit/p-97d4dbf4.entry.js +0 -1
  278. package/dist/uikit/p-9a4dc343.entry.js +0 -1
  279. package/dist/uikit/p-9a9590b9.entry.js +0 -1
  280. package/dist/uikit/p-a080f46a.entry.js +0 -1
  281. package/dist/uikit/p-a92a7b19.entry.js +0 -1
  282. package/dist/uikit/p-b2df8437.entry.js +0 -1
  283. package/dist/uikit/p-d20452b4.entry.js +0 -1
  284. package/dist/uikit/p-d7021157.entry.js +0 -1
  285. package/dist/uikit/p-db07f9c5.entry.js +0 -1
@@ -0,0 +1,151 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ export class UiFileUpload {
3
+ constructor() {
4
+ /** Permite múltiplos arquivos. */
5
+ this.multiple = false;
6
+ /** Texto principal da zona de upload. */
7
+ this.label = "Arraste arquivos ou clique para enviar";
8
+ /** Arquivos atualmente selecionados. */
9
+ this.files = [];
10
+ /** Indica se há arraste sobre a zona. */
11
+ this.dragging = false;
12
+ this.openPicker = () => {
13
+ this.inputEl?.click();
14
+ };
15
+ this.onInputChange = (event) => {
16
+ const target = event.target;
17
+ this.setFiles(target.files);
18
+ };
19
+ this.onDragOver = (event) => {
20
+ event.preventDefault();
21
+ this.dragging = true;
22
+ };
23
+ this.onDragLeave = () => {
24
+ this.dragging = false;
25
+ };
26
+ this.onDrop = (event) => {
27
+ event.preventDefault();
28
+ this.dragging = false;
29
+ this.setFiles(event.dataTransfer?.files ?? null);
30
+ };
31
+ }
32
+ setFiles(list) {
33
+ if (!list)
34
+ return;
35
+ this.files = Array.from(list);
36
+ this.uiChange.emit(this.files);
37
+ }
38
+ formatSize(bytes) {
39
+ if (bytes >= 1024 * 1024) {
40
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
41
+ }
42
+ return `${(bytes / 1024).toFixed(1)} KB`;
43
+ }
44
+ render() {
45
+ return (h(Host, { key: '675f04b6b96fcdcd10f1344c20225501671e456b' }, h("button", { key: 'bcc1bb63fa043f0778f38370d919eabfb37930f5', type: "button", class: { dropzone: true, dragging: this.dragging }, onClick: this.openPicker, onDragOver: this.onDragOver, onDragLeave: this.onDragLeave, onDrop: this.onDrop }, h("svg", { key: 'a5836edcdf54284806125e0356f0a5d9bf3e075a', class: "icon", viewBox: "0 0 24 24", width: "2rem", height: "2rem", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: '093a31bf1257a470ad7447c20ff02f4ca3ce1957', d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }), h("polyline", { key: 'c1eaf0285b47c402fefba5d16d3e1418df06405e', points: "17 8 12 3 7 8" }), h("line", { key: '4655c3de2b0df216d7f520eb81dc8e8a839fde25', x1: "12", y1: "3", x2: "12", y2: "15" })), h("span", { key: 'afa948d851f9df7944a2c669f9e0432fb1bb017b', class: "label" }, this.label), this.accept ? (h("span", { class: "hint" }, this.accept)) : null), h("input", { key: 'd2b97f6a23121a701da7e9296f0f06d0175c6edc', type: "file", hidden: true, accept: this.accept, multiple: this.multiple, ref: (el) => (this.inputEl = el), onChange: this.onInputChange }), this.files.length > 0 ? (h("ul", { class: "files" }, this.files.map((file) => (h("li", { class: "file" }, h("span", { class: "file-name" }, file.name), h("span", { class: "file-size" }, this.formatSize(file.size))))))) : null));
46
+ }
47
+ static get is() { return "ui-file-upload"; }
48
+ static get encapsulation() { return "shadow"; }
49
+ static get originalStyleUrls() {
50
+ return {
51
+ "$": ["ui-file-upload.css"]
52
+ };
53
+ }
54
+ static get styleUrls() {
55
+ return {
56
+ "$": ["ui-file-upload.css"]
57
+ };
58
+ }
59
+ static get properties() {
60
+ return {
61
+ "accept": {
62
+ "type": "string",
63
+ "mutable": false,
64
+ "complexType": {
65
+ "original": "string",
66
+ "resolved": "string | undefined",
67
+ "references": {}
68
+ },
69
+ "required": false,
70
+ "optional": true,
71
+ "docs": {
72
+ "tags": [],
73
+ "text": "Tipos de arquivo aceitos (atributo accept do input)."
74
+ },
75
+ "getter": false,
76
+ "setter": false,
77
+ "reflect": false,
78
+ "attribute": "accept"
79
+ },
80
+ "multiple": {
81
+ "type": "boolean",
82
+ "mutable": false,
83
+ "complexType": {
84
+ "original": "boolean",
85
+ "resolved": "boolean",
86
+ "references": {}
87
+ },
88
+ "required": false,
89
+ "optional": false,
90
+ "docs": {
91
+ "tags": [],
92
+ "text": "Permite m\u00FAltiplos arquivos."
93
+ },
94
+ "getter": false,
95
+ "setter": false,
96
+ "reflect": false,
97
+ "attribute": "multiple",
98
+ "defaultValue": "false"
99
+ },
100
+ "label": {
101
+ "type": "string",
102
+ "mutable": false,
103
+ "complexType": {
104
+ "original": "string",
105
+ "resolved": "string",
106
+ "references": {}
107
+ },
108
+ "required": false,
109
+ "optional": false,
110
+ "docs": {
111
+ "tags": [],
112
+ "text": "Texto principal da zona de upload."
113
+ },
114
+ "getter": false,
115
+ "setter": false,
116
+ "reflect": false,
117
+ "attribute": "label",
118
+ "defaultValue": "\"Arraste arquivos ou clique para enviar\""
119
+ }
120
+ };
121
+ }
122
+ static get states() {
123
+ return {
124
+ "files": {},
125
+ "dragging": {}
126
+ };
127
+ }
128
+ static get events() {
129
+ return [{
130
+ "method": "uiChange",
131
+ "name": "uiChange",
132
+ "bubbles": true,
133
+ "cancelable": true,
134
+ "composed": true,
135
+ "docs": {
136
+ "tags": [],
137
+ "text": "Emitido quando arquivos s\u00E3o selecionados."
138
+ },
139
+ "complexType": {
140
+ "original": "File[]",
141
+ "resolved": "File[]",
142
+ "references": {
143
+ "File": {
144
+ "location": "global",
145
+ "id": "global::File"
146
+ }
147
+ }
148
+ }
149
+ }];
150
+ }
151
+ }
@@ -20,7 +20,7 @@ export class UiGrid {
20
20
  : `repeat(${this.columns}, minmax(0, 1fr))`,
21
21
  gap: GAP[this.gap],
22
22
  };
23
- return (h(Host, { key: '465a816e064af42d8282185ee92e32477a6112fd' }, h("div", { key: 'da2e151c56959ced55477e3fe6c99aa5563b38aa', class: "grid", style: style }, h("slot", { key: '5bb285ce0feaf16d066b627010fc3fb595a85c15' }))));
23
+ return (h(Host, { key: 'fa78c94117bc998616e3f30ef936527d5be66e13' }, h("div", { key: '8594c436b71b7f49434b3366ec70ea24c6b437dc', class: "grid", style: style }, h("slot", { key: '79bb94baa8dd68e82b88734d57f6e31b033a7f5f' }))));
24
24
  }
25
25
  static get is() { return "ui-grid"; }
26
26
  static get encapsulation() { return "shadow"; }
@@ -27,7 +27,7 @@ export class UiInput {
27
27
  }
28
28
  render() {
29
29
  const showClear = this.clearable && !!this.value && !this.disabled;
30
- return (h(Host, { key: 'a87a7c9a1aba5631099f2f9c3a3083a9e7374854' }, h("div", { key: '04d3493ab32a4636f3f2540aaba0b30e4c018225', class: { field: true, invalid: this.invalid, disabled: this.disabled } }, h("span", { key: '66fa079a8b6ccc62dca78f4266d92800dd8727b0', class: "affix" }, h("slot", { key: 'c9db74515db3226bc730beb42a2a8f2d8eb6ee9f', name: "prefix" })), h("input", { key: 'a8f4db568e49ee22b5eeae078c4e4b3fdbc48983', class: "input", type: this.type, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, "aria-invalid": this.invalid ? "true" : null, onInput: this.onInput, onChange: this.onChange }), showClear && (h("button", { key: 'e38a2279db1b1c677274a6e22019bf3183ae1920', class: "clear", type: "button", "aria-label": "Limpar", onClick: this.clear }, h("svg", { key: '0982ea65d3b1598620953fcd600b1eb1945348ee', viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }, h("path", { key: '26f833d4ccf8feab9f2ec4f4527b8c8e9c00d09b', d: "M18 6 6 18M6 6l12 12" })))), h("span", { key: '22c7d4d4a030157a4a9eb73ef0a260f4db56c848', class: "affix" }, h("slot", { key: 'fa74011b1237908aa9eea78f88294afcdf09f0f5', name: "suffix" })))));
30
+ return (h(Host, { key: 'cfe13feedab47ba88763ae727eb77ca15a0c52a3' }, h("div", { key: '7c79750f2ad87a55462a2416e9d46b4558f9b279', class: { field: true, invalid: this.invalid, disabled: this.disabled } }, h("span", { key: 'dafa1e0120f0de7a041ecfdb98db4203c1d67a28', class: "affix" }, h("slot", { key: '80aef681671784cd65f473975e441027d038c340', name: "prefix" })), h("input", { key: '8bad96710b4190784302fe9ce908f33aef0bc126', class: "input", type: this.type, value: this.value, name: this.name, placeholder: this.placeholder, disabled: this.disabled, "aria-invalid": this.invalid ? "true" : null, onInput: this.onInput, onChange: this.onChange }), showClear && (h("button", { key: '4b26604a6c1ff8004afa6ef0964490ba82553d61', class: "clear", type: "button", "aria-label": "Limpar", onClick: this.clear }, h("svg", { key: '87195594cef1db73b86f1117233fdef13ee9fa1a', viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round" }, h("path", { key: '66be8eddf982847bf22f59f9113b66b4e47ca005', d: "M18 6 6 18M6 6l12 12" })))), h("span", { key: '749bf6ba578fd22b2d6c34b0fb7522f5a87a33e3', class: "affix" }, h("slot", { key: 'b226025774cedd33f915c6155061044b272d77a1', name: "suffix" })))));
31
31
  }
32
32
  static get is() { return "ui-input"; }
33
33
  static get encapsulation() { return "shadow"; }
@@ -1,7 +1,7 @@
1
1
  import { h, Host } from "@stencil/core";
2
2
  export class UiLabel {
3
3
  render() {
4
- return (h(Host, { key: '15695a208223a3270e49d72972a49c26fe3acd4d' }, h("label", { key: 'a6d0290c845797368e59fa936b80c8fee55dbcb1', class: "label" }, h("slot", { key: 'daae42c194f0c31d69a82bfad95a97b85cf2cdf2' }))));
4
+ return (h(Host, { key: '45a53d43b29ba78ac9852334536e9d7cb93e9c3c' }, h("label", { key: 'f8209140ec401f7a055d398181a421f281307a9b', class: "label" }, h("slot", { key: '50ba3bbce082e8f0c402c7acb3cd25ce822e3728' }))));
5
5
  }
6
6
  static get is() { return "ui-label"; }
7
7
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,36 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .navbar {
6
+ display: flex;
7
+ align-items: center;
8
+ justify-content: space-between;
9
+ gap: 1rem;
10
+ padding: 0.75rem 1.25rem;
11
+ background: var(--ui-panel-strong);
12
+ backdrop-filter: blur(22px);
13
+ border-bottom: 1px solid var(--ui-border);
14
+ font-family: var(--ui-font-sans);
15
+ color: var(--ui-text-soft);
16
+ }
17
+
18
+ .brand {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: 0.5rem;
22
+ font-weight: 600;
23
+ color: var(--ui-foreground);
24
+ }
25
+
26
+ .center {
27
+ display: flex;
28
+ align-items: center;
29
+ gap: 1rem;
30
+ }
31
+
32
+ .actions {
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 0.75rem;
36
+ }
@@ -0,0 +1,18 @@
1
+ import { h, Host } from "@stencil/core";
2
+ export class UiNavbar {
3
+ render() {
4
+ return (h(Host, { key: 'db6c3b0a7eee0812d931d4fb4c8b5ce444749b5e' }, h("nav", { key: '990bc62b051ca9f24ee5be4bf4e383873e5d8269', class: "navbar" }, h("div", { key: '999b46029fb0e0b6f5a04942d9326b30f7b0e392', class: "brand" }, h("slot", { key: '189a4521a16efdec4eee5c433b17a71028f05c90', name: "brand" })), h("div", { key: 'b3e129ad603ed6d32ec676aab96cf39e51834dec', class: "center" }, h("slot", { key: 'dc1fff1b9c536df2d88b5e92a83634d1e3bca384' })), h("div", { key: '854fac1322e96c7c67bf204af17ea665494c0fc5', class: "actions" }, h("slot", { key: '0f07b817547c866df0137f8667790b3caa65bea8', name: "actions" })))));
5
+ }
6
+ static get is() { return "ui-navbar"; }
7
+ static get encapsulation() { return "shadow"; }
8
+ static get originalStyleUrls() {
9
+ return {
10
+ "$": ["ui-navbar.css"]
11
+ };
12
+ }
13
+ static get styleUrls() {
14
+ return {
15
+ "$": ["ui-navbar.css"]
16
+ };
17
+ }
18
+ }
@@ -42,13 +42,13 @@ export class UiPagination {
42
42
  const total = Math.max(this.total, 1);
43
43
  const current = this.clamp(this.current);
44
44
  const entries = this.buildRange();
45
- return (h(Host, { key: '405a1c41db3850f25ffc14a053b12c0767809b1e' }, h("nav", { key: 'bd9baa3307cb5576ca81ab82653b44ccd4cb0385', class: "pagination", role: "navigation", "aria-label": "Pagina\u00E7\u00E3o" }, h("button", { key: '8efdfeb278037fabab6b82ba4083a7d23a00d612', class: "page nav", type: "button", "aria-label": "P\u00E1gina anterior", disabled: current <= 1, onClick: () => this.go(current - 1) }, "\u2039"), entries.map((entry, index) => {
45
+ return (h(Host, { key: '23be36b9c734a9c43e9644337a58e4ede719215d' }, h("nav", { key: '618c7c85d1ea8f93bdd058d7ba4e61a62991e2d6', class: "pagination", role: "navigation", "aria-label": "Pagina\u00E7\u00E3o" }, h("button", { key: 'a9c0cac9d2b2fb6c61e9627158efd08f1e20f597', class: "page nav", type: "button", "aria-label": "P\u00E1gina anterior", disabled: current <= 1, onClick: () => this.go(current - 1) }, "\u2039"), entries.map((entry, index) => {
46
46
  if (entry === "...") {
47
47
  return (h("span", { key: `ellipsis-${index}`, class: "ellipsis", "aria-hidden": "true" }, "\u2026"));
48
48
  }
49
49
  const active = entry === current;
50
50
  return (h("button", { key: entry, class: { page: true, active }, type: "button", "aria-label": `Página ${entry}`, "aria-current": active ? "page" : undefined, onClick: () => this.go(entry) }, entry));
51
- }), h("button", { key: '5ba13b9a59857423e65a4d10630eb66cc32c30fe', class: "page nav", type: "button", "aria-label": "Pr\u00F3xima p\u00E1gina", disabled: current >= total, onClick: () => this.go(current + 1) }, "\u203A"))));
51
+ }), h("button", { key: '38fb86bda60934768f24c117e8586acb35f88513', class: "page nav", type: "button", "aria-label": "Pr\u00F3xima p\u00E1gina", disabled: current >= total, onClick: () => this.go(current + 1) }, "\u203A"))));
52
52
  }
53
53
  static get is() { return "ui-pagination"; }
54
54
  static get encapsulation() { return "shadow"; }
@@ -73,7 +73,7 @@ export class UiPopover {
73
73
  this.cleanup = undefined;
74
74
  }
75
75
  render() {
76
- return (h(Host, { key: '61b4088ff4d61701a3466619274e60ac64fcc420' }, h("span", { key: 'd2d00f4dbf391ea1bc119870e399187d98634de6', class: "trigger", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick }, h("slot", { key: 'ece70edbdda096821de68295e55a3fba3caeada4', name: "trigger" })), h("div", { key: 'f30e5a570e49eb9c7056fd820bc57408dd78e013', class: { panel: true, "is-open": this.open }, ref: (el) => (this.floatingEl = el) }, h("slot", { key: '5823d3c7ed47946d812a2c34002fc5fd0cfc8a29' }))));
76
+ return (h(Host, { key: '005686226a579c5a9968f9b99bc177bfc523f4bc' }, h("span", { key: '3c43cbdfd37c6ec5243c94069fb3e417fb4fde8b', class: "trigger", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick }, h("slot", { key: 'bcc68719623c4035cb4b811d52d916c86b814657', name: "trigger" })), h("div", { key: '04865b639bcb5ba267d1ed3e0399f8b677c1befa', class: { panel: true, "is-open": this.open }, ref: (el) => (this.floatingEl = el) }, h("slot", { key: '2a518fa968650f9e844996b21d421f5e96834fbd' }))));
77
77
  }
78
78
  static get is() { return "ui-popover"; }
79
79
  static get encapsulation() { return "shadow"; }
@@ -19,7 +19,7 @@ export class UiProgress {
19
19
  }
20
20
  render() {
21
21
  const determinate = !this.isIndeterminate;
22
- return (h(Host, { key: '8f40e0e4a439959e1474d2952f0f891438fb3ecf', role: "progressbar", "aria-valuenow": determinate ? String(this.value) : undefined, "aria-valuemin": determinate ? "0" : undefined, "aria-valuemax": determinate ? String(this.max) : undefined }, h("div", { key: '9bfd7557efbfad05a8b170764b96935f00cbdaeb', class: "track" }, h("div", { key: '02205ac65e75f27f52869991b168c6397c8b2760', class: { indicator: true, indeterminate: this.isIndeterminate }, style: determinate ? { width: `${this.percent}%` } : undefined }))));
22
+ return (h(Host, { key: '0d53e528a9a2176e683310c375ff63a3785b7bc6', role: "progressbar", "aria-valuenow": determinate ? String(this.value) : undefined, "aria-valuemin": determinate ? "0" : undefined, "aria-valuemax": determinate ? String(this.max) : undefined }, h("div", { key: '5e7511d189ebc53dfffa6f9aabf0c6d110d2ba0f', class: "track" }, h("div", { key: '7d68e2e258c8d31a46815a66416853ea31af1b79', class: { indicator: true, indeterminate: this.isIndeterminate }, style: determinate ? { width: `${this.percent}%` } : undefined }))));
23
23
  }
24
24
  static get is() { return "ui-progress"; }
25
25
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,46 @@
1
+ :host {
2
+ display: inline-flex;
3
+ position: relative;
4
+ align-items: center;
5
+ justify-content: center;
6
+ }
7
+
8
+ .ring {
9
+ display: block;
10
+ }
11
+
12
+ .ring.indeterminate {
13
+ animation: ui-progress-circular-spin 1s linear infinite;
14
+ transform-origin: center;
15
+ }
16
+
17
+ .track {
18
+ fill: none;
19
+ stroke: var(--ui-chip);
20
+ }
21
+
22
+ .indicator {
23
+ fill: none;
24
+ stroke: var(--ui-accent);
25
+ transform: rotate(-90deg);
26
+ transform-origin: center;
27
+ transition: stroke-dashoffset var(--ui-duration) var(--ui-ease);
28
+ }
29
+
30
+ .value {
31
+ position: absolute;
32
+ inset: 0;
33
+ display: flex;
34
+ align-items: center;
35
+ justify-content: center;
36
+ font-family: var(--ui-font-sans);
37
+ font-size: 0.8rem;
38
+ font-weight: 600;
39
+ color: var(--ui-foreground);
40
+ }
41
+
42
+ @keyframes ui-progress-circular-spin {
43
+ to {
44
+ transform: rotate(360deg);
45
+ }
46
+ }
@@ -0,0 +1,171 @@
1
+ import { h, Host } from "@stencil/core";
2
+ export class UiProgressCircular {
3
+ constructor() {
4
+ /** Valor atual do progresso. `null` torna o componente indeterminado. */
5
+ this.value = null;
6
+ /** Valor máximo. */
7
+ this.max = 100;
8
+ /** Tamanho do anel (qualquer unidade CSS). */
9
+ this.size = "3rem";
10
+ /** Espessura do traço. */
11
+ this.strokeWidth = 4;
12
+ /** Força o estado indeterminado. */
13
+ this.indeterminate = false;
14
+ /** Exibe o percentual no centro quando determinado. */
15
+ this.showValue = false;
16
+ }
17
+ get isIndeterminate() {
18
+ return this.indeterminate || this.value === null;
19
+ }
20
+ get percent() {
21
+ if (this.value === null || this.max <= 0)
22
+ return 0;
23
+ const clamped = Math.min(Math.max(this.value, 0), this.max);
24
+ return clamped / this.max;
25
+ }
26
+ render() {
27
+ const determinate = !this.isIndeterminate;
28
+ const radius = 50 - this.strokeWidth;
29
+ const circumference = 2 * Math.PI * radius;
30
+ const dashoffset = determinate
31
+ ? circumference * (1 - this.percent)
32
+ : circumference * 0.75;
33
+ return (h(Host, { key: '4201e2e660c07a1b3d5ad6e2a464b3dc4075308a', role: "progressbar", "aria-valuenow": determinate ? String(this.value) : undefined, "aria-valuemin": determinate ? "0" : undefined, "aria-valuemax": determinate ? String(this.max) : undefined, style: { width: this.size, height: this.size } }, h("svg", { key: 'fe9226a711cbdd751baf6fd06e8acef3af63349e', class: { ring: true, indeterminate: this.isIndeterminate }, width: this.size, height: this.size, viewBox: "0 0 100 100" }, h("circle", { key: 'c7dc8282a2295ac97009f575bb7f116d54b0f917', class: "track", cx: "50", cy: "50", r: String(radius), "stroke-width": String(this.strokeWidth) }), h("circle", { key: '04f88283dde12b1e6c2206f7421fb4fa72c6d569', class: "indicator", cx: "50", cy: "50", r: String(radius), "stroke-width": String(this.strokeWidth), "stroke-linecap": "round", "stroke-dasharray": String(circumference), "stroke-dashoffset": String(dashoffset) })), this.showValue && determinate ? (h("div", { class: "value" }, Math.round(this.percent * 100), "%")) : null));
34
+ }
35
+ static get is() { return "ui-progress-circular"; }
36
+ static get encapsulation() { return "shadow"; }
37
+ static get originalStyleUrls() {
38
+ return {
39
+ "$": ["ui-progress-circular.css"]
40
+ };
41
+ }
42
+ static get styleUrls() {
43
+ return {
44
+ "$": ["ui-progress-circular.css"]
45
+ };
46
+ }
47
+ static get properties() {
48
+ return {
49
+ "value": {
50
+ "type": "number",
51
+ "mutable": false,
52
+ "complexType": {
53
+ "original": "number | null",
54
+ "resolved": "null | number",
55
+ "references": {}
56
+ },
57
+ "required": false,
58
+ "optional": false,
59
+ "docs": {
60
+ "tags": [],
61
+ "text": "Valor atual do progresso. `null` torna o componente indeterminado."
62
+ },
63
+ "getter": false,
64
+ "setter": false,
65
+ "reflect": false,
66
+ "attribute": "value",
67
+ "defaultValue": "null"
68
+ },
69
+ "max": {
70
+ "type": "number",
71
+ "mutable": false,
72
+ "complexType": {
73
+ "original": "number",
74
+ "resolved": "number",
75
+ "references": {}
76
+ },
77
+ "required": false,
78
+ "optional": false,
79
+ "docs": {
80
+ "tags": [],
81
+ "text": "Valor m\u00E1ximo."
82
+ },
83
+ "getter": false,
84
+ "setter": false,
85
+ "reflect": false,
86
+ "attribute": "max",
87
+ "defaultValue": "100"
88
+ },
89
+ "size": {
90
+ "type": "string",
91
+ "mutable": false,
92
+ "complexType": {
93
+ "original": "string",
94
+ "resolved": "string",
95
+ "references": {}
96
+ },
97
+ "required": false,
98
+ "optional": false,
99
+ "docs": {
100
+ "tags": [],
101
+ "text": "Tamanho do anel (qualquer unidade CSS)."
102
+ },
103
+ "getter": false,
104
+ "setter": false,
105
+ "reflect": false,
106
+ "attribute": "size",
107
+ "defaultValue": "\"3rem\""
108
+ },
109
+ "strokeWidth": {
110
+ "type": "number",
111
+ "mutable": false,
112
+ "complexType": {
113
+ "original": "number",
114
+ "resolved": "number",
115
+ "references": {}
116
+ },
117
+ "required": false,
118
+ "optional": false,
119
+ "docs": {
120
+ "tags": [],
121
+ "text": "Espessura do tra\u00E7o."
122
+ },
123
+ "getter": false,
124
+ "setter": false,
125
+ "reflect": false,
126
+ "attribute": "stroke-width",
127
+ "defaultValue": "4"
128
+ },
129
+ "indeterminate": {
130
+ "type": "boolean",
131
+ "mutable": false,
132
+ "complexType": {
133
+ "original": "boolean",
134
+ "resolved": "boolean",
135
+ "references": {}
136
+ },
137
+ "required": false,
138
+ "optional": false,
139
+ "docs": {
140
+ "tags": [],
141
+ "text": "For\u00E7a o estado indeterminado."
142
+ },
143
+ "getter": false,
144
+ "setter": false,
145
+ "reflect": false,
146
+ "attribute": "indeterminate",
147
+ "defaultValue": "false"
148
+ },
149
+ "showValue": {
150
+ "type": "boolean",
151
+ "mutable": false,
152
+ "complexType": {
153
+ "original": "boolean",
154
+ "resolved": "boolean",
155
+ "references": {}
156
+ },
157
+ "required": false,
158
+ "optional": false,
159
+ "docs": {
160
+ "tags": [],
161
+ "text": "Exibe o percentual no centro quando determinado."
162
+ },
163
+ "getter": false,
164
+ "setter": false,
165
+ "reflect": false,
166
+ "attribute": "show-value",
167
+ "defaultValue": "false"
168
+ }
169
+ };
170
+ }
171
+ }
@@ -31,7 +31,7 @@ export class UiRadioGroup {
31
31
  };
32
32
  }
33
33
  render() {
34
- return (h(Host, { key: '67c377ec552ea8cb6ea3d015bab1ee3d66ee436c' }, h("div", { key: 'aa52c74b8473ca06b762811a900d90cdfc8f7422', class: "group", role: "radiogroup" }, this.options.map((option, index) => {
34
+ return (h(Host, { key: 'f7265dce62bf0d590da4b9d8f8756f11991680fb' }, h("div", { key: 'ba70adcb04fae5ba2f78089ac95f8dfed4014efd', class: "group", role: "radiogroup" }, this.options.map((option, index) => {
35
35
  const selected = option.value === this.value;
36
36
  return (h("button", { class: "radio", type: "button", role: "radio", "aria-checked": selected ? "true" : "false", tabindex: selected || (!this.value && index === 0) ? "0" : "-1", disabled: this.disabled, onClick: () => this.select(option.value), onKeyDown: (event) => this.onKeyDown(event, index) }, h("span", { class: "indicator" }, h("span", { class: "dot" })), h("span", { class: "label" }, option.label)));
37
37
  }))));
@@ -0,0 +1,52 @@
1
+ :host {
2
+ display: inline-flex;
3
+ }
4
+
5
+ .rating {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ gap: 0.125rem;
9
+ }
10
+
11
+ .star {
12
+ width: 1.5rem;
13
+ height: 1.5rem;
14
+ padding: 0;
15
+ border: none;
16
+ background: none;
17
+ cursor: pointer;
18
+ color: var(--ui-border-strong);
19
+ transition: color var(--ui-duration) var(--ui-ease),
20
+ transform var(--ui-duration) var(--ui-ease);
21
+ }
22
+
23
+ .star svg {
24
+ display: block;
25
+ fill: none;
26
+ stroke: currentColor;
27
+ stroke-width: 1.5;
28
+ }
29
+
30
+ .star.filled {
31
+ color: var(--ui-warning);
32
+ }
33
+
34
+ .star.filled svg {
35
+ fill: currentColor;
36
+ stroke: currentColor;
37
+ }
38
+
39
+ .star:not(.readonly):hover {
40
+ transform: scale(1.15);
41
+ }
42
+
43
+ .star:focus-visible {
44
+ outline: none;
45
+ border-radius: var(--ui-radius);
46
+ box-shadow: 0 0 0 2px var(--ui-ring);
47
+ }
48
+
49
+ .star.readonly {
50
+ pointer-events: none;
51
+ cursor: default;
52
+ }