@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,176 @@
1
+ :host {
2
+ display: inline-block;
3
+ font-family: var(--ui-font-sans);
4
+ }
5
+
6
+ .field {
7
+ display: inline-flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ gap: 0.5rem;
11
+ width: 100%;
12
+ min-width: 12rem;
13
+ height: 2.75rem;
14
+ padding: 0 0.875rem;
15
+ border: 1px solid var(--ui-border);
16
+ border-radius: var(--ui-radius-sm);
17
+ background: var(--ui-panel);
18
+ color: var(--ui-foreground);
19
+ font-family: var(--ui-font-sans);
20
+ font-size: 0.875rem;
21
+ text-align: left;
22
+ cursor: pointer;
23
+ backdrop-filter: blur(22px);
24
+ transition: all var(--ui-duration) var(--ui-ease);
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ .field:hover {
29
+ border-color: var(--ui-border-strong);
30
+ }
31
+
32
+ .field:focus-visible {
33
+ outline: none;
34
+ border-color: var(--ui-accent);
35
+ box-shadow: 0 0 0 2px var(--ui-ring);
36
+ }
37
+
38
+ .label {
39
+ flex: 1;
40
+ min-width: 0;
41
+ overflow: hidden;
42
+ text-overflow: ellipsis;
43
+ white-space: nowrap;
44
+ color: var(--ui-foreground);
45
+ }
46
+
47
+ .label.placeholder {
48
+ color: var(--ui-text-faint);
49
+ }
50
+
51
+ .icon {
52
+ flex: none;
53
+ color: var(--ui-text-muted);
54
+ }
55
+
56
+ .calendar {
57
+ position: fixed;
58
+ top: 0;
59
+ left: 0;
60
+ z-index: 50;
61
+ width: 17rem;
62
+ max-width: calc(100vw - 1rem);
63
+ padding: 1rem;
64
+ font-family: var(--ui-font-sans);
65
+ color: var(--ui-foreground);
66
+ border: 1px solid var(--ui-border);
67
+ background: var(--ui-panel-strong);
68
+ box-shadow: var(--ui-shadow-lg);
69
+ backdrop-filter: blur(22px);
70
+ border-radius: var(--ui-radius);
71
+ visibility: hidden;
72
+ opacity: 0;
73
+ transform: scale(0.96);
74
+ transition:
75
+ opacity var(--ui-duration) var(--ui-ease),
76
+ transform var(--ui-duration) var(--ui-ease);
77
+ }
78
+
79
+ .calendar.is-open {
80
+ visibility: visible;
81
+ opacity: 1;
82
+ transform: scale(1);
83
+ }
84
+
85
+ .header {
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: space-between;
89
+ margin-bottom: 0.75rem;
90
+ }
91
+
92
+ .month-label {
93
+ font-size: 0.875rem;
94
+ font-weight: 600;
95
+ text-transform: capitalize;
96
+ color: var(--ui-foreground);
97
+ }
98
+
99
+ .nav {
100
+ display: inline-flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ flex: none;
104
+ width: 2rem;
105
+ height: 2rem;
106
+ padding: 0;
107
+ border: none;
108
+ border-radius: var(--ui-radius-full);
109
+ background: transparent;
110
+ color: var(--ui-text-soft);
111
+ cursor: pointer;
112
+ transition: all var(--ui-duration) var(--ui-ease);
113
+ }
114
+
115
+ .nav:hover {
116
+ background: var(--ui-chip);
117
+ color: var(--ui-foreground);
118
+ }
119
+
120
+ .weekdays {
121
+ display: grid;
122
+ grid-template-columns: repeat(7, 1fr);
123
+ margin-bottom: 0.25rem;
124
+ }
125
+
126
+ .weekday {
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ height: 1.75rem;
131
+ font-size: 0.7rem;
132
+ color: var(--ui-text-faint);
133
+ }
134
+
135
+ .grid {
136
+ display: grid;
137
+ grid-template-columns: repeat(7, 1fr);
138
+ gap: 0.125rem;
139
+ justify-items: center;
140
+ }
141
+
142
+ .day {
143
+ display: inline-flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ width: 2rem;
147
+ height: 2rem;
148
+ padding: 0;
149
+ border: 1px solid transparent;
150
+ border-radius: var(--ui-radius-full);
151
+ background: transparent;
152
+ color: var(--ui-foreground);
153
+ font-family: var(--ui-font-sans);
154
+ font-size: 0.8125rem;
155
+ cursor: pointer;
156
+ transition: all var(--ui-duration) var(--ui-ease);
157
+ }
158
+
159
+ .day.empty {
160
+ cursor: default;
161
+ pointer-events: none;
162
+ }
163
+
164
+ .day:hover:not(.empty):not(.selected) {
165
+ background: var(--ui-chip);
166
+ }
167
+
168
+ .day.today {
169
+ border-color: var(--ui-accent);
170
+ }
171
+
172
+ .day.selected {
173
+ background: var(--ui-accent);
174
+ color: var(--ui-accent-contrast);
175
+ border-color: transparent;
176
+ }
@@ -0,0 +1,243 @@
1
+ import { h, Host, } from "@stencil/core";
2
+ import { computePosition, autoUpdate, offset, flip, shift, } from "@floating-ui/dom";
3
+ const WEEKDAYS = ["D", "S", "T", "Q", "Q", "S", "S"];
4
+ export class UiDatePicker {
5
+ constructor() {
6
+ /** Data selecionada no formato ISO "YYYY-MM-DD". */
7
+ this.value = "";
8
+ /** Texto exibido quando nenhuma data está selecionada. */
9
+ this.placeholder = "Selecione a data";
10
+ /** Controla a visibilidade do calendário. */
11
+ this.open = false;
12
+ this.onTriggerClick = (event) => {
13
+ event.stopPropagation();
14
+ this.setOpen(!this.open);
15
+ };
16
+ this.onDocumentClick = (event) => {
17
+ if (!this.open)
18
+ return;
19
+ if (event.composedPath().includes(this.host))
20
+ return;
21
+ this.setOpen(false);
22
+ };
23
+ this.onKeydown = (event) => {
24
+ if (event.key === "Escape" && this.open)
25
+ this.setOpen(false);
26
+ };
27
+ this.prevMonth = (event) => {
28
+ event.stopPropagation();
29
+ if (this.viewMonth === 0) {
30
+ this.viewMonth = 11;
31
+ this.viewYear -= 1;
32
+ }
33
+ else {
34
+ this.viewMonth -= 1;
35
+ }
36
+ };
37
+ this.nextMonth = (event) => {
38
+ event.stopPropagation();
39
+ if (this.viewMonth === 11) {
40
+ this.viewMonth = 0;
41
+ this.viewYear += 1;
42
+ }
43
+ else {
44
+ this.viewMonth += 1;
45
+ }
46
+ };
47
+ }
48
+ componentWillLoad() {
49
+ this.syncViewFromValue();
50
+ }
51
+ onValueChange() {
52
+ this.syncViewFromValue();
53
+ }
54
+ disconnectedCallback() {
55
+ this.stop();
56
+ document.removeEventListener("click", this.onDocumentClick);
57
+ document.removeEventListener("keydown", this.onKeydown);
58
+ }
59
+ syncViewFromValue() {
60
+ const parsed = this.parseValue(this.value);
61
+ const base = parsed ?? new Date();
62
+ this.viewYear = base.getFullYear();
63
+ this.viewMonth = base.getMonth();
64
+ }
65
+ /** Converte o ISO em Date local, evitando shift de fuso. */
66
+ parseValue(value) {
67
+ if (!value)
68
+ return null;
69
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(value);
70
+ if (!match)
71
+ return null;
72
+ const [, y, m, d] = match;
73
+ return new Date(Number(y), Number(m) - 1, Number(d));
74
+ }
75
+ /** Gera o ISO "YYYY-MM-DD" a partir de componentes locais. */
76
+ toISO(year, month, day) {
77
+ const mm = String(month + 1).padStart(2, "0");
78
+ const dd = String(day).padStart(2, "0");
79
+ return `${year}-${mm}-${dd}`;
80
+ }
81
+ formatValue() {
82
+ const parsed = this.parseValue(this.value);
83
+ return parsed ? parsed.toLocaleDateString("pt-BR") : "";
84
+ }
85
+ monthLabel() {
86
+ return new Date(this.viewYear, this.viewMonth, 1).toLocaleDateString("pt-BR", { month: "long", year: "numeric" });
87
+ }
88
+ setOpen(value) {
89
+ if (this.open === value)
90
+ return;
91
+ this.open = value;
92
+ if (value) {
93
+ this.syncViewFromValue();
94
+ requestAnimationFrame(() => this.start());
95
+ document.addEventListener("click", this.onDocumentClick);
96
+ document.addEventListener("keydown", this.onKeydown);
97
+ }
98
+ else {
99
+ this.stop();
100
+ document.removeEventListener("click", this.onDocumentClick);
101
+ document.removeEventListener("keydown", this.onKeydown);
102
+ }
103
+ }
104
+ start() {
105
+ if (!this.triggerEl || !this.floatingEl)
106
+ return;
107
+ this.stop();
108
+ this.cleanup = autoUpdate(this.triggerEl, this.floatingEl, () => {
109
+ if (!this.triggerEl || !this.floatingEl)
110
+ return;
111
+ computePosition(this.triggerEl, this.floatingEl, {
112
+ placement: "bottom-start",
113
+ middleware: [offset(6), flip(), shift({ padding: 8 })],
114
+ }).then(({ x, y }) => {
115
+ Object.assign(this.floatingEl.style, { left: `${x}px`, top: `${y}px` });
116
+ });
117
+ });
118
+ }
119
+ stop() {
120
+ this.cleanup?.();
121
+ this.cleanup = undefined;
122
+ }
123
+ selectDay(day) {
124
+ this.value = this.toISO(this.viewYear, this.viewMonth, day);
125
+ this.setOpen(false);
126
+ this.uiChange.emit(this.value);
127
+ }
128
+ buildDays() {
129
+ const firstWeekday = new Date(this.viewYear, this.viewMonth, 1).getDay();
130
+ const daysInMonth = new Date(this.viewYear, this.viewMonth + 1, 0).getDate();
131
+ const leading = Array.from({ length: firstWeekday }, () => 0);
132
+ const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);
133
+ return [...leading, ...days];
134
+ }
135
+ isToday(day) {
136
+ const now = new Date();
137
+ return (day === now.getDate() &&
138
+ this.viewMonth === now.getMonth() &&
139
+ this.viewYear === now.getFullYear());
140
+ }
141
+ isSelected(day) {
142
+ return this.value === this.toISO(this.viewYear, this.viewMonth, day);
143
+ }
144
+ render() {
145
+ const display = this.formatValue();
146
+ return (h(Host, { key: '4ba4b256b16f49d1e65ffbe774c50065f097482f' }, h("button", { key: '0fa06810a3533cafcc808e680f61c3f289148ec5', type: "button", class: "field", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick, "aria-haspopup": "dialog", "aria-expanded": this.open ? "true" : "false" }, h("span", { key: 'fd6c3f01d8ba6212284b70c8830a007fc6dc4fcb', class: { label: true, placeholder: !display } }, display || this.placeholder), h("svg", { key: 'aebef2e4b5928db3fdd0eee7754d6d7c430459d4', class: "icon", viewBox: "0 0 24 24", width: "18", height: "18", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: '8a87dd6a1230546145cd0d6626309c4c3835d379', x: "3", y: "4", width: "18", height: "18", rx: "2" }), h("path", { key: 'e3bca802e11ff11bbbd767c92233843a2b767e78', d: "M16 2v4M8 2v4M3 10h18" }))), h("div", { key: '1a8d439b816c7dcf0789e26788aee838e311b087', class: { calendar: true, "is-open": this.open }, role: "dialog", ref: (el) => (this.floatingEl = el) }, h("div", { key: '82d98e286b405ddfd12cc65cffe26b14ace1a31c', class: "header" }, h("button", { key: '6a01a9a3458d3e7b1dfc5ff153266106b9242511', type: "button", class: "nav", "aria-label": "M\u00EAs anterior", onClick: this.prevMonth }, h("svg", { key: 'cea0c6c7aecdf96eb2b4e42bf1b559fe7ea6e443', viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: '54d095e51205b3df5f52af6d2d28f89f2dd4db5c', d: "m15 18-6-6 6-6" }))), h("span", { key: '2dd822f49aa7f8bb419079a0c47f29bbfb7a22c4', class: "month-label" }, this.monthLabel()), h("button", { key: '553659e9903e96b84dcecbc86270d915dcd947f5', type: "button", class: "nav", "aria-label": "Pr\u00F3ximo m\u00EAs", onClick: this.nextMonth }, h("svg", { key: 'a73cdb32bedad0004a1d84b44e7866e008864fd8', viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { key: 'dac9e5c1fc22d2eefc73046269246ae07af53037', d: "m9 18 6-6-6-6" })))), h("div", { key: 'e731ae7eab8fee747826a58634cad540a60317a5', class: "weekdays" }, WEEKDAYS.map((label) => (h("span", { class: "weekday" }, label)))), h("div", { key: '4aa9f208fb5b20b3b35ae14f27d435918db3f380', class: "grid" }, this.buildDays().map((day) => day === 0 ? (h("span", { class: "day empty" })) : (h("button", { type: "button", class: {
147
+ day: true,
148
+ today: this.isToday(day),
149
+ selected: this.isSelected(day),
150
+ }, onClick: (event) => {
151
+ event.stopPropagation();
152
+ this.selectDay(day);
153
+ } }, day)))))));
154
+ }
155
+ static get is() { return "ui-date-picker"; }
156
+ static get encapsulation() { return "shadow"; }
157
+ static get originalStyleUrls() {
158
+ return {
159
+ "$": ["ui-date-picker.css"]
160
+ };
161
+ }
162
+ static get styleUrls() {
163
+ return {
164
+ "$": ["ui-date-picker.css"]
165
+ };
166
+ }
167
+ static get properties() {
168
+ return {
169
+ "value": {
170
+ "type": "string",
171
+ "mutable": true,
172
+ "complexType": {
173
+ "original": "string",
174
+ "resolved": "string",
175
+ "references": {}
176
+ },
177
+ "required": false,
178
+ "optional": false,
179
+ "docs": {
180
+ "tags": [],
181
+ "text": "Data selecionada no formato ISO \"YYYY-MM-DD\"."
182
+ },
183
+ "getter": false,
184
+ "setter": false,
185
+ "reflect": false,
186
+ "attribute": "value",
187
+ "defaultValue": "\"\""
188
+ },
189
+ "placeholder": {
190
+ "type": "string",
191
+ "mutable": false,
192
+ "complexType": {
193
+ "original": "string",
194
+ "resolved": "string",
195
+ "references": {}
196
+ },
197
+ "required": false,
198
+ "optional": false,
199
+ "docs": {
200
+ "tags": [],
201
+ "text": "Texto exibido quando nenhuma data est\u00E1 selecionada."
202
+ },
203
+ "getter": false,
204
+ "setter": false,
205
+ "reflect": false,
206
+ "attribute": "placeholder",
207
+ "defaultValue": "\"Selecione a data\""
208
+ }
209
+ };
210
+ }
211
+ static get states() {
212
+ return {
213
+ "open": {},
214
+ "viewYear": {},
215
+ "viewMonth": {}
216
+ };
217
+ }
218
+ static get events() {
219
+ return [{
220
+ "method": "uiChange",
221
+ "name": "uiChange",
222
+ "bubbles": true,
223
+ "cancelable": true,
224
+ "composed": true,
225
+ "docs": {
226
+ "tags": [],
227
+ "text": "Emitido ao selecionar uma data (ISO \"YYYY-MM-DD\")."
228
+ },
229
+ "complexType": {
230
+ "original": "string",
231
+ "resolved": "string",
232
+ "references": {}
233
+ }
234
+ }];
235
+ }
236
+ static get elementRef() { return "host"; }
237
+ static get watchers() {
238
+ return [{
239
+ "propName": "value",
240
+ "methodName": "onValueChange"
241
+ }];
242
+ }
243
+ }
@@ -37,7 +37,7 @@ export class UiDialog {
37
37
  this.open = false;
38
38
  }
