@docubook/create 1.13.0 → 1.13.5

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 (41) hide show
  1. package/package.json +1 -1
  2. package/src/dist/app/page.tsx +1 -1
  3. package/src/dist/components/context-popover.tsx +4 -4
  4. package/src/dist/components/footer.tsx +4 -2
  5. package/src/dist/components/markdown/CardGroupMdx.tsx +1 -1
  6. package/src/dist/components/markdown/CardMdx.tsx +5 -4
  7. package/src/dist/components/markdown/FileTreeMdx.tsx +52 -33
  8. package/src/dist/components/markdown/KeyboardMdx.tsx +1 -1
  9. package/src/dist/components/markdown/NoteMdx.tsx +1 -1
  10. package/src/dist/components/markdown/StepperMdx.tsx +2 -2
  11. package/src/dist/components/markdown/TooltipsMdx.tsx +6 -3
  12. package/src/dist/components/navbar.tsx +3 -3
  13. package/src/dist/components/sublink.tsx +7 -6
  14. package/src/dist/components/theme-toggle.tsx +10 -10
  15. package/src/dist/components/toc-observer.tsx +9 -9
  16. package/src/dist/contents/docs/changelog/version-1/index.mdx +26 -3
  17. package/src/dist/contents/docs/components/accordion/index.mdx +36 -22
  18. package/src/dist/contents/docs/components/button/index.mdx +11 -13
  19. package/src/dist/contents/docs/components/card/index.mdx +6 -8
  20. package/src/dist/contents/docs/components/card-group/index.mdx +2 -4
  21. package/src/dist/contents/docs/components/code-block/index.mdx +2 -4
  22. package/src/dist/contents/docs/components/file-tree/index.mdx +3 -3
  23. package/src/dist/contents/docs/components/index.mdx +9 -0
  24. package/src/dist/contents/docs/components/keyboard/index.mdx +3 -3
  25. package/src/dist/contents/docs/components/note/index.mdx +4 -6
  26. package/src/dist/contents/docs/components/release-note/index.mdx +2 -2
  27. package/src/dist/contents/docs/components/stepper/index.mdx +2 -4
  28. package/src/dist/contents/docs/components/tabs/index.mdx +4 -4
  29. package/src/dist/contents/docs/components/tooltips/index.mdx +1 -1
  30. package/src/dist/contents/docs/components/youtube/index.mdx +7 -5
  31. package/src/dist/contents/docs/getting-started/index.mdx +9 -0
  32. package/src/dist/contents/docs/getting-started/theme-colors/coffee/index.mdx +167 -0
  33. package/src/dist/contents/docs/getting-started/theme-colors/default/index.mdx +163 -0
  34. package/src/dist/contents/docs/getting-started/theme-colors/freshlime/index.mdx +164 -0
  35. package/src/dist/contents/docs/getting-started/theme-colors/index.mdx +9 -0
  36. package/src/dist/contents/docs/getting-started/theme-colors/llms/index.mdx +66 -0
  37. package/src/dist/docu.json +12 -2
  38. package/src/dist/package.json +1 -1
  39. package/src/dist/styles/globals.css +50 -50
  40. package/src/dist/styles/syntax.css +24 -29
  41. package/bun.lock +0 -102
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docubook/create",
3
- "version": "1.13.0",
3
+ "version": "1.13.5",
4
4
  "main": "src/index.js",
5
5
  "type": "module",
6
6
  "bin": {
@@ -25,7 +25,7 @@ export default function Home() {
25
25
  )}
26
26
  >
27
27
  <AnimatedShinyText className="inline-flex items-center justify-center px-4 py-1 transition ease-out hover:text-neutral-100 hover:duration-300 hover:dark:text-neutral-200">
28
- <span>🚀 New Version - Release v1.13.0</span>
28
+ <span>🚀 New Version - Release v1.13.5</span>
29
29
  <ArrowRightIcon className="ml-1 size-3 transition-transform duration-300 ease-in-out group-hover:translate-x-0.5" />
30
30
  </AnimatedShinyText>
31
31
  </div>
