@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.
- package/README.md +134 -0
- package/dist/chunk-32QWDFOV.js +96 -0
- package/dist/chunk-32QWDFOV.js.map +1 -0
- package/dist/chunk-4EEFY4FU.cjs +96 -0
- package/dist/chunk-4EEFY4FU.cjs.map +1 -0
- package/dist/chunk-562W4FCG.cjs +88 -0
- package/dist/chunk-562W4FCG.cjs.map +1 -0
- package/dist/chunk-5SCF3EGT.cjs +13 -0
- package/dist/chunk-5SCF3EGT.cjs.map +1 -0
- package/dist/chunk-5XB7CPVP.cjs +34 -0
- package/dist/chunk-5XB7CPVP.cjs.map +1 -0
- package/dist/chunk-62OTWTBL.cjs +274 -0
- package/dist/chunk-62OTWTBL.cjs.map +1 -0
- package/dist/chunk-6GT2L3FX.js +63 -0
- package/dist/chunk-6GT2L3FX.js.map +1 -0
- package/dist/chunk-6HFYY5KR.cjs +67 -0
- package/dist/chunk-6HFYY5KR.cjs.map +1 -0
- package/dist/chunk-6NZHRSXB.cjs +61 -0
- package/dist/chunk-6NZHRSXB.cjs.map +1 -0
- package/dist/chunk-76G7PKIJ.cjs +42 -0
- package/dist/chunk-76G7PKIJ.cjs.map +1 -0
- package/dist/chunk-7PRTXARY.js +87 -0
- package/dist/chunk-7PRTXARY.js.map +1 -0
- package/dist/chunk-A665K552.cjs +75 -0
- package/dist/chunk-A665K552.cjs.map +1 -0
- package/dist/chunk-ABFMWZVI.cjs +89 -0
- package/dist/chunk-ABFMWZVI.cjs.map +1 -0
- package/dist/chunk-ACADNUHF.js +196 -0
- package/dist/chunk-ACADNUHF.js.map +1 -0
- package/dist/chunk-AFMNLT45.js +70 -0
- package/dist/chunk-AFMNLT45.js.map +1 -0
- package/dist/chunk-BAUTON3J.js +89 -0
- package/dist/chunk-BAUTON3J.js.map +1 -0
- package/dist/chunk-BNDEIZZQ.js +40 -0
- package/dist/chunk-BNDEIZZQ.js.map +1 -0
- package/dist/chunk-BXKWAQYI.cjs +157 -0
- package/dist/chunk-BXKWAQYI.cjs.map +1 -0
- package/dist/chunk-COFNZ2CM.js +70 -0
- package/dist/chunk-COFNZ2CM.js.map +1 -0
- package/dist/chunk-COV6FW4J.cjs +63 -0
- package/dist/chunk-COV6FW4J.cjs.map +1 -0
- package/dist/chunk-CUW7MUCY.js +55 -0
- package/dist/chunk-CUW7MUCY.js.map +1 -0
- package/dist/chunk-DKHG23OR.js +61 -0
- package/dist/chunk-DKHG23OR.js.map +1 -0
- package/dist/chunk-EMKU3IZY.js +85 -0
- package/dist/chunk-EMKU3IZY.js.map +1 -0
- package/dist/chunk-FZD2ZXN2.js +81 -0
- package/dist/chunk-FZD2ZXN2.js.map +1 -0
- package/dist/chunk-FZFA24YL.js +90 -0
- package/dist/chunk-FZFA24YL.js.map +1 -0
- package/dist/chunk-G5SLIXQ5.cjs +87 -0
- package/dist/chunk-G5SLIXQ5.cjs.map +1 -0
- package/dist/chunk-G6T2BYPC.js +88 -0
- package/dist/chunk-G6T2BYPC.js.map +1 -0
- package/dist/chunk-GGZSDAN3.cjs +43 -0
- package/dist/chunk-GGZSDAN3.cjs.map +1 -0
- package/dist/chunk-GLMTTY4G.js +34 -0
- package/dist/chunk-GLMTTY4G.js.map +1 -0
- package/dist/chunk-JQ5LATTJ.cjs +196 -0
- package/dist/chunk-JQ5LATTJ.cjs.map +1 -0
- package/dist/chunk-KLHQMRAY.js +42 -0
- package/dist/chunk-KLHQMRAY.js.map +1 -0
- package/dist/chunk-KQJCGTS3.js +13 -0
- package/dist/chunk-KQJCGTS3.js.map +1 -0
- package/dist/chunk-LBHO3VC4.cjs +81 -0
- package/dist/chunk-LBHO3VC4.cjs.map +1 -0
- package/dist/chunk-LUQS7LYG.cjs +85 -0
- package/dist/chunk-LUQS7LYG.cjs.map +1 -0
- package/dist/chunk-MMQZ7YMO.js +274 -0
- package/dist/chunk-MMQZ7YMO.js.map +1 -0
- package/dist/chunk-N7M2UZM6.js +67 -0
- package/dist/chunk-N7M2UZM6.js.map +1 -0
- package/dist/chunk-NLOLOFBX.js +43 -0
- package/dist/chunk-NLOLOFBX.js.map +1 -0
- package/dist/chunk-NPXSB4WO.js +48 -0
- package/dist/chunk-NPXSB4WO.js.map +1 -0
- package/dist/chunk-NVCGKCTH.cjs +90 -0
- package/dist/chunk-NVCGKCTH.cjs.map +1 -0
- package/dist/chunk-NZOAZF3W.cjs +67 -0
- package/dist/chunk-NZOAZF3W.cjs.map +1 -0
- package/dist/chunk-OS2O66IV.cjs +40 -0
- package/dist/chunk-OS2O66IV.cjs.map +1 -0
- package/dist/chunk-P5BKGZY2.cjs +55 -0
- package/dist/chunk-P5BKGZY2.cjs.map +1 -0
- package/dist/chunk-POMJPII4.cjs +70 -0
- package/dist/chunk-POMJPII4.cjs.map +1 -0
- package/dist/chunk-QSRVMLAL.cjs +40 -0
- package/dist/chunk-QSRVMLAL.cjs.map +1 -0
- package/dist/chunk-R5SUYP2F.cjs +14 -0
- package/dist/chunk-R5SUYP2F.cjs.map +1 -0
- package/dist/chunk-RBPMBCU3.js +157 -0
- package/dist/chunk-RBPMBCU3.js.map +1 -0
- package/dist/chunk-RZQAADXK.cjs +274 -0
- package/dist/chunk-RZQAADXK.cjs.map +1 -0
- package/dist/chunk-SPAC4VNO.js +67 -0
- package/dist/chunk-SPAC4VNO.js.map +1 -0
- package/dist/chunk-TONUCO3E.cjs +70 -0
- package/dist/chunk-TONUCO3E.cjs.map +1 -0
- package/dist/chunk-V7DPKW5E.cjs +48 -0
- package/dist/chunk-V7DPKW5E.cjs.map +1 -0
- package/dist/chunk-W3H3KWRL.js +274 -0
- package/dist/chunk-W3H3KWRL.js.map +1 -0
- package/dist/chunk-XFMTGORU.js +40 -0
- package/dist/chunk-XFMTGORU.js.map +1 -0
- package/dist/chunk-YVPOTKKQ.js +75 -0
- package/dist/chunk-YVPOTKKQ.js.map +1 -0
- package/dist/chunk-ZYPEUNSY.js +14 -0
- package/dist/chunk-ZYPEUNSY.js.map +1 -0
- package/dist/components/alert.cjs +9 -0
- package/dist/components/alert.cjs.map +1 -0
- package/dist/components/alert.d.cts +17 -0
- package/dist/components/alert.d.ts +17 -0
- package/dist/components/alert.js +9 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.cjs +9 -0
- package/dist/components/avatar.cjs.map +1 -0
- package/dist/components/avatar.d.cts +12 -0
- package/dist/components/avatar.d.ts +12 -0
- package/dist/components/avatar.js +9 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.cjs +11 -0
- package/dist/components/badge.cjs.map +1 -0
- package/dist/components/badge.d.cts +12 -0
- package/dist/components/badge.d.ts +12 -0
- package/dist/components/badge.js +11 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/bulk-bar.cjs +11 -0
- package/dist/components/bulk-bar.cjs.map +1 -0
- package/dist/components/bulk-bar.d.cts +19 -0
- package/dist/components/bulk-bar.d.ts +19 -0
- package/dist/components/bulk-bar.js +11 -0
- package/dist/components/bulk-bar.js.map +1 -0
- package/dist/components/button.cjs +11 -0
- package/dist/components/button.cjs.map +1 -0
- package/dist/components/button.d.cts +15 -0
- package/dist/components/button.d.ts +15 -0
- package/dist/components/button.js +11 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.cjs +15 -0
- package/dist/components/card.cjs.map +1 -0
- package/dist/components/card.d.cts +8 -0
- package/dist/components/card.d.ts +8 -0
- package/dist/components/card.js +15 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/data-table.cjs +10 -0
- package/dist/components/data-table.cjs.map +1 -0
- package/dist/components/data-table.d.cts +33 -0
- package/dist/components/data-table.d.ts +33 -0
- package/dist/components/data-table.js +10 -0
- package/dist/components/data-table.js.map +1 -0
- package/dist/components/date-picker.cjs +10 -0
- package/dist/components/date-picker.cjs.map +1 -0
- package/dist/components/date-picker.d.cts +16 -0
- package/dist/components/date-picker.d.ts +16 -0
- package/dist/components/date-picker.js +10 -0
- package/dist/components/date-picker.js.map +1 -0
- package/dist/components/destructive-dialog.cjs +13 -0
- package/dist/components/destructive-dialog.cjs.map +1 -0
- package/dist/components/destructive-dialog.d.cts +19 -0
- package/dist/components/destructive-dialog.d.ts +19 -0
- package/dist/components/destructive-dialog.js +13 -0
- package/dist/components/destructive-dialog.js.map +1 -0
- package/dist/components/dropdown-menu.cjs +38 -0
- package/dist/components/dropdown-menu.cjs.map +1 -0
- package/dist/components/dropdown-menu.d.cts +32 -0
- package/dist/components/dropdown-menu.d.ts +32 -0
- package/dist/components/dropdown-menu.js +38 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/empty-state.cjs +10 -0
- package/dist/components/empty-state.cjs.map +1 -0
- package/dist/components/empty-state.d.cts +23 -0
- package/dist/components/empty-state.d.ts +23 -0
- package/dist/components/empty-state.js +10 -0
- package/dist/components/empty-state.js.map +1 -0
- package/dist/components/filter-chips.cjs +9 -0
- package/dist/components/filter-chips.cjs.map +1 -0
- package/dist/components/filter-chips.d.cts +15 -0
- package/dist/components/filter-chips.d.ts +15 -0
- package/dist/components/filter-chips.js +9 -0
- package/dist/components/filter-chips.js.map +1 -0
- package/dist/components/input.cjs +9 -0
- package/dist/components/input.cjs.map +1 -0
- package/dist/components/input.d.cts +10 -0
- package/dist/components/input.d.ts +10 -0
- package/dist/components/input.js +9 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/kpi-cards.cjs +8 -0
- package/dist/components/kpi-cards.cjs.map +1 -0
- package/dist/components/kpi-cards.d.cts +15 -0
- package/dist/components/kpi-cards.d.ts +15 -0
- package/dist/components/kpi-cards.js +8 -0
- package/dist/components/kpi-cards.js.map +1 -0
- package/dist/components/list-page.cjs +21 -0
- package/dist/components/list-page.cjs.map +1 -0
- package/dist/components/list-page.d.cts +87 -0
- package/dist/components/list-page.d.ts +87 -0
- package/dist/components/list-page.js +21 -0
- package/dist/components/list-page.js.map +1 -0
- package/dist/components/modal.cjs +10 -0
- package/dist/components/modal.cjs.map +1 -0
- package/dist/components/modal.d.cts +16 -0
- package/dist/components/modal.d.ts +16 -0
- package/dist/components/modal.js +10 -0
- package/dist/components/modal.js.map +1 -0
- package/dist/components/pagination-bar.cjs +10 -0
- package/dist/components/pagination-bar.cjs.map +1 -0
- package/dist/components/pagination-bar.d.cts +11 -0
- package/dist/components/pagination-bar.d.ts +11 -0
- package/dist/components/pagination-bar.js +10 -0
- package/dist/components/pagination-bar.js.map +1 -0
- package/dist/components/progress-bar.cjs +9 -0
- package/dist/components/progress-bar.cjs.map +1 -0
- package/dist/components/progress-bar.d.cts +21 -0
- package/dist/components/progress-bar.d.ts +21 -0
- package/dist/components/progress-bar.js +9 -0
- package/dist/components/progress-bar.js.map +1 -0
- package/dist/components/radio-group.cjs +12 -0
- package/dist/components/radio-group.cjs.map +1 -0
- package/dist/components/radio-group.d.cts +22 -0
- package/dist/components/radio-group.d.ts +22 -0
- package/dist/components/radio-group.js +12 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/sidebar.cjs +11 -0
- package/dist/components/sidebar.cjs.map +1 -0
- package/dist/components/sidebar.d.cts +24 -0
- package/dist/components/sidebar.d.ts +24 -0
- package/dist/components/sidebar.js +11 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.cjs +17 -0
- package/dist/components/skeleton.cjs.map +1 -0
- package/dist/components/skeleton.d.cts +15 -0
- package/dist/components/skeleton.d.ts +15 -0
- package/dist/components/skeleton.js +17 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/status-tag.cjs +9 -0
- package/dist/components/status-tag.cjs.map +1 -0
- package/dist/components/status-tag.d.cts +11 -0
- package/dist/components/status-tag.d.ts +11 -0
- package/dist/components/status-tag.js +9 -0
- package/dist/components/status-tag.js.map +1 -0
- package/dist/components/tabs.cjs +16 -0
- package/dist/components/tabs.cjs.map +1 -0
- package/dist/components/tabs.d.cts +9 -0
- package/dist/components/tabs.d.ts +9 -0
- package/dist/components/tabs.js +16 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/toggle.cjs +10 -0
- package/dist/components/toggle.cjs.map +1 -0
- package/dist/components/toggle.d.cts +14 -0
- package/dist/components/toggle.d.ts +14 -0
- package/dist/components/toggle.js +10 -0
- package/dist/components/toggle.js.map +1 -0
- package/dist/components/tooltip.cjs +10 -0
- package/dist/components/tooltip.cjs.map +1 -0
- package/dist/components/tooltip.d.cts +13 -0
- package/dist/components/tooltip.d.ts +13 -0
- package/dist/components/tooltip.js +10 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.cjs +160 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +32 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/styles/global.css +322 -0
- 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":[]}
|