39
39
  render() {
40
- return (h(Host, { key: 'e6c34700dc04fd3754eedeab279a67cd3997fb3d' }, h("dialog", { key: 'fdb23f89bd4b9aef79abaec586bf39add47ce013', class: "dialog", ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: '8a86f47c263d4fac68debdcef9cc8ed7e0be7ca8', class: "content" }, h("slot", { key: 'fe9d9105c13670104b5a60c939f9256b44694e8e' })))));
40
+ return (h(Host, { key: 'f0ba1e147438e9941bd748b84cca800b93e0058a' }, h("dialog", { key: '54a38db84cc2bcd5064401499c8cbc48f9355021', class: "dialog", ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: '658cf9b13efe14c8db0c02b14b6ace5686ca686a', class: "content" }, h("slot", { key: '00cc3a3657049aabb7c80dfdefba059a5767da78' })))));
41
41
  }
42
42
  static get is() { return "ui-dialog"; }
43
43
  static get encapsulation() { return "shadow"; }
@@ -39,7 +39,7 @@ export class UiDrawer {
39
39
  this.open = false;
40
40
  }
41
41
  render() {
42
- return (h(Host, { key: '5d44e7d604eab21d2d30d5cbaaa225658c8e7e71' }, h("dialog", { key: 'ecdfc2057a8864f6b8dc961ddcd51c3f349b2b54', class: `drawer side-${this.side}`, ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: 'c14965ebb97a2c77d06c4a50466d00bf4036bafa', class: "content" }, h("slot", { key: '2bdbb4cbd2cd30ade870090c5383d398cfb6772b' })))));
42
+ return (h(Host, { key: '92e328d6068d3e183463e06897b9dc16e36c3be7' }, h("dialog", { key: 'd18eb940d959341831da313ee342f21f181aacfc', class: `drawer side-${this.side}`, ref: (el) => (this.dialogEl = el), onClose: this.onClose, onCancel: this.onClose, onClick: this.onBackdropClick }, h("div", { key: '9edf182db03b796ef944fbd4340d1d31db8b5321', class: "content" }, h("slot", { key: '34a67441244720ee301b9f4c2b871889a2a87d0b' })))));
43
43
  }
