@vegait/lyra-ds-v2 0.1.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 (267) hide show
  1. package/README.md +134 -0
  2. package/dist/chunk-32QWDFOV.js +96 -0
  3. package/dist/chunk-32QWDFOV.js.map +1 -0
  4. package/dist/chunk-4EEFY4FU.cjs +96 -0
  5. package/dist/chunk-4EEFY4FU.cjs.map +1 -0
  6. package/dist/chunk-562W4FCG.cjs +88 -0
  7. package/dist/chunk-562W4FCG.cjs.map +1 -0
  8. package/dist/chunk-5SCF3EGT.cjs +13 -0
  9. package/dist/chunk-5SCF3EGT.cjs.map +1 -0
  10. package/dist/chunk-5XB7CPVP.cjs +34 -0
  11. package/dist/chunk-5XB7CPVP.cjs.map +1 -0
  12. package/dist/chunk-62OTWTBL.cjs +274 -0
  13. package/dist/chunk-62OTWTBL.cjs.map +1 -0
  14. package/dist/chunk-6GT2L3FX.js +63 -0
  15. package/dist/chunk-6GT2L3FX.js.map +1 -0
  16. package/dist/chunk-6HFYY5KR.cjs +67 -0
  17. package/dist/chunk-6HFYY5KR.cjs.map +1 -0
  18. package/dist/chunk-6NZHRSXB.cjs +61 -0
  19. package/dist/chunk-6NZHRSXB.cjs.map +1 -0
  20. package/dist/chunk-76G7PKIJ.cjs +42 -0
  21. package/dist/chunk-76G7PKIJ.cjs.map +1 -0
  22. package/dist/chunk-7PRTXARY.js +87 -0
  23. package/dist/chunk-7PRTXARY.js.map +1 -0
  24. package/dist/chunk-A665K552.cjs +75 -0
  25. package/dist/chunk-A665K552.cjs.map +1 -0
  26. package/dist/chunk-ABFMWZVI.cjs +89 -0
  27. package/dist/chunk-ABFMWZVI.cjs.map +1 -0
  28. package/dist/chunk-ACADNUHF.js +196 -0
  29. package/dist/chunk-ACADNUHF.js.map +1 -0
  30. package/dist/chunk-AFMNLT45.js +70 -0
  31. package/dist/chunk-AFMNLT45.js.map +1 -0
  32. package/dist/chunk-BAUTON3J.js +89 -0
  33. package/dist/chunk-BAUTON3J.js.map +1 -0
  34. package/dist/chunk-BNDEIZZQ.js +40 -0
  35. package/dist/chunk-BNDEIZZQ.js.map +1 -0
  36. package/dist/chunk-BXKWAQYI.cjs +157 -0
  37. package/dist/chunk-BXKWAQYI.cjs.map +1 -0
  38. package/dist/chunk-COFNZ2CM.js +70 -0
  39. package/dist/chunk-COFNZ2CM.js.map +1 -0
  40. package/dist/chunk-COV6FW4J.cjs +63 -0
  41. package/dist/chunk-COV6FW4J.cjs.map +1 -0
  42. package/dist/chunk-CUW7MUCY.js +55 -0
  43. package/dist/chunk-CUW7MUCY.js.map +1 -0
  44. package/dist/chunk-DKHG23OR.js +61 -0
  45. package/dist/chunk-DKHG23OR.js.map +1 -0
  46. package/dist/chunk-EMKU3IZY.js +85 -0
  47. package/dist/chunk-EMKU3IZY.js.map +1 -0
  48. package/dist/chunk-FZD2ZXN2.js +81 -0
  49. package/dist/chunk-FZD2ZXN2.js.map +1 -0
  50. package/dist/chunk-FZFA24YL.js +90 -0
  51. package/dist/chunk-FZFA24YL.js.map +1 -0
  52. package/dist/chunk-G5SLIXQ5.cjs +87 -0
  53. package/dist/chunk-G5SLIXQ5.cjs.map +1 -0
  54. package/dist/chunk-G6T2BYPC.js +88 -0
  55. package/dist/chunk-G6T2BYPC.js.map +1 -0
  56. package/dist/chunk-GGZSDAN3.cjs +43 -0
  57. package/dist/chunk-GGZSDAN3.cjs.map +1 -0
  58. package/dist/chunk-GLMTTY4G.js +34 -0
  59. package/dist/chunk-GLMTTY4G.js.map +1 -0
  60. package/dist/chunk-JQ5LATTJ.cjs +196 -0
  61. package/dist/chunk-JQ5LATTJ.cjs.map +1 -0
  62. package/dist/chunk-KLHQMRAY.js +42 -0
  63. package/dist/chunk-KLHQMRAY.js.map +1 -0
  64. package/dist/chunk-KQJCGTS3.js +13 -0
  65. package/dist/chunk-KQJCGTS3.js.map +1 -0
  66. package/dist/chunk-LBHO3VC4.cjs +81 -0
  67. package/dist/chunk-LBHO3VC4.cjs.map +1 -0
  68. package/dist/chunk-LUQS7LYG.cjs +85 -0
  69. package/dist/chunk-LUQS7LYG.cjs.map +1 -0
  70. package/dist/chunk-MMQZ7YMO.js +274 -0
  71. package/dist/chunk-MMQZ7YMO.js.map +1 -0
  72. package/dist/chunk-N7M2UZM6.js +67 -0
  73. package/dist/chunk-N7M2UZM6.js.map +1 -0
  74. package/dist/chunk-NLOLOFBX.js +43 -0
  75. package/dist/chunk-NLOLOFBX.js.map +1 -0
  76. package/dist/chunk-NPXSB4WO.js +48 -0
  77. package/dist/chunk-NPXSB4WO.js.map +1 -0
  78. package/dist/chunk-NVCGKCTH.cjs +90 -0
  79. package/dist/chunk-NVCGKCTH.cjs.map +1 -0
  80. package/dist/chunk-NZOAZF3W.cjs +67 -0
  81. package/dist/chunk-NZOAZF3W.cjs.map +1 -0
  82. package/dist/chunk-OS2O66IV.cjs +40 -0
  83. package/dist/chunk-OS2O66IV.cjs.map +1 -0
  84. package/dist/chunk-P5BKGZY2.cjs +55 -0
  85. package/dist/chunk-P5BKGZY2.cjs.map +1 -0
  86. package/dist/chunk-POMJPII4.cjs +70 -0
  87. package/dist/chunk-POMJPII4.cjs.map +1 -0
  88. package/dist/chunk-QSRVMLAL.cjs +40 -0
  89. package/dist/chunk-QSRVMLAL.cjs.map +1 -0
  90. package/dist/chunk-R5SUYP2F.cjs +14 -0
  91. package/dist/chunk-R5SUYP2F.cjs.map +1 -0
  92. package/dist/chunk-RBPMBCU3.js +157 -0
  93. package/dist/chunk-RBPMBCU3.js.map +1 -0
  94. package/dist/chunk-RZQAADXK.cjs +274 -0
  95. package/dist/chunk-RZQAADXK.cjs.map +1 -0
  96. package/dist/chunk-SPAC4VNO.js +67 -0
  97. package/dist/chunk-SPAC4VNO.js.map +1 -0
  98. package/dist/chunk-TONUCO3E.cjs +70 -0
  99. package/dist/chunk-TONUCO3E.cjs.map +1 -0
  100. package/dist/chunk-V7DPKW5E.cjs +48 -0
  101. package/dist/chunk-V7DPKW5E.cjs.map +1 -0
  102. package/dist/chunk-W3H3KWRL.js +274 -0
  103. package/dist/chunk-W3H3KWRL.js.map +1 -0
  104. package/dist/chunk-XFMTGORU.js +40 -0
  105. package/dist/chunk-XFMTGORU.js.map +1 -0
  106. package/dist/chunk-YVPOTKKQ.js +75 -0
  107. package/dist/chunk-YVPOTKKQ.js.map +1 -0
  108. package/dist/chunk-ZYPEUNSY.js +14 -0
  109. package/dist/chunk-ZYPEUNSY.js.map +1 -0
  110. package/dist/components/alert.cjs +9 -0
  111. package/dist/components/alert.cjs.map +1 -0
  112. package/dist/components/alert.d.cts +17 -0
  113. package/dist/components/alert.d.ts +17 -0
  114. package/dist/components/alert.js +9 -0
  115. package/dist/components/alert.js.map +1 -0
  116. package/dist/components/avatar.cjs +9 -0
  117. package/dist/components/avatar.cjs.map +1 -0
  118. package/dist/components/avatar.d.cts +12 -0
  119. package/dist/components/avatar.d.ts +12 -0
  120. package/dist/components/avatar.js +9 -0
  121. package/dist/components/avatar.js.map +1 -0
  122. package/dist/components/badge.cjs +11 -0
  123. package/dist/components/badge.cjs.map +1 -0
  124. package/dist/components/badge.d.cts +12 -0
  125. package/dist/components/badge.d.ts +12 -0
  126. package/dist/components/badge.js +11 -0
  127. package/dist/components/badge.js.map +1 -0
  128. package/dist/components/bulk-bar.cjs +11 -0
  129. package/dist/components/bulk-bar.cjs.map +1 -0
  130. package/dist/components/bulk-bar.d.cts +19 -0
  131. package/dist/components/bulk-bar.d.ts +19 -0
  132. package/dist/components/bulk-bar.js +11 -0
  133. package/dist/components/bulk-bar.js.map +1 -0
  134. package/dist/components/button.cjs +11 -0
  135. package/dist/components/button.cjs.map +1 -0
  136. package/dist/components/button.d.cts +15 -0
  137. package/dist/components/button.d.ts +15 -0
  138. package/dist/components/button.js +11 -0
  139. package/dist/components/button.js.map +1 -0
  140. package/dist/components/card.cjs +15 -0
  141. package/dist/components/card.cjs.map +1 -0
  142. package/dist/components/card.d.cts +8 -0
  143. package/dist/components/card.d.ts +8 -0
  144. package/dist/components/card.js +15 -0
  145. package/dist/components/card.js.map +1 -0
  146. package/dist/components/data-table.cjs +10 -0
  147. package/dist/components/data-table.cjs.map +1 -0
  148. package/dist/components/data-table.d.cts +33 -0
  149. package/dist/components/data-table.d.ts +33 -0
  150. package/dist/components/data-table.js +10 -0
  151. package/dist/components/data-table.js.map +1 -0
  152. package/dist/components/date-picker.cjs +10 -0
  153. package/dist/components/date-picker.cjs.map +1 -0
  154. package/dist/components/date-picker.d.cts +16 -0
  155. package/dist/components/date-picker.d.ts +16 -0
  156. package/dist/components/date-picker.js +10 -0
  157. package/dist/components/date-picker.js.map +1 -0
  158. package/dist/components/destructive-dialog.cjs +13 -0
  159. package/dist/components/destructive-dialog.cjs.map +1 -0
  160. package/dist/components/destructive-dialog.d.cts +19 -0
  161. package/dist/components/destructive-dialog.d.ts +19 -0
  162. package/dist/components/destructive-dialog.js +13 -0
  163. package/dist/components/destructive-dialog.js.map +1 -0
  164. package/dist/components/dropdown-menu.cjs +38 -0
  165. package/dist/components/dropdown-menu.cjs.map +1 -0
  166. package/dist/components/dropdown-menu.d.cts +32 -0
  167. package/dist/components/dropdown-menu.d.ts +32 -0
  168. package/dist/components/dropdown-menu.js +38 -0
  169. package/dist/components/dropdown-menu.js.map +1 -0
  170. package/dist/components/empty-state.cjs +10 -0
  171. package/dist/components/empty-state.cjs.map +1 -0
  172. package/dist/components/empty-state.d.cts +23 -0
  173. package/dist/components/empty-state.d.ts +23 -0
  174. package/dist/components/empty-state.js +10 -0
  175. package/dist/components/empty-state.js.map +1 -0
  176. package/dist/components/filter-chips.cjs +9 -0
  177. package/dist/components/filter-chips.cjs.map +1 -0
  178. package/dist/components/filter-chips.d.cts +15 -0
  179. package/dist/components/filter-chips.d.ts +15 -0
  180. package/dist/components/filter-chips.js +9 -0
  181. package/dist/components/filter-chips.js.map +1 -0
  182. package/dist/components/input.cjs +9 -0
  183. package/dist/components/input.cjs.map +1 -0
  184. package/dist/components/input.d.cts +10 -0
  185. package/dist/components/input.d.ts +10 -0
  186. package/dist/components/input.js +9 -0
  187. package/dist/components/input.js.map +1 -0
  188. package/dist/components/kpi-cards.cjs +8 -0
  189. package/dist/components/kpi-cards.cjs.map +1 -0
  190. package/dist/components/kpi-cards.d.cts +15 -0
  191. package/dist/components/kpi-cards.d.ts +15 -0
  192. package/dist/components/kpi-cards.js +8 -0
  193. package/dist/components/kpi-cards.js.map +1 -0
  194. package/dist/components/list-page.cjs +21 -0
  195. package/dist/components/list-page.cjs.map +1 -0
  196. package/dist/components/list-page.d.cts +87 -0
  197. package/dist/components/list-page.d.ts +87 -0
  198. package/dist/components/list-page.js +21 -0
  199. package/dist/components/list-page.js.map +1 -0
  200. package/dist/components/modal.cjs +10 -0
  201. package/dist/components/modal.cjs.map +1 -0
  202. package/dist/components/modal.d.cts +16 -0
  203. package/dist/components/modal.d.ts +16 -0
  204. package/dist/components/modal.js +10 -0
  205. package/dist/components/modal.js.map +1 -0
  206. package/dist/components/pagination-bar.cjs +10 -0
  207. package/dist/components/pagination-bar.cjs.map +1 -0
  208. package/dist/components/pagination-bar.d.cts +11 -0
  209. package/dist/components/pagination-bar.d.ts +11 -0
  210. package/dist/components/pagination-bar.js +10 -0
  211. package/dist/components/pagination-bar.js.map +1 -0
  212. package/dist/components/progress-bar.cjs +9 -0
  213. package/dist/components/progress-bar.cjs.map +1 -0
  214. package/dist/components/progress-bar.d.cts +21 -0
  215. package/dist/components/progress-bar.d.ts +21 -0
  216. package/dist/components/progress-bar.js +9 -0
  217. package/dist/components/progress-bar.js.map +1 -0
  218. package/dist/components/radio-group.cjs +12 -0
  219. package/dist/components/radio-group.cjs.map +1 -0
  220. package/dist/components/radio-group.d.cts +22 -0
  221. package/dist/components/radio-group.d.ts +22 -0
  222. package/dist/components/radio-group.js +12 -0
  223. package/dist/components/radio-group.js.map +1 -0
  224. package/dist/components/sidebar.cjs +11 -0
  225. package/dist/components/sidebar.cjs.map +1 -0
  226. package/dist/components/sidebar.d.cts +24 -0
  227. package/dist/components/sidebar.d.ts +24 -0
  228. package/dist/components/sidebar.js +11 -0
  229. package/dist/components/sidebar.js.map +1 -0
  230. package/dist/components/skeleton.cjs +17 -0
  231. package/dist/components/skeleton.cjs.map +1 -0
  232. package/dist/components/skeleton.d.cts +15 -0
  233. package/dist/components/skeleton.d.ts +15 -0
  234. package/dist/components/skeleton.js +17 -0
  235. package/dist/components/skeleton.js.map +1 -0
  236. package/dist/components/status-tag.cjs +9 -0
  237. package/dist/components/status-tag.cjs.map +1 -0
  238. package/dist/components/status-tag.d.cts +11 -0
  239. package/dist/components/status-tag.d.ts +11 -0
  240. package/dist/components/status-tag.js +9 -0
  241. package/dist/components/status-tag.js.map +1 -0
  242. package/dist/components/tabs.cjs +16 -0
  243. package/dist/components/tabs.cjs.map +1 -0
  244. package/dist/components/tabs.d.cts +9 -0
  245. package/dist/components/tabs.d.ts +9 -0
  246. package/dist/components/tabs.js +16 -0
  247. package/dist/components/tabs.js.map +1 -0
  248. package/dist/components/toggle.cjs +10 -0
  249. package/dist/components/toggle.cjs.map +1 -0
  250. package/dist/components/toggle.d.cts +14 -0
  251. package/dist/components/toggle.d.ts +14 -0
  252. package/dist/components/toggle.js +10 -0
  253. package/dist/components/toggle.js.map +1 -0
  254. package/dist/components/tooltip.cjs +10 -0
  255. package/dist/components/tooltip.cjs.map +1 -0
  256. package/dist/components/tooltip.d.cts +13 -0
  257. package/dist/components/tooltip.d.ts +13 -0
  258. package/dist/components/tooltip.js +10 -0
  259. package/dist/components/tooltip.js.map +1 -0
  260. package/dist/index.cjs +160 -0
  261. package/dist/index.cjs.map +1 -0
  262. package/dist/index.d.cts +32 -0
  263. package/dist/index.d.ts +32 -0
  264. package/dist/index.js +160 -0
  265. package/dist/index.js.map +1 -0
  266. package/dist/styles/global.css +322 -0
  267. package/package.json +71 -0
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KQJCGTS3.js";
5
+
6
+ // src/components/button.tsx
7
+ import * as React from "react";
8
+ import { Slot } from "@radix-ui/react-slot";
9
+ import { cva } from "class-variance-authority";
10
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
+ var buttonVariants = cva(
12
+ [
13
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded font-body font-semibold text-sm",
14
+ "transition-colors duration-[var(--duration-fast)]",
15
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--state-focus-ring)] focus-visible:ring-offset-2",
16
+ "disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none"
17
+ ],
18
+ {
19
+ variants: {
20
+ variant: {
21
+ primary: [
22
+ "bg-[var(--color-action-primary)] text-[var(--color-on-action-primary)]",
23
+ "hover:bg-[var(--color-action-primary-hover)]",
24
+ "active:bg-[var(--color-action-primary-active)]"
25
+ ],
26
+ secondary: [
27
+ "bg-[var(--color-action-secondary)] text-[var(--color-on-action-secondary)]",
28
+ "hover:brightness-95"
29
+ ],
30
+ outlined: [
31
+ "border border-[var(--color-outline)] bg-transparent text-[var(--color-on-surface)]",
32
+ "hover:bg-[var(--state-hover-on-surface)]"
33
+ ],
34
+ ghost: [
35
+ "bg-transparent text-[var(--color-on-surface)]",
36
+ "hover:bg-[var(--state-hover-on-surface)]"
37
+ ],
38
+ destructive: [
39
+ "bg-[var(--color-error)] text-white",
40
+ "hover:brightness-90"
41
+ ]
42
+ },
43
+ size: {
44
+ sm: "h-7 px-3 text-xs",
45
+ md: "h-8 px-4 text-sm",
46
+ lg: "h-9 px-5 text-sm"
47
+ }
48
+ },
49
+ defaultVariants: {
50
+ variant: "primary",
51
+ size: "md"
52
+ }
53
+ }
54
+ );
55
+ var Button = React.forwardRef(
56
+ ({ className, variant, size, asChild = false, loading, disabled, children, ...props }, ref) => {
57
+ const Comp = asChild ? Slot : "button";
58
+ return /* @__PURE__ */ jsx(
59
+ Comp,
60
+ {
61
+ ref,
62
+ className: cn(buttonVariants({ variant, size }), className),
63
+ disabled: disabled || loading,
64
+ ...props,
65
+ children: loading ? /* @__PURE__ */ jsxs(Fragment, { children: [
66
+ /* @__PURE__ */ jsx(
67
+ "span",
68
+ {
69
+ className: "size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent",
70
+ "aria-hidden": "true"
71
+ }
72
+ ),
73
+ /* @__PURE__ */ jsx("span", { className: "sr-only", children: "Carregando..." })
74
+ ] }) : children
75
+ }
76
+ );
77
+ }
78
+ );
79
+ Button.displayName = "Button";
80
+
81
+ export {
82
+ buttonVariants,
83
+ Button
84
+ };
85
+ //# sourceMappingURL=chunk-EMKU3IZY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst buttonVariants = cva(\n [\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded font-body font-semibold text-sm\",\n \"transition-colors duration-[var(--duration-fast)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--state-focus-ring)] focus-visible:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\",\n ],\n {\n variants: {\n variant: {\n primary: [\n \"bg-[var(--color-action-primary)] text-[var(--color-on-action-primary)]\",\n \"hover:bg-[var(--color-action-primary-hover)]\",\n \"active:bg-[var(--color-action-primary-active)]\",\n ],\n secondary: [\n \"bg-[var(--color-action-secondary)] text-[var(--color-on-action-secondary)]\",\n \"hover:brightness-95\",\n ],\n outlined: [\n \"border border-[var(--color-outline)] bg-transparent text-[var(--color-on-surface)]\",\n \"hover:bg-[var(--state-hover-on-surface)]\",\n ],\n ghost: [\n \"bg-transparent text-[var(--color-on-surface)]\",\n \"hover:bg-[var(--state-hover-on-surface)]\",\n ],\n destructive: [\n \"bg-[var(--color-error)] text-white\",\n \"hover:brightness-90\",\n ],\n },\n size: {\n sm: \"h-7 px-3 text-xs\",\n md: \"h-8 px-4 text-sm\",\n lg: \"h-9 px-5 text-sm\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n loading?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, loading, disabled, children, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size }), className)}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n <>\n <span\n className=\"size-3.5 animate-spin rounded-full border-2 border-current border-t-transparent\"\n aria-hidden=\"true\"\n />\n <span className=\"sr-only\">Carregando...</span>\n </>\n ) : (\n children\n )}\n </Comp>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n"],"mappings":";;;;;;AAAA,YAAY,WAAW;AACvB,SAAS,YAAY;AACrB,SAAS,WAA8B;AAmE7B,mBACE,KADF;AAhEV,IAAM,iBAAiB;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,UACA;AAAA,QACF;AAAA,QACA,OAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,QACA,aAAa;AAAA,UACX;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AACF;AASA,IAAM,SAAe;AAAA,EACnB,CAAC,EAAE,WAAW,SAAS,MAAM,UAAU,OAAO,SAAS,UAAU,UAAU,GAAG,MAAM,GAAG,QAAQ;AAC7F,UAAM,OAAO,UAAU,OAAO;AAE9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,WAAW,GAAG,eAAe,EAAE,SAAS,KAAK,CAAC,GAAG,SAAS;AAAA,QAC1D,UAAU,YAAY;AAAA,QACrB,GAAG;AAAA,QAEH,oBACC,iCACE;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cACV,eAAY;AAAA;AAAA,UACd;AAAA,UACA,oBAAC,UAAK,WAAU,WAAU,2BAAa;AAAA,WACzC,IAEA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,OAAO,cAAc;","names":[]}
@@ -0,0 +1,81 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KQJCGTS3.js";
5
+
6
+ // src/components/progress-bar.tsx
7
+ import * as React from "react";
8
+ import * as RadixProgress from "@radix-ui/react-progress";
9
+ import { cva } from "class-variance-authority";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ var trackVariants = cva(
12
+ "relative w-full overflow-hidden rounded-full bg-[var(--color-surf-container-high)]",
13
+ {
14
+ variants: {
15
+ size: {
16
+ sm: "h-1.5",
17
+ md: "h-2.5",
18
+ lg: "h-4"
19
+ }
20
+ },
21
+ defaultVariants: { size: "md" }
22
+ }
23
+ );
24
+ var fillVariants = cva(
25
+ "h-full w-full flex-1 rounded-full transition-all duration-[var(--duration-slow)] ease-[var(--ease-out)]",
26
+ {
27
+ variants: {
28
+ variant: {
29
+ default: "bg-[var(--color-primary)]",
30
+ success: "bg-[var(--color-success)]",
31
+ warning: "bg-[var(--color-warning)]",
32
+ error: "bg-[var(--color-error)]"
33
+ }
34
+ },
35
+ defaultVariants: { variant: "default" }
36
+ }
37
+ );
38
+ var ProgressBar = React.forwardRef(
39
+ ({
40
+ value,
41
+ max = 100,
42
+ label,
43
+ showValue = false,
44
+ caption,
45
+ size,
46
+ variant,
47
+ className
48
+ }, ref) => {
49
+ const clamped = Math.min(Math.max(value, 0), max);
50
+ const pct = max > 0 ? clamped / max * 100 : 0;
51
+ const display = max === 100 ? `${Math.round(pct)}%` : `${clamped}/${max}`;
52
+ return /* @__PURE__ */ jsxs("div", { ref, className: cn("flex flex-col gap-1.5 w-full", className), children: [
53
+ (label || showValue) && /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-2", children: [
54
+ label && /* @__PURE__ */ jsx("span", { className: "text-body-sm font-semibold text-[var(--color-on-surface)]", children: label }),
55
+ showValue && /* @__PURE__ */ jsx("span", { className: "text-body-sm text-[var(--color-on-surface-var)] tabular-nums ml-auto", children: display })
56
+ ] }),
57
+ /* @__PURE__ */ jsx(
58
+ RadixProgress.Root,
59
+ {
60
+ value: clamped,
61
+ max,
62
+ className: cn(trackVariants({ size })),
63
+ children: /* @__PURE__ */ jsx(
64
+ RadixProgress.Indicator,
65
+ {
66
+ className: cn(fillVariants({ variant })),
67
+ style: { transform: `translateX(-${100 - pct}%)` }
68
+ }
69
+ )
70
+ }
71
+ ),
72
+ caption && /* @__PURE__ */ jsx("span", { className: "text-body-sm text-[var(--color-on-surface-var)]", children: caption })
73
+ ] });
74
+ }
75
+ );
76
+ ProgressBar.displayName = "ProgressBar";
77
+
78
+ export {
79
+ ProgressBar
80
+ };
81
+ //# sourceMappingURL=chunk-FZD2ZXN2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/progress-bar.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as RadixProgress from \"@radix-ui/react-progress\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst trackVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-[var(--color-surf-container-high)]\",\n {\n variants: {\n size: {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n },\n },\n defaultVariants: { size: \"md\" },\n }\n);\n\nconst fillVariants = cva(\n \"h-full w-full flex-1 rounded-full transition-all duration-[var(--duration-slow)] ease-[var(--ease-out)]\",\n {\n variants: {\n variant: {\n default: \"bg-[var(--color-primary)]\",\n success: \"bg-[var(--color-success)]\",\n warning: \"bg-[var(--color-warning)]\",\n error: \"bg-[var(--color-error)]\",\n },\n },\n defaultVariants: { variant: \"default\" },\n }\n);\n\nexport interface ProgressBarProps extends VariantProps<typeof trackVariants>, VariantProps<typeof fillVariants> {\n value: number;\n max?: number;\n label?: string;\n showValue?: boolean;\n caption?: string;\n className?: string;\n}\n\nconst ProgressBar = React.forwardRef<HTMLDivElement, ProgressBarProps>(\n (\n {\n value,\n max = 100,\n label,\n showValue = false,\n caption,\n size,\n variant,\n className,\n },\n ref\n ) => {\n const clamped = Math.min(Math.max(value, 0), max);\n const pct = max > 0 ? (clamped / max) * 100 : 0;\n const display = max === 100 ? `${Math.round(pct)}%` : `${clamped}/${max}`;\n\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1.5 w-full\", className)}>\n {(label || showValue) && (\n <div className=\"flex items-center justify-between gap-2\">\n {label && (\n <span className=\"text-body-sm font-semibold text-[var(--color-on-surface)]\">\n {label}\n </span>\n )}\n {showValue && (\n <span className=\"text-body-sm text-[var(--color-on-surface-var)] tabular-nums ml-auto\">\n {display}\n </span>\n )}\n </div>\n )}\n\n <RadixProgress.Root\n value={clamped}\n max={max}\n className={cn(trackVariants({ size }))}\n >\n <RadixProgress.Indicator\n className={cn(fillVariants({ variant }))}\n style={{ transform: `translateX(-${100 - pct}%)` }}\n />\n </RadixProgress.Root>\n\n {caption && (\n <span className=\"text-body-sm text-[var(--color-on-surface-var)]\">\n {caption}\n </span>\n )}\n </div>\n );\n }\n);\n\nProgressBar.displayName = \"ProgressBar\";\nexport { ProgressBar };\n"],"mappings":";;;;;;AAAA,YAAY,WAAW;AACvB,YAAY,mBAAmB;AAC/B,SAAS,WAA8B;AA8D/B,SAEI,KAFJ;AA3DR,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MACN;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,MAAM,KAAK;AAAA,EAChC;AACF;AAEA,IAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,iBAAiB,EAAE,SAAS,UAAU;AAAA,EACxC;AACF;AAWA,IAAM,cAAoB;AAAA,EACxB,CACE;AAAA,IACE;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GACA,QACG;AACH,UAAM,UAAU,KAAK,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG;AAChD,UAAM,MAAM,MAAM,IAAK,UAAU,MAAO,MAAM;AAC9C,UAAM,UAAU,QAAQ,MAAM,GAAG,KAAK,MAAM,GAAG,CAAC,MAAM,GAAG,OAAO,IAAI,GAAG;AAEvE,WACE,qBAAC,SAAI,KAAU,WAAW,GAAG,gCAAgC,SAAS,GACpE;AAAA,gBAAS,cACT,qBAAC,SAAI,WAAU,2CACZ;AAAA,iBACC,oBAAC,UAAK,WAAU,6DACb,iBACH;AAAA,QAED,aACC,oBAAC,UAAK,WAAU,wEACb,mBACH;AAAA,SAEJ;AAAA,MAGF;AAAA,QAAe;AAAA,QAAd;AAAA,UACC,OAAO;AAAA,UACP;AAAA,UACA,WAAW,GAAG,cAAc,EAAE,KAAK,CAAC,CAAC;AAAA,UAErC;AAAA,YAAe;AAAA,YAAd;AAAA,cACC,WAAW,GAAG,aAAa,EAAE,QAAQ,CAAC,CAAC;AAAA,cACvC,OAAO,EAAE,WAAW,eAAe,MAAM,GAAG,KAAK;AAAA;AAAA,UACnD;AAAA;AAAA,MACF;AAAA,MAEC,WACC,oBAAC,UAAK,WAAU,mDACb,mBACH;AAAA,OAEF;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;","names":[]}
@@ -0,0 +1,90 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KQJCGTS3.js";
5
+
6
+ // src/components/alert.tsx
7
+ import * as React from "react";
8
+ import {
9
+ Info,
10
+ CheckCircle,
11
+ AlertTriangle,
12
+ AlertCircle,
13
+ X
14
+ } from "lucide-react";
15
+ import { cva } from "class-variance-authority";
16
+ import { jsx, jsxs } from "react/jsx-runtime";
17
+ var alertVariants = cva(
18
+ "flex gap-3 p-4 rounded-[var(--radius-md)] border-l-[3px]",
19
+ {
20
+ variants: {
21
+ variant: {
22
+ info: "bg-[var(--color-info-container)] text-[var(--color-on-info-container)] border-l-[var(--color-info)]",
23
+ success: "bg-[var(--color-success-container)] text-[var(--color-on-success-container)] border-l-[var(--color-success)]",
24
+ warning: "bg-[var(--color-warning-container)] text-[var(--color-on-warning-container)] border-l-[var(--color-warning)]",
25
+ error: "bg-[var(--color-error-container)] text-[var(--color-on-error-container)] border-l-[var(--color-error)]"
26
+ }
27
+ }
28
+ }
29
+ );
30
+ var DEFAULT_ICONS = {
31
+ info: Info,
32
+ success: CheckCircle,
33
+ warning: AlertTriangle,
34
+ error: AlertCircle
35
+ };
36
+ var Alert = React.forwardRef(
37
+ ({
38
+ className,
39
+ variant,
40
+ title,
41
+ description,
42
+ icon: IconProp,
43
+ onDismiss,
44
+ action,
45
+ ...props
46
+ }, ref) => {
47
+ const Icon = IconProp ?? DEFAULT_ICONS[variant];
48
+ return /* @__PURE__ */ jsxs(
49
+ "div",
50
+ {
51
+ ref,
52
+ role: "alert",
53
+ className: cn(alertVariants({ variant }), className),
54
+ ...props,
55
+ children: [
56
+ /* @__PURE__ */ jsx(Icon, { className: "mt-0.5 size-5 shrink-0", "aria-hidden": "true" }),
57
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
58
+ title && /* @__PURE__ */ jsx("p", { className: "text-heading mb-0.5", children: title }),
59
+ /* @__PURE__ */ jsx("p", { className: "text-body-md", children: description }),
60
+ action && /* @__PURE__ */ jsx(
61
+ "button",
62
+ {
63
+ type: "button",
64
+ onClick: action.onClick,
65
+ className: "mt-2 text-body-sm font-semibold underline hover:no-underline",
66
+ children: action.label
67
+ }
68
+ )
69
+ ] }),
70
+ onDismiss && /* @__PURE__ */ jsx(
71
+ "button",
72
+ {
73
+ type: "button",
74
+ onClick: onDismiss,
75
+ className: "shrink-0 rounded hover:opacity-70 transition-opacity",
76
+ "aria-label": "Fechar",
77
+ children: /* @__PURE__ */ jsx(X, { className: "size-4" })
78
+ }
79
+ )
80
+ ]
81
+ }
82
+ );
83
+ }
84
+ );
85
+ Alert.displayName = "Alert";
86
+
87
+ export {
88
+ Alert
89
+ };
90
+ //# sourceMappingURL=chunk-FZFA24YL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/alert.tsx"],"sourcesContent":["import * as React from \"react\";\nimport {\n Info,\n CheckCircle,\n AlertTriangle,\n AlertCircle,\n X,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../lib/utils\";\n\nconst alertVariants = cva(\n \"flex gap-3 p-4 rounded-[var(--radius-md)] border-l-[3px]\",\n {\n variants: {\n variant: {\n info: \"bg-[var(--color-info-container)] text-[var(--color-on-info-container)] border-l-[var(--color-info)]\",\n success:\n \"bg-[var(--color-success-container)] text-[var(--color-on-success-container)] border-l-[var(--color-success)]\",\n warning:\n \"bg-[var(--color-warning-container)] text-[var(--color-on-warning-container)] border-l-[var(--color-warning)]\",\n error:\n \"bg-[var(--color-error-container)] text-[var(--color-on-error-container)] border-l-[var(--color-error)]\",\n },\n },\n }\n);\n\nconst DEFAULT_ICONS: Record<string, LucideIcon> = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n};\n\nexport interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {\n variant: \"info\" | \"success\" | \"warning\" | \"error\";\n title?: string;\n description: string;\n icon?: LucideIcon;\n onDismiss?: () => void;\n action?: { label: string; onClick: () => void };\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n variant,\n title,\n description,\n icon: IconProp,\n onDismiss,\n action,\n ...props\n },\n ref\n ) => {\n const Icon = IconProp ?? DEFAULT_ICONS[variant];\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n >\n <Icon className=\"mt-0.5 size-5 shrink-0\" aria-hidden=\"true\" />\n <div className=\"flex-1 min-w-0\">\n {title && <p className=\"text-heading mb-0.5\">{title}</p>}\n <p className=\"text-body-md\">{description}</p>\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"mt-2 text-body-sm font-semibold underline hover:no-underline\"\n >\n {action.label}\n </button>\n )}\n </div>\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded hover:opacity-70 transition-opacity\"\n aria-label=\"Fechar\"\n >\n <X className=\"size-4\" />\n </button>\n )}\n </div>\n );\n }\n);\nAlert.displayName = \"Alert\";\n\nexport { Alert };\n"],"mappings":";;;;;;AAAA,YAAY,WAAW;AACvB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,WAAW;AA2DZ,cACA,YADA;AAxDR,IAAM,gBAAgB;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,SACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,gBAA4C;AAAA,EAChD,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT;AAWA,IAAM,QAAc;AAAA,EAClB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,GACA,QACG;AACH,UAAM,OAAO,YAAY,cAAc,OAAO;AAE9C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAW,GAAG,cAAc,EAAE,QAAQ,CAAC,GAAG,SAAS;AAAA,QAClD,GAAG;AAAA,QAEJ;AAAA,8BAAC,QAAK,WAAU,0BAAyB,eAAY,QAAO;AAAA,UAC5D,qBAAC,SAAI,WAAU,kBACZ;AAAA,qBAAS,oBAAC,OAAE,WAAU,uBAAuB,iBAAM;AAAA,YACpD,oBAAC,OAAE,WAAU,gBAAgB,uBAAY;AAAA,YACxC,UACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,OAAO;AAAA,gBAChB,WAAU;AAAA,gBAET,iBAAO;AAAA;AAAA,YACV;AAAA,aAEJ;AAAA,UACC,aACC;AAAA,YAAC;AAAA;AAAA,cACC,MAAK;AAAA,cACL,SAAS;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,8BAAC,KAAE,WAAU,UAAS;AAAA;AAAA,UACxB;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AACA,MAAM,cAAc;","names":[]}
@@ -0,0 +1,87 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
2
+
3
+
4
+ var _chunkR5SUYP2Fcjs = require('./chunk-R5SUYP2F.cjs');
5
+
6
+
7
+ var _chunkA665K552cjs = require('./chunk-A665K552.cjs');
8
+
9
+
10
+ var _chunk5SCF3EGTcjs = require('./chunk-5SCF3EGT.cjs');
11
+
12
+ // src/components/sidebar.tsx
13
+ var _react = require('react'); var React = _interopRequireWildcard(_react);
14
+ var _jsxruntime = require('react/jsx-runtime');
15
+ var Sidebar = React.forwardRef(
16
+ ({ logo, navItems, user, onNavigate, className }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
17
+ "aside",
18
+ {
19
+ ref,
20
+ className: _chunk5SCF3EGTcjs.cn.call(void 0,
21
+ "flex flex-col sticky top-0 h-screen shrink-0 bg-[var(--color-primary)]",
22
+ "w-[var(--sidebar-width)]",
23
+ className
24
+ ),
25
+ children: [
26
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27
+ "div",
28
+ {
29
+ className: _chunk5SCF3EGTcjs.cn.call(void 0,
30
+ "flex items-center shrink-0 px-5",
31
+ "h-[var(--sidebar-header-height)]",
32
+ "border-b border-[var(--color-divider-on-primary)]"
33
+ ),
34
+ children: logo
35
+ }
36
+ ),
37
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { className: "flex-1 overflow-y-auto py-2", children: navItems.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
38
+ "a",
39
+ {
40
+ href: _chunkR5SUYP2Fcjs.safeHref.call(void 0, item.href),
41
+ "aria-current": item.active ? "page" : void 0,
42
+ onClick: (e) => {
43
+ if (onNavigate) {
44
+ e.preventDefault();
45
+ onNavigate(item.href);
46
+ }
47
+ },
48
+ className: _chunk5SCF3EGTcjs.cn.call(void 0,
49
+ "flex w-full items-center gap-3 px-4 py-2.5 no-underline transition-colors border-l-[3px]",
50
+ item.active ? "border-white font-semibold bg-[var(--state-active-on-primary)] text-[var(--color-on-action-primary)]" : "border-transparent text-[var(--color-on-primary-muted)] hover:bg-[var(--state-hover-on-primary)]"
51
+ ),
52
+ children: [
53
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, item.icon, { size: 18, className: "shrink-0" }),
54
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-body-md flex-1", children: item.label }),
55
+ item.badge !== void 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
56
+ "span",
57
+ {
58
+ className: _chunk5SCF3EGTcjs.cn.call(void 0,
59
+ "ml-auto rounded-full text-center text-tiny",
60
+ "bg-[var(--state-active-on-primary)] text-[var(--color-on-action-primary)]",
61
+ "min-w-[18px] px-1.5 py-px"
62
+ ),
63
+ children: item.badge
64
+ }
65
+ )
66
+ ]
67
+ },
68
+ item.href
69
+ )) }),
70
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mx-4 shrink-0 h-px bg-[var(--color-divider-on-primary)]" }),
71
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 shrink-0 p-4", children: [
72
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA665K552cjs.Avatar, { name: user.name, src: user.avatarSrc, size: "sm" }),
73
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col min-w-0", children: [
74
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-body-md font-semibold truncate text-[var(--color-on-action-primary)]", children: user.name }),
75
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-body-sm truncate text-[var(--color-on-primary-muted)]", children: user.role })
76
+ ] })
77
+ ] })
78
+ ]
79
+ }
80
+ )
81
+ );
82
+ Sidebar.displayName = "Sidebar";
83
+
84
+
85
+
86
+ exports.Sidebar = Sidebar;
87
+ //# sourceMappingURL=chunk-G5SLIXQ5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/isaac/vega/lyra/lyra-ds.v3/packages/lyra-ds/dist/chunk-G5SLIXQ5.cjs","../src/components/sidebar.tsx"],"names":[],"mappings":"AAAA,uWAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B;AACA;ACXA,2EAAuB;AAqCjB,+CAAA;AAXN,IAAM,QAAA,EAAgB,KAAA,CAAA,UAAA;AAAA,EACpB,CAAC,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,UAAA,EAAY,UAAU,CAAA,EAAG,GAAA,EAAA,mBAChD,8BAAA;AAAA,IAAC,OAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,kCAAA;AAAA,QACT,wEAAA;AAAA,QACA,0BAAA;AAAA,QACA;AAAA,MACF,CAAA;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAA,6BAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,kCAAA;AAAA,cACT,iCAAA;AAAA,cACA,kCAAA;AAAA,cACA;AAAA,YACF,CAAA;AAAA,YAEC,QAAA,EAAA;AAAA,UAAA;AAAA,QACH,CAAA;AAAA,wBAGA,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,6BAAA,EACZ,QAAA,EAAA,QAAA,CAAS,GAAA,CAAI,CAAC,IAAA,EAAA,mBACb,8BAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAM,wCAAA,IAAS,CAAK,IAAI,CAAA;AAAA,YACxB,cAAA,EAAc,IAAA,CAAK,OAAA,EAAS,OAAA,EAAS,KAAA,CAAA;AAAA,YACrC,OAAA,EAAS,CAAC,CAAA,EAAA,GAAM;AACd,cAAA,GAAA,CAAI,UAAA,EAAY;AACd,gBAAA,CAAA,CAAE,cAAA,CAAe,CAAA;AACjB,gBAAA,UAAA,CAAW,IAAA,CAAK,IAAI,CAAA;AAAA,cACtB;AAAA,YACF,CAAA;AAAA,YACA,SAAA,EAAW,kCAAA;AAAA,cACT,0FAAA;AAAA,cACA,IAAA,CAAK,OAAA,EACD,uGAAA,EACA;AAAA,YACN,CAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAA,6BAAA,IAAC,CAAK,IAAA,EAAL,EAAU,IAAA,EAAM,EAAA,EAAI,SAAA,EAAU,WAAA,CAAW,CAAA;AAAA,8BAC1C,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,IAAA,CAAK,MAAA,CAAM,CAAA;AAAA,cACjD,IAAA,CAAK,MAAA,IAAU,KAAA,EAAA,mBACd,6BAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,SAAA,EAAW,kCAAA;AAAA,oBACT,4CAAA;AAAA,oBACA,2EAAA;AAAA,oBACA;AAAA,kBACF,CAAA;AAAA,kBAEC,QAAA,EAAA,IAAA,CAAK;AAAA,gBAAA;AAAA,cACR;AAAA,YAAA;AAAA,UAAA,CAAA;AAAA,UA3BG,IAAA,CAAK;AAAA,QA6BZ,CACD,EAAA,CACH,CAAA;AAAA,wBAGA,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,0DAAA,CAA0D,CAAA;AAAA,wBAGzE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,sCAAA,EACb,QAAA,EAAA;AAAA,0BAAA,6BAAA,wBAAC,EAAA,EAAO,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,GAAA,EAAK,IAAA,CAAK,SAAA,EAAW,IAAA,EAAK,KAAA,CAAK,CAAA;AAAA,0BACxD,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,4BAAA,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,2EAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,CACR,CAAA;AAAA,4BACA,6BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,4DAAA,EACb,QAAA,EAAA,IAAA,CAAK,KAAA,CACR;AAAA,UAAA,EAAA,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAEJ,CAAA;AACA,OAAA,CAAQ,YAAA,EAAc,SAAA;ADpBtB;AACA;AACE;AACF,0BAAC","file":"/home/isaac/vega/lyra/lyra-ds.v3/packages/lyra-ds/dist/chunk-G5SLIXQ5.cjs","sourcesContent":[null,"import * as React from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { cn } from \"../lib/utils\";\nimport { safeHref } from \"../lib/safe-href\";\nimport { Avatar } from \"./avatar\";\n\ninterface SidebarNavItem {\n label: string;\n href: string;\n icon: LucideIcon;\n active?: boolean;\n badge?: string | number;\n}\n\nexport interface SidebarProps {\n logo: React.ReactNode;\n navItems: SidebarNavItem[];\n user: {\n name: string;\n role: string;\n avatarSrc?: string;\n };\n onNavigate?: (href: string) => void;\n className?: string;\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n ({ logo, navItems, user, onNavigate, className }, ref) => (\n <aside\n ref={ref}\n className={cn(\n \"flex flex-col sticky top-0 h-screen shrink-0 bg-[var(--color-primary)]\",\n \"w-[var(--sidebar-width)]\",\n className\n )}\n >\n {/* Logo area */}\n <div\n className={cn(\n \"flex items-center shrink-0 px-5\",\n \"h-[var(--sidebar-header-height)]\",\n \"border-b border-[var(--color-divider-on-primary)]\"\n )}\n >\n {logo}\n </div>\n\n {/* Nav items */}\n <nav className=\"flex-1 overflow-y-auto py-2\">\n {navItems.map((item) => (\n <a\n key={item.href}\n href={safeHref(item.href)}\n aria-current={item.active ? \"page\" : undefined}\n onClick={(e) => {\n if (onNavigate) {\n e.preventDefault();\n onNavigate(item.href);\n }\n }}\n className={cn(\n \"flex w-full items-center gap-3 px-4 py-2.5 no-underline transition-colors border-l-[3px]\",\n item.active\n ? \"border-white font-semibold bg-[var(--state-active-on-primary)] text-[var(--color-on-action-primary)]\"\n : \"border-transparent text-[var(--color-on-primary-muted)] hover:bg-[var(--state-hover-on-primary)]\"\n )}\n >\n <item.icon size={18} className=\"shrink-0\" />\n <span className=\"text-body-md flex-1\">{item.label}</span>\n {item.badge !== undefined && (\n <span\n className={cn(\n \"ml-auto rounded-full text-center text-tiny\",\n \"bg-[var(--state-active-on-primary)] text-[var(--color-on-action-primary)]\",\n \"min-w-[18px] px-1.5 py-px\"\n )}\n >\n {item.badge}\n </span>\n )}\n </a>\n ))}\n </nav>\n\n {/* Separator */}\n <div className=\"mx-4 shrink-0 h-px bg-[var(--color-divider-on-primary)]\" />\n\n {/* User profile */}\n <div className=\"flex items-center gap-3 shrink-0 p-4\">\n <Avatar name={user.name} src={user.avatarSrc} size=\"sm\" />\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-body-md font-semibold truncate text-[var(--color-on-action-primary)]\">\n {user.name}\n </span>\n <span className=\"text-body-sm truncate text-[var(--color-on-primary-muted)]\">\n {user.role}\n </span>\n </div>\n </div>\n </aside>\n )\n);\nSidebar.displayName = \"Sidebar\";\n\nexport { Sidebar };\n"]}
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KQJCGTS3.js";
5
+
6
+ // src/components/radio-group.tsx
7
+ import * as React from "react";
8
+ import * as RadixRadioGroup from "@radix-ui/react-radio-group";
9
+ import { jsx, jsxs } from "react/jsx-runtime";
10
+ var RadioGroup = React.forwardRef(
11
+ ({
12
+ value,
13
+ defaultValue,
14
+ onValueChange,
15
+ disabled,
16
+ orientation = "vertical",
17
+ className,
18
+ children
19
+ }, ref) => /* @__PURE__ */ jsx(
20
+ RadixRadioGroup.Root,
21
+ {
22
+ ref,
23
+ value,
24
+ defaultValue,
25
+ onValueChange,
26
+ disabled,
27
+ orientation,
28
+ className: cn(
29
+ "flex",
30
+ orientation === "vertical" ? "flex-col gap-2" : "flex-row flex-wrap gap-4",
31
+ className
32
+ ),
33
+ children
34
+ }
35
+ )
36
+ );
37
+ var RadioGroupItem = React.forwardRef(({ value, label, description, disabled, id: idProp }, ref) => {
38
+ const generatedId = React.useId();
39
+ const id = idProp ?? generatedId;
40
+ return /* @__PURE__ */ jsxs("div", { className: cn("flex items-start gap-3", disabled && "opacity-50 cursor-not-allowed"), children: [
41
+ /* @__PURE__ */ jsx(
42
+ RadixRadioGroup.Item,
43
+ {
44
+ ref,
45
+ id,
46
+ value,
47
+ disabled,
48
+ className: cn(
49
+ "mt-0.5 size-4 shrink-0 rounded-full border-2 border-[var(--color-outline)]",
50
+ "transition-colors duration-[var(--duration-fast)]",
51
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--state-focus-ring)] focus-visible:ring-offset-2",
52
+ "data-[state=checked]:border-[var(--color-primary)] data-[state=checked]:bg-[var(--color-primary)]",
53
+ "disabled:cursor-not-allowed",
54
+ "relative flex items-center justify-center"
55
+ ),
56
+ children: /* @__PURE__ */ jsx(
57
+ RadixRadioGroup.Indicator,
58
+ {
59
+ className: "flex items-center justify-center",
60
+ children: /* @__PURE__ */ jsx("span", { className: "size-1.5 rounded-full bg-white block" })
61
+ }
62
+ )
63
+ }
64
+ ),
65
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
66
+ /* @__PURE__ */ jsx(
67
+ "label",
68
+ {
69
+ htmlFor: id,
70
+ className: cn(
71
+ "text-body-md cursor-pointer text-[var(--color-on-surface)] leading-none pt-0.5",
72
+ disabled && "cursor-not-allowed"
73
+ ),
74
+ children: label
75
+ }
76
+ ),
77
+ description && /* @__PURE__ */ jsx("span", { className: "text-body-sm text-[var(--color-on-surface-var)] mt-0.5", children: description })
78
+ ] })
79
+ ] });
80
+ });
81
+ RadioGroup.displayName = "RadioGroup";
82
+ RadioGroupItem.displayName = "RadioGroupItem";
83
+
84
+ export {
85
+ RadioGroup,
86
+ RadioGroupItem
87
+ };
88
+ //# sourceMappingURL=chunk-G6T2BYPC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/radio-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RadixRadioGroup from \"@radix-ui/react-radio-group\";\nimport { cn } from \"../lib/utils\";\n\nexport interface RadioGroupProps {\n value?: string;\n defaultValue?: string;\n onValueChange?: (value: string) => void;\n disabled?: boolean;\n orientation?: \"horizontal\" | \"vertical\";\n className?: string;\n children: React.ReactNode;\n}\n\nconst RadioGroup = React.forwardRef<\n React.ComponentRef<typeof RadixRadioGroup.Root>,\n RadioGroupProps\n>(\n (\n {\n value,\n defaultValue,\n onValueChange,\n disabled,\n orientation = \"vertical\",\n className,\n children,\n },\n ref\n ) => (\n <RadixRadioGroup.Root\n ref={ref}\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n orientation={orientation}\n className={cn(\n \"flex\",\n orientation === \"vertical\" ? \"flex-col gap-2\" : \"flex-row flex-wrap gap-4\",\n className\n )}\n >\n {children}\n </RadixRadioGroup.Root>\n )\n);\n\nexport interface RadioGroupItemProps {\n value: string;\n label: string;\n description?: string;\n disabled?: boolean;\n id?: string;\n}\n\nconst RadioGroupItem = React.forwardRef<\n React.ComponentRef<typeof RadixRadioGroup.Item>,\n RadioGroupItemProps\n>(({ value, label, description, disabled, id: idProp }, ref) => {\n const generatedId = React.useId();\n const id = idProp ?? generatedId;\n\n return (\n <div className={cn(\"flex items-start gap-3\", disabled && \"opacity-50 cursor-not-allowed\")}>\n <RadixRadioGroup.Item\n ref={ref}\n id={id}\n value={value}\n disabled={disabled}\n className={cn(\n \"mt-0.5 size-4 shrink-0 rounded-full border-2 border-[var(--color-outline)]\",\n \"transition-colors duration-[var(--duration-fast)]\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--state-focus-ring)] focus-visible:ring-offset-2\",\n \"data-[state=checked]:border-[var(--color-primary)] data-[state=checked]:bg-[var(--color-primary)]\",\n \"disabled:cursor-not-allowed\",\n \"relative flex items-center justify-center\"\n )}\n >\n <RadixRadioGroup.Indicator\n className=\"flex items-center justify-center\"\n >\n <span className=\"size-1.5 rounded-full bg-white block\" />\n </RadixRadioGroup.Indicator>\n </RadixRadioGroup.Item>\n\n <div className=\"flex flex-col\">\n <label\n htmlFor={id}\n className={cn(\n \"text-body-md cursor-pointer text-[var(--color-on-surface)] leading-none pt-0.5\",\n disabled && \"cursor-not-allowed\"\n )}\n >\n {label}\n </label>\n {description && (\n <span className=\"text-body-sm text-[var(--color-on-surface-var)] mt-0.5\">\n {description}\n </span>\n )}\n </div>\n </div>\n );\n});\n\nRadioGroup.displayName = \"RadioGroup\";\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport { RadioGroup, RadioGroupItem };\n"],"mappings":";;;;;;AAEA,YAAY,WAAW;AACvB,YAAY,qBAAqB;AA6B7B,cAwDE,YAxDF;AAhBJ,IAAM,aAAmB;AAAA,EAIvB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,EACF,GACA,QAEA;AAAA,IAAiB;AAAA,IAAhB;AAAA,MACC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,gBAAgB,aAAa,mBAAmB;AAAA,QAChD;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;AAUA,IAAM,iBAAuB,iBAG3B,CAAC,EAAE,OAAO,OAAO,aAAa,UAAU,IAAI,OAAO,GAAG,QAAQ;AAC9D,QAAM,cAAoB,YAAM;AAChC,QAAM,KAAK,UAAU;AAErB,SACE,qBAAC,SAAI,WAAW,GAAG,0BAA0B,YAAY,+BAA+B,GACtF;AAAA;AAAA,MAAiB;AAAA,MAAhB;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,UAAiB;AAAA,UAAhB;AAAA,YACC,WAAU;AAAA,YAEV,8BAAC,UAAK,WAAU,wCAAuC;AAAA;AAAA,QACzD;AAAA;AAAA,IACF;AAAA,IAEA,qBAAC,SAAI,WAAU,iBACb;AAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS;AAAA,UACT,WAAW;AAAA,YACT;AAAA,YACA,YAAY;AAAA,UACd;AAAA,UAEC;AAAA;AAAA,MACH;AAAA,MACC,eACC,oBAAC,UAAK,WAAU,0DACb,uBACH;AAAA,OAEJ;AAAA,KACF;AAEJ,CAAC;AAED,WAAW,cAAc;AACzB,eAAe,cAAc;","names":[]}
@@ -0,0 +1,43 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkLUQS7LYGcjs = require('./chunk-LUQS7LYG.cjs');
5
+
6
+ // src/components/bulk-bar.tsx
7
+ var _lucidereact = require('lucide-react');
8
+ var _jsxruntime = require('react/jsx-runtime');
9
+ function BulkBar({ count, bulkActions, onClear, onAction }) {
10
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 h-10 px-3 bg-[var(--color-primary-container)]", children: [
11
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-body-sm font-semibold text-[var(--color-on-primary-container)]", children: [
12
+ count,
13
+ " selecionado",
14
+ count !== 1 ? "s" : ""
15
+ ] }),
16
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 w-px bg-[var(--color-primary)] opacity-30" }),
17
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-2", children: bulkActions.map((action) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18
+ _chunkLUQS7LYGcjs.Button,
19
+ {
20
+ variant: action.destructive ? "destructive" : "outlined",
21
+ size: "sm",
22
+ onClick: () => onAction(action),
23
+ children: action.label
24
+ },
25
+ action.label
26
+ )) }),
27
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
28
+ "button",
29
+ {
30
+ type: "button",
31
+ onClick: onClear,
32
+ className: "ml-auto text-[var(--color-on-primary-container)] hover:opacity-70 transition-opacity",
33
+ "aria-label": "Limpar sele\xE7\xE3o",
34
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4" })
35
+ }
36
+ )
37
+ ] });
38
+ }
39
+
40
+
41
+
42
+ exports.BulkBar = BulkBar;
43
+ //# sourceMappingURL=chunk-GGZSDAN3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/isaac/vega/lyra/lyra-ds.v3/packages/lyra-ds/dist/chunk-GGZSDAN3.cjs","../src/components/bulk-bar.tsx"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACF,wDAA6B;AAC7B;AACA;ACFA,2CAAkB;AAsBZ,+CAAA;AAHN,SAAS,OAAA,CAAQ,EAAE,KAAA,EAAO,WAAA,EAAa,OAAA,EAAS,SAAS,CAAA,EAAiB;AACxE,EAAA,uBACE,8BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,uEAAA,EACb,QAAA,EAAA;AAAA,oBAAA,8BAAA,MAAC,EAAA,EAAK,SAAA,EAAU,qEAAA,EACb,QAAA,EAAA;AAAA,MAAA,KAAA;AAAA,MAAM,cAAA;AAAA,MAAa,MAAA,IAAU,EAAA,EAAI,IAAA,EAAM;AAAA,IAAA,EAAA,CAC1C,CAAA;AAAA,oBACA,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,gDAAA,CAAgD,CAAA;AAAA,oBAC/D,6BAAA,KAAC,EAAA,EAAI,SAAA,EAAU,yBAAA,EACZ,QAAA,EAAA,WAAA,CAAY,GAAA,CAAI,CAAC,MAAA,EAAA,mBAChB,6BAAA;AAAA,MAAC,wBAAA;AAAA,MAAA;AAAA,QAEC,OAAA,EAAS,MAAA,CAAO,YAAA,EAAc,cAAA,EAAgB,UAAA;AAAA,QAC9C,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,CAAA,EAAA,GAAM,QAAA,CAAS,MAAM,CAAA;AAAA,QAE7B,QAAA,EAAA,MAAA,CAAO;AAAA,MAAA,CAAA;AAAA,MALH,MAAA,CAAO;AAAA,IAMd,CACD,EAAA,CACH,CAAA;AAAA,oBACA,6BAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,OAAA;AAAA,QACT,SAAA,EAAU,sFAAA;AAAA,QACV,YAAA,EAAW,sBAAA;AAAA,QAEX,QAAA,kBAAA,6BAAA,cAAC,EAAA,EAAE,SAAA,EAAU,SAAA,CAAS;AAAA,MAAA;AAAA,IACxB;AAAA,EAAA,EAAA,CACF,CAAA;AAEJ;ADbA;AACA;AACE;AACF,0BAAC","file":"/home/isaac/vega/lyra/lyra-ds.v3/packages/lyra-ds/dist/chunk-GGZSDAN3.cjs","sourcesContent":[null,"\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"./button\";\n\nexport interface ListPageBulkAction {\n label: string;\n onClick: (ids: string[]) => void;\n destructive?: boolean;\n confirmTitle?: string;\n confirmLabel?: string;\n consequenceList?: string[];\n}\n\nexport interface BulkBarProps {\n count: number;\n bulkActions: ListPageBulkAction[];\n onClear: () => void;\n onAction: (action: ListPageBulkAction) => void;\n}\n\nfunction BulkBar({ count, bulkActions, onClear, onAction }: BulkBarProps) {\n return (\n <div className=\"flex items-center gap-3 h-10 px-3 bg-[var(--color-primary-container)]\">\n <span className=\"text-body-sm font-semibold text-[var(--color-on-primary-container)]\">\n {count} selecionado{count !== 1 ? \"s\" : \"\"}\n </span>\n <div className=\"h-4 w-px bg-[var(--color-primary)] opacity-30\" />\n <div className=\"flex items-center gap-2\">\n {bulkActions.map((action) => (\n <Button\n key={action.label}\n variant={action.destructive ? \"destructive\" : \"outlined\"}\n size=\"sm\"\n onClick={() => onAction(action)}\n >\n {action.label}\n </Button>\n ))}\n </div>\n <button\n type=\"button\"\n onClick={onClear}\n className=\"ml-auto text-[var(--color-on-primary-container)] hover:opacity-70 transition-opacity\"\n aria-label=\"Limpar seleção\"\n >\n <X className=\"size-4\" />\n </button>\n </div>\n );\n}\n\nexport { BulkBar };\n"]}
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-KQJCGTS3.js";
5
+
6
+ // src/components/filter-chips.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function FilterChips({ filters, active, onChange }) {
9
+ return /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1 overflow-x-auto", children: filters.map((f) => {
10
+ const isActive = f.value === active;
11
+ return /* @__PURE__ */ jsxs(
12
+ "button",
13
+ {
14
+ type: "button",
15
+ onClick: () => onChange(f.value),
16
+ className: cn(
17
+ "inline-flex items-center gap-1 px-3 py-1 rounded-[var(--radius-md)] text-[13px] font-semibold whitespace-nowrap transition-colors",
18
+ isActive ? "bg-[var(--color-primary)] text-white" : "bg-transparent text-[var(--color-on-surface-var)] hover:bg-[var(--color-surf-container-low)]"
19
+ ),
20
+ children: [
21
+ f.label,
22
+ " ",
23
+ f.count
24
+ ]
25
+ },
26
+ f.value
27
+ );
28
+ }) });
29
+ }
30
+
31
+ export {
32
+ FilterChips
33
+ };
34
+ //# sourceMappingURL=chunk-GLMTTY4G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/filter-chips.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cn } from \"../lib/utils\";\n\nexport interface ListPageFilter {\n label: string;\n value: string;\n count: number;\n}\n\nexport interface FilterChipsProps {\n filters: ListPageFilter[];\n active: string;\n onChange: (value: string) => void;\n}\n\nfunction FilterChips({ filters, active, onChange }: FilterChipsProps) {\n return (\n <div className=\"flex items-center gap-1 overflow-x-auto\">\n {filters.map((f) => {\n const isActive = f.value === active;\n return (\n <button\n key={f.value}\n type=\"button\"\n onClick={() => onChange(f.value)}\n className={cn(\n \"inline-flex items-center gap-1 px-3 py-1 rounded-[var(--radius-md)] text-[13px] font-semibold whitespace-nowrap transition-colors\",\n isActive\n ? \"bg-[var(--color-primary)] text-white\"\n : \"bg-transparent text-[var(--color-on-surface-var)] hover:bg-[var(--color-surf-container-low)]\"\n )}\n >\n {f.label} {f.count}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport { FilterChips };\n"],"mappings":";;;;;;AAiBI,cAIM,YAJN;AAFJ,SAAS,YAAY,EAAE,SAAS,QAAQ,SAAS,GAAqB;AACpE,SACE,oBAAC,SAAI,WAAU,2CACZ,kBAAQ,IAAI,CAAC,MAAM;AAClB,UAAM,WAAW,EAAE,UAAU;AAC7B,WACE;AAAA,MAAC;AAAA;AAAA,QAEC,MAAK;AAAA,QACL,SAAS,MAAM,SAAS,EAAE,KAAK;AAAA,QAC/B,WAAW;AAAA,UACT;AAAA,UACA,WACI,yCACA;AAAA,QACN;AAAA,QAEC;AAAA,YAAE;AAAA,UAAM;AAAA,UAAE,EAAE;AAAA;AAAA;AAAA,MAVR,EAAE;AAAA,IAWT;AAAA,EAEJ,CAAC,GACH;AAEJ;","names":[]}