@@ -68,7 +68,7 @@ export default function ContextPopover({ className }: ContextPopoverProps) {
68
68
  >
69
69
  <div className="flex items-center gap-2">
70
70
  {activeRoute?.context?.icon && (
71
- <span className="text-primary bg-primary/10 border border-primary rounded p-0.5">
71
+ <span className="text-primary bg-primary/10 border border-primary dark:border dark:border-accent dark:bg-accent/10 dark:text-accent rounded p-0.5">
72
72
  {getIcon(activeRoute.context.icon)}
73
73
  </span>
74
74
  )}
@@ -98,14 +98,14 @@ export default function ContextPopover({ className }: ContextPopoverProps) {
98
98
  "relative flex w-full items-center gap-2 rounded px-2 py-1.5 text-sm",
99
99
  "text-left outline-none transition-colors",
100
100
  isActive
101
- ? "bg-primary/20 text-primary"
102
- : "text-foreground/80 hover:bg-primary/20"
101
+ ? "bg-primary/20 text-primary dark:bg-accent/20 dark:text-accent"
102
+ : "text-foreground/80 hover:bg-primary/20 dark:text-foreground/60 dark:hover:bg-accent/20"
103
103
  )}
104
104
  >
105
105
  {route.context?.icon && (
106
106
  <span className={cn(
107
107
  "flex h-4 w-4 items-center justify-center",
108
- isActive ? "text-primary" : "text-foreground/60"
108
+ isActive ? "text-primary dark:text-accent" : "text-foreground/60"
109
109
  )}>
110
110
  {getIcon(route.context.icon)}
111
111
  </span>
@@ -63,8 +63,9 @@ export function FooterButtons() {
63
63
  target="_blank"
64
64
  rel="noopener noreferrer"
65
65
  aria-label={item.name}
66
+ className="text-muted-foreground hover:text-foreground transition-colors"
66
67
  >
67
- <IconComponent className="w-4 h-4 text-gray-800 transition-colors dark:text-gray-400 hover:text-primary" />
68
+ <IconComponent className="w-4 h-4" />
68
69
  </Link>
69
70
  );
70
71
  })}
@@ -79,7 +80,8 @@ export function MadeWith() {
79
80
  <span className="text-primary">
80
81
  <Link href="https://www.docubook.pro" target="_blank" rel="noopener noreferrer" className="underline underline-offset-2 text-muted-foreground">
81
82
  DocuBook
82
- </Link></span>
83
+ </Link>
84
+ </span>
83
85
  </>
84
86
  );
85
87
  }