44
44
  static get is() { return "ui-drawer"; }
45
45
  static get encapsulation() { return "shadow"; }
@@ -11,7 +11,7 @@ export class UiDropdownItem {
11
11
  };
12
12
  }
13
13
  render() {
14
- return (h(Host, { key: 'a73d394ff94b232151c37e749d398f4485f46bde' }, h("button", { key: '3827857b88fc5d63681e80dc2cc470b58faf69e1', type: "button", class: "item", role: "menuitem", disabled: this.disabled, onClick: this.onClick }, h("slot", { key: 'a6dbd79c7b171ef6a8a53aa5da39fbca37725e1c' }))));
14
+ return (h(Host, { key: '46fe995e0d6496002cb4ffda00e444731f195805' }, h("button", { key: '5938fcad75c81029a321bdce5c1b2c98cb4cb6a2', type: "button", class: "item", role: "menuitem", disabled: this.disabled, onClick: this.onClick }, h("slot", { key: '32227bb1f298ab6ba3d97d1bae86b6ce713703b8' }))));
15
15
  }
16
16
  static get is() { return "ui-dropdown-item"; }
17
17
  static get encapsulation() { return "shadow"; }
@@ -76,7 +76,7 @@ export class UiDropdownMenu {
76
76
  this.cleanup = undefined;
77
77
  }
78
78
  render() {
79
- return (h(Host, { key: '6d1ac3cd9096527745a84f24443a3b230bf2aaf0' }, h("span", { key: '5594e37030b1fd69260b4de30393aacfbc636ca3', class: "trigger", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick }, h("slot", { key: '763b6bf28fe4c79a13a2cc5a620d19e51ae5f6e2', name: "trigger" })), h("div", { key: '0bec01181593abbcb1a8634eb027ce0cef0d860d', class: { menu: true, "is-open": this.open }, role: "menu", ref: (el) => (this.floatingEl = el) }, h("slot", { key: '1b1fa528fc1186c81dd433d0cb9b775df8357641' }))));
79
+ return (h(Host, { key: '3224e4bac8bcfeda15aa6a5411a95574795231a8' }, h("span", { key: '5f0c50e0cb28c349469be5971ac0622f05d8dd19', class: "trigger", ref: (el) => (this.triggerEl = el), onClick: this.onTriggerClick }, h("slot", { key: '616a2917a7377d00414c8fe9745ef6c1297841fa', name: "trigger" })), h("div", { key: 'efa36b327e9ba6a89b939170c296a69ffbe18e90', class: { menu: true, "is-open": this.open }, role: "menu", ref: (el) => (this.floatingEl = el) }, h("slot", { key: 'aaffbbb6b8fe37072c8344d95a902dcb667416ba' }))));
80
80
  }
