@turtleclub/ui 0.7.0-beta.32 → 0.7.0-beta.33
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/.turbo/turbo-build.log +123 -123
- package/CHANGELOG.md +6 -0
- package/dist/index.cjs +41 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +14501 -13894
- package/dist/index.js.map +1 -1
- package/dist/types/components/features/sidebar-layout.d.ts +2 -0
- package/dist/types/components/features/sidebar-layout.d.ts.map +1 -1
- package/dist/types/components/ui/chart.d.ts +1 -1
- package/dist/types/components/ui/chart.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/features/sidebar-layout.tsx +124 -38
|
@@ -6,12 +6,14 @@ type SidebarItemBase = {
|
|
|
6
6
|
type SidebarLink = SidebarItemBase & {
|
|
7
7
|
url: string;
|
|
8
8
|
isActive: boolean;
|
|
9
|
+
isEnabled?: boolean;
|
|
9
10
|
children?: never;
|
|
10
11
|
};
|
|
11
12
|
type SidebarGroupBase = SidebarItemBase & {
|
|
12
13
|
children: SidebarItem[];
|
|
13
14
|
url?: never;
|
|
14
15
|
isActive?: never;
|
|
16
|
+
isEnabled?: boolean;
|
|
15
17
|
};
|
|
16
18
|
export type SidebarItem = SidebarLink | SidebarGroupBase;
|
|
17
19
|
export declare function TurtleSidebarLayout({ children, sidebarSlot, sidebarFooter, topSlot, items, linkComponent, }: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/features/sidebar-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"sidebar-layout.d.ts","sourceRoot":"","sources":["../../../../src/components/features/sidebar-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA0B1B,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAGF,KAAK,WAAW,GAAG,eAAe,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB,CAAC;AAGF,KAAK,gBAAgB,GAAG,eAAe,GAAG;IACxC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,KAAK,CAAC;IACZ,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,gBAAgB,CAAC;AAIzD,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,WAAW,EACX,aAAa,EACb,OAAO,EACP,KAAK,EACL,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,aAAa,EAAE,GAAG,CAAC;CACpB,2CAYA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,aAAa,EACb,aAAa,EAAE,IAAU,GAC1B,EAAE;IACD,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,aAAa,EAAE,GAAG,CAAC;CACpB,2CA8JA;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,2CAuBA"}
|
|
@@ -44,7 +44,7 @@ declare function ChartTooltipContent<TValue extends ValueType = ValueType, TName
|
|
|
44
44
|
nameKey?: string;
|
|
45
45
|
labelKey?: string;
|
|
46
46
|
} & React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
47
|
-
declare const ChartLegend:
|
|
47
|
+
declare const ChartLegend: React.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
|
|
48
48
|
declare function ChartLegendContent({ className, hideIcon, payload, verticalAlign, nameKey, }: React.ComponentProps<"div"> & {
|
|
49
49
|
payload?: ReadonlyArray<Payload<ValueType, NameType>>;
|
|
50
50
|
verticalAlign?: "top" | "bottom";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,iBAAiB,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAKnG,QAAA,MAAM,MAAM;;;CAAwC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;KACvB,CAAC,IAAI,MAAM,GAAG;QACb,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;KAC5B,GAAG,CACA;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE,GACjC;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAChE;CACF,CAAC;AAkBF,iBAAS,cAAc,CAAC,EACtB,EAAE,EACF,SAAS,EACT,QAAQ,EACR,MAAM,EACN,gBAA6C,EAC7C,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,UAAU,CAAC,CAAC;IACzF,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACtD,2CAsBA;AAED,QAAA,MAAM,UAAU,GAAI,gBAAgB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,4CA2BtE,CAAC;AAEF,QAAA,MAAM,YAAY,kCAA4B,CAAC;AAE/C,iBAAS,mBAAmB,CAC1B,MAAM,SAAS,SAAS,GAAG,SAAS,EACpC,KAAK,SAAS,QAAQ,GAAG,QAAQ,EACjC,EACA,MAAM,EACN,OAAO,EACP,SAAS,EACT,SAAiB,EACjB,SAAiB,EACjB,aAAqB,EACrB,KAAK,EACL,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,OAAO,EACP,QAAQ,GACT,EAAE;IACD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACjG,SAAS,CAAC,EAAE,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAC3C,KAAK,CAAC,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAiH9B;AAED,QAAA,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/chart.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@turtleclub/ui",
|
|
3
|
-
"version": "0.7.0-beta.
|
|
3
|
+
"version": "0.7.0-beta.33",
|
|
4
4
|
"description": "shadcn/ui and custom Turtle UI components library",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"vite": "^7.1.6",
|
|
85
85
|
"vite-plugin-dts": "^4.5.4"
|
|
86
86
|
},
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "f660fb0960abd423a39ebfac3f4ce21d880ff171"
|
|
88
88
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import { ChevronRight } from "lucide-react";
|
|
2
|
+
import { ChevronRight, Lock } from "lucide-react";
|
|
3
3
|
import {
|
|
4
4
|
Sidebar,
|
|
5
5
|
SidebarProvider,
|
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
} from "../ui";
|
|
23
23
|
import { cn } from "@/lib/utils";
|
|
24
24
|
import { DotIcon, TurtleIcon } from "../icons";
|
|
25
|
+
import { TurtleTooltip } from "./turtle-tooltip";
|
|
25
26
|
|
|
26
27
|
type SidebarItemBase = {
|
|
27
28
|
title: string;
|
|
@@ -32,6 +33,7 @@ type SidebarItemBase = {
|
|
|
32
33
|
type SidebarLink = SidebarItemBase & {
|
|
33
34
|
url: string;
|
|
34
35
|
isActive: boolean;
|
|
36
|
+
isEnabled?: boolean;
|
|
35
37
|
children?: never;
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -40,10 +42,13 @@ type SidebarGroupBase = SidebarItemBase & {
|
|
|
40
42
|
children: SidebarItem[];
|
|
41
43
|
url?: never;
|
|
42
44
|
isActive?: never;
|
|
45
|
+
isEnabled?: boolean;
|
|
43
46
|
};
|
|
44
47
|
|
|
45
48
|
export type SidebarItem = SidebarLink | SidebarGroupBase;
|
|
46
49
|
|
|
50
|
+
const LOCKED_TOOLTIP_CONTENT = "Contact the Turtle team to unlock.";
|
|
51
|
+
|
|
47
52
|
export function TurtleSidebarLayout({
|
|
48
53
|
children,
|
|
49
54
|
sidebarSlot,
|
|
@@ -101,52 +106,133 @@ export function TurtleSidebar({
|
|
|
101
106
|
<SidebarMenu>
|
|
102
107
|
{items.map((item) => {
|
|
103
108
|
if (item?.children?.length) {
|
|
109
|
+
const isEnabled = item.isEnabled !== false;
|
|
110
|
+
|
|
104
111
|
return (
|
|
105
|
-
<Collapsible
|
|
112
|
+
<Collapsible
|
|
113
|
+
key={item.title}
|
|
114
|
+
className="group/collapsible"
|
|
115
|
+
open={isEnabled ? undefined : false}
|
|
116
|
+
>
|
|
106
117
|
<SidebarMenuItem>
|
|
107
|
-
|
|
108
|
-
<
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
{isEnabled ? (
|
|
119
|
+
<CollapsibleTrigger asChild>
|
|
120
|
+
<SidebarMenuButton>
|
|
121
|
+
{item.icon && <item.icon />}
|
|
122
|
+
<span className="grow">{item.title}</span>
|
|
123
|
+
<ChevronRight className="transition-all group-data-[state=open]/collapsible:rotate-90" />
|
|
124
|
+
</SidebarMenuButton>
|
|
125
|
+
</CollapsibleTrigger>
|
|
126
|
+
) : (
|
|
127
|
+
<TurtleTooltip
|
|
128
|
+
asChild
|
|
129
|
+
className="w-full"
|
|
130
|
+
content={LOCKED_TOOLTIP_CONTENT}
|
|
131
|
+
trigger={
|
|
132
|
+
<div className="w-full">
|
|
133
|
+
<SidebarMenuButton
|
|
134
|
+
disabled
|
|
135
|
+
className="opacity-70"
|
|
121
136
|
>
|
|
122
|
-
<
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
137
|
+
{item.icon && <item.icon />}
|
|
138
|
+
<span className="grow">{item.title}</span>
|
|
139
|
+
<Lock className="text-muted-foreground size-4 shrink-0" />
|
|
140
|
+
</SidebarMenuButton>
|
|
141
|
+
</div>
|
|
142
|
+
}
|
|
143
|
+
/>
|
|
144
|
+
)}
|
|
145
|
+
|
|
146
|
+
{isEnabled && (
|
|
147
|
+
<CollapsibleContent>
|
|
148
|
+
<SidebarMenuSub>
|
|
149
|
+
{item.children.map((child) => {
|
|
150
|
+
const isChildEnabled =
|
|
151
|
+
child.isEnabled !== false;
|
|
152
|
+
|
|
153
|
+
return (
|
|
154
|
+
<SidebarMenuSubItem key={child.title}>
|
|
155
|
+
{isChildEnabled ? (
|
|
156
|
+
<SidebarMenuSubButton
|
|
157
|
+
asChild
|
|
158
|
+
isActive={child.isActive}
|
|
159
|
+
>
|
|
160
|
+
<Comp href={child.url}>
|
|
161
|
+
{child.icon && <child.icon />}
|
|
162
|
+
<span className="grow">
|
|
163
|
+
{child.title}
|
|
164
|
+
</span>
|
|
165
|
+
|
|
166
|
+
<div className="relative size-[18px] shrink-0 group-data-[active=false]/menu-sub-button:hidden">
|
|
167
|
+
<DotIcon className="text-primary absolute top-[-15px] left-[-15px] size-12" />
|
|
168
|
+
</div>
|
|
169
|
+
</Comp>
|
|
170
|
+
</SidebarMenuSubButton>
|
|
171
|
+
) : (
|
|
172
|
+
<TurtleTooltip
|
|
173
|
+
asChild
|
|
174
|
+
className="w-full"
|
|
175
|
+
content={LOCKED_TOOLTIP_CONTENT}
|
|
176
|
+
trigger={
|
|
177
|
+
<div className="w-full">
|
|
178
|
+
<SidebarMenuSubButton
|
|
179
|
+
className="opacity-70"
|
|
180
|
+
aria-disabled="true"
|
|
181
|
+
>
|
|
182
|
+
{child.icon && <child.icon />}
|
|
183
|
+
<span className="grow">
|
|
184
|
+
{child.title}
|
|
185
|
+
</span>
|
|
186
|
+
<Lock className="text-muted-foreground size-4 shrink-0" />
|
|
187
|
+
</SidebarMenuSubButton>
|
|
188
|
+
</div>
|
|
189
|
+
}
|
|
190
|
+
/>
|
|
191
|
+
)}
|
|
192
|
+
</SidebarMenuSubItem>
|
|
193
|
+
);
|
|
194
|
+
})}
|
|
195
|
+
</SidebarMenuSub>
|
|
196
|
+
</CollapsibleContent>
|
|
197
|
+
)}
|
|
135
198
|
</SidebarMenuItem>
|
|
136
199
|
</Collapsible>
|
|
137
200
|
);
|
|
138
201
|
}
|
|
202
|
+
|
|
203
|
+
const isEnabled = item.isEnabled !== false;
|
|
204
|
+
|
|
139
205
|
return (
|
|
140
206
|
<SidebarMenuItem key={item.title}>
|
|
141
|
-
|
|
142
|
-
<
|
|
143
|
-
{item.
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
<
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
207
|
+
{isEnabled ? (
|
|
208
|
+
<SidebarMenuButton asChild isActive={item.isActive}>
|
|
209
|
+
<Comp href={item.url}>
|
|
210
|
+
{item.icon && <item.icon />}
|
|
211
|
+
<span className="grow">{item.title}</span>
|
|
212
|
+
<div className="relative size-[18px] shrink-0 group-data-[active=false]/menu-button:hidden">
|
|
213
|
+
<DotIcon className="text-primary absolute top-[-15px] left-[-15px] size-12" />
|
|
214
|
+
</div>
|
|
215
|
+
</Comp>
|
|
216
|
+
</SidebarMenuButton>
|
|
217
|
+
) : (
|
|
218
|
+
<TurtleTooltip
|
|
219
|
+
asChild
|
|
220
|
+
className="w-full"
|
|
221
|
+
content={LOCKED_TOOLTIP_CONTENT}
|
|
222
|
+
trigger={
|
|
223
|
+
<div className="w-full">
|
|
224
|
+
<SidebarMenuButton
|
|
225
|
+
aria-disabled="true"
|
|
226
|
+
className="opacity-70"
|
|
227
|
+
>
|
|
228
|
+
{item.icon && <item.icon />}
|
|
229
|
+
<span className="grow">{item.title}</span>
|
|
230
|
+
<Lock className="text-muted-foreground size-4 shrink-0" />
|
|
231
|
+
</SidebarMenuButton>
|
|
232
|
+
</div>
|
|
233
|
+
}
|
|
234
|
+
/>
|
|
235
|
+
)}
|
|
150
236
|
</SidebarMenuItem>
|
|
151
237
|
);
|
|
152
238
|
})}
|