@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.
Files changed (131) hide show
  1. package/dist/{BlockNoteEditor-LENHWRS2.js → BlockNoteEditor-KQPSJCYG.js} +6 -6
  2. package/dist/{BlockNoteEditor-LENHWRS2.js.map → BlockNoteEditor-KQPSJCYG.js.map} +1 -1
  3. package/dist/{BlockNoteEditor-WLS36QIF.mjs → BlockNoteEditor-WUVRCTQI.mjs} +2 -2
  4. package/dist/billing/index.js +299 -299
  5. package/dist/billing/index.mjs +1 -1
  6. package/dist/{chunk-VQ35TGD7.mjs → chunk-BTLJZIDS.mjs} +2612 -2269
  7. package/dist/chunk-BTLJZIDS.mjs.map +1 -0
  8. package/dist/{chunk-KWAUWJYX.js → chunk-YKPIFJOB.js} +544 -201
  9. package/dist/chunk-YKPIFJOB.js.map +1 -0
  10. package/dist/client/index.js +2 -2
  11. package/dist/client/index.mjs +1 -1
  12. package/dist/components/index.d.mts +44 -4
  13. package/dist/components/index.d.ts +44 -4
  14. package/dist/components/index.js +38 -2
  15. package/dist/components/index.js.map +1 -1
  16. package/dist/components/index.mjs +37 -1
  17. package/dist/contexts/index.js +2 -2
  18. package/dist/contexts/index.mjs +1 -1
  19. package/dist/scripts/generate-web-module/generator.d.ts.map +1 -1
  20. package/dist/scripts/generate-web-module/generator.js +62 -4
  21. package/dist/scripts/generate-web-module/generator.js.map +1 -1
  22. package/dist/scripts/generate-web-module/templates/components/container.template.js +12 -43
  23. package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -1
  24. package/dist/scripts/generate-web-module/templates/components/details.template.js +7 -5
  25. package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -1
  26. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -1
  27. package/dist/scripts/generate-web-module/templates/components/editor.template.js +28 -17
  28. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
  29. package/dist/scripts/generate-web-module/templates/components/list.template.js +4 -3
  30. package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -1
  31. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -1
  32. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +6 -4
  33. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -1
  34. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -1
  35. package/dist/scripts/generate-web-module/templates/components/selector.template.js +8 -5
  36. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
  37. package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -1
  38. package/dist/scripts/generate-web-module/templates/context.template.js +8 -6
  39. package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -1
  40. package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts +15 -0
  41. package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts.map +1 -0
  42. package/dist/scripts/generate-web-module/templates/data/aliases.template.js +31 -0
  43. package/dist/scripts/generate-web-module/templates/data/aliases.template.js.map +1 -0
  44. package/dist/scripts/generate-web-module/templates/data/fields.template.js +2 -2
  45. package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -1
  46. package/dist/scripts/generate-web-module/templates/data/index.d.ts +1 -0
  47. package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -1
  48. package/dist/scripts/generate-web-module/templates/data/index.js +1 -0
  49. package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -1
  50. package/dist/scripts/generate-web-module/templates/data/interface.template.js +11 -5
  51. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -1
  52. package/dist/scripts/generate-web-module/templates/data/model.template.js +25 -16
  53. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -1
  54. package/dist/scripts/generate-web-module/templates/data/service.template.js +5 -1
  55. package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -1
  56. package/dist/scripts/generate-web-module/templates/index.d.ts +1 -1
  57. package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -1
  58. package/dist/scripts/generate-web-module/templates/index.js +2 -1
  59. package/dist/scripts/generate-web-module/templates/index.js.map +1 -1
  60. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -1
  61. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +6 -7
  62. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -1
  63. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +3 -3
  64. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -1
  65. package/dist/scripts/generate-web-module/transformers/field-mapper.js +5 -5
  66. package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -1
  67. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +2 -2
  68. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -1
  69. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +1 -0
  70. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -1
  71. package/dist/scripts/generate-web-module/transformers/import-resolver.js +1 -0
  72. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -1
  73. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +3 -3
  74. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -1
  75. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +19 -13
  76. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -1
  77. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +4 -2
  78. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -1
  79. package/dist/scripts/generate-web-module/types/field-mapping.types.js +23 -7
  80. package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -1
  81. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +2 -0
  82. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -1
  83. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +2 -2
  84. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -1
  85. package/dist/scripts/generate-web-module/utils/file-writer.d.ts +6 -0
  86. package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -1
  87. package/dist/scripts/generate-web-module/utils/file-writer.js +22 -0
  88. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -1
  89. package/dist/scripts/generate-web-module/utils/i18n-updater.js +13 -13
  90. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -1
  91. package/dist/scripts/generate-web-module/utils/index.d.ts +1 -1
  92. package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -1
  93. package/dist/scripts/generate-web-module/utils/index.js +2 -1
  94. package/dist/scripts/generate-web-module/utils/index.js.map +1 -1
  95. package/package.json +2 -2
  96. package/scripts/generate-web-module/generator.ts +70 -5
  97. package/scripts/generate-web-module/templates/components/container.template.ts +12 -43
  98. package/scripts/generate-web-module/templates/components/details.template.ts +7 -5
  99. package/scripts/generate-web-module/templates/components/editor.template.ts +27 -17
  100. package/scripts/generate-web-module/templates/components/list.template.ts +4 -3
  101. package/scripts/generate-web-module/templates/components/multi-selector.template.ts +6 -4
  102. package/scripts/generate-web-module/templates/components/selector.template.ts +8 -5
  103. package/scripts/generate-web-module/templates/context.template.ts +8 -6
  104. package/scripts/generate-web-module/templates/data/aliases.template.ts +33 -0
  105. package/scripts/generate-web-module/templates/data/fields.template.ts +2 -2
  106. package/scripts/generate-web-module/templates/data/index.ts +1 -0
  107. package/scripts/generate-web-module/templates/data/interface.template.ts +10 -5
  108. package/scripts/generate-web-module/templates/data/model.template.ts +24 -16
  109. package/scripts/generate-web-module/templates/data/service.template.ts +6 -1
  110. package/scripts/generate-web-module/templates/index.ts +1 -0
  111. package/scripts/generate-web-module/templates/pages/detail-page.template.ts +6 -7
  112. package/scripts/generate-web-module/templates/pages/list-page.template.ts +3 -3
  113. package/scripts/generate-web-module/transformers/field-mapper.ts +5 -5
  114. package/scripts/generate-web-module/transformers/i18n-generator.ts +2 -2
  115. package/scripts/generate-web-module/transformers/import-resolver.ts +2 -0
  116. package/scripts/generate-web-module/transformers/relationship-resolver.ts +19 -13
  117. package/scripts/generate-web-module/types/field-mapping.types.ts +19 -6
  118. package/scripts/generate-web-module/types/template-data.interface.ts +2 -0
  119. package/scripts/generate-web-module/utils/bootstrapper-updater.ts +2 -2
  120. package/scripts/generate-web-module/utils/file-writer.ts +21 -0
  121. package/scripts/generate-web-module/utils/i18n-updater.ts +13 -13
  122. package/scripts/generate-web-module/utils/index.ts +1 -1
  123. package/src/components/containers/RoundPageContainer.tsx +80 -0
  124. package/src/components/containers/RoundPageContainerTitle.tsx +60 -0
  125. package/src/components/containers/index.ts +2 -0
  126. package/src/components/navigations/Header.tsx +3 -2
  127. package/src/shadcnui/index.ts +1 -0
  128. package/src/shadcnui/ui/command.tsx +2 -2
  129. package/dist/chunk-KWAUWJYX.js.map +0 -1
  130. package/dist/chunk-VQ35TGD7.mjs.map +0 -1
  131. /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(`${names.pascalCase}Module`, "g");
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 types section is updated (even if features already exist)
60
- let typesUpdated = false;
61
- if (!messages.types) {
62
- messages.types = {};
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 typesKey = Object.keys(moduleMessages.types)[0];
64
+ const entitiesKey = Object.keys(moduleMessages.entities)[0];
65
65
  const lowercasePluralKey = names.pluralCamel.toLowerCase();
66
- if (typesKey && !messages.types[lowercasePluralKey]) {
67
- messages.types[lowercasePluralKey] = moduleMessages.types[typesKey];
68
- typesUpdated = true;
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 types
76
- if (typesUpdated) {
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 types.${lowercasePluralKey}`,
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 (types were added)
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 types.${lowercasePluralKey}`,
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
+ }
@@ -1,3 +1,5 @@
1
1
  export * from "./PageContainer";
2
2
  export * from "./ReactMarkdownContainer";
3
+ export * from "./RoundPageContainer";
4
+ export * from "./RoundPageContainerTitle";
3
5
  export * from "./TabsContainer";
@@ -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 border-b`}>
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">
@@ -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}