@etus/ui 0.4.0-beta.13 → 0.4.0-beta.15
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/dist/chunk-FES2I2OT.js +3 -0
- package/dist/{chunk-6Z73ZQOP.js.map → chunk-FES2I2OT.js.map} +1 -1
- package/dist/chunk-K4MYVFWQ.js +109 -0
- package/dist/chunk-K4MYVFWQ.js.map +1 -0
- package/dist/chunk-KDJCZXLB.js +91 -0
- package/dist/chunk-KDJCZXLB.js.map +1 -0
- package/dist/{chunk-P27ERD6W.js → chunk-MDIXY44D.js} +2 -2
- package/dist/{chunk-P27ERD6W.js.map → chunk-MDIXY44D.js.map} +1 -1
- package/dist/chunk-OOJO4QGD.js +3 -0
- package/dist/{chunk-ATIEGLR2.js.map → chunk-OOJO4QGD.js.map} +1 -1
- package/dist/chunk-VORFH6HQ.js +46 -0
- package/dist/chunk-VORFH6HQ.js.map +1 -0
- package/dist/components/advanced/index.js +6 -6
- package/dist/components/data-display/DataTable/index.js +1 -1
- package/dist/components/data-display/FeatureItem/index.js +6 -0
- package/dist/components/data-display/index.js +15 -13
- package/dist/components/feedback/index.js +2 -2
- package/dist/components/forms/index.js +14 -14
- package/dist/components/index.js +90 -88
- package/dist/components/layout/index.js +1 -1
- package/dist/components/navigation/LogoConta/index.js +5 -0
- package/dist/components/navigation/LogoConta/index.js.map +1 -0
- package/dist/components/navigation/index.js +5 -4
- package/dist/components/primitives/ArrowAnimated/index.js +2 -89
- package/dist/components/primitives/ArrowAnimated/index.js.map +1 -1
- package/dist/components/primitives/index.js +12 -12
- package/dist/components/workflow/index.js +4 -4
- package/dist/index.d.ts +444 -306
- package/dist/index.js +90 -88
- package/dist/styles.css +27 -48
- package/package.json +2 -2
- package/dist/chunk-6Z73ZQOP.js +0 -3
- package/dist/chunk-ATIEGLR2.js +0 -3
- package/dist/chunk-N23L6UDK.js +0 -108
- package/dist/chunk-N23L6UDK.js.map +0 -1
- package/dist/components/data-display/DashboardFilterbar/index.js +0 -111
- package/dist/components/data-display/DashboardFilterbar/index.js.map +0 -1
- package/dist/components/navigation/MobileSidebar/index.js +0 -190
- package/dist/components/navigation/MobileSidebar/index.js.map +0 -1
- package/dist/components/navigation/UserProfileDropdown/index.js +0 -224
- package/dist/components/navigation/UserProfileDropdown/index.js.map +0 -1
- package/dist/components/navigation/WorkspaceDropdown/index.js +0 -192
- package/dist/components/navigation/WorkspaceDropdown/index.js.map +0 -1
- package/dist/components/primitives/FeatureItem/index.js +0 -5
- /package/dist/components/{primitives → data-display}/FeatureItem/index.js.map +0 -0
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuLabel, DropdownMenuGroup, DropdownMenuItem, DropdownMenuSeparator } from '../../../chunk-OXDWUKGP.js';
|
|
2
|
-
import { cn } from '../../../chunk-HRNDJU7D.js';
|
|
3
|
-
import '../../../chunk-UP2VWCW5.js';
|
|
4
|
-
import { ChevronsUpDownIcon, PlusIcon } from 'lucide-react';
|
|
5
|
-
import { cva } from 'class-variance-authority';
|
|
6
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
|
|
8
|
-
var workspaceDropdownVariants = cva(
|
|
9
|
-
// Base styles
|
|
10
|
-
[],
|
|
11
|
-
{
|
|
12
|
-
variants: {
|
|
13
|
-
variant: {
|
|
14
|
-
default: "",
|
|
15
|
-
compact: ""
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
defaultVariants: {
|
|
19
|
-
variant: "default"
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
);
|
|
23
|
-
var workspaceTriggerVariants = cva(
|
|
24
|
-
[
|
|
25
|
-
"flex w-full items-center gap-x-2.5 rounded-md",
|
|
26
|
-
"text-sm",
|
|
27
|
-
"border border-input bg-background",
|
|
28
|
-
"shadow-sm",
|
|
29
|
-
"hover:bg-accent hover:text-accent-foreground",
|
|
30
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
31
|
-
"transition-all"
|
|
32
|
-
],
|
|
33
|
-
{
|
|
34
|
-
variants: {
|
|
35
|
-
variant: {
|
|
36
|
-
default: "p-2",
|
|
37
|
-
compact: "p-1.5"
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
defaultVariants: {
|
|
41
|
-
variant: "default"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
var workspaceAvatarVariants = cva(
|
|
46
|
-
[
|
|
47
|
-
"flex items-center justify-center rounded",
|
|
48
|
-
"text-xs font-medium text-white"
|
|
49
|
-
],
|
|
50
|
-
{
|
|
51
|
-
variants: {
|
|
52
|
-
size: {
|
|
53
|
-
sm: "size-7 p-1.5",
|
|
54
|
-
md: "size-8 p-2"
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
defaultVariants: {
|
|
58
|
-
size: "md"
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
);
|
|
62
|
-
var workspaceInfoVariants = cva([
|
|
63
|
-
"flex w-full items-center justify-between gap-x-4 truncate"
|
|
64
|
-
]);
|
|
65
|
-
var workspaceNameVariants = cva([
|
|
66
|
-
"truncate whitespace-nowrap text-sm font-medium text-foreground"
|
|
67
|
-
]);
|
|
68
|
-
var workspaceRoleVariants = cva([
|
|
69
|
-
"whitespace-nowrap text-left text-xs text-muted-foreground"
|
|
70
|
-
]);
|
|
71
|
-
var workspaceItemVariants = cva([
|
|
72
|
-
"flex w-full items-center gap-x-2.5"
|
|
73
|
-
]);
|
|
74
|
-
function WorkspaceTrigger({
|
|
75
|
-
workspace,
|
|
76
|
-
variant = "default",
|
|
77
|
-
className,
|
|
78
|
-
...props
|
|
79
|
-
}) {
|
|
80
|
-
return /* @__PURE__ */ jsxs(
|
|
81
|
-
"button",
|
|
82
|
-
{
|
|
83
|
-
className: cn(workspaceTriggerVariants({ variant }), className),
|
|
84
|
-
"data-slot": "workspace-trigger",
|
|
85
|
-
type: "button",
|
|
86
|
-
...props,
|
|
87
|
-
children: [
|
|
88
|
-
/* @__PURE__ */ jsx(
|
|
89
|
-
"span",
|
|
90
|
-
{
|
|
91
|
-
className: cn(
|
|
92
|
-
workspaceAvatarVariants({ size: variant === "compact" ? "sm" : "md" }),
|
|
93
|
-
workspace.color ?? "bg-primary"
|
|
94
|
-
),
|
|
95
|
-
"aria-hidden": "true",
|
|
96
|
-
children: workspace.initials
|
|
97
|
-
}
|
|
98
|
-
),
|
|
99
|
-
/* @__PURE__ */ jsxs("div", { className: cn(workspaceInfoVariants()), children: [
|
|
100
|
-
/* @__PURE__ */ jsxs("div", { className: "truncate", children: [
|
|
101
|
-
/* @__PURE__ */ jsx("p", { className: cn(workspaceNameVariants()), children: workspace.name }),
|
|
102
|
-
workspace.role && /* @__PURE__ */ jsx("p", { className: cn(workspaceRoleVariants()), children: workspace.role })
|
|
103
|
-
] }),
|
|
104
|
-
/* @__PURE__ */ jsx(
|
|
105
|
-
ChevronsUpDownIcon,
|
|
106
|
-
{
|
|
107
|
-
"aria-hidden": "true",
|
|
108
|
-
className: "size-5 shrink-0 text-muted-foreground"
|
|
109
|
-
}
|
|
110
|
-
)
|
|
111
|
-
] })
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
function WorkspaceItem({ workspace }) {
|
|
117
|
-
return /* @__PURE__ */ jsxs("div", { className: cn(workspaceItemVariants()), children: [
|
|
118
|
-
/* @__PURE__ */ jsx(
|
|
119
|
-
"span",
|
|
120
|
-
{
|
|
121
|
-
className: cn(
|
|
122
|
-
workspaceAvatarVariants(),
|
|
123
|
-
workspace.color ?? "bg-primary"
|
|
124
|
-
),
|
|
125
|
-
"aria-hidden": "true",
|
|
126
|
-
children: workspace.initials
|
|
127
|
-
}
|
|
128
|
-
),
|
|
129
|
-
/* @__PURE__ */ jsxs("div", { children: [
|
|
130
|
-
/* @__PURE__ */ jsx("p", { className: cn(workspaceNameVariants()), children: workspace.name }),
|
|
131
|
-
workspace.role && /* @__PURE__ */ jsx("p", { className: cn(workspaceRoleVariants()), children: workspace.role })
|
|
132
|
-
] })
|
|
133
|
-
] });
|
|
134
|
-
}
|
|
135
|
-
function WorkspaceDropdown({
|
|
136
|
-
selectedWorkspace,
|
|
137
|
-
workspaces,
|
|
138
|
-
onWorkspaceSelect,
|
|
139
|
-
onAddWorkspace,
|
|
140
|
-
addWorkspaceLabel = "Add workspace",
|
|
141
|
-
showAddWorkspace = false,
|
|
142
|
-
align = "start",
|
|
143
|
-
variant,
|
|
144
|
-
className,
|
|
145
|
-
...props
|
|
146
|
-
}) {
|
|
147
|
-
return /* @__PURE__ */ jsx(
|
|
148
|
-
"div",
|
|
149
|
-
{
|
|
150
|
-
className: cn(workspaceDropdownVariants({ variant }), className),
|
|
151
|
-
"data-slot": "workspace-dropdown",
|
|
152
|
-
...props,
|
|
153
|
-
children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
|
|
154
|
-
/* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
|
|
155
|
-
WorkspaceTrigger,
|
|
156
|
-
{
|
|
157
|
-
variant: variant === "compact" ? "compact" : "default",
|
|
158
|
-
workspace: selectedWorkspace
|
|
159
|
-
}
|
|
160
|
-
) }),
|
|
161
|
-
/* @__PURE__ */ jsxs(DropdownMenuContent, { align, className: "min-w-60", children: [
|
|
162
|
-
/* @__PURE__ */ jsxs(DropdownMenuLabel, { children: [
|
|
163
|
-
"Workspaces (",
|
|
164
|
-
workspaces.length,
|
|
165
|
-
")"
|
|
166
|
-
] }),
|
|
167
|
-
/* @__PURE__ */ jsx(DropdownMenuGroup, { children: workspaces.map((workspace) => /* @__PURE__ */ jsx(
|
|
168
|
-
DropdownMenuItem,
|
|
169
|
-
{
|
|
170
|
-
onClick: () => onWorkspaceSelect?.(workspace),
|
|
171
|
-
children: /* @__PURE__ */ jsx(WorkspaceItem, { workspace })
|
|
172
|
-
},
|
|
173
|
-
workspace.id
|
|
174
|
-
)) }),
|
|
175
|
-
showAddWorkspace && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
176
|
-
/* @__PURE__ */ jsx(DropdownMenuSeparator, {}),
|
|
177
|
-
/* @__PURE__ */ jsxs(DropdownMenuItem, { onClick: onAddWorkspace, children: [
|
|
178
|
-
/* @__PURE__ */ jsx(PlusIcon, { "aria-hidden": "true", className: "mr-2 size-4" }),
|
|
179
|
-
addWorkspaceLabel
|
|
180
|
-
] })
|
|
181
|
-
] })
|
|
182
|
-
] })
|
|
183
|
-
] })
|
|
184
|
-
}
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
WorkspaceDropdown.displayName = "WorkspaceDropdown";
|
|
188
|
-
WorkspaceTrigger.displayName = "WorkspaceTrigger";
|
|
189
|
-
|
|
190
|
-
export { WorkspaceDropdown, WorkspaceItem, WorkspaceTrigger, workspaceAvatarVariants, workspaceDropdownVariants, workspaceInfoVariants, workspaceItemVariants, workspaceNameVariants, workspaceRoleVariants, workspaceTriggerVariants };
|
|
191
|
-
//# sourceMappingURL=index.js.map
|
|
192
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/navigation/WorkspaceDropdown/WorkspaceDropdown.variants.ts","../../../../src/components/navigation/WorkspaceDropdown/WorkspaceDropdown.tsx"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// WorkspaceDropdown/WorkspaceDropdown.variants.ts\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * WorkspaceDropdown style variants using CVA\n */\nexport const workspaceDropdownVariants = cva(\n // Base styles\n [],\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport const workspaceTriggerVariants = cva(\n [\n \"flex w-full items-center gap-x-2.5 rounded-md\",\n \"text-sm\",\n \"border border-input bg-background\",\n \"shadow-sm\",\n \"hover:bg-accent hover:text-accent-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n \"transition-all\",\n ],\n {\n variants: {\n variant: {\n default: \"p-2\",\n compact: \"p-1.5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport const workspaceAvatarVariants = cva(\n [\n \"flex items-center justify-center rounded\",\n \"text-xs font-medium text-white\",\n ],\n {\n variants: {\n size: {\n sm: \"size-7 p-1.5\",\n md: \"size-8 p-2\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport const workspaceInfoVariants = cva([\n \"flex w-full items-center justify-between gap-x-4 truncate\",\n])\n\nexport const workspaceNameVariants = cva([\n \"truncate whitespace-nowrap text-sm font-medium text-foreground\",\n])\n\nexport const workspaceRoleVariants = cva([\n \"whitespace-nowrap text-left text-xs text-muted-foreground\",\n])\n\nexport const workspaceItemVariants = cva([\n \"flex w-full items-center gap-x-2.5\",\n])\n\nexport type WorkspaceDropdownVariantProps = VariantProps<\n typeof workspaceDropdownVariants\n>\n","// WorkspaceDropdown/WorkspaceDropdown.tsx\n\"use client\"\n\nimport type {\n Workspace,\n WorkspaceDropdownProps,\n WorkspaceTriggerProps,\n} from \"./WorkspaceDropdown.types\"\n\nimport { ChevronsUpDownIcon, PlusIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../DropdownMenu\"\nimport {\n workspaceAvatarVariants,\n workspaceDropdownVariants,\n workspaceInfoVariants,\n workspaceItemVariants,\n workspaceNameVariants,\n workspaceRoleVariants,\n workspaceTriggerVariants,\n} from \"./WorkspaceDropdown.variants\"\n\n/**\n * WorkspaceTrigger - Trigger button showing current workspace\n */\nfunction WorkspaceTrigger({\n workspace,\n variant = \"default\",\n className,\n ...props\n}: WorkspaceTriggerProps) {\n return (\n <button\n className={cn(workspaceTriggerVariants({ variant }), className)}\n data-slot=\"workspace-trigger\"\n type=\"button\"\n {...props}\n >\n <span\n className={cn(\n workspaceAvatarVariants({ size: variant === \"compact\" ? \"sm\" : \"md\" }),\n workspace.color ?? \"bg-primary\"\n )}\n aria-hidden=\"true\"\n >\n {workspace.initials}\n </span>\n <div className={cn(workspaceInfoVariants())}>\n <div className=\"truncate\">\n <p className={cn(workspaceNameVariants())}>{workspace.name}</p>\n {workspace.role && (\n <p className={cn(workspaceRoleVariants())}>{workspace.role}</p>\n )}\n </div>\n <ChevronsUpDownIcon\n aria-hidden=\"true\"\n className=\"size-5 shrink-0 text-muted-foreground\"\n />\n </div>\n </button>\n )\n}\n\n/**\n * WorkspaceItem - Single workspace item in the dropdown\n */\nfunction WorkspaceItem({ workspace }: { workspace: Workspace }) {\n return (\n <div className={cn(workspaceItemVariants())}>\n <span\n className={cn(\n workspaceAvatarVariants(),\n workspace.color ?? \"bg-primary\"\n )}\n aria-hidden=\"true\"\n >\n {workspace.initials}\n </span>\n <div>\n <p className={cn(workspaceNameVariants())}>{workspace.name}</p>\n {workspace.role && (\n <p className={cn(workspaceRoleVariants())}>{workspace.role}</p>\n )}\n </div>\n </div>\n )\n}\n\n/**\n * WorkspaceDropdown - Workspace switcher dropdown\n *\n * Allows users to switch between workspaces and optionally add new ones.\n * Shows current workspace with avatar, name, and role.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <WorkspaceDropdown\n * selectedWorkspace={currentWorkspace}\n * workspaces={allWorkspaces}\n * onWorkspaceSelect={handleSelect}\n * />\n *\n * // With add workspace option\n * <WorkspaceDropdown\n * selectedWorkspace={currentWorkspace}\n * workspaces={allWorkspaces}\n * onWorkspaceSelect={handleSelect}\n * showAddWorkspace\n * onAddWorkspace={() => openAddModal()}\n * addWorkspaceLabel=\"Create workspace\"\n * />\n *\n * // Compact variant\n * <WorkspaceDropdown\n * variant=\"compact\"\n * selectedWorkspace={currentWorkspace}\n * workspaces={allWorkspaces}\n * onWorkspaceSelect={handleSelect}\n * />\n * ```\n */\nfunction WorkspaceDropdown({\n selectedWorkspace,\n workspaces,\n onWorkspaceSelect,\n onAddWorkspace,\n addWorkspaceLabel = \"Add workspace\",\n showAddWorkspace = false,\n align = \"start\",\n variant,\n className,\n ...props\n}: WorkspaceDropdownProps) {\n return (\n <div\n className={cn(workspaceDropdownVariants({ variant }), className)}\n data-slot=\"workspace-dropdown\"\n {...props}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <WorkspaceTrigger\n variant={variant === \"compact\" ? \"compact\" : \"default\"}\n workspace={selectedWorkspace}\n />\n </DropdownMenuTrigger>\n <DropdownMenuContent align={align} className=\"min-w-60\">\n <DropdownMenuLabel>\n Workspaces ({workspaces.length})\n </DropdownMenuLabel>\n <DropdownMenuGroup>\n {workspaces.map((workspace) => (\n <DropdownMenuItem\n key={workspace.id}\n onClick={() => onWorkspaceSelect?.(workspace)}\n >\n <WorkspaceItem workspace={workspace} />\n </DropdownMenuItem>\n ))}\n </DropdownMenuGroup>\n\n {showAddWorkspace && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={onAddWorkspace}>\n <PlusIcon aria-hidden=\"true\" className=\"mr-2 size-4\" />\n {addWorkspaceLabel}\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )\n}\n\nWorkspaceDropdown.displayName = \"WorkspaceDropdown\"\nWorkspaceTrigger.displayName = \"WorkspaceTrigger\"\n\nexport { WorkspaceDropdown, WorkspaceItem, WorkspaceTrigger }\n"]}
|
|
File without changes
|