@ponti-studios/ui 2.0.1 → 3.0.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 (319) hide show
  1. package/README.md +36 -3
  2. package/dist/auth/index.d.ts +3 -0
  3. package/dist/auth/index.js +3 -0
  4. package/dist/components/data-display/accordion.d.ts +10 -0
  5. package/dist/components/data-display/accordion.js +53 -0
  6. package/{src/components/data-display/index.ts → dist/components/data-display/index.d.ts} +1 -10
  7. package/dist/components/data-display/index.js +8 -0
  8. package/dist/components/data-display/metric-card.d.ts +9 -0
  9. package/dist/components/data-display/metric-card.js +25 -0
  10. package/dist/components/data-display/sort-controls.d.ts +13 -0
  11. package/dist/components/data-display/sort-controls.js +57 -0
  12. package/dist/components/data-display/sort-row.d.ts +10 -0
  13. package/dist/components/data-display/sort-row.js +52 -0
  14. package/dist/components/data-display/table.d.ts +10 -0
  15. package/dist/components/data-display/table.js +57 -0
  16. package/dist/components/feedback/alert.d.ts +9 -0
  17. package/dist/components/feedback/alert.js +38 -0
  18. package/dist/components/feedback/empty-state.d.ts +18 -0
  19. package/dist/components/feedback/empty-state.js +36 -0
  20. package/{src/components/feedback/index.ts → dist/components/feedback/index.d.ts} +2 -0
  21. package/dist/components/feedback/index.js +7 -0
  22. package/dist/components/feedback/progress.d.ts +6 -0
  23. package/dist/components/feedback/progress.js +25 -0
  24. package/dist/components/feedback/skeleton.d.ts +2 -0
  25. package/dist/components/feedback/skeleton.js +11 -0
  26. package/dist/components/feedback/spinner.d.ts +14 -0
  27. package/dist/components/feedback/spinner.js +27 -0
  28. package/dist/components/feedback/update-guard.d.ts +13 -0
  29. package/dist/components/feedback/update-guard.js +38 -0
  30. package/dist/components/filters/active-filters-bar.d.ts +14 -0
  31. package/dist/components/filters/active-filters-bar.js +44 -0
  32. package/dist/components/filters/filter-chip.d.ts +11 -0
  33. package/dist/components/filters/filter-chip.js +33 -0
  34. package/dist/components/filters/filter-select.d.ts +17 -0
  35. package/dist/components/filters/filter-select.js +46 -0
  36. package/dist/components/filters/index.js +4 -0
  37. package/dist/components/forms/checkbox.d.ts +4 -0
  38. package/dist/components/forms/checkbox.js +24 -0
  39. package/dist/components/forms/date-month-select.d.ts +11 -0
  40. package/dist/components/forms/date-month-select.js +47 -0
  41. package/dist/components/forms/date-picker.d.ts +60 -0
  42. package/dist/components/forms/date-picker.js +193 -0
  43. package/dist/components/forms/date-utils.d.ts +14 -0
  44. package/dist/components/forms/date-utils.js +18 -0
  45. package/dist/components/forms/drop-zone.d.ts +42 -0
  46. package/dist/components/forms/drop-zone.js +184 -0
  47. package/{src/components/forms/index.ts → dist/components/forms/index.d.ts} +3 -9
  48. package/dist/components/forms/index.js +17 -0
  49. package/dist/components/forms/input.d.ts +3 -0
  50. package/dist/components/forms/input.js +15 -0
  51. package/dist/components/forms/label.d.ts +3 -0
  52. package/dist/components/forms/label.js +14 -0
  53. package/dist/components/forms/passkey-management.d.ts +14 -0
  54. package/dist/components/forms/passkey-management.js +132 -0
  55. package/dist/components/forms/radio-group.d.ts +6 -0
  56. package/dist/components/forms/radio-group.js +28 -0
  57. package/dist/components/forms/select.d.ts +18 -0
  58. package/dist/components/forms/select.js +103 -0
  59. package/dist/components/forms/slider.d.ts +9 -0
  60. package/dist/components/forms/slider.js +25 -0
  61. package/dist/components/forms/stepper.d.ts +15 -0
  62. package/dist/components/forms/stepper.js +41 -0
  63. package/dist/components/forms/switch.d.ts +6 -0
  64. package/dist/components/forms/switch.js +21 -0
  65. package/dist/components/forms/text-field.d.ts +15 -0
  66. package/dist/components/forms/text-field.js +46 -0
  67. package/dist/components/forms/text-field.types.d.ts +8 -0
  68. package/dist/components/forms/textarea.d.ts +3 -0
  69. package/dist/components/forms/textarea.js +14 -0
  70. package/dist/components/layout/index.js +5 -0
  71. package/dist/components/layout/particle-background.d.ts +19 -0
  72. package/dist/components/layout/particle-background.js +171 -0
  73. package/dist/components/layout/scroll-area.d.ts +9 -0
  74. package/dist/components/layout/scroll-area.js +35 -0
  75. package/dist/components/layout/section-intro.d.ts +12 -0
  76. package/dist/components/layout/section-intro.js +28 -0
  77. package/dist/components/layout/surface-panel.d.ts +7 -0
  78. package/dist/components/layout/surface-panel.js +11 -0
  79. package/dist/components/navigation/app-navigation.d.ts +67 -0
  80. package/dist/components/navigation/app-navigation.js +106 -0
  81. package/{src/components/navigation/index.ts → dist/components/navigation/index.d.ts} +1 -7
  82. package/dist/components/navigation/index.js +4 -0
  83. package/dist/components/navigation/pagination-controls.d.ts +7 -0
  84. package/dist/components/navigation/pagination-controls.js +50 -0
  85. package/dist/components/navigation/tabs.d.ts +7 -0
  86. package/dist/components/navigation/tabs.js +35 -0
  87. package/dist/components/overlays/bottom-sheet.d.ts +20 -0
  88. package/dist/components/overlays/bottom-sheet.js +101 -0
  89. package/dist/components/overlays/command.d.ts +29 -0
  90. package/dist/components/overlays/command.js +123 -0
  91. package/dist/components/overlays/dialog.d.ts +30 -0
  92. package/dist/components/overlays/dialog.js +105 -0
  93. package/dist/components/overlays/dropdown-menu.d.ts +29 -0
  94. package/dist/components/overlays/dropdown-menu.js +128 -0
  95. package/dist/components/overlays/index.d.ts +7 -0
  96. package/dist/components/overlays/index.js +8 -0
  97. package/dist/components/overlays/popover.d.ts +14 -0
  98. package/dist/components/overlays/popover.js +56 -0
  99. package/dist/components/overlays/sheet.d.ts +27 -0
  100. package/dist/components/overlays/sheet.js +81 -0
  101. package/dist/components/overlays/tooltip.d.ts +10 -0
  102. package/dist/components/overlays/tooltip.js +23 -0
  103. package/dist/components/primitives/avatar.d.ts +14 -0
  104. package/dist/components/primitives/avatar.js +72 -0
  105. package/dist/components/primitives/badge.d.ts +7 -0
  106. package/dist/components/primitives/badge.js +27 -0
  107. package/dist/components/primitives/button.d.ts +13 -0
  108. package/dist/components/primitives/button.js +113 -0
  109. package/{src/components/primitives/button.types.ts → dist/components/primitives/button.types.d.ts} +4 -6
  110. package/dist/components/primitives/card.d.ts +9 -0
  111. package/dist/components/primitives/card.js +56 -0
  112. package/{src/components/primitives/index.ts → dist/components/primitives/index.d.ts} +1 -9
  113. package/dist/components/primitives/index.js +7 -0
  114. package/dist/components/primitives/segmented-control.d.ts +20 -0
  115. package/dist/components/primitives/segmented-control.js +27 -0
  116. package/dist/components/primitives/separator.d.ts +4 -0
  117. package/dist/components/primitives/separator.js +16 -0
  118. package/dist/constants/chart-colors.d.ts +33 -0
  119. package/dist/constants/chart-colors.js +31 -0
  120. package/dist/hooks/index.js +9 -0
  121. package/{src/hooks/sort.types.ts → dist/hooks/sort.types.d.ts} +2 -4
  122. package/dist/hooks/use-api-client.d.ts +30 -0
  123. package/dist/hooks/use-api-client.js +106 -0
  124. package/dist/hooks/use-debounced-value.d.ts +1 -0
  125. package/dist/hooks/use-debounced-value.js +12 -0
  126. package/dist/hooks/use-derived-filter-state.d.ts +20 -0
  127. package/dist/hooks/use-derived-filter-state.js +39 -0
  128. package/dist/hooks/use-filter-state.d.ts +12 -0
  129. package/dist/hooks/use-filter-state.js +37 -0
  130. package/dist/hooks/use-media-query.d.ts +6 -0
  131. package/dist/hooks/use-media-query.js +27 -0
  132. package/dist/hooks/use-mobile.d.ts +1 -0
  133. package/dist/hooks/use-mobile.js +14 -0
  134. package/dist/hooks/use-sort.d.ts +11 -0
  135. package/dist/hooks/use-sort.js +14 -0
  136. package/{src/index.ts → dist/index.d.ts} +4 -32
  137. package/dist/index.js +15 -0
  138. package/dist/integrations/service-worker.d.ts +2 -0
  139. package/dist/integrations/service-worker.js +2 -0
  140. package/dist/lib/auth.d.ts +2 -0
  141. package/dist/lib/auth.js +7 -0
  142. package/dist/lib/clipboard.d.ts +1 -0
  143. package/dist/lib/clipboard.js +10 -0
  144. package/dist/lib/index.js +4 -0
  145. package/{src/lib/slot.tsx → dist/lib/slot.d.ts} +2 -15
  146. package/dist/lib/slot.js +14 -0
  147. package/dist/lib/utils.d.ts +2 -0
  148. package/dist/lib/utils.js +8 -0
  149. package/dist/native/components.d.ts +41 -0
  150. package/dist/native/components.js +135 -0
  151. package/dist/native/index.js +3 -0
  152. package/dist/native/theme.d.ts +19 -0
  153. package/dist/native/theme.js +58 -0
  154. package/dist/styles/tokens/css-vars.d.ts +7 -0
  155. package/dist/styles/tokens/css-vars.js +5 -0
  156. package/dist/styles/tokens/generated/dark.colors.generated.d.ts +40 -0
  157. package/dist/styles/tokens/generated/dark.colors.generated.js +39 -0
  158. package/dist/styles/tokens/generated/foundations.generated.d.ts +323 -0
  159. package/dist/styles/tokens/generated/foundations.generated.js +453 -0
  160. package/dist/styles/tokens/generated/light.colors.generated.d.ts +40 -0
  161. package/dist/styles/tokens/generated/light.colors.generated.js +39 -0
  162. package/dist/styles/tokens/index.d.ts +317 -0
  163. package/dist/styles/tokens/index.js +14 -0
  164. package/dist/styles.css +1 -1
  165. package/dist/translations/en.d.ts +34 -0
  166. package/dist/translations/index.d.ts +39 -0
  167. package/dist/translations/ui-provider.d.ts +9 -0
  168. package/dist/translations/ui-provider.js +16 -0
  169. package/dist/types/upload.d.ts +36 -0
  170. package/package.json +50 -33
  171. package/src/components/data-display/accordion.stories.tsx +0 -57
  172. package/src/components/data-display/accordion.tsx +0 -86
  173. package/src/components/data-display/metric-card.stories.tsx +0 -48
  174. package/src/components/data-display/metric-card.tsx +0 -20
  175. package/src/components/data-display/sort-controls.stories.tsx +0 -45
  176. package/src/components/data-display/sort-controls.tsx +0 -96
  177. package/src/components/data-display/sort-row.tsx +0 -88
  178. package/src/components/data-display/table.stories.tsx +0 -75
  179. package/src/components/data-display/table.tsx +0 -80
  180. package/src/components/feedback/alert.stories.tsx +0 -51
  181. package/src/components/feedback/alert.tsx +0 -64
  182. package/src/components/feedback/empty-state.tsx +0 -76
  183. package/src/components/feedback/progress.stories.tsx +0 -54
  184. package/src/components/feedback/progress.tsx +0 -41
  185. package/src/components/feedback/skeleton.stories.tsx +0 -36
  186. package/src/components/feedback/skeleton.tsx +0 -7
  187. package/src/components/feedback/spinner.stories.tsx +0 -52
  188. package/src/components/feedback/spinner.tsx +0 -47
  189. package/src/components/feedback/update-guard.stories.tsx +0 -28
  190. package/src/components/feedback/update-guard.tsx +0 -57
  191. package/src/components/filters/active-filters-bar.stories.tsx +0 -114
  192. package/src/components/filters/active-filters-bar.tsx +0 -61
  193. package/src/components/filters/filter-chip.tsx +0 -57
  194. package/src/components/filters/filter-select.stories.tsx +0 -71
  195. package/src/components/filters/filter-select.tsx +0 -68
  196. package/src/components/forms/checkbox.stories.tsx +0 -35
  197. package/src/components/forms/checkbox.tsx +0 -38
  198. package/src/components/forms/date-month-select.stories.tsx +0 -26
  199. package/src/components/forms/date-month-select.tsx +0 -79
  200. package/src/components/forms/date-picker.stories.tsx +0 -188
  201. package/src/components/forms/date-picker.tsx +0 -303
  202. package/src/components/forms/date-utils.ts +0 -37
  203. package/src/components/forms/drop-zone.stories.tsx +0 -140
  204. package/src/components/forms/drop-zone.tsx +0 -298
  205. package/src/components/forms/input.stories.tsx +0 -47
  206. package/src/components/forms/input.tsx +0 -24
  207. package/src/components/forms/label.stories.tsx +0 -16
  208. package/src/components/forms/label.tsx +0 -25
  209. package/src/components/forms/passkey-management.stories.tsx +0 -85
  210. package/src/components/forms/passkey-management.tsx +0 -168
  211. package/src/components/forms/radio-group.stories.tsx +0 -46
  212. package/src/components/forms/radio-group.tsx +0 -44
  213. package/src/components/forms/select.stories.tsx +0 -207
  214. package/src/components/forms/select.tsx +0 -182
  215. package/src/components/forms/slider.stories.tsx +0 -70
  216. package/src/components/forms/slider.tsx +0 -50
  217. package/src/components/forms/stepper.stories.tsx +0 -111
  218. package/src/components/forms/stepper.tsx +0 -66
  219. package/src/components/forms/switch.stories.tsx +0 -144
  220. package/src/components/forms/switch.tsx +0 -39
  221. package/src/components/forms/text-field.stories.tsx +0 -87
  222. package/src/components/forms/text-field.tsx +0 -75
  223. package/src/components/forms/text-field.types.ts +0 -9
  224. package/src/components/forms/textarea.stories.tsx +0 -150
  225. package/src/components/forms/textarea.tsx +0 -22
  226. package/src/components/layout/particle-background.stories.tsx +0 -38
  227. package/src/components/layout/particle-background.tsx +0 -378
  228. package/src/components/layout/scroll-area.stories.tsx +0 -91
  229. package/src/components/layout/scroll-area.tsx +0 -79
  230. package/src/components/layout/section-intro.stories.tsx +0 -29
  231. package/src/components/layout/section-intro.tsx +0 -31
  232. package/src/components/layout/surface-panel.stories.tsx +0 -32
  233. package/src/components/layout/surface-panel.tsx +0 -23
  234. package/src/components/navigation/app-navigation.stories.tsx +0 -217
  235. package/src/components/navigation/app-navigation.tsx +0 -234
  236. package/src/components/navigation/pagination-controls.stories.tsx +0 -41
  237. package/src/components/navigation/pagination-controls.tsx +0 -46
  238. package/src/components/navigation/tabs.stories.tsx +0 -48
  239. package/src/components/navigation/tabs.tsx +0 -52
  240. package/src/components/overlays/bottom-sheet.stories.tsx +0 -52
  241. package/src/components/overlays/bottom-sheet.tsx +0 -179
  242. package/src/components/overlays/command.stories.tsx +0 -65
  243. package/src/components/overlays/command.tsx +0 -227
  244. package/src/components/overlays/dialog.stories.tsx +0 -148
  245. package/src/components/overlays/dialog.tsx +0 -203
  246. package/src/components/overlays/dropdown-menu.stories.tsx +0 -74
  247. package/src/components/overlays/dropdown-menu.tsx +0 -236
  248. package/src/components/overlays/index.ts +0 -56
  249. package/src/components/overlays/popover.stories.tsx +0 -51
  250. package/src/components/overlays/popover.tsx +0 -78
  251. package/src/components/overlays/sheet.stories.tsx +0 -68
  252. package/src/components/overlays/sheet.tsx +0 -155
  253. package/src/components/overlays/tooltip.stories.tsx +0 -29
  254. package/src/components/overlays/tooltip.tsx +0 -41
  255. package/src/components/primitives/avatar-placeholder.svg +0 -13
  256. package/src/components/primitives/avatar.stories.tsx +0 -72
  257. package/src/components/primitives/avatar.tsx +0 -136
  258. package/src/components/primitives/badge.stories.tsx +0 -43
  259. package/src/components/primitives/badge.tsx +0 -43
  260. package/src/components/primitives/button.stories.tsx +0 -113
  261. package/src/components/primitives/button.tsx +0 -131
  262. package/src/components/primitives/card.stories.tsx +0 -59
  263. package/src/components/primitives/card.tsx +0 -66
  264. package/src/components/primitives/segmented-control.stories.tsx +0 -54
  265. package/src/components/primitives/segmented-control.tsx +0 -73
  266. package/src/components/primitives/separator.stories.tsx +0 -34
  267. package/src/components/primitives/separator.tsx +0 -27
  268. package/src/constants/chart-colors.ts +0 -39
  269. package/src/env.d.ts +0 -9
  270. package/src/hooks/use-api-client.ts +0 -122
  271. package/src/hooks/use-debounced-value.ts +0 -12
  272. package/src/hooks/use-derived-filter-state.ts +0 -70
  273. package/src/hooks/use-filter-state.ts +0 -66
  274. package/src/hooks/use-media-query.ts +0 -69
  275. package/src/hooks/use-mobile.tsx +0 -19
  276. package/src/hooks/use-sort.ts +0 -20
  277. package/src/lib/auth.ts +0 -5
  278. package/src/lib/clipboard.ts +0 -8
  279. package/src/lib/utils.ts +0 -6
  280. package/src/native/components.tsx +0 -198
  281. package/src/native/theme.tsx +0 -69
  282. package/src/storybook/controls.ts +0 -117
  283. package/src/storybook/options.ts +0 -52
  284. package/src/styles/build.ts +0 -1
  285. package/src/styles/index.css +0 -423
  286. package/src/styles/nokia.css +0 -36
  287. package/src/styles/package.css +0 -3
  288. package/src/styles/tokens/chart-colors.stories.tsx +0 -189
  289. package/src/styles/tokens/color-systems.stories.tsx +0 -190
  290. package/src/styles/tokens/css-vars.ts +0 -15
  291. package/src/styles/tokens/generated/dark-class.css +0 -39
  292. package/src/styles/tokens/generated/dark.colors.generated.ts +0 -39
  293. package/src/styles/tokens/generated/dark.css +0 -39
  294. package/src/styles/tokens/generated/foundations.css +0 -149
  295. package/src/styles/tokens/generated/foundations.generated.ts +0 -454
  296. package/src/styles/tokens/generated/light.colors.generated.ts +0 -39
  297. package/src/styles/tokens/generated/light.css +0 -39
  298. package/src/styles/tokens/index.ts +0 -70
  299. package/src/styles/tokens/layout.stories.tsx +0 -50
  300. package/src/styles/tokens/scripts/check-foundations.mjs +0 -126
  301. package/src/styles/tokens/scripts/check-source.mjs +0 -53
  302. package/src/styles/tokens/source/dark.tokens.json +0 -138
  303. package/src/styles/tokens/source/foundations.tokens.json +0 -344
  304. package/src/styles/tokens/source/light.tokens.json +0 -138
  305. package/src/styles/tokens/style-dictionary.dark-class.json +0 -16
  306. package/src/styles/tokens/style-dictionary.dark-storybook.json +0 -16
  307. package/src/styles/tokens/style-dictionary.dark.json +0 -21
  308. package/src/styles/tokens/style-dictionary.foundations.json +0 -21
  309. package/src/styles/tokens/style-dictionary.light-storybook.json +0 -16
  310. package/src/styles/tokens/style-dictionary.light.json +0 -21
  311. package/src/styles/tokens/typography.stories.tsx +0 -157
  312. package/src/translations/en.ts +0 -34
  313. package/src/translations/index.ts +0 -32
  314. package/src/types/upload.ts +0 -42
  315. /package/{src/components/filters/index.ts → dist/components/filters/index.d.ts} +0 -0
  316. /package/{src/components/layout/index.ts → dist/components/layout/index.d.ts} +0 -0
  317. /package/{src/hooks/index.ts → dist/hooks/index.d.ts} +0 -0
  318. /package/{src/lib/index.ts → dist/lib/index.d.ts} +0 -0
  319. /package/{src/native/index.ts → dist/native/index.d.ts} +0 -0