81
81
  static get is() { return "ui-dropdown-menu"; }
82
82
  static get encapsulation() { return "shadow"; }
@@ -5,7 +5,7 @@ export class UiField {
5
5
  this.required = false;
6
6
  }
7
7
  render() {
8
- return (h(Host, { key: '1910a6ce3a389ab7faa9e3b46e0397e6a9bfbaab' }, h("div", { key: 'fb76fb030b9af9129578f7b2f0b85eaffefc8d67', class: "field" }, this.label && (h("label", { key: '659a7c0982360c133891a1a22a98cdae32a529ed', class: "label", htmlFor: this.fieldId }, this.label, this.required && (h("span", { key: 'de93f19b8a2dd063df1175c00c68c0b7c9b092d6', class: "required", "aria-hidden": "true" }, " *")))), h("slot", { key: 'a510f107aab90a202c178f1d22727689db828fdc' }), this.error ? (h("p", { class: "error", role: "alert" }, this.error)) : (this.description && h("p", { class: "description" }, this.description)))));
8
+ return (h(Host, { key: 'f39f480b04be85c60eaa8821358b8921d52a7801' }, h("div", { key: '22303a73ad07ca344ef29c25947443e4d43e95fb', class: "field" }, this.label && (h("label", { key: 'bf355b9c884ee0393c91f4d3cdaa38ab6d0132dc', class: "label", htmlFor: this.fieldId }, this.label, this.required && (h("span", { key: '94614ebcee5a68e180e135f5294370e272836b90', class: "required", "aria-hidden": "true" }, " *")))), h("slot", { key: '7d4b22b2741540aac3b017b882f9abfdb67c7492' }), this.error ? (h("p", { class: "error", role: "alert" }, this.error)) : (this.description && h("p", { class: "description" }, this.description)))));
9
9
  }
