@carlonicora/nextjs-jsonapi 1.50.0 → 1.52.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/dist/{BlockNoteEditor-LENHWRS2.js → BlockNoteEditor-KQPSJCYG.js} +6 -6
- package/dist/{BlockNoteEditor-LENHWRS2.js.map → BlockNoteEditor-KQPSJCYG.js.map} +1 -1
- package/dist/{BlockNoteEditor-WLS36QIF.mjs → BlockNoteEditor-WUVRCTQI.mjs} +2 -2
- package/dist/billing/index.js +299 -299
- package/dist/billing/index.mjs +1 -1
- package/dist/{chunk-VQ35TGD7.mjs → chunk-BTLJZIDS.mjs} +2612 -2269
- package/dist/chunk-BTLJZIDS.mjs.map +1 -0
- package/dist/{chunk-KWAUWJYX.js → chunk-YKPIFJOB.js} +544 -201
- package/dist/chunk-YKPIFJOB.js.map +1 -0
- package/dist/client/index.js +2 -2
- package/dist/client/index.mjs +1 -1
- package/dist/components/index.d.mts +44 -4
- package/dist/components/index.d.ts +44 -4
- package/dist/components/index.js +38 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +37 -1
- package/dist/contexts/index.js +2 -2
- package/dist/contexts/index.mjs +1 -1
- package/dist/scripts/generate-web-module/generator.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/generator.js +62 -4
- package/dist/scripts/generate-web-module/generator.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/container.template.js +12 -43
- package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/details.template.js +7 -5
- package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/editor.template.js +28 -17
- package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/list.template.js +4 -3
- package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +6 -4
- package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/components/selector.template.js +8 -5
- package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/context.template.js +8 -6
- package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts +15 -0
- package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/aliases.template.js +31 -0
- package/dist/scripts/generate-web-module/templates/data/aliases.template.js.map +1 -0
- package/dist/scripts/generate-web-module/templates/data/fields.template.js +2 -2
- package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/index.d.ts +1 -0
- package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/index.js +1 -0
- package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/interface.template.js +11 -5
- package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/model.template.js +25 -16
- package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/data/service.template.js +5 -1
- package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/index.d.ts +1 -1
- package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/index.js +2 -1
- package/dist/scripts/generate-web-module/templates/index.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +6 -7
- package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -1
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +3 -3
- package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -1
- package/dist/scripts/generate-web-module/transformers/field-mapper.js +5 -5
- package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -1
- package/dist/scripts/generate-web-module/transformers/i18n-generator.js +2 -2
- package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -1
- package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +1 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/transformers/import-resolver.js +1 -0
- package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -1
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +3 -3
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +19 -13
- package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -1
- package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +4 -2
- package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/types/field-mapping.types.js +23 -7
- package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -1
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +2 -0
- package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +2 -2
- package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -1
- package/dist/scripts/generate-web-module/utils/file-writer.d.ts +6 -0
- package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/utils/file-writer.js +22 -0
- package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -1
- package/dist/scripts/generate-web-module/utils/i18n-updater.js +13 -13
- package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -1
- package/dist/scripts/generate-web-module/utils/index.d.ts +1 -1
- package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -1
- package/dist/scripts/generate-web-module/utils/index.js +2 -1
- package/dist/scripts/generate-web-module/utils/index.js.map +1 -1
- package/package.json +2 -2
- package/scripts/generate-web-module/generator.ts +70 -5
- package/scripts/generate-web-module/templates/components/container.template.ts +12 -43
- package/scripts/generate-web-module/templates/components/details.template.ts +7 -5
- package/scripts/generate-web-module/templates/components/editor.template.ts +27 -17
- package/scripts/generate-web-module/templates/components/list.template.ts +4 -3
- package/scripts/generate-web-module/templates/components/multi-selector.template.ts +6 -4
- package/scripts/generate-web-module/templates/components/selector.template.ts +8 -5
- package/scripts/generate-web-module/templates/context.template.ts +8 -6
- package/scripts/generate-web-module/templates/data/aliases.template.ts +33 -0
- package/scripts/generate-web-module/templates/data/fields.template.ts +2 -2
- package/scripts/generate-web-module/templates/data/index.ts +1 -0
- package/scripts/generate-web-module/templates/data/interface.template.ts +10 -5
- package/scripts/generate-web-module/templates/data/model.template.ts +24 -16
- package/scripts/generate-web-module/templates/data/service.template.ts +6 -1
- package/scripts/generate-web-module/templates/index.ts +1 -0
- package/scripts/generate-web-module/templates/pages/detail-page.template.ts +6 -7
- package/scripts/generate-web-module/templates/pages/list-page.template.ts +3 -3
- package/scripts/generate-web-module/transformers/field-mapper.ts +5 -5
- package/scripts/generate-web-module/transformers/i18n-generator.ts +2 -2
- package/scripts/generate-web-module/transformers/import-resolver.ts +2 -0
- package/scripts/generate-web-module/transformers/relationship-resolver.ts +19 -13
- package/scripts/generate-web-module/types/field-mapping.types.ts +19 -6
- package/scripts/generate-web-module/types/template-data.interface.ts +2 -0
- package/scripts/generate-web-module/utils/bootstrapper-updater.ts +2 -2
- package/scripts/generate-web-module/utils/file-writer.ts +21 -0
- package/scripts/generate-web-module/utils/i18n-updater.ts +13 -13
- package/scripts/generate-web-module/utils/index.ts +1 -1
- package/src/components/containers/RoundPageContainer.tsx +80 -0
- package/src/components/containers/RoundPageContainerTitle.tsx +60 -0
- package/src/components/containers/index.ts +2 -0
- package/src/components/navigations/Header.tsx +3 -2
- package/src/shadcnui/index.ts +1 -0
- package/src/shadcnui/ui/command.tsx +2 -2
- package/dist/chunk-KWAUWJYX.js.map +0 -1
- package/dist/chunk-VQ35TGD7.mjs.map +0 -1
- /package/dist/{BlockNoteEditor-WLS36QIF.mjs.map → BlockNoteEditor-WUVRCTQI.mjs.map} +0 -0
|
@@ -54,8 +54,8 @@ export function updateBootstrapper(
|
|
|
54
54
|
|
|
55
55
|
let content = fs.readFileSync(bootstrapperPath, "utf-8");
|
|
56
56
|
|
|
57
|
-
// Check if module is already registered
|
|
58
|
-
const modulePattern = new RegExp(
|
|
57
|
+
// Check if module is already registered (exact match to avoid e.g. "InvoiceModule" matching "InvoiceLineModule")
|
|
58
|
+
const modulePattern = new RegExp(`\\b${names.pascalCase}Module\\b`, "g");
|
|
59
59
|
if (modulePattern.test(content)) {
|
|
60
60
|
return {
|
|
61
61
|
success: true,
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import * as fs from "fs";
|
|
8
8
|
import * as path from "path";
|
|
9
|
+
import { execSync } from "child_process";
|
|
9
10
|
import { GeneratedFile } from "../types/template-data.interface";
|
|
10
11
|
|
|
11
12
|
export interface WriteOptions {
|
|
@@ -74,6 +75,26 @@ export function writeFiles(files: GeneratedFile[], options: WriteOptions = {}):
|
|
|
74
75
|
return files.map((file) => writeFile(file, options));
|
|
75
76
|
}
|
|
76
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Format files with Prettier
|
|
80
|
+
*
|
|
81
|
+
* @param filePaths - Absolute paths of files to format
|
|
82
|
+
*/
|
|
83
|
+
export function formatFiles(filePaths: string[]): void {
|
|
84
|
+
if (filePaths.length === 0) return;
|
|
85
|
+
|
|
86
|
+
console.info(`\n💅 Formatting ${filePaths.length} files with Prettier...`);
|
|
87
|
+
try {
|
|
88
|
+
execSync(`npx prettier --write ${filePaths.map((p) => `"${p}"`).join(" ")}`, {
|
|
89
|
+
stdio: "pipe",
|
|
90
|
+
cwd: process.cwd(),
|
|
91
|
+
});
|
|
92
|
+
console.info(` ✅ Formatted successfully`);
|
|
93
|
+
} catch {
|
|
94
|
+
console.warn(` ⚠️ Prettier formatting failed — files were written but may need manual formatting`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
77
98
|
/**
|
|
78
99
|
* Print write results to console
|
|
79
100
|
*
|
|
@@ -56,39 +56,39 @@ export function updateI18n(
|
|
|
56
56
|
const moduleMessages = buildI18nMessages(i18nKeys);
|
|
57
57
|
const lowercaseModuleName = names.camelCase.toLowerCase();
|
|
58
58
|
|
|
59
|
-
// Always ensure
|
|
60
|
-
let
|
|
61
|
-
if (!messages.
|
|
62
|
-
messages.
|
|
59
|
+
// Always ensure entities section is updated (even if features already exist)
|
|
60
|
+
let entitiesUpdated = false;
|
|
61
|
+
if (!messages.entities) {
|
|
62
|
+
messages.entities = {};
|
|
63
63
|
}
|
|
64
|
-
const
|
|
64
|
+
const entitiesKey = Object.keys(moduleMessages.entities)[0];
|
|
65
65
|
const lowercasePluralKey = names.pluralCamel.toLowerCase();
|
|
66
|
-
if (
|
|
67
|
-
messages.
|
|
68
|
-
|
|
66
|
+
if (entitiesKey && !messages.entities[lowercasePluralKey]) {
|
|
67
|
+
messages.entities[lowercasePluralKey] = moduleMessages.entities[entitiesKey];
|
|
68
|
+
entitiesUpdated = true;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// Check if module already exists in features
|
|
72
72
|
const featuresAlreadyExist = messages.features && messages.features[lowercaseModuleName];
|
|
73
73
|
|
|
74
74
|
if (featuresAlreadyExist) {
|
|
75
|
-
// Features exist, but we may have added
|
|
76
|
-
if (
|
|
75
|
+
// Features exist, but we may have added entities
|
|
76
|
+
if (entitiesUpdated) {
|
|
77
77
|
if (dryRun) {
|
|
78
78
|
return {
|
|
79
79
|
success: true,
|
|
80
|
-
message: `[DRY RUN] Module ${names.camelCase} exists, would add
|
|
80
|
+
message: `[DRY RUN] Module ${names.camelCase} exists, would add entities.${lowercasePluralKey}`,
|
|
81
81
|
alreadyExists: true,
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
// Write updated content (
|
|
85
|
+
// Write updated content (entities were added)
|
|
86
86
|
const updatedContent = JSON.stringify(messages, null, 2);
|
|
87
87
|
fs.writeFileSync(messagesPath, updatedContent, "utf-8");
|
|
88
88
|
|
|
89
89
|
return {
|
|
90
90
|
success: true,
|
|
91
|
-
message: `Module ${names.camelCase} exists, added
|
|
91
|
+
message: `Module ${names.camelCase} exists, added entities.${lowercasePluralKey}`,
|
|
92
92
|
alreadyExists: true,
|
|
93
93
|
};
|
|
94
94
|
}
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* Exports all utility functions.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
export { writeFile, writeFiles, printResults, type WriteOptions, type WriteResult } from "./file-writer";
|
|
7
|
+
export { writeFile, writeFiles, formatFiles, printResults, type WriteOptions, type WriteResult } from "./file-writer";
|
|
8
8
|
export { updateBootstrapper, generateImportStatement, generateModuleEntry, type BootstrapperUpdateResult } from "./bootstrapper-updater";
|
|
9
9
|
export { updateI18n, previewI18nMessages, type I18nUpdateResult } from "./i18n-updater";
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components";
|
|
4
|
+
import { Tab } from "@/components/containers";
|
|
5
|
+
import { RoundPageContainerTitle } from "@/components/containers/RoundPageContainerTitle";
|
|
6
|
+
import { Header } from "@/components/navigations";
|
|
7
|
+
import { useHeaderChildren } from "@/contexts";
|
|
8
|
+
import { cn } from "@/index";
|
|
9
|
+
import { ModuleWithPermissions } from "@/permissions";
|
|
10
|
+
import { ReactNode, useState } from "react";
|
|
11
|
+
|
|
12
|
+
type RoundPageContainerProps = {
|
|
13
|
+
module: ModuleWithPermissions;
|
|
14
|
+
details?: ReactNode;
|
|
15
|
+
tabs?: Tab[];
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export function RoundPageContainer({ module, details, tabs, children }: RoundPageContainerProps) {
|
|
20
|
+
const headerChildren = useHeaderChildren();
|
|
21
|
+
const [showDetails, setShowDetails] = useState(false);
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<>
|
|
25
|
+
<Header className="bg-sidebar border-0">{headerChildren}</Header>
|
|
26
|
+
<div className="flex h-[calc(100vh-3rem)] w-full flex-col p-2 pt-0 pl-0">
|
|
27
|
+
<div className="bg-background flex h-full w-full rounded-lg border p-0">
|
|
28
|
+
<div className="flex w-full flex-col">
|
|
29
|
+
<RoundPageContainerTitle
|
|
30
|
+
module={module}
|
|
31
|
+
details={details}
|
|
32
|
+
showDetails={showDetails}
|
|
33
|
+
setShowDetails={setShowDetails}
|
|
34
|
+
/>
|
|
35
|
+
<div className="flex h-full w-full overflow-hidden">
|
|
36
|
+
{tabs ? (
|
|
37
|
+
<Tabs defaultValue={tabs[0].label} className="w-full">
|
|
38
|
+
<div className="p-4">
|
|
39
|
+
<TabsList className={``}>
|
|
40
|
+
{tabs.map((tab) => (
|
|
41
|
+
<TabsTrigger key={tab.label} value={tab.label} className={`px-4`}>
|
|
42
|
+
{tab.contentLabel ?? tab.label}
|
|
43
|
+
</TabsTrigger>
|
|
44
|
+
))}
|
|
45
|
+
</TabsList>
|
|
46
|
+
</div>
|
|
47
|
+
<div className="flex w-full overflow-y-auto px-4">
|
|
48
|
+
{tabs.map((tab) => (
|
|
49
|
+
<TabsContent key={tab.label} value={tab.label} className={`pb-20`}>
|
|
50
|
+
{tab.content}
|
|
51
|
+
</TabsContent>
|
|
52
|
+
))}
|
|
53
|
+
</div>
|
|
54
|
+
</Tabs>
|
|
55
|
+
) : (
|
|
56
|
+
<>
|
|
57
|
+
{children && (
|
|
58
|
+
<div className="grow overflow-y-auto p-4">
|
|
59
|
+
<div className="mx-auto max-w-6xl space-y-12 p-8">{children}</div>
|
|
60
|
+
</div>
|
|
61
|
+
)}
|
|
62
|
+
</>
|
|
63
|
+
)}
|
|
64
|
+
{details && (
|
|
65
|
+
<div
|
|
66
|
+
className={cn(
|
|
67
|
+
"h-full shrink-0 overflow-hidden overflow-y-auto transition-all duration-300 ease-in-out",
|
|
68
|
+
showDetails ? "w-96 border-l p-4 opacity-100" : "ml-0 w-0 border-l-0 p-0 opacity-0",
|
|
69
|
+
)}
|
|
70
|
+
>
|
|
71
|
+
{details}
|
|
72
|
+
</div>
|
|
73
|
+
)}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { Button, Tooltip, TooltipContent, TooltipTrigger } from "@/components";
|
|
4
|
+
import { useSharedContext } from "@/contexts";
|
|
5
|
+
import { ModuleWithPermissions } from "@/permissions";
|
|
6
|
+
import { cn } from "@/utils";
|
|
7
|
+
import { PanelRightCloseIcon, PanelRightOpenIcon } from "lucide-react";
|
|
8
|
+
import { ReactNode } from "react";
|
|
9
|
+
|
|
10
|
+
type RoundPageContainerTitleProps = {
|
|
11
|
+
module: ModuleWithPermissions;
|
|
12
|
+
details?: ReactNode;
|
|
13
|
+
showDetails: boolean;
|
|
14
|
+
setShowDetails: (show: boolean) => void;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export function RoundPageContainerTitle({
|
|
18
|
+
module,
|
|
19
|
+
details,
|
|
20
|
+
showDetails,
|
|
21
|
+
setShowDetails,
|
|
22
|
+
}: RoundPageContainerTitleProps) {
|
|
23
|
+
const { title } = useSharedContext();
|
|
24
|
+
|
|
25
|
+
return (
|
|
26
|
+
<div className="flex w-full flex-row items-center justify-between border-b p-4">
|
|
27
|
+
<div className="flex w-full gap-x-4">
|
|
28
|
+
<div className={"text-muted-foreground flex items-center gap-x-2 text-lg font-light whitespace-nowrap"}>
|
|
29
|
+
{module && module.icon && <module.icon className="text-primary h-6 w-6" />}
|
|
30
|
+
{title.type}
|
|
31
|
+
</div>
|
|
32
|
+
<div className={cn("text-primary w-full text-xl font-semibold")}>{title.element}</div>
|
|
33
|
+
</div>
|
|
34
|
+
{(title.functions || details) && (
|
|
35
|
+
<div className="flex gap-x-2">
|
|
36
|
+
{title.functions}
|
|
37
|
+
{details && (
|
|
38
|
+
<Tooltip>
|
|
39
|
+
<TooltipTrigger>
|
|
40
|
+
<Button
|
|
41
|
+
render={<div />}
|
|
42
|
+
nativeButton={false}
|
|
43
|
+
variant={`ghost`}
|
|
44
|
+
onClick={() => setShowDetails(!showDetails)}
|
|
45
|
+
>
|
|
46
|
+
{showDetails ? (
|
|
47
|
+
<PanelRightCloseIcon className="text-muted-foreground" />
|
|
48
|
+
) : (
|
|
49
|
+
<PanelRightOpenIcon className="text-accent" />
|
|
50
|
+
)}
|
|
51
|
+
</Button>
|
|
52
|
+
</TooltipTrigger>
|
|
53
|
+
<TooltipContent>{showDetails ? "Hide details" : "Show details"}</TooltipContent>
|
|
54
|
+
</Tooltip>
|
|
55
|
+
)}
|
|
56
|
+
</div>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
@@ -6,13 +6,14 @@ import { BreadcrumbNavigation } from "./Breadcrumb";
|
|
|
6
6
|
|
|
7
7
|
type HeaderProps = {
|
|
8
8
|
children?: React.ReactNode;
|
|
9
|
+
className?: string;
|
|
9
10
|
};
|
|
10
11
|
|
|
11
|
-
export function Header({ children }: HeaderProps) {
|
|
12
|
+
export function Header({ children, className }: HeaderProps) {
|
|
12
13
|
const { breadcrumbs } = useSharedContext();
|
|
13
14
|
|
|
14
15
|
return (
|
|
15
|
-
<header className={`sticky top-0 z-10 flex h-12 flex-col items-center justify-start gap-x-4
|
|
16
|
+
<header className={`sticky top-0 z-10 flex h-12 flex-col items-center justify-start gap-x-4 ${className ?? ""}`}>
|
|
16
17
|
<div className="bg-sidebar flex h-12 w-full flex-row items-center justify-between pl-2 pr-4">
|
|
17
18
|
<SidebarTrigger aria-label="Toggle sidebar" id="sidebar-trigger" />
|
|
18
19
|
<div className="flex w-full flex-row items-center justify-start">
|
package/src/shadcnui/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * from "./ui/carousel";
|
|
|
14
14
|
export * from "./ui/chart";
|
|
15
15
|
export * from "./ui/checkbox";
|
|
16
16
|
export * from "./ui/collapsible";
|
|
17
|
+
export * from "./ui/combobox";
|
|
17
18
|
export * from "./ui/command";
|
|
18
19
|
export * from "./ui/context-menu";
|
|
19
20
|
export * from "./ui/dialog";
|
|
@@ -116,7 +116,7 @@ function CommandItem({ className, children, ...props }: React.ComponentProps<typ
|
|
|
116
116
|
<CommandPrimitive.Item
|
|
117
117
|
data-slot="command-item"
|
|
118
118
|
className={cn(
|
|
119
|
-
"data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none [&_svg:not([class*='size-'])]:size-3.5 [[data-slot=dialog-content]_&]:rounded-md group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
119
|
+
"data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none [&_svg:not([class*='size-'])]:size-3.5 [[data-slot=dialog-content]_&]:rounded-md group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
120
120
|
className,
|
|
121
121
|
)}
|
|
122
122
|
{...props}
|
|
@@ -132,7 +132,7 @@ function CommandShortcut({ className, ...props }: React.ComponentProps<"span">)
|
|
|
132
132
|
<span
|
|
133
133
|
data-slot="command-shortcut"
|
|
134
134
|
className={cn(
|
|
135
|
-
"text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest",
|
|
135
|
+
"text-muted-foreground group-data-[selected=true]/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest",
|
|
136
136
|
className,
|
|
137
137
|
)}
|
|
138
138
|
{...props}
|