@docubook/mdx-content 1.0.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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -0
  3. package/dist/adapters/next/ButtonMdx.d.ts +4 -0
  4. package/dist/adapters/next/ButtonMdx.d.ts.map +1 -0
  5. package/dist/adapters/next/ButtonMdx.jsx +7 -0
  6. package/dist/adapters/next/ButtonMdx.jsx.map +1 -0
  7. package/dist/adapters/next/CardMdx.d.ts +4 -0
  8. package/dist/adapters/next/CardMdx.d.ts.map +1 -0
  9. package/dist/adapters/next/CardMdx.jsx +7 -0
  10. package/dist/adapters/next/CardMdx.jsx.map +1 -0
  11. package/dist/adapters/next/ImageMdx.d.ts +8 -0
  12. package/dist/adapters/next/ImageMdx.d.ts.map +1 -0
  13. package/dist/adapters/next/ImageMdx.jsx +7 -0
  14. package/dist/adapters/next/ImageMdx.jsx.map +1 -0
  15. package/dist/adapters/next/LinkMdx.d.ts +3 -0
  16. package/dist/adapters/next/LinkMdx.d.ts.map +1 -0
  17. package/dist/adapters/next/LinkMdx.jsx +10 -0
  18. package/dist/adapters/next/LinkMdx.jsx.map +1 -0
  19. package/dist/adapters/next/index.d.ts +5 -0
  20. package/dist/adapters/next/index.d.ts.map +1 -0
  21. package/dist/adapters/next/index.js +5 -0
  22. package/dist/adapters/next/index.js.map +1 -0
  23. package/dist/client.d.ts +7 -0
  24. package/dist/client.d.ts.map +1 -0
  25. package/dist/client.js +7 -0
  26. package/dist/client.js.map +1 -0
  27. package/dist/components/AccordionContext.d.ts +8 -0
  28. package/dist/components/AccordionContext.d.ts.map +1 -0
  29. package/dist/components/AccordionContext.jsx +4 -0
  30. package/dist/components/AccordionContext.jsx.map +1 -0
  31. package/dist/components/AccordionGroupMdx.d.ts +7 -0
  32. package/dist/components/AccordionGroupMdx.d.ts.map +1 -0
  33. package/dist/components/AccordionGroupMdx.jsx +17 -0
  34. package/dist/components/AccordionGroupMdx.jsx.map +1 -0
  35. package/dist/components/AccordionMdx.d.ts +11 -0
  36. package/dist/components/AccordionMdx.d.ts.map +1 -0
  37. package/dist/components/AccordionMdx.jsx +76 -0
  38. package/dist/components/AccordionMdx.jsx.map +1 -0
  39. package/dist/components/ButtonMdx.d.ts +18 -0
  40. package/dist/components/ButtonMdx.d.ts.map +1 -0
  41. package/dist/components/ButtonMdx.jsx +58 -0
  42. package/dist/components/ButtonMdx.jsx.map +1 -0
  43. package/dist/components/CardGroupMdx.d.ts +9 -0
  44. package/dist/components/CardGroupMdx.d.ts.map +1 -0
  45. package/dist/components/CardGroupMdx.jsx +29 -0
  46. package/dist/components/CardGroupMdx.jsx.map +1 -0
  47. package/dist/components/CardMdx.d.ts +17 -0
  48. package/dist/components/CardMdx.d.ts.map +1 -0
  49. package/dist/components/CardMdx.jsx +87 -0
  50. package/dist/components/CardMdx.jsx.map +1 -0
  51. package/dist/components/CodeBlock.d.ts +8 -0
  52. package/dist/components/CodeBlock.d.ts.map +1 -0
  53. package/dist/components/CodeBlock.jsx +77 -0
  54. package/dist/components/CodeBlock.jsx.map +1 -0
  55. package/dist/components/CopyButton.d.ts +6 -0
  56. package/dist/components/CopyButton.d.ts.map +1 -0
  57. package/dist/components/CopyButton.jsx +43 -0
  58. package/dist/components/CopyButton.jsx.map +1 -0
  59. package/dist/components/FileTreeMdx.d.ts +19 -0
  60. package/dist/components/FileTreeMdx.d.ts.map +1 -0
  61. package/dist/components/FileTreeMdx.jsx +79 -0
  62. package/dist/components/FileTreeMdx.jsx.map +1 -0
  63. package/dist/components/IconMdx.d.ts +6 -0
  64. package/dist/components/IconMdx.d.ts.map +1 -0
  65. package/dist/components/IconMdx.jsx +14 -0
  66. package/dist/components/IconMdx.jsx.map +1 -0
  67. package/dist/components/ImageMdx.d.ts +8 -0
  68. package/dist/components/ImageMdx.d.ts.map +1 -0
  69. package/dist/components/ImageMdx.jsx +126 -0
  70. package/dist/components/ImageMdx.jsx.map +1 -0
  71. package/dist/components/KeyboardMdx.d.ts +10 -0
  72. package/dist/components/KeyboardMdx.d.ts.map +1 -0
  73. package/dist/components/KeyboardMdx.jsx +41 -0
  74. package/dist/components/KeyboardMdx.jsx.map +1 -0
  75. package/dist/components/LinkMdx.d.ts +4 -0
  76. package/dist/components/LinkMdx.d.ts.map +1 -0
  77. package/dist/components/LinkMdx.jsx +9 -0
  78. package/dist/components/LinkMdx.jsx.map +1 -0
  79. package/dist/components/NoteMdx.d.ts +13 -0
  80. package/dist/components/NoteMdx.d.ts.map +1 -0
  81. package/dist/components/NoteMdx.jsx +87 -0
  82. package/dist/components/NoteMdx.jsx.map +1 -0
  83. package/dist/components/ReleaseMdx.d.ts +16 -0
  84. package/dist/components/ReleaseMdx.d.ts.map +1 -0
  85. package/dist/components/ReleaseMdx.jsx +56 -0
  86. package/dist/components/ReleaseMdx.jsx.map +1 -0
  87. package/dist/components/StepperMdx.d.ts +17 -0
  88. package/dist/components/StepperMdx.d.ts.map +1 -0
  89. package/dist/components/StepperMdx.jsx +82 -0
  90. package/dist/components/StepperMdx.jsx.map +1 -0
  91. package/dist/components/TableMdx.d.ts +9 -0
  92. package/dist/components/TableMdx.d.ts.map +1 -0
  93. package/dist/components/TableMdx.jsx +57 -0
  94. package/dist/components/TableMdx.jsx.map +1 -0
  95. package/dist/components/TabsMdx.d.ts +21 -0
  96. package/dist/components/TabsMdx.d.ts.map +1 -0
  97. package/dist/components/TabsMdx.jsx +124 -0
  98. package/dist/components/TabsMdx.jsx.map +1 -0
  99. package/dist/components/TooltipsMdx.d.ts +10 -0
  100. package/dist/components/TooltipsMdx.d.ts.map +1 -0
  101. package/dist/components/TooltipsMdx.jsx +42 -0
  102. package/dist/components/TooltipsMdx.jsx.map +1 -0
  103. package/dist/components/YoutubeMdx.d.ts +7 -0
  104. package/dist/components/YoutubeMdx.d.ts.map +1 -0
  105. package/dist/components/YoutubeMdx.jsx +15 -0
  106. package/dist/components/YoutubeMdx.jsx.map +1 -0
  107. package/dist/components/index.d.ts +17 -0
  108. package/dist/components/index.d.ts.map +1 -0
  109. package/dist/components/index.js +17 -0
  110. package/dist/components/index.js.map +1 -0
  111. package/dist/index.d.ts +21 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +20 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/registry/index.d.ts +4 -0
  116. package/dist/registry/index.d.ts.map +1 -0
  117. package/dist/registry/index.js +41 -0
  118. package/dist/registry/index.js.map +1 -0
  119. package/dist/server.d.ts +12 -0
  120. package/dist/server.d.ts.map +1 -0
  121. package/dist/server.js +12 -0
  122. package/dist/server.js.map +1 -0
  123. package/package.json +75 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Wildan Nursahidan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # @docubook/mdx-content