10
10
  static get is() { return "ui-field"; }
11
11
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,79 @@
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .dropzone {
6
+ display: flex;
7
+ flex-direction: column;
8
+ align-items: center;
9
+ justify-content: center;
10
+ gap: 0.5rem;
11
+ width: 100%;
12
+ padding: 1.5rem;
13
+ border: 2px dashed var(--ui-border-strong);
14
+ border-radius: var(--ui-radius-lg);
15
+ background: transparent;
16
+ font-family: var(--ui-font-sans);
17
+ cursor: pointer;
18
+ transition: background var(--ui-duration) var(--ui-ease),
19
+ border-color var(--ui-duration) var(--ui-ease);
20
+ }
21
+
22
+ .dropzone:hover,
23
+ .dropzone.dragging {
24
+ background: var(--ui-chip);
25
+ }
26
+
27
+ .dropzone:focus-visible {
28
+ outline: none;
29
+ box-shadow: 0 0 0 2px var(--ui-ring);
30
+ }
31
+
32
+ .icon {
33
+ color: var(--ui-text-soft);
34
+ }
35
+
36
+ .label {
37
+ font-size: 0.875rem;
38
+ color: var(--ui-text-muted);
39
+ }
40
+
41
+ .hint {
42
+ font-size: 0.75rem;
43
+ color: var(--ui-text-faint);
44
+ }
45
+
46
+ .files {
47
+ list-style: none;
48
+ margin: 0.75rem 0 0;
49
+ padding: 0;
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: 0.375rem;
53
+ }
54
+
55
+ .file {
56
+ display: flex;
57
+ align-items: center;
58
+ justify-content: space-between;
59
+ gap: 0.75rem;
60
+ padding: 0.5rem 0.75rem;
61
+ border: 1px solid var(--ui-border);
62
+ border-radius: var(--ui-radius);
63
+ background: var(--ui-panel);
64
+ font-family: var(--ui-font-sans);
65
+ }
66
+
67
+ .file-name {
68
+ font-size: 0.875rem;
69
+ color: var(--ui-foreground);
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ }
74
+
75
+ .file-size {
76
+ flex-shrink: 0;
77
+ font-size: 0.75rem;
78
+ color: var(--ui-text-muted);
79
+ }