@@ -13,7 +13,7 @@ const CardGroup: React.FC<CardGroupProps> = ({ children, cols = 2, className })
13
13
  return (
14
14
  <div
15
15
  className={clsx(
16
- "grid gap-4",
16
+ "grid gap-4 text-foreground",
17
17
  `grid-cols-1 sm:grid-cols-${cols}`,
18
18
  className
19
19
  )}
@@ -20,8 +20,9 @@ const Card: React.FC<CardProps> = ({ title, icon, href, horizontal, children, cl
20
20
  const content = (
21
21
  <div
22
22
  className={clsx(
23
- "border rounded-lg shadow-sm p-4 transition-all duration-200 bg-white dark:bg-gray-900",
24
- "hover:bg-gray-50 dark:hover:bg-gray-800",
23
+ "border rounded-lg shadow-sm p-4 transition-all duration-200",
24
+ "bg-card text-card-foreground border-border",
25
+ "hover:bg-accent/5 hover:border-accent/30",
25
26
  "flex gap-2",
26
27
  horizontal ? "flex-row items-center gap-1" : "flex-col space-y-1",
27
28
  className
@@ -29,8 +30,8 @@ const Card: React.FC<CardProps> = ({ title, icon, href, horizontal, children, cl
29
30
  >
30
31
  {Icon && <Icon className="w-5 h-5 text-primary flex-shrink-0" />}
31
32
  <div className="flex-1 min-w-0 my-auto h-full">
32
- <span className="text-base font-semibold">{title}</span>
33
- <div className="text-sm text-gray-600 dark:text-gray-400 -mt-3">{children}</div>
33
+ <span className="text-base font-semibold text-foreground">{title}</span>
34
+ <div className="text-sm text-muted-foreground -mt-3">{children}</div>
34
35
  </div>
35
36
  </div>
36
37
  );
@@ -1,12 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import React, { useState, ReactNode, Children, isValidElement, cloneElement } from 'react';
4
- import { ChevronRight, ChevronDown, File as FileIcon, Folder as FolderIcon, FolderOpen } from 'lucide-react';
5
-
6
- interface FileTreeProps {
7
- children: ReactNode;
8
- defaultOpen?: boolean;
9
- }
4
+ import { ChevronRight, File as FileIcon, Folder as FolderIcon, FolderOpen } from 'lucide-react';
10
5
 
11
6
  interface FileProps {
12
7
  name: string;
@@ -15,24 +10,27 @@ interface FileProps {
15
10
 
16
11
  const FileComponent = ({ name }: FileProps) => {
17
12
  const [isHovered, setIsHovered] = useState(false);
13
+ const fileExtension = name.split('.').pop()?.toUpperCase();
18
14
 
19
15
  return (
20
16
  <div
21
17
  className={`
22
- flex items-center gap-2 py-1.5 pl-7 pr-3 text-sm
23
- transition-all duration-200 ease-in-out rounded-md
24
- ${isHovered
25
- ? 'bg-blue-50 dark:bg-blue-900/30'
26
- : 'hover:bg-gray-50 dark:hover:bg-gray-800/50'}
18
+ flex items-center gap-2 py-1.5 pl-7 pr-3 text-sm rounded-md
19
+ transition-colors duration-150 cursor-default select-none
20
+ ${isHovered ? 'bg-accent/10' : 'hover:bg-muted/50'}
27
21
  `}
28
22
  onMouseEnter={() => setIsHovered(true)}
29
23
  onMouseLeave={() => setIsHovered(false)}
24
+ tabIndex={-1}
30
25
  >
31
- <FileIcon className={`h-3.5 w-3.5 transition-colors ${isHovered ? 'text-blue-500' : 'text-gray-400 dark:text-gray-500'}`} />
32
- <span className="font-mono text-sm text-gray-700 dark:text-gray-300">{name}</span>
33
- {isHovered && (
34
- <span className="ml-auto text-xs text-gray-400 dark:text-gray-500">
35
- {name.split('.').pop()?.toUpperCase()}
26
+ <FileIcon className={`
27
+ h-3.5 w-3.5 flex-shrink-0 transition-colors
28
+ ${isHovered ? 'text-accent' : 'text-muted-foreground'}
29
+ `} />
30
+ <span className="font-mono text-sm text-foreground truncate">{name}</span>
31
+ {isHovered && fileExtension && (
32
+ <span className="ml-auto text-xs text-muted-foreground/80">
33
+ {fileExtension}
36
34
  </span>
37
35
  )}
38
36
  </div>
@@ -48,31 +46,49 @@ const FolderComponent = ({ name, children }: FileProps) => {
48
46
  <div className="relative">
49
47
  <div
50
48
  className={`
51
- flex items-center gap-2 py-1.5 pl-4 pr-3 rounded-md cursor-pointer
52
- transition-all duration-200 ease-in-out
53
- ${isHovered ? 'bg-gray-50 dark:bg-gray-800/50' : ''}
54
- ${isOpen ? 'text-blue-600 dark:text-blue-400' : 'text-gray-800 dark:text-gray-200'}
49
+ flex items-center gap-2 py-1.5 pl-4 pr-3 rounded-md
50
+ transition-colors duration-150 select-none
51
+ ${isHovered ? 'bg-muted/60' : ''}
52
+ ${isOpen ? 'text-foreground' : 'text-foreground/80'}
53
+ ${hasChildren ? 'cursor-pointer' : 'cursor-default'}
55
54
  `}
56
- onClick={() => setIsOpen(!isOpen)}
55
+ onClick={() => hasChildren && setIsOpen(!isOpen)}
57
56
  onMouseEnter={() => setIsHovered(true)}
58
57
  onMouseLeave={() => setIsHovered(false)}
58
+ tabIndex={-1}
59
+ onKeyDown={(e) => e.preventDefault()}
59
60
  >
60
61
  {hasChildren ? (
61
62
  <ChevronRight
62
- className={`h-3.5 w-3.5 transition-transform duration-200 ${isOpen ? 'transform rotate-90' : ''}`}
63
+ className={`
64
+ h-3.5 w-3.5 flex-shrink-0 transition-transform duration-200
65
+ ${isOpen ? 'rotate-90' : ''}
66
+ ${isHovered ? 'text-foreground/70' : 'text-muted-foreground'}
67
+ `}
63
68
  />
64
69
  ) : (
65
70
  <div className="w-3.5" />
66
71
  )}
67
72
  {isOpen ? (
68
- <FolderOpen className="h-4 w-4 text-blue-500 dark:text-blue-400" />
73
+ <FolderOpen className={`
74
+ h-4 w-4 flex-shrink-0 transition-colors
75
+ ${isHovered ? 'text-accent' : 'text-muted-foreground'}
76
+ `} />
69
77
  ) : (
70
- <FolderIcon className="h-4 w-4 text-blue-400 dark:text-blue-500" />
78
+ <FolderIcon className={`
79
+ h-4 w-4 flex-shrink-0 transition-colors
80
+ ${isHovered ? 'text-accent/80' : 'text-muted-foreground/80'}
81
+ `} />
71
82
  )}
72
- <span className="font-medium">{name}</span>
83
+ <span className={`
84
+ font-medium transition-colors duration-150
85
+ ${isHovered ? 'text-accent' : ''}
86
+ `}>
87
+ {name}
88
+ </span>
73
89
  </div>
74
90
  {isOpen && hasChildren && (
75
- <div className="ml-5 border-l-2 border-gray-100 dark:border-gray-700/50 pl-2">
91
+ <div className="ml-5 border-l-2 border-muted/50 pl-2">
76
92
  {children}
77
93
  </div>
78
94
  )}
@@ -82,13 +98,16 @@ const FolderComponent = ({ name, children }: FileProps) => {
82
98
 
83
99
  export const Files = ({ children }: { children: ReactNode }) => {
84
100
  return (
85
- <div className="
86
- rounded-xl border border-gray-100 dark:border-gray-700/50
87
- bg-white/50 dark:bg-gray-800/30 backdrop-blur-sm
88
- shadow-sm overflow-hidden
89
- transition-all duration-200
90
- hover:shadow-md hover:border-gray-200 dark:hover:border-gray-600/50
91
- ">
101
+ <div
102
+ className="
103
+ rounded-xl border border-muted/50
104
+ bg-card/50 backdrop-blur-sm
105
+ shadow-sm overflow-hidden
106
+ transition-all duration-200
107
+ hover:shadow-md hover:border-muted/60
108
+ "
109
+ onKeyDown={(e) => e.preventDefault()}
110
+ >
92
111
  <div className="p-2">
93
112
  {Children.map(children, (child, index) => {
94
113
  if (isValidElement(child)) {
@@ -88,7 +88,7 @@ const KbdComponent: React.FC<KbdProps> = ({
88
88
 
89
89
  return (
90
90
  <kbd
91
- className="inline-flex items-center justify-center px-2 py-1 mx-0.5 text-xs font-mono font-medium text-gray-800 bg-gray-100 border border-gray-300 rounded-md dark:bg-gray-700 dark:text-gray-200 dark:border-gray-600"
91
+ className="inline-flex items-center justify-center px-2 py-1 mx-0.5 text-xs font-mono font-medium text-foreground bg-secondary/70 border rounded-md"
92
92
  {...props}
93
93
  >
94
94
  {renderContent()}
@@ -29,7 +29,7 @@ export default function Note({
29
29
  "dark:bg-stone-950/25 bg-stone-50": type === "note",
30
30
  "dark:bg-red-950 bg-red-100 border-red-200 dark:border-red-900":
31
31
  type === "danger",
32
- "dark:bg-orange-950 bg-orange-100 border-orange-200 dark:border-orange-900":
32
+ "bg-orange-50 border-orange-200 dark:border-orange-900 dark:bg-orange-900/50":
33
33
  type === "warning",
34
34
  "dark:bg-green-950 bg-green-100 border-green-200 dark:border-green-900":
35
35
  type === "success",
@@ -11,13 +11,13 @@ export function Stepper({ children }: PropsWithChildren) {
11
11
  return (
12
12
  <div
13
13
  className={cn(
14
- "border-l pl-9 ml-3 relative",
14
+ "border-l border-muted pl-9 ml-3 relative",
15
15
  clsx({
16
16
  "pb-5 ": index < length - 1,
17
17
  })
18
18
  )}
19
19
  >
20
- <div className="bg-muted w-8 h-8 text-xs font-medium rounded-md border flex items-center justify-center absolute -left-4 font-code">
20
+ <div className="bg-muted text-muted-foreground w-8 h-8 text-xs font-medium rounded-md border border-border/50 flex items-center justify-center absolute -left-4 font-code">
21
21
  {index + 1}
22
22
  </div>
23
23
  {child}
@@ -11,14 +11,17 @@ const Tooltip: React.FC<TooltipProps> = ({ text, tip }) => {
11
11
 
12
12
  return (
13
13
  <span
14
- className="relative inline-block cursor-pointer underline decoration-dotted text-blue-500"
14
+ className="relative inline-flex items-center cursor-help text-primary hover:text-primary/80 transition-colors"
15
15
  onMouseEnter={() => setVisible(true)}
16
16
  onMouseLeave={() => setVisible(false)}
17
17
  >
18
- {text}
18
+ <span className="border-b border-dashed border-primary/60 pb-0.5">
19
+ {text}
20
+ </span>
19
21
  {visible && (
20
- <span className="absolute bottom-full left-1/2 -translate-x-1/2 mb-2 w-max max-w-xs sm:max-w-sm md:max-w-md lg:max-w-lg xl:max-w-xl bg-background text-foreground text-sm p-2 rounded shadow-md break-words text-center outline outline-1 outline-offset-2">
22
+ <span className="absolute bottom-full left-1/2 -translate-x-1/2 mb-3 w-64 bg-popover text-popover-foreground text-sm p-3 rounded-md shadow-lg border border-border/50 break-words text-left z-50">
21
23
  {tip}
24
+ <span className="absolute -bottom-1.5 left-1/2 -translate-x-1/2 w-3 h-3 bg-popover rotate-45 border-b border-r border-border/50 -z-10" />
22
25
  </span>
23
26
  )}
24
27
  </span>
@@ -63,15 +63,15 @@ export function NavMenu({ isSheet = false }) {
63
63
  const Comp = (
64
64
  <Anchor
65
65
  key={`${item.title}-${item.href}`}
66
- activeClassName="!text-primary md:font-semibold font-medium"
66
+ activeClassName="text-primary dark:text-accent md:font-semibold font-medium"
67
67
  absolute
68
- className="flex items-center gap-1 dark:text-stone-300/85 text-stone-800"
68
+ className="flex items-center gap-1 text-foreground/80 hover:text-foreground transition-colors"
69
69
  href={item.href}
70
70
  target={isExternal ? "_blank" : undefined}
71
71
  rel={isExternal ? "noopener noreferrer" : undefined}
72
72
  >
73
73
  {item.title}
74
- {isExternal && <ArrowUpRight className="w-4 h-4 text-muted-foreground" />}
74
+ {isExternal && <ArrowUpRight className="w-4 h-4 text-foreground/80" />}
75
75
  </Anchor>
76
76
  );
77
77
  return isSheet ? (
@@ -54,9 +54,10 @@ export default function SubLink({
54
54
  // Only apply active styles if it's an exact match and not a parent with active children
55
55
  const Comp = useMemo(() => (
56
56
  <Anchor
57
- activeClassName={!hasActiveChild ? "text-primary font-medium" : ""}
57
+ activeClassName={!hasActiveChild ? "dark:text-accent text-primary font-medium" : ""}
58
58
  href={fullHref}
59
59
  className={cn(
60
+ "text-foreground/80 hover:text-foreground transition-colors",
60
61
  hasActiveChild && "font-medium text-foreground"
61
62
  )}
62
63
  >
@@ -72,8 +73,8 @@ export default function SubLink({
72
73
  )
73
74
  ) : (
74
75
  <h4 className={cn(
75
- "font-medium sm:text-sm",
76
- hasActiveChild ? "text-foreground" : "text-primary"
76
+ "font-medium sm:text-sm text-foreground/90 hover:text-foreground transition-colors",
77
+ hasActiveChild ? "text-foreground" : "text-foreground/80"
77
78
  )}>
78
79
  {title}
79
80
  </h4>
@@ -93,7 +94,7 @@ export default function SubLink({
93
94
  >
94
95
  <div className="flex items-center justify-between w-full">
95
96
  {titleOrLink}
96
- <span className="ml-2">
97
+ <span className="ml-2 text-muted-foreground">
97
98
  {!isOpen ? (
98
99
  <ChevronRight className="h-[0.9rem] w-[0.9rem]" aria-hidden="true" />
99
100
  ) : (
@@ -111,8 +112,8 @@ export default function SubLink({
111
112
  >
112
113
  <div
113
114
  className={cn(
114
- "flex flex-col items-start sm:text-sm dark:text-stone-300/85 text-stone-800 ml-0.5 mt-2.5 gap-3",
115
- level > 0 && "pl-4 border-l ml-1.5"
115
+ "flex flex-col items-start sm:text-sm text-foreground/80 ml-0.5 mt-2.5 gap-3 hover:[&_a]:text-foreground transition-colors",
116
+ level > 0 && "pl-4 border-l border-border ml-1.5"
116
117
  )}
117
118
  >
118
119
  {items?.map((innerLink) => (
@@ -28,7 +28,7 @@ export function ModeToggle() {
28
28
  setSelectedTheme(value);
29
29
  }
30
30
  }}
31
- className="flex items-center gap-1 rounded-full border border-gray-300 dark:border-gray-700 p-1 transition-all"
31
+ className="flex items-center gap-1 rounded-full border border-border bg-background/50 p-1 transition-all"
32
32
  >
33
33
  <ToggleGroupItem
34
34
  value="light"
@@ -36,11 +36,11 @@ export function ModeToggle() {
36
36
  aria-label="Light Mode"
37
37
  className={`rounded-full p-1 transition-all ${
38
38
  selectedTheme === "light"
39
- ? "bg-blue-500 text-white"
40
- : "bg-transparent"
39
+ ? "bg-primary text-primary-foreground"
40
+ : "bg-transparent hover:bg-muted/50"
41
41
  }`}
42
42
  >
43
- <Sun className={`h-4 w-4 ${selectedTheme === "light" ? "text-white" : "text-gray-600 dark:text-gray-300"}`} />
43
+ <Sun className="h-4 w-4" />
44
44
  </ToggleGroupItem>
45
45
  <ToggleGroupItem
46
46
  value="system"
@@ -48,11 +48,11 @@ export function ModeToggle() {
48
48
  aria-label="System Mode"
49
49
  className={`rounded-full p-1 transition-all ${
50
50
  selectedTheme === "system"
51
- ? "bg-blue-500 text-white"
52
- : "bg-transparent"
51
+ ? "bg-primary text-primary-foreground"
52
+ : "bg-transparent hover:bg-muted/50"
53
53
  }`}
54
54
  >
55
- <Monitor className={`h-4 w-4 ${selectedTheme === "system" ? "text-white" : "text-gray-600 dark:text-gray-300"}`} />
55
+ <Monitor className="h-4 w-4" />
56
56
  </ToggleGroupItem>
57
57
  <ToggleGroupItem
58
58
  value="dark"
@@ -60,11 +60,11 @@ export function ModeToggle() {
60
60
  aria-label="Dark Mode"
61
61
  className={`rounded-full p-1 transition-all ${
62
62
  selectedTheme === "dark"
63
- ? "bg-blue-500 text-white"
64
- : "bg-transparent"
63
+ ? "bg-primary text-primary-foreground"
64
+ : "bg-transparent hover:bg-muted/50"
65
65
  }`}
66
66
  >
67
- <Moon className={`h-4 w-4 ${selectedTheme === "dark" ? "text-white" : "text-gray-600 dark:text-gray-300"}`} />
67
+ <Moon className="h-4 w-4" />
68
68
  </ToggleGroupItem>
69
69
  </ToggleGroup>
70
70
  );
@@ -149,7 +149,7 @@ export default function TocObserver({
149
149
 
150
150
  return (
151
151
  <div className="relative">
152
- <div className="relative text-sm text-stone-600 dark:text-stone-400">
152
+ <div className="relative text-sm text-foreground/70 hover:text-foreground transition-colors">
153
153
  <div className="flex flex-col gap-0">
154
154
  {data.map(({ href, level, text }, index) => {
155
155
  const id = href.slice(1);
@@ -172,7 +172,7 @@ export default function TocObserver({
172
172
  {/* Vertical line */}
173
173
  <div className={clsx(
174
174
  "absolute left-0 top-0 h-full w-px",
175
- isActive ? "bg-primary/20" : "bg-stone-300 dark:bg-stone-600"
175
+ isActive ? "bg-primary/20 dark:bg-primary/30" : "bg-border/50 dark:bg-border/50"
176
176
  )}>
177
177
  {isActive && (
178
178
  <motion.div
@@ -187,11 +187,11 @@ export default function TocObserver({
187
187
  {/* Horizontal line */}
188
188
  <div className={clsx(
189
189
  "absolute left-0 top-1/2 h-px w-6",
190
- isActive ? "bg-primary/20" : "bg-stone-300 dark:bg-stone-600"
190
+ isActive ? "bg-primary/20 dark:bg-primary/30" : "bg-border/50 dark:bg-border/50"
191
191
  )}>
192
192
  {isActive && (
193
193
  <motion.div
194
- className="absolute left-0 top-0 h-full w-full bg-primary origin-left"
194
+ className="absolute left-0 top-0 h-full w-full bg-primary dark:bg-accent origin-left"
195
195
  initial={{ scaleX: 0 }}
196
196
  animate={{ scaleX: scrollProgress }}
197
197
  transition={{ duration: 0.3, delay: 0.1 }}
@@ -207,8 +207,8 @@ export default function TocObserver({
207
207
  className={clsx(
208
208
  "relative flex items-center py-2 transition-colors",
209
209
  {
210
- "text-primary dark:text-primary-400 font-medium": isActive,
211
- "text-stone-600 dark:text-stone-400 hover:text-stone-900 dark:hover:text-stone-200": !isActive,
210
+ "text-primary dark:text-primary font-medium": isActive,
211
+ "text-muted-foreground hover:text-foreground dark:hover:text-foreground/90": !isActive,
212
212
  }
213
213
  )}
214
214
  style={{
@@ -229,13 +229,13 @@ export default function TocObserver({
229
229
  <div className={clsx(
230
230
  "w-1.5 h-1.5 rounded-full transition-all duration-300 relative z-10",
231
231
  {
232
- "bg-primary scale-100": isActive,
233
- "bg-stone-300 dark:bg-stone-600 scale-75 group-hover:scale-100 group-hover:bg-primary/50": !isActive,
232
+ "bg-primary scale-100 dark:bg-primary/90": isActive,
233
+ "bg-muted-foreground/30 dark:bg-muted-foreground/30 scale-75 group-hover:scale-100 group-hover:bg-primary/50 dark:group-hover:bg-primary/50": !isActive,
234
234
  }
235
235
  )}>
236
236
  {isActive && (
237
237
  <motion.div
238
- className="absolute inset-0 rounded-full bg-primary/20"
238
+ className="absolute inset-0 rounded-full bg-primary/20 dark:bg-primary/30"
239
239
  initial={{ scale: 1 }}
240
240
  animate={{ scale: 1.8 }}
241
241
  transition={{
@@ -1,12 +1,35 @@
1
1
  ---
2
- title: Changelog
2
+ title: Release Version 1.0+
3
3
  description: List of latest changes and updates on DocuBook
4
4
  date: 24-05-2025
5
5
  ---
6
6
 
7
- ## Version History
7
+ <Note type="note" title="Version History">
8
+ This changelog contains a list of all the changes made to the DocuBook template. It will be updated with each new release and will include information about new features, bug fixes, and other improvements.
9
+ </Note>
10
+
11
+ <div className="sr-only">
12
+ ### v 1.13.5
13
+ </div>
8
14
 
9
- > This changelog contains a list of all the changes made to the DocuBook template. It will be updated with each new release and will include information about new features, bug fixes, and other improvements.
15
+ <Release version="1.13.5" date="2025-05-31" title="Add Theme schema for consistent theme">
16
+ <Changes type="added">
17
+ - Add Theme schema
18
+ - Add Freshlime theme
19
+ - Add Coffee theme
20
+ - Add llms context for generated theme with AI
21
+ </Changes>
22
+ <Changes type="improved">
23
+ - Markdown support for theme-colors
24
+ - consistent theme-colors page
25
+ - all components now consistent with theme-colors
26
+ - syntax with theme-colors
27
+ </Changes>
28
+ <Changes type="fixed">
29
+ - fix bug FileTree component
30
+ - fix issue markdown with theme-colors
31
+ </Changes>
32
+ </Release>
10
33
 
11
34
  <div className="sr-only">
12
35
  ### v 1.13.0
@@ -4,41 +4,55 @@ description: A component used to create collapsible content that can be hidden a
4
4
  date: 22-12-2024
5
5
  ---
6
6
 
7
- The Accordion component is a collapsible content container that can be used to hide and show content again. It is a flexible component that can be used to display any content, including HTML elements, markdown components, and plain text.
8
-
9
7
  ## Preview
10
8
 
11
- ### Code Block
9
+ ### Basic Usage
12
10
 
13
- <Accordion title="Code Block" defaultOpen={true}>
14
- ```javascript:main.js showLineNumbers {3-4}
15
- function isRocketAboutToCrash() {
16
- // Check if the rocket is stable
17
- if (!isStable()) {
18
- NoCrash(); // Prevent the crash
19
- }
11
+ <Accordion title="Click to expand" defaultOpen={true}>
12
+ This is a simple accordion component that can be toggled by clicking the header. The content can include any valid React nodes, including text, components, and markdown.
13
+ </Accordion>
14
+
15
+ ### With Code Block
16
+
17
+ <Accordion title="Code Example" className="mt-4">
18
+ ```javascript:utils.js showLineNumbers
19
+ // Example of using the Accordion component
20
+ import Accordion from '@/components/markdown/AccordionMdx';
21
+
22
+ function Example() {
23
+ return (
24
+ <Accordion title="Click to see code">
25
+ <pre>
26
+ {`function greet() {\n console.log('Hello, world!');\n}`}
27
+ </pre>
28
+ </Accordion>
29
+ );
20
30
  }
21
31
  ```
22
32
  </Accordion>
23
33
 
24
- ### Text with Markdown
34
+ ### With Markdown Content
35
+
36
+ <Accordion title="Markdown Example" className="mt-4">
37
+ ## This is a markdown heading
38
+
39
+ - List item 1
40
+ - List item 2
41
+ - List item 3
25
42
 
26
- <Accordion title="Markdown">
27
- this is an example of plain text content from the accordion component and below is markdown ;
28
- 1. number one
29
- 2. number two
30
- 3. number three
43
+ You can include **bold** and *italic* text, [links](#), and other markdown elements.
31
44
  </Accordion>
32
45
 
33
46
  ## Props
34
47
 
35
- | Prop | Type | Default | Description |
36
- | ------------- | --------- | -------------- | -------------------------------------------------------------------------------------- |
37
- | `title` | `string` | `null` | The value of Accordion title. |
38
- | `children` | `ReactNode` | `null` | Flexible content, both HTML elements, markdown componenst and plain text. |
39
- | `defaultOpen` | `boolean` | `false` | You can change the value to `true` if you want the content to open when the page loads |
48
+ | Prop | Type | Default | Description |
49
+ |------|------|---------|-------------|
50
+ | `title` | string | - | **Required**. The text displayed in the accordion header. |
51
+ | `children` | ReactNode | null | The content to be displayed when the accordion is expanded. Can be plain text, markdown, or React components. |
52
+ | `defaultOpen` | boolean | false | When true, the accordion will be expanded by default. |
53
+ | `className` | string | undefined | Additional CSS classes to apply to the accordion container. |
40
54
 
41
- ## Code
55
+ ## Output Markdown
42
56
 
43
57
  <Tabs defaultValue="markdown" className="pt-5 pb-1">
44
58
  <TabsList>
@@ -4,14 +4,12 @@ description: A component used to create buttons that can be used to trigger acti
4
4
  date: 14-12-2024
5
5
  ---
6
6
 
7
- The Button component is a component used to create buttons that can be used to trigger actions or navigate to other pages.
8
-
9
7
  ## Preview
10
8
 
11
9
  <Button
12
10
  text="Learn More"
13
11
  href="https://learn.example.com"
14
- icon="ArrowUpRight"
12
+ icon="MoveUpRight"
15
13
  size="md"
16
14
  target="_blank"
17
15
  variation="primary"
@@ -19,18 +17,18 @@ The Button component is a component used to create buttons that can be used to t
19
17
 
20
18
  ## Props
21
19
 
22
- | Prop | Type | Default | Description |
23
- | ----------- | -------- | -------------- | -------------------------------------------- |
24
- | `text` | `string` | `""` | The value of text button. |
25
- | `href` | `string` | `""` | The value of url button. |
26
- | `icon` | `string` | `null` | The value of button icon render from lucide. |
27
- | `size` | `string` | `"sm, md, lg"` | The value of size button. |
28
- | `target` | `string` | `"_blank"` | By default target `_blank` |
29
- | `variation` | `string` | `"primary"` | By default variation is **Primary** |
20
+ | Prop | Type | Default | Description |
21
+ | ----------- | -------- | ----------- | -------------------------------------------- |
22
+ | `text` | string | undefined | The button text |
23
+ | `href` | string | **required**| The URL to navigate to |
24
+ | `icon` | string | undefined | Lucide icon name (e.g. "MoveUpRight") |
25
+ | `size` | string | "md" | Button size: `"sm"`, `"md"`, or `"lg"` |
26
+ | `target` | string | undefined | Link target (e.g. "_blank") |
27
+ | `variation` | string | "primary" | Button style: `"primary"`, `"accent"`, or `"outline"` |
30
28
 
31
- ## Code
29
+ ## Output Markdown
32
30
 
33
- ```bash
31
+ ```markdown
34
32
  <Button
35
33
  text="Learn More"
36
34
  href="https://learn.example.com"