2
+
3
+ Portable MDX components and framework adapters for [DocuBook](https://docubook.pro/). Provides a collection of ready-to-use React components designed for MDX-based documentation sites, with built-in support for Next.js adapters.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ # npm
9
+ npm install @docubook/mdx-content
10
+
11
+ # pnpm
12
+ pnpm add @docubook/mdx-content
13
+
14
+ # yarn
15
+ yarn add @docubook/mdx-content
16
+
17
+ # bun
18
+ bun add @docubook/mdx-content
19
+ ```
20
+
21
+ ## Usage
22
+
23
+ ### 1. Create a custom components registry
24
+
25
+ Create `lib/mdx/index.ts` to register your custom MDX components:
26
+
27
+ ```ts
28
+ // lib/mdx/index.ts
29
+ import type { MdxComponentMap } from "@docubook/mdx-content";
30
+
31
+ export const customMdxComponents: MdxComponentMap = {
32
+ // add your custom components here
33
+ };
34
+ ```
35
+
36
+ ### 2. Create the MDX components map
37
+
38
+ Create `lib/mdx-components.ts` to define the full component map. Import built-in components individually and merge them with your custom ones via `createMdxComponents`:
39
+
40
+ ```ts
41
+ // lib/mdx-components.ts
42
+ import {
43
+ createMdxComponents,
44
+ type MdxComponentMap,
45
+ AccordionGroupMdx,
46
+ AccordionMdx,
47
+ CardGroupMdx,
48
+ ChangesMdx,
49
+ CodeBlock,
50
+ FileMdx,
51
+ FilesMdx,
52
+ FolderMdx,
53
+ KbdMdx,
54
+ NoteMdx,
55
+ ReleaseMdx,
56
+ StepperItemMdx,
57
+ StepperMdx,
58
+ TableBodyMdx,
59
+ TableCellMdx,
60
+ TableFooterMdx,
61
+ TableHeadMdx,
62
+ TableHeaderMdx,
63
+ TableMdx,
64
+ TableRowMdx,
65
+ TabsContentMdx,
66
+ TabsListMdx,
67
+ TabsMdx,
68
+ TabsTriggerMdx,
69
+ TooltipMdx,
70
+ YoutubeMdx,
71
+ } from "@docubook/mdx-content";
72
+ import { ImageMdx, LinkMdx, ButtonMdx, CardMdx } from "@docubook/mdx-content/next";
73
+ import { customMdxComponents } from "@/lib/mdx";
74
+
75
+ const builtInOverrides: MdxComponentMap = {
76
+ Tabs: TabsMdx,
77
+ TabsContent: TabsContentMdx,
78
+ TabsList: TabsListMdx,
79
+ TabsTrigger: TabsTriggerMdx,
80
+ table: TableMdx,
81
+ thead: TableHeaderMdx,
82
+ tbody: TableBodyMdx,
83
+ tfoot: TableFooterMdx,
84
+ tr: TableRowMdx,
85
+ th: TableHeadMdx,
86
+ td: TableCellMdx,
87
+ pre: CodeBlock,
88
+ Card: CardMdx,
89
+ Button: ButtonMdx,
90
+ Note: NoteMdx,
91
+ Stepper: StepperMdx,
92
+ StepperItem: StepperItemMdx,
93
+ Accordion: AccordionMdx,
94
+ AccordionGroup: AccordionGroupMdx,
95
+ CardGroup: CardGroupMdx,
96
+ Kbd: KbdMdx,
97
+ Release: ReleaseMdx,
98
+ Changes: ChangesMdx,
99
+ File: FileMdx,
100
+ Files: FilesMdx,
101
+ Folder: FolderMdx,
102
+ Youtube: YoutubeMdx,
103
+ Tooltip: TooltipMdx,
104
+ img: ImageMdx,
105
+ a: LinkMdx,
106
+ Link: LinkMdx,
107
+ };
108
+
109
+ export const mdxComponents = createMdxComponents({
110
+ ...builtInOverrides,
111
+ ...customMdxComponents,
112
+ });
113
+ ```
114
+
115
+ > For Next.js projects, import `Link`, `Button`, `Card`, and `Image` from `@docubook/mdx-content/next` to use Next.js-optimized versions (`next/link`, `next/image`).
116
+
117
+ ### 3. Use the components map when rendering MDX
118
+
119
+ Pass `mdxComponents` to `createMdxContentService` from `@docubook/core`:
120
+
121
+ ```ts
122
+ // lib/markdown.ts
123
+ import { createMdxContentService } from "@docubook/core";
124
+ import { cache } from "react";
125
+ import { mdxComponents as components } from "@/lib/mdx-components";
126
+
127
+ const docsService = createMdxContentService({
128
+ parseOptions: { components },
129
+ cacheFn: cache,
130
+ });
131
+ ```
132
+
133
+ ### Available import paths
134
+
135
+ | Path | Description |
136
+ | ------------------------------ | -------------------------------------------------------------- |
137
+ | `@docubook/mdx-content` | All server-safe components + `createMdxComponents` registry |
138
+ | `@docubook/mdx-content/client` | Client-only components (accordion, tabs, tooltip, etc.) |
139
+ | `@docubook/mdx-content/server` | Server-side components |
140
+ | `@docubook/mdx-content/next` | Next.js-optimized adapters (`Link`, `Button`, `Card`, `Image`) |
141
+
142
+ ---
143
+
144
+ ## Custom Components
145
+
146
+ ### 1. Create your component
147
+
148
+ Add a new file under `lib/mdx/`:
149
+
150
+ ```tsx
151
+ // lib/mdx/Callout.tsx
152
+ export default function Callout({ children }: { children: React.ReactNode }) {
153
+ return (
154
+ <div className="border-l-4 border-blue-500 pl-4 py-2 bg-blue-50">
155
+ {children}
156
+ </div>
157
+ );
158
+ }
159
+ ```
160
+
161
+ ### 2. Register your component
162
+
163
+ Import and add it to `customMdxComponents` in `lib/mdx/index.ts`:
164
+
165
+ ```ts
166
+ // lib/mdx/index.ts
167
+ import type { MdxComponentMap } from "@docubook/mdx-content";
168
+ import Callout from "@/lib/mdx/Callout";
169
+
170
+ export const customMdxComponents: MdxComponentMap = {
171
+ Callout,
172
+ };
173
+ ```
174
+
175
+ `customMdxComponents` is already spread into `createMdxComponents` in `lib/mdx-components.ts`, so no further changes are needed. You can now use `<Callout>` in any `.mdx` file:
176
+
177
+ ```mdx
178
+ <Callout>
179
+ This is a custom callout component.
180
+ </Callout>
181
+ ```
182
+
183
+ ---
184
+
185
+ ## Available Components
186
+
187
+ For full usage examples of all built-in components, refer to [components.md](./components.md).
188
+
189
+ Components included out of the box:
190
+
191
+ - `Accordion` / `AccordionGroup`
192
+ - `Button`
193
+ - `Card` / `CardGroup`
194
+ - Code Block (`pre`)
195
+ - `Files` / `Folder` / `File`
196
+ - `Image` / `img`
197
+ - `Kbd`
198
+ - `Link` / `a`
199
+ - `Note`
200
+ - `Release` / `Changes`
201
+ - `Stepper` / `StepperItem`
202
+ - `Tabs` / `TabsList` / `TabsTrigger` / `TabsContent`
203
+ - `Tooltip`
204
+ - `Youtube`
205
+ - Table (`table`, `thead`, `tbody`, `tfoot`, `tr`, `th`, `td`)
206
+
207
+ ---
208
+
209
+ ## License
210
+
211
+ MIT — see [LICENSE](./LICENSE) for details.
@@ -0,0 +1,4 @@
1
+ import type { ButtonMdxProps as CoreButtonMdxProps } from "../../components/ButtonMdx";
2
+ export type ButtonMdxProps = Omit<CoreButtonMdxProps, "__LinkComponent">;
3
+ export declare function ButtonMdx(props: ButtonMdxProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=ButtonMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonMdx.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/ButtonMdx.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGvF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;AAEzE,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAE9C"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { ButtonMdx as CoreButtonMdx } from "../../components/ButtonMdx";
3
+ import { LinkMdx } from "./LinkMdx";
4
+ export function ButtonMdx(props) {
5
+ return <CoreButtonMdx {...props} __LinkComponent={LinkMdx}/>;
6
+ }
7
+ //# sourceMappingURL=ButtonMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonMdx.jsx","sourceRoot":"","sources":["../../../src/adapters/next/ButtonMdx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAExE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC3C,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAG,CAAC;AAClE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CardMdxProps as CoreCardMdxProps } from "../../components/CardMdx";
2
+ export type CardMdxProps = Omit<CoreCardMdxProps, "__LinkComponent">;
3
+ export declare function CardMdx(props: CardMdxProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=CardMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardMdx.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/CardMdx.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAGjF,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;AAErE,wBAAgB,OAAO,CAAC,KAAK,EAAE,YAAY,+BAE1C"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import { CardMdx as CoreCardMdx } from "../../components/CardMdx";
3
+ import { LinkMdx } from "./LinkMdx";
4
+ export function CardMdx(props) {
5
+ return <CoreCardMdx {...props} __LinkComponent={LinkMdx}/>;
6
+ }
7
+ //# sourceMappingURL=CardMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardMdx.jsx","sourceRoot":"","sources":["../../../src/adapters/next/CardMdx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,UAAU,OAAO,CAAC,KAAmB;IACvC,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAG,CAAC;AAChE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ComponentProps } from "react";
2
+ import NextImage from "next/image";
3
+ import { type ImageMdxProps as CoreImageMdxProps } from "../../components/ImageMdx";
4
+ export type ImageMdxProps = Omit<CoreImageMdxProps, "src"> & {
5
+ src?: ComponentProps<typeof NextImage>["src"];
6
+ };
7
+ export declare function ImageMdx(props: ImageMdxProps): import("react").JSX.Element;
8
+ //# sourceMappingURL=ImageMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageMdx.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/ImageMdx.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAA4B,KAAK,aAAa,IAAI,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9G,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,GAAG;IACzD,GAAG,CAAC,EAAE,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAE5C"}
@@ -0,0 +1,7 @@
1
+ "use client";
2
+ import NextImage from "next/image";
3
+ import { ImageMdx as CoreImageMdx } from "../../components/ImageMdx";
4
+ export function ImageMdx(props) {
5
+ return <CoreImageMdx ImageComponent={NextImage} {...props}/>;
6
+ }
7
+ //# sourceMappingURL=ImageMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageMdx.jsx","sourceRoot":"","sources":["../../../src/adapters/next/ImageMdx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,IAAI,YAAY,EAA2C,MAAM,2BAA2B,CAAC;AAM9G,MAAM,UAAU,QAAQ,CAAC,KAAoB;IACzC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AAClE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LinkMdxProps } from "../../components/LinkMdx";
2
+ export declare function LinkMdx({ href, rel, target, ...props }: LinkMdxProps): import("react").JSX.Element | null;
3
+ //# sourceMappingURL=LinkMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkMdx.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/LinkMdx.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,sCAQpE"}
@@ -0,0 +1,10 @@
1
+ import NextLink from "next/link";
2
+ export function LinkMdx({ href, rel, target, ...props }) {
3
+ if (!href)
4
+ return null;
5
+ const external = /^https?:\/\//.test(href);
6
+ const computedTarget = target ?? (external ? "_blank" : undefined);
7
+ const computedRel = rel ?? (external ? "noopener noreferrer" : undefined);
8
+ return <NextLink href={href} target={computedTarget} rel={computedRel} {...props}/>;
9
+ }
10
+ //# sourceMappingURL=LinkMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkMdx.jsx","sourceRoot":"","sources":["../../../src/adapters/next/LinkMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAGjC,MAAM,UAAU,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,KAAK,EAAgB;IACjE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE1E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,KAAK,CAAC,EAAG,CAAC;AACzF,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { LinkMdx } from "./LinkMdx";
2
+ export { ButtonMdx } from "./ButtonMdx";
3
+ export { CardMdx } from "./CardMdx";
4
+ export { ImageMdx, type ImageMdxProps } from "./ImageMdx";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { LinkMdx } from "./LinkMdx";
2
+ export { ButtonMdx } from "./ButtonMdx";
3
+ export { CardMdx } from "./CardMdx";
4
+ export { ImageMdx } from "./ImageMdx";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/next/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { AccordionMdx } from "./components/AccordionMdx";
2
+ export { AccordionGroupMdx } from "./components/AccordionGroupMdx";
3
+ export { CopyButton } from "./components/CopyButton";
4
+ export { NoteMdx } from "./components/NoteMdx";
5
+ export { TabsMdx, TabsListMdx, TabsTriggerMdx, TabsContentMdx } from "./components/TabsMdx";
6
+ export { TooltipMdx } from "./components/TooltipsMdx";
7
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,7 @@
1
+ export { AccordionMdx } from "./components/AccordionMdx";
2
+ export { AccordionGroupMdx } from "./components/AccordionGroupMdx";
3
+ export { CopyButton } from "./components/CopyButton";
4
+ export { NoteMdx } from "./components/NoteMdx";
5
+ export { TabsMdx, TabsListMdx, TabsTriggerMdx, TabsContentMdx } from "./components/TabsMdx";
6
+ export { TooltipMdx } from "./components/TooltipsMdx";
7
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,8 @@
1
+ type AccordionGroupContextType = {
2
+ inGroup: boolean;
3
+ openTitle: string | null;
4
+ setOpenTitle: (title: string | null) => void;
5
+ };
6
+ export declare const AccordionGroupContext: import("react").Context<AccordionGroupContextType | null>;
7
+ export {};
8
+ //# sourceMappingURL=AccordionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionContext.d.ts","sourceRoot":"","sources":["../../src/components/AccordionContext.tsx"],"names":[],"mappings":"AAIA,KAAK,yBAAyB,GAAG;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,qBAAqB,2DAAwD,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use client";
2
+ import { createContext } from "react";
3
+ export const AccordionGroupContext = createContext(null);
4
+ //# sourceMappingURL=AccordionContext.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionContext.jsx","sourceRoot":"","sources":["../../src/components/AccordionContext.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAAmC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type ReactNode } from "react";
2
+ type AccordionGroupMdxProps = {
3
+ children?: ReactNode;
4
+ };
5
+ export declare function AccordionGroupMdx({ children }: AccordionGroupMdxProps): import("react").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=AccordionGroupMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionGroupMdx.d.ts","sourceRoot":"","sources":["../../src/components/AccordionGroupMdx.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG1D,KAAK,sBAAsB,GAAG;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,+BAsBrE"}
@@ -0,0 +1,17 @@
1
+ "use client";
2
+ import { useMemo, useState } from "react";
3
+ import { AccordionGroupContext } from "./AccordionContext";
4
+ export function AccordionGroupMdx({ children }) {
5
+ const [openTitle, setOpenTitle] = useState(null);
6
+ const value = useMemo(() => ({ inGroup: true, openTitle, setOpenTitle }), [openTitle]);
7
+ return (<AccordionGroupContext.Provider value={value}>
8
+ <div className="mdx-accordion-group" style={{
9
+ margin: "1rem 0",
10
+ display: "grid",
11
+ gap: "0.85rem",
12
+ }}>
13
+ {children}
14
+ </div>
15
+ </AccordionGroupContext.Provider>);
16
+ }
17
+ //# sourceMappingURL=AccordionGroupMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionGroupMdx.jsx","sourceRoot":"","sources":["../../src/components/AccordionGroupMdx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAM3D,MAAM,UAAU,iBAAiB,CAAC,EAAE,QAAQ,EAA0B;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEhE,MAAM,KAAK,GAAG,OAAO,CACjB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAClD,CAAC,SAAS,CAAC,CACd,CAAC;IAEF,OAAO,CACH,CAAC,qBAAqB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CACzC;YAAA,CAAC,GAAG,CACA,SAAS,CAAC,qBAAqB,CAC/B,KAAK,CAAC,CAAC;YACH,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,SAAS;SACjB,CAAC,CAEF;gBAAA,CAAC,QAAQ,CACb;YAAA,EAAE,GAAG,CACT;QAAA,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CACpC,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type ReactNode } from "react";
2
+ import { IconProp } from "./IconMdx";
3
+ type AccordionMdxProps = {
4
+ title: string;
5
+ icon?: IconProp;
6
+ className?: string;
7
+ children?: ReactNode;
8
+ };
9
+ export declare function AccordionMdx({ title, icon, className, children }: AccordionMdxProps): import("react").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=AccordionMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionMdx.d.ts","sourceRoot":"","sources":["../../src/components/AccordionMdx.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAmD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,QAAQ,EAAqB,MAAM,WAAW,CAAC;AAGxD,KAAK,iBAAiB,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,+BAuGnF"}
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { useContext, useId, useState } from "react";
3
+ import { AccordionGroupContext } from "./AccordionContext";
4
+ import { resolveLucideIcon } from "./IconMdx";
5
+ import { ChevronRight } from "lucide-react";
6
+ export function AccordionMdx({ title, icon, className, children }) {
7
+ const groupContext = useContext(AccordionGroupContext);
8
+ const [localOpen, setLocalOpen] = useState(false);
9
+ const panelId = useId();
10
+ const triggerId = `${panelId}-trigger`;
11
+ const isGroup = groupContext?.inGroup === true;
12
+ const isOpen = isGroup ? groupContext?.openTitle === title : localOpen;
13
+ const resolvedIcon = resolveLucideIcon(icon);
14
+ function onToggle() {
15
+ if (isGroup && groupContext) {
16
+ groupContext.setOpenTitle(groupContext.openTitle === title ? null : title);
17
+ return;
18
+ }
19
+ setLocalOpen((prev) => !prev);
20
+ }
21
+ return (<div className={`mdx-accordion ${isGroup ? "mdx-accordion-group-item" : ""} ${className ?? ""}`} style={{
22
+ border: "1px solid hsl(var(--border, 210 14% 94%))",
23
+ borderRadius: 10,
24
+ overflow: "hidden",
25
+ background: "hsl(var(--card, 0 0% 100%))",
26
+ }}>
27
+ <button className="mdx-accordion-header" type="button" onClick={onToggle} aria-expanded={isOpen} aria-controls={panelId} id={triggerId} onKeyDown={(event) => {
28
+ if (event.key === "Enter" || event.key === " ") {
29
+ event.preventDefault();
30
+ onToggle();
31
+ }
32
+ }} style={{
33
+ width: "100%",
34
+ display: "flex",
35
+ alignItems: "center",
36
+ justifyContent: "flex-start",
37
+ gap: "0.5rem",
38
+ textAlign: "left",
39
+ border: 0,
40
+ cursor: "pointer",
41
+ background: "hsl(var(--muted, 210 12% 96%))",
42
+ color: "hsl(var(--foreground, 222 12% 12%))",
43
+ fontWeight: 600,
44
+ padding: "0.95rem 1rem",
45
+ }}>
46
+ <ChevronRight className="mdx-accordion-chevron" aria-hidden="true" size={16} style={{
47
+ transform: isOpen ? "rotate(90deg)" : "rotate(0deg)",
48
+ transition: "transform 0.2s ease",
49
+ flexShrink: 0,
50
+ color: "hsl(var(--foreground, 222 12% 12%) / 0.74)",
51
+ marginRight: "0.4rem",
52
+ }}/>
53
+ <span style={{ display: "inline-flex", alignItems: "center", gap: "0.5rem", flex: 1 }}>
54
+ {resolvedIcon ? (<span aria-hidden="true" style={{
55
+ display: "inline-flex",
56
+ alignItems: "center",
57
+ justifyContent: "center",
58
+ minWidth: "1.45rem",
59
+ height: "1.45rem",
60
+ color: "hsl(var(--foreground, 222 12% 12%))",
61
+ }}>
62
+ {resolvedIcon}
63
+ </span>) : null}
64
+ <span>{title}</span>
65
+ </span>
66
+ </button>
67
+ <div id={panelId} role="region" aria-labelledby={triggerId} hidden={!isOpen} className="mdx-accordion-content" style={{
68
+ padding: "0.75rem 0.8rem",
69
+ background: "hsl(var(--card, 0 0% 100%))",
70
+ color: "hsl(var(--card-foreground, 222 12% 20%))",
71
+ }}>
72
+ {children}
73
+ </div>
74
+ </div>);
75
+ }
76
+ //# sourceMappingURL=AccordionMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionMdx.jsx","sourceRoot":"","sources":["../../src/components/AccordionMdx.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAEb,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAsC,MAAM,OAAO,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAY,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAS5C,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAqB;IAChF,MAAM,YAAY,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IACvD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,GAAG,OAAO,UAAU,CAAC;IAEvC,MAAM,OAAO,GAAG,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAE7C,SAAS,QAAQ;QACb,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC1B,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3E,OAAO;QACX,CAAC;QACD,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,CACH,CAAC,GAAG,CACA,SAAS,CAAC,CAAC,iBAAiB,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC,CAC3F,KAAK,CAAC,CAAC;YACH,MAAM,EAAE,2CAA2C;YACnD,YAAY,EAAE,EAAE;YAChB,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,6BAA6B;SAC5C,CAAC,CAEF;YAAA,CAAC,MAAM,CACH,SAAS,CAAC,sBAAsB,CAChC,IAAI,CAAC,QAAQ,CACb,OAAO,CAAC,CAAC,QAAQ,CAAC,CAClB,aAAa,CAAC,CAAC,MAAM,CAAC,CACtB,aAAa,CAAC,CAAC,OAAO,CAAC,CACvB,EAAE,CAAC,CAAC,SAAS,CAAC,CACd,SAAS,CAAC,CAAC,CAAC,KAAuC,EAAE,EAAE;YACnD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,QAAQ,EAAE,CAAC;YACf,CAAC;QACL,CAAC,CAAC,CACF,KAAK,CAAC,CAAC;YACH,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,YAAY;YAC5B,GAAG,EAAE,QAAQ;YACb,SAAS,EAAE,MAAM;YACjB,MAAM,EAAE,CAAC;YACT,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,gCAAgC;YAC5C,KAAK,EAAE,qCAAqC;YAC5C,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,cAAc;SAC1B,CAAC,CAEF;gBAAA,CAAC,YAAY,CACT,SAAS,CAAC,uBAAuB,CACjC,WAAW,CAAC,MAAM,CAClB,IAAI,CAAC,CAAC,EAAE,CAAC,CACT,KAAK,CAAC,CAAC;YACH,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,cAAc;YACpD,UAAU,EAAE,qBAAqB;YACjC,UAAU,EAAE,CAAC;YACb,KAAK,EAAE,4CAA4C;YACnD,WAAW,EAAE,QAAQ;SACxB,CAAC,EAEN;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAClF;oBAAA,CAAC,YAAY,CAAC,CAAC,CAAC,CACZ,CAAC,IAAI,CACD,WAAW,CAAC,MAAM,CAClB,KAAK,CAAC,CAAC;gBACH,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,QAAQ;gBACxB,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,qCAAqC;aAC/C,CAAC,CAEF;4BAAA,CAAC,YAAY,CACjB;wBAAA,EAAE,IAAI,CAAC,CACV,CAAC,CAAC,CAAC,IAAI,CACR;oBAAA,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CACvB;gBAAA,EAAE,IAAI,CACV;YAAA,EAAE,MAAM,CACR;YAAA,CAAC,GAAG,CACA,EAAE,CAAC,CAAC,OAAO,CAAC,CACZ,IAAI,CAAC,QAAQ,CACb,eAAe,CAAC,CAAC,SAAS,CAAC,CAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAChB,SAAS,CAAC,uBAAuB,CACjC,KAAK,CAAC,CAAC;YACH,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,6BAA6B;YACzC,KAAK,EAAE,0CAA0C;SACpD,CAAC,CAEF;gBAAA,CAAC,QAAQ,CACb;YAAA,EAAE,GAAG,CACT;QAAA,EAAE,GAAG,CAAC,CACT,CAAC;AACN,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ButtonHTMLAttributes, ComponentType } from "react";
2
+ import { IconProp } from "./IconMdx";
3
+ import type { LinkMdxProps } from "./LinkMdx";
4
+ type LinkRenderer = ComponentType<LinkMdxProps>;
5
+ export type ButtonMdxProps = ButtonHTMLAttributes<HTMLButtonElement> & {
6
+ href?: string;
7
+ variant?: "primary" | "secondary" | "ghost";
8
+ variation?: "primary" | "secondary" | "ghost";
9
+ size?: "sm" | "md" | "lg";
10
+ icon?: IconProp;
11
+ text?: string;
12
+ target?: string;
13
+ /** Internal adapter hook: inject framework link component without duplicating styles. */
14
+ __LinkComponent?: LinkRenderer;
15
+ };
16
+ export declare function ButtonMdx({ href, variant, variation, size, icon, text, style, children, target, __LinkComponent, ...props }: ButtonMdxProps): import("react").JSX.Element;
17
+ export {};
18
+ //# sourceMappingURL=ButtonMdx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonMdx.d.ts","sourceRoot":"","sources":["../../src/components/ButtonMdx.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAiB,MAAM,OAAO,CAAC;AAEhF,OAAO,EAAE,QAAQ,EAAqB,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,KAAK,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,GAAG;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IAC9C,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yFAAyF;IACzF,eAAe,CAAC,EAAE,YAAY,CAAC;CAClC,CAAC;AA0CF,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAW,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAyBlJ"}
@@ -0,0 +1,58 @@
1
+ import { LinkMdx } from "./LinkMdx";
2
+ import { resolveLucideIcon } from "./IconMdx";
3
+ const baseStyle = {
4
+ display: "inline-flex",
5
+ alignItems: "center",
6
+ justifyContent: "center",
7
+ gap: "0.375rem",
8
+ borderRadius: 10,
9
+ border: "1px solid hsl(var(--border, 210 14% 94%))",
10
+ background: "hsl(var(--card, 0 0% 100%))",
11
+ color: "hsl(var(--foreground, 222 12% 12%))",
12
+ textDecoration: "none",
13
+ fontWeight: 600,
14
+ fontSize: "0.9rem",
15
+ lineHeight: 1,
16
+ padding: "0.65rem 0.85rem",
17
+ cursor: "pointer",
18
+ };
19
+ const variantStyles = {
20
+ primary: {
21
+ background: "hsl(var(--accent, 200 100% 40%))",
22
+ borderColor: "hsl(var(--accent, 200 100% 40%))",
23
+ color: "#ffffff",
24
+ },
25
+ secondary: {
26
+ background: "hsl(var(--muted, 210 12% 96%))",
27
+ color: "hsl(var(--foreground, 222 12% 12%))",
28
+ },
29
+ ghost: {
30
+ background: "transparent",
31
+ borderColor: "transparent",
32
+ color: "hsl(var(--foreground, 222 12% 12%))",
33
+ },
34
+ };
35
+ const sizeStyles = {
36
+ sm: { padding: "0.45rem 0.6rem", fontSize: "0.8rem" },
37
+ md: { padding: "0.65rem 0.85rem", fontSize: "0.9rem" },
38
+ lg: { padding: "0.8rem 1rem", fontSize: "0.96rem" },
39
+ };
40
+ export function ButtonMdx({ href, variant, variation, size = "md", icon, text, style, children, target, __LinkComponent, ...props }) {
41
+ const resolvedVariant = variation ?? variant ?? "secondary";
42
+ const mergedStyle = { ...baseStyle, ...variantStyles[resolvedVariant], ...sizeStyles[size], ...style };
43
+ const resolvedIcon = resolveLucideIcon(icon);
44
+ const LinkComponent = __LinkComponent ?? LinkMdx;
45
+ const content = (<>
46
+ {resolvedIcon ? <span aria-hidden="true" style={{ display: "inline-flex", alignItems: "center", justifyContent: "center" }}>{resolvedIcon}</span> : null}
47
+ {text ?? children}
48
+ </>);
49
+ if (href) {
50
+ return (<LinkComponent href={href} target={target} style={mergedStyle}>
51
+ {content}
52
+ </LinkComponent>);
53
+ }
54
+ return (<button type={props.type ?? "button"} {...props} style={mergedStyle}>
55
+ {content}
56
+ </button>);
57
+ }
58
+ //# sourceMappingURL=ButtonMdx.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonMdx.jsx","sourceRoot":"","sources":["../../src/components/ButtonMdx.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CSSProperties, ReactNode } from "react";
2
+ type CardGroupMdxProps = {
3
+ cols?: number;
4
+ children?: ReactNode;
5
+ style?: CSSProperties;
6
+ };
7
+ export declare function CardGroupMdx({ cols, children, style }: CardGroupMdxProps): import("react").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=CardGroupMdx.d.ts.map