@@ -0,0 +1,128 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import * as t from "react";
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ import { CheckIcon as i, ChevronRightIcon as a, CircleIcon as o } from "lucide-react";
6
+ import { Menu as s } from "@base-ui/react/menu";
7
+ //#region src/components/overlays/dropdown-menu.tsx
8
+ function c(e) {
9
+ return /* @__PURE__ */ n(s.Root, {
10
+ "data-slot": "dropdown-menu",
11
+ ...e
12
+ });
13
+ }
14
+ function l(e) {
15
+ return /* @__PURE__ */ n(s.Portal, {
16
+ "data-slot": "dropdown-menu-portal",
17
+ ...e
18
+ });
19
+ }
20
+ function u({ asChild: e, children: r, ...i }) {
21
+ return /* @__PURE__ */ n(s.Trigger, {
22
+ "data-slot": "dropdown-menu-trigger",
23
+ ...e && t.isValidElement(r) ? { render: r } : {},
24
+ ...i,
25
+ children: !e && r
26
+ });
27
+ }
28
+ function d({ className: t, sideOffset: i = 4, children: a, ...o }) {
29
+ return /* @__PURE__ */ r(s.Portal, { children: [/* @__PURE__ */ n(s.Backdrop, { className: "ui-mobile-sheet-backdrop" }), /* @__PURE__ */ n(s.Positioner, {
30
+ className: "ui-mobile-sheet-positioner",
31
+ sideOffset: i,
32
+ children: /* @__PURE__ */ n(s.Popup, {
33
+ "data-slot": "dropdown-menu-content",
34
+ className: e("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 z-50 max-h-(--available-height) min-w-[8rem] origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 outline-none ui-mobile-sheet-popup", t),
35
+ ...o,
36
+ children: a
37
+ })
38
+ })] });
39
+ }
40
+ function f(e) {
41
+ return /* @__PURE__ */ n(s.Group, {
42
+ "data-slot": "dropdown-menu-group",
43
+ ...e
44
+ });
45
+ }
46
+ function p({ className: t, inset: r, ...i }) {
47
+ return /* @__PURE__ */ n(s.GroupLabel, {
48
+ "data-slot": "dropdown-menu-label",
49
+ "data-inset": r,
50
+ className: e("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", t),
51
+ ...i
52
+ });
53
+ }
54
+ function m({ className: t, inset: r, variant: i = "default", ...a }) {
55
+ return /* @__PURE__ */ n(s.Item, {
56
+ "data-slot": "dropdown-menu-item",
57
+ "data-inset": r,
58
+ "data-variant": i,
59
+ className: e("data-highlighted:bg-muted data-highlighted:text-muted-foreground data-[variant=destructive]:text-destructive-text data-[variant=destructive]:data-highlighted:bg-destructive/10 relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", t),
60
+ ...a
61
+ });
62
+ }
63
+ function h({ className: t, children: a, checked: o, ...c }) {
64
+ return /* @__PURE__ */ r(s.CheckboxItem, {
65
+ "data-slot": "dropdown-menu-checkbox-item",
66
+ className: e("data-highlighted:bg-muted data-highlighted:text-muted-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50", t),
67
+ checked: o,
68
+ ...c,
69
+ children: [/* @__PURE__ */ n("span", {
70
+ className: "absolute left-2 flex size-3.5 items-center justify-center",
71
+ children: /* @__PURE__ */ n(s.CheckboxItemIndicator, { children: /* @__PURE__ */ n(i, { className: "size-4" }) })
72
+ }), a]
73
+ });
74
+ }
75
+ function g(e) {
76
+ return /* @__PURE__ */ n(s.RadioGroup, {
77
+ "data-slot": "dropdown-menu-radio-group",
78
+ ...e
79
+ });
80
+ }
81
+ function _({ className: t, children: i, ...a }) {
82
+ return /* @__PURE__ */ r(s.RadioItem, {
83
+ "data-slot": "dropdown-menu-radio-item",
84
+ className: e("data-highlighted:bg-muted data-highlighted:text-muted-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm outline-none select-none data-disabled:pointer-events-none data-disabled:opacity-50", t),
85
+ ...a,
86
+ children: [/* @__PURE__ */ n("span", {
87
+ className: "absolute left-2 flex size-3.5 items-center justify-center",
88
+ children: /* @__PURE__ */ n(s.RadioItemIndicator, { children: /* @__PURE__ */ n(o, { className: "size-2 fill-current" }) })
89
+ }), i]
90
+ });
91
+ }
92
+ function v({ className: t, ...r }) {
93
+ return /* @__PURE__ */ n(s.Separator, {
94
+ "data-slot": "dropdown-menu-separator",
95
+ className: e("bg-border -mx-1 my-1 h-px", t),
96
+ ...r
97
+ });
98
+ }
99
+ function y({ className: t, ...r }) {
100
+ return /* @__PURE__ */ n("span", {
101
+ className: e("ml-auto text-xs tracking-widest opacity-60", t),
102
+ ...r
103
+ });
104
+ }
105
+ function b(e) {
106
+ return /* @__PURE__ */ n(s.SubmenuRoot, {
107
+ "data-slot": "dropdown-menu-sub",
108
+ ...e
109
+ });
110
+ }
111
+ function x({ className: t, inset: i, children: o, ...c }) {
112
+ return /* @__PURE__ */ r(s.SubmenuTrigger, {
113
+ "data-slot": "dropdown-menu-sub-trigger",
114
+ "data-inset": i,
115
+ className: e("data-highlighted:bg-muted data-highlighted:text-muted-foreground data-open:bg-muted data-open:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8", t),
116
+ ...c,
117
+ children: [o, /* @__PURE__ */ n(a, { className: "ml-auto size-4" })]
118
+ });
119
+ }
120
+ function S({ className: t, ...r }) {
121
+ return /* @__PURE__ */ n(s.Popup, {
122
+ "data-slot": "dropdown-menu-sub-content",
123
+ className: e("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg outline-none", t),
124
+ ...r
125
+ });
126
+ }
127
+ //#endregion
128
+ export { c as DropdownMenu, h as DropdownMenuCheckboxItem, d as DropdownMenuContent, f as DropdownMenuGroup, m as DropdownMenuItem, p as DropdownMenuLabel, l as DropdownMenuPortal, g as DropdownMenuRadioGroup, _ as DropdownMenuRadioItem, v as DropdownMenuSeparator, y as DropdownMenuShortcut, b as DropdownMenuSub, S as DropdownMenuSubContent, x as DropdownMenuSubTrigger, u as DropdownMenuTrigger };
@@ -0,0 +1,7 @@
1
+ export { Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandListLoading, CommandSeparator, CommandShortcut, } from "./command";
2
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, } from "./dialog";
3
+ export { DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, } from "./dropdown-menu";
4
+ export { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "./popover";
5
+ export { BottomSheet, type BottomSheetProps } from "./bottom-sheet";
6
+ export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger } from "./tooltip";
7
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, } from "./sheet";
@@ -0,0 +1,8 @@
1
+ import { Dialog as e, DialogClose as t, DialogContent as n, DialogDescription as r, DialogFooter as i, DialogHeader as a, DialogOverlay as o, DialogPortal as s, DialogTitle as c, DialogTrigger as l } from "./dialog.js";
2
+ import { Command as u, CommandDialog as d, CommandEmpty as f, CommandGroup as p, CommandInput as m, CommandItem as h, CommandList as g, CommandListLoading as _, CommandSeparator as v, CommandShortcut as y } from "./command.js";
3
+ import { DropdownMenu as b, DropdownMenuCheckboxItem as x, DropdownMenuContent as S, DropdownMenuGroup as C, DropdownMenuItem as w, DropdownMenuLabel as T, DropdownMenuPortal as E, DropdownMenuRadioGroup as D, DropdownMenuRadioItem as O, DropdownMenuSeparator as k, DropdownMenuShortcut as A, DropdownMenuSub as j, DropdownMenuSubContent as M, DropdownMenuSubTrigger as N, DropdownMenuTrigger as P } from "./dropdown-menu.js";
4
+ import { Popover as F, PopoverAnchor as I, PopoverContent as L, PopoverTrigger as R } from "./popover.js";
5
+ import { BottomSheet as z } from "./bottom-sheet.js";
6
+ import { Tooltip as B, TooltipContent as V, TooltipPortal as H, TooltipProvider as U, TooltipTrigger as W } from "./tooltip.js";
7
+ import { Sheet as G, SheetClose as K, SheetContent as q, SheetDescription as J, SheetFooter as Y, SheetHeader as X, SheetOverlay as Z, SheetPortal as Q, SheetTitle as $, SheetTrigger as ee } from "./sheet.js";
8
+ export { z as BottomSheet, u as Command, d as CommandDialog, f as CommandEmpty, p as CommandGroup, m as CommandInput, h as CommandItem, g as CommandList, _ as CommandListLoading, v as CommandSeparator, y as CommandShortcut, e as Dialog, t as DialogClose, n as DialogContent, r as DialogDescription, i as DialogFooter, a as DialogHeader, o as DialogOverlay, s as DialogPortal, c as DialogTitle, l as DialogTrigger, b as DropdownMenu, x as DropdownMenuCheckboxItem, S as DropdownMenuContent, C as DropdownMenuGroup, w as DropdownMenuItem, T as DropdownMenuLabel, E as DropdownMenuPortal, D as DropdownMenuRadioGroup, O as DropdownMenuRadioItem, k as DropdownMenuSeparator, A as DropdownMenuShortcut, j as DropdownMenuSub, M as DropdownMenuSubContent, N as DropdownMenuSubTrigger, P as DropdownMenuTrigger, F as Popover, I as PopoverAnchor, L as PopoverContent, R as PopoverTrigger, G as Sheet, K as SheetClose, q as SheetContent, J as SheetDescription, Y as SheetFooter, X as SheetHeader, Z as SheetOverlay, Q as SheetPortal, $ as SheetTitle, ee as SheetTrigger, B as Tooltip, V as TooltipContent, H as TooltipPortal, U as TooltipProvider, W as TooltipTrigger };
@@ -0,0 +1,14 @@
1
+ import { Popover as PopoverPrimitive } from "@base-ui/react/popover";
2
+ import * as React from "react";
3
+ declare function Popover({ modal, ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): React.JSX.Element;
4
+ declare function PopoverTrigger({ asChild, children, ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger> & {
5
+ asChild?: boolean;
6
+ }): React.JSX.Element;
7
+ declare function PopoverContent({ className, align, sideOffset, children, side, avoidCollisions, ...props }: React.ComponentProps<typeof PopoverPrimitive.Popup> & {
8
+ align?: "start" | "center" | "end";
9
+ sideOffset?: number;
10
+ side?: "top" | "right" | "bottom" | "left";
11
+ avoidCollisions?: boolean;
12
+ }): React.JSX.Element;
13
+ declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): React.JSX.Element;
14
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
@@ -0,0 +1,56 @@
1
+ "use client";
2
+ import { useIsMobile as e } from "../../hooks/use-mobile.js";
3
+ import { cn as t } from "../../lib/utils.js";
4
+ import * as n from "react";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ import { XIcon as a } from "lucide-react";
7
+ import { Popover as o } from "@base-ui/react/popover";
8
+ //#region src/components/overlays/popover.tsx
9
+ function s({ modal: t, ...n }) {
10
+ let i = e();
11
+ return /* @__PURE__ */ r(o.Root, {
12
+ "data-slot": "popover",
13
+ modal: t ?? i,
14
+ ...n
15
+ });
16
+ }
17
+ function c({ asChild: e, children: t, ...i }) {
18
+ return /* @__PURE__ */ r(o.Trigger, {
19
+ "data-slot": "popover-trigger",
20
+ ...e && n.isValidElement(t) ? { render: t } : {},
21
+ ...i,
22
+ children: !e && t
23
+ });
24
+ }
25
+ function l({ className: e, align: n = "center", sideOffset: s = 4, children: c, side: l = "bottom", avoidCollisions: u = !0, ...d }) {
26
+ return /* @__PURE__ */ i(o.Portal, { children: [/* @__PURE__ */ r(o.Backdrop, { className: "ui-mobile-sheet-backdrop" }), /* @__PURE__ */ r(o.Positioner, {
27
+ className: "ui-mobile-sheet-positioner",
28
+ align: n,
29
+ side: l,
30
+ sideOffset: s,
31
+ collisionAvoidance: u ? void 0 : {
32
+ side: "none",
33
+ align: "none"
34
+ },
35
+ children: /* @__PURE__ */ i(o.Popup, {
36
+ "data-slot": "popover-content",
37
+ className: t("bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 relative z-50 w-72 origin-(--transform-origin) rounded-md border p-4 outline-hidden ui-mobile-sheet-popup ui-mobile-popover-popup", e),
38
+ ...d,
39
+ children: [c, /* @__PURE__ */ i(o.Close, {
40
+ className: "ui-mobile-sheet-close",
41
+ children: [/* @__PURE__ */ r(a, { "aria-hidden": "true" }), /* @__PURE__ */ r("span", {
42
+ className: "sr-only",
43
+ children: "Close"
44
+ })]
45
+ })]
46
+ })
47
+ })] });
48
+ }
49
+ function u({ ...e }) {
50
+ return /* @__PURE__ */ r(o.Trigger, {
51
+ "data-slot": "popover-anchor",
52
+ ...e
53
+ });
54
+ }
55
+ //#endregion
56
+ export { s as Popover, u as PopoverAnchor, l as PopoverContent, c as PopoverTrigger };
@@ -0,0 +1,27 @@
1
+ import { Dialog as SheetPrimitive } from "@base-ui/react/dialog";
2
+ import * as React from "react";
3
+ declare const Sheet: typeof SheetPrimitive.Root;
4
+ declare function SheetTrigger({ asChild, children, ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger> & {
5
+ asChild?: boolean;
6
+ }): React.JSX.Element;
7
+ declare function SheetClose({ asChild, children, ...props }: React.ComponentProps<typeof SheetPrimitive.Close> & {
8
+ asChild?: boolean;
9
+ }): React.JSX.Element;
10
+ declare const SheetPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").DialogPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
11
+ declare const SheetOverlay: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").DialogBackdropProps, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
12
+ interface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Popup> {
13
+ /** Applied to the built-in close button, alongside its default styling. */
14
+ closeClassName?: string;
15
+ }
16
+ declare const SheetContent: React.ForwardRefExoticComponent<SheetContentProps & React.RefAttributes<HTMLDivElement>>;
17
+ declare function SheetHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
18
+ declare namespace SheetHeader {
19
+ var displayName: string;
20
+ }
21
+ declare function SheetFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
22
+ declare namespace SheetFooter {
23
+ var displayName: string;
24
+ }
25
+ declare const SheetTitle: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").DialogTitleProps, "ref"> & React.RefAttributes<HTMLHeadingElement>, "ref"> & React.RefAttributes<HTMLHeadingElement>>;
26
+ declare const SheetDescription: React.ForwardRefExoticComponent<Omit<Omit<import("@base-ui/react").DialogDescriptionProps, "ref"> & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
27
+ export { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, };
@@ -0,0 +1,81 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { useUiText as t } from "../../translations/ui-provider.js";
4
+ import * as n from "react";
5
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
6
+ import { X as a } from "lucide-react";
7
+ import { Dialog as o } from "@base-ui/react/dialog";
8
+ //#region src/components/overlays/sheet.tsx
9
+ var s = o.Root;
10
+ function c({ asChild: e, children: t, ...i }) {
11
+ return /* @__PURE__ */ r(o.Trigger, {
12
+ ...e && n.isValidElement(t) ? { render: t } : {},
13
+ ...i,
14
+ children: !e && t
15
+ });
16
+ }
17
+ function l({ asChild: e, children: t, ...i }) {
18
+ return /* @__PURE__ */ r(o.Close, {
19
+ ...e && n.isValidElement(t) ? {
20
+ render: t,
21
+ nativeButton: !1
22
+ } : {},
23
+ ...i,
24
+ children: !e && t
25
+ });
26
+ }
27
+ var u = o.Portal, d = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(o.Backdrop, {
28
+ "data-slot": "sheet-overlay",
29
+ className: e("fixed inset-0 z-50 bg-black/80", t),
30
+ ...n,
31
+ ref: i
32
+ }));
33
+ d.displayName = "SheetOverlay";
34
+ var f = [
35
+ "bg-background text-foreground rounded-xl border shadow-lg",
36
+ "flex flex-col gap-6 p-4",
37
+ "fixed z-50 inset-x-2 bottom-[max(0.5rem,env(safe-area-inset-bottom))]",
38
+ "max-h-[calc(100dvh-2rem)] min-h-[30dvh]",
39
+ "md:inset-y-2 md:right-2 md:left-auto md:bottom-auto",
40
+ "md:w-3/4 md:max-w-sm md:min-h-0"
41
+ ], p = n.forwardRef(({ className: n, closeClassName: s, children: c, ...l }, p) => {
42
+ let m = t("sheet.close", "Close");
43
+ return /* @__PURE__ */ i(u, { children: [/* @__PURE__ */ r(d, {}), /* @__PURE__ */ i(o.Popup, {
44
+ ref: p,
45
+ "data-slot": "sheet-content",
46
+ className: e(f, n),
47
+ ...l,
48
+ children: [/* @__PURE__ */ i(o.Close, {
49
+ className: e("text-muted-foreground hover:bg-muted hover:text-muted-foreground focus-visible:outline-ring absolute top-3 right-3 inline-flex size-9 items-center justify-center rounded-md border border-transparent transition-colors focus-visible:outline-2 focus-visible:outline-offset-2 disabled:pointer-events-none md:top-4 md:right-4", s),
50
+ children: [/* @__PURE__ */ r(a, { className: "size-4.5" }), /* @__PURE__ */ r("span", {
51
+ className: "sr-only",
52
+ children: m
53
+ })]
54
+ }), c]
55
+ })] });
56
+ });
57
+ p.displayName = "SheetContent";
58
+ var m = ({ className: t, ...n }) => /* @__PURE__ */ r("div", {
59
+ className: e("flex flex-col gap-2 text-left", t),
60
+ ...n
61
+ });
62
+ m.displayName = "SheetHeader";
63
+ var h = ({ className: t, ...n }) => /* @__PURE__ */ r("div", {
64
+ className: e("mt-auto flex flex-col-reverse gap-3 sm:flex-row sm:justify-end", t),
65
+ ...n
66
+ });
67
+ h.displayName = "SheetFooter";
68
+ var g = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(o.Title, {
69
+ ref: i,
70
+ className: e("text-lg font-semibold tracking-tight", t),
71
+ ...n
72
+ }));
73
+ g.displayName = o.Title.displayName;
74
+ var _ = n.forwardRef(({ className: t, ...n }, i) => /* @__PURE__ */ r(o.Description, {
75
+ ref: i,
76
+ className: e("text-muted-foreground max-w-prose text-sm", t),
77
+ ...n
78
+ }));
79
+ _.displayName = o.Description.displayName;
80
+ //#endregion
81
+ export { s as Sheet, l as SheetClose, p as SheetContent, _ as SheetDescription, h as SheetFooter, m as SheetHeader, d as SheetOverlay, u as SheetPortal, g as SheetTitle, c as SheetTrigger };
@@ -0,0 +1,10 @@
1
+ import { Tooltip as TooltipPrimitive } from "@base-ui/react/tooltip";
2
+ import * as React from "react";
3
+ declare const TooltipProvider: React.FC<import("@base-ui/react").TooltipProviderProps>;
4
+ declare const Tooltip: <Payload>(props: TooltipPrimitive.Root.Props<Payload>) => import("react/jsx-runtime").JSX.Element;
5
+ declare const TooltipTrigger: TooltipPrimitive.Trigger;
6
+ declare const TooltipPortal: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").TooltipPortalProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
7
+ declare function TooltipContent({ className, sideOffset, children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Popup> & {
8
+ sideOffset?: number;
9
+ }): React.JSX.Element;
10
+ export { Tooltip, TooltipContent, TooltipPortal, TooltipProvider, TooltipTrigger };
@@ -0,0 +1,23 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import "react";
4
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
5
+ import { Tooltip as r } from "@base-ui/react/tooltip";
6
+ //#region src/components/overlays/tooltip.tsx
7
+ var i = r.Provider, a = r.Root, o = r.Trigger, s = r.Portal;
8
+ function c({ className: i, sideOffset: a = 4, children: o, ...s }) {
9
+ return /* @__PURE__ */ t(r.Portal, { children: /* @__PURE__ */ t(r.Positioner, {
10
+ sideOffset: a,
11
+ children: /* @__PURE__ */ n(r.Popup, {
12
+ "data-slot": "tooltip-content",
13
+ className: e("bg-foreground text-background z-50 w-fit max-w-xs rounded-md px-2.5 py-1.5 text-xs text-balance", i),
14
+ ...s,
15
+ children: [o, /* @__PURE__ */ t(r.Arrow, {
16
+ "data-slot": "tooltip-arrow",
17
+ className: "data-[side=bottom]:top-[-8px] data-[side=left]:right-[-13px] data-[side=left]:rotate-90 data-[side=right]:left-[-13px] data-[side=right]:-rotate-90 data-[side=top]:bottom-[-8px]"
18
+ })]
19
+ })
20
+ }) });
21
+ }
22
+ //#endregion
23
+ export { a as Tooltip, c as TooltipContent, s as TooltipPortal, i as TooltipProvider, o as TooltipTrigger };
@@ -0,0 +1,14 @@
1
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
2
+ import * as React from "react";
3
+ type AvatarSize = "sm" | "default" | "lg";
4
+ declare function Avatar({ className, size, statusBadge, children, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root> & {
5
+ size?: AvatarSize;
6
+ statusBadge?: boolean;
7
+ }): React.JSX.Element;
8
+ declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): React.JSX.Element;
9
+ declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): React.JSX.Element;
10
+ declare function AvatarGroup({ className, size, ...props }: React.ComponentProps<"div"> & {
11
+ size?: AvatarSize;
12
+ }): React.JSX.Element;
13
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
14
+ export { Avatar, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage };
@@ -0,0 +1,72 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import * as t from "react";
4
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
5
+ import { Avatar as i } from "@base-ui/react/avatar";
6
+ //#region src/components/primitives/avatar.tsx
7
+ var a = t.createContext({ size: "default" }), o = {
8
+ sm: "size-6",
9
+ default: "size-6",
10
+ lg: "size-10"
11
+ }, s = {
12
+ sm: "size-2",
13
+ default: "size-2.5",
14
+ lg: "size-3"
15
+ }, c = {
16
+ sm: "text-xs",
17
+ default: "text-sm",
18
+ lg: "text-sm"
19
+ }, l = {
20
+ sm: "[&>svg]:size-3",
21
+ default: "[&>svg]:size-4",
22
+ lg: "[&>svg]:size-5"
23
+ };
24
+ function u({ className: t, size: c = "default", statusBadge: l = !1, children: u, ...d }) {
25
+ return /* @__PURE__ */ n(a.Provider, {
26
+ value: { size: c },
27
+ children: /* @__PURE__ */ r(i.Root, {
28
+ "data-slot": "avatar",
29
+ className: e("relative inline-flex shrink-0 rounded-full select-none", o[c], t),
30
+ ...d,
31
+ children: [u, l ? /* @__PURE__ */ n("span", {
32
+ "data-slot": "avatar-badge",
33
+ className: e("bg-primary ring-background absolute right-0 bottom-0 z-10 rounded-full ring-2", s[c])
34
+ }) : null]
35
+ })
36
+ });
37
+ }
38
+ function d({ className: t, ...r }) {
39
+ return /* @__PURE__ */ n(i.Image, {
40
+ "data-slot": "avatar-image",
41
+ className: e("absolute inset-0 size-full rounded-full object-cover", t),
42
+ ...r
43
+ });
44
+ }
45
+ function f({ className: r, ...o }) {
46
+ let { size: s } = t.useContext(a);
47
+ return /* @__PURE__ */ n(i.Fallback, {
48
+ "data-slot": "avatar-fallback",
49
+ className: e("bg-muted text-muted-foreground absolute inset-0 flex items-center justify-center rounded-full", c[s], r),
50
+ ...o
51
+ });
52
+ }
53
+ function p({ className: t, size: r = "default", ...i }) {
54
+ return /* @__PURE__ */ n(a.Provider, {
55
+ value: { size: r },
56
+ children: /* @__PURE__ */ n("div", {
57
+ "data-slot": "avatar-group",
58
+ className: e("*:data-[slot=avatar]:ring-background flex -space-x-2 *:data-[slot=avatar]:ring-2", t),
59
+ ...i
60
+ })
61
+ });
62
+ }
63
+ function m({ className: r, ...i }) {
64
+ let { size: s } = t.useContext(a);
65
+ return /* @__PURE__ */ n("div", {
66
+ "data-slot": "avatar-group-count",
67
+ className: e("bg-muted text-muted-foreground ring-background relative flex shrink-0 items-center justify-center rounded-full text-sm ring-2", o[s], l[s], r),
68
+ ...i
69
+ });
70
+ }
71
+ //#endregion
72
+ export { u as Avatar, f as AvatarFallback, p as AvatarGroup, m as AvatarGroupCount, d as AvatarImage };
@@ -0,0 +1,7 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import * as React from "react";
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "ref" | "secondary" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Badge({ className, variant, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): React.JSX.Element;
7
+ export { Badge, badgeVariants };
@@ -0,0 +1,27 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t } from "react/jsx-runtime";
4
+ import { cva as n } from "class-variance-authority";
5
+ //#region src/components/primitives/badge.tsx
6
+ var r = n("state-settle inline-flex w-fit shrink-0 items-center justify-center gap-2 overflow-hidden whitespace-nowrap rounded border border-transparent px-1.5 py-px text-xs font-medium [&>svg]:size-3 [&>svg]:pointer-events-none aria-invalid:border-destructive aria-invalid:ring-destructive/20", {
7
+ variants: { variant: {
8
+ default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
9
+ secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/80",
10
+ destructive: "bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90",
11
+ outline: "border-border text-foreground [a&]:hover:bg-muted",
12
+ ghost: "bg-transparent text-foreground [a&]:hover:bg-muted",
13
+ link: "text-foreground underline-offset-4 [a&]:hover:underline",
14
+ ref: "ref-tag border-transparent bg-transparent px-0 py-0 font-normal"
15
+ } },
16
+ defaultVariants: { variant: "default" }
17
+ });
18
+ function i({ className: n, variant: i = "default", ...a }) {
19
+ return /* @__PURE__ */ t("span", {
20
+ "data-slot": "badge",
21
+ "data-variant": i,
22
+ className: e(r({ variant: i }), n),
23
+ ...a
24
+ });
25
+ }
26
+ //#endregion
27
+ export { i as Badge, r as badgeVariants };
@@ -0,0 +1,13 @@
1
+ import { type VariantProps } from "class-variance-authority";
2
+ import * as React from "react";
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "destructive" | "ghost" | "link" | "outline" | "secondary" | null | undefined;
5
+ size?: "icon" | "lg" | "md" | "sm" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ isLoading?: boolean;
10
+ loadingLabel?: string;
11
+ }
12
+ declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
13
+ export { Button, buttonVariants };
@@ -0,0 +1,113 @@
1
+ "use client";
2
+ import { cn as e } from "../../lib/utils.js";
3
+ import { useUiText as t } from "../../translations/ui-provider.js";
4
+ import { Spinner as n } from "../feedback/spinner.js";
5
+ import * as r from "react";
6
+ import { Fragment as i, jsx as a, jsxs as o } from "react/jsx-runtime";
7
+ import { cva as s } from "class-variance-authority";
8
+ import { Button as c } from "@base-ui/react/button";
9
+ //#region src/components/primitives/button.tsx
10
+ var l = s([
11
+ "inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap rounded-md border border-transparent font-medium transition-colors outline-none",
12
+ "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
13
+ "disabled:pointer-events-none disabled:opacity-50",
14
+ "[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0"
15
+ ], {
16
+ variants: {
17
+ variant: {
18
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
19
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
20
+ outline: "border-input bg-background hover:bg-muted hover:text-muted-foreground",
21
+ secondary: "border-input bg-secondary text-secondary-foreground hover:bg-secondary/80",
22
+ ghost: "border-transparent bg-transparent hover:bg-muted hover:text-muted-foreground",
23
+ link: "border-transparent bg-transparent px-0 text-accent-text underline-offset-4 hover:underline"
24
+ },
25
+ size: {
26
+ sm: "min-h-8 px-2.5 text-xs",
27
+ md: "min-h-9 px-3 text-sm",
28
+ lg: "min-h-10 px-4 text-base",
29
+ icon: "size-9 rounded-md p-0"
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ variant: "default",
34
+ size: "md"
35
+ }
36
+ }), u = r.forwardRef(({ children: s, className: u, disabled: d, isLoading: f = !1, loadingLabel: p, variant: m, size: h, asChild: g = !1, type: _ = "button", "aria-label": v, ...y }, b) => {
37
+ let x = t("button.loading", "Loading"), S = p ?? x;
38
+ if (g && r.isValidElement(s)) {
39
+ let t = s, p = r.cloneElement(t, { children: f ? /* @__PURE__ */ o(i, { children: [
40
+ /* @__PURE__ */ a("span", {
41
+ className: "opacity-0",
42
+ "aria-hidden": "true",
43
+ children: t.props.children
44
+ }),
45
+ /* @__PURE__ */ a("span", {
46
+ className: "absolute inset-0 inline-flex items-center justify-center",
47
+ children: /* @__PURE__ */ a(n, {
48
+ size: "sm",
49
+ "aria-hidden": "true"
50
+ })
51
+ }),
52
+ /* @__PURE__ */ a("span", {
53
+ className: "sr-only",
54
+ children: S
55
+ })
56
+ ] }) : t.props.children });
57
+ return /* @__PURE__ */ a(c, {
58
+ ...y,
59
+ "data-slot": "button",
60
+ type: _,
61
+ render: p,
62
+ nativeButton: !1,
63
+ className: e(l({
64
+ variant: m,
65
+ size: h,
66
+ className: u
67
+ }), f && "relative"),
68
+ disabled: d || f,
69
+ "aria-busy": f,
70
+ "aria-label": f ? S : v,
71
+ ref: b
72
+ });
73
+ }
74
+ return /* @__PURE__ */ a("button", {
75
+ ...y,
76
+ "data-slot": "button",
77
+ className: e(l({
78
+ variant: m,
79
+ size: h,
80
+ className: u
81
+ }), f && "relative"),
82
+ style: {
83
+ ...y.style,
84
+ cursor: d || f ? "default" : "pointer"
85
+ },
86
+ type: _,
87
+ ref: b,
88
+ disabled: d || f,
89
+ "aria-busy": f,
90
+ "aria-label": f ? S : v,
91
+ children: f ? /* @__PURE__ */ o(i, { children: [
92
+ /* @__PURE__ */ a("span", {
93
+ className: "opacity-0",
94
+ "aria-hidden": "true",
95
+ children: s
96
+ }),
97
+ /* @__PURE__ */ a("span", {
98
+ className: "absolute inset-0 inline-flex items-center justify-center",
99
+ children: /* @__PURE__ */ a(n, {
100
+ size: "sm",
101
+ "aria-hidden": "true"
102
+ })
103
+ }),
104
+ /* @__PURE__ */ a("span", {
105
+ className: "sr-only",
106
+ children: S
107
+ })
108
+ ] }) : s
109
+ });
110
+ });
111
+ u.displayName = "Button";
112
+ //#endregion
113
+ export { u as Button, l as buttonVariants };
@@ -1,10 +1,8 @@
1
1
  export type ButtonVariant = "default" | "destructive" | "ghost" | "link" | "outline" | "secondary";
2
-
3
2
  export type ButtonSize = "sm" | "md" | "lg" | "default" | "icon";
4
-
5
3
  export interface ButtonBaseProps {
6
- isLoading?: boolean | undefined;
7
- size?: ButtonSize;
8
- title?: string | undefined;
9
- variant?: ButtonVariant;
4
+ isLoading?: boolean | undefined;
5
+ size?: ButtonSize;
6
+ title?: string | undefined;
7
+ variant?: ButtonVariant;
10
8
  }
@@ -0,0 +1,9 @@
1
+ import * as React from "react";
2
+ declare function Card({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
3
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
4
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"h3">): React.JSX.Element;
5
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
6
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
7
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
9
+ export { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };