@assistant-ui/mcp-docs-server 0.1.16 → 0.1.18

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 (95) hide show
  1. package/.docs/organized/code-examples/with-ag-ui.md +149 -155
  2. package/.docs/organized/code-examples/with-ai-sdk-v5.md +98 -103
  3. package/.docs/organized/code-examples/with-assistant-transport.md +134 -222
  4. package/.docs/organized/code-examples/with-cloud.md +127 -134
  5. package/.docs/organized/code-examples/with-custom-thread-list.md +28 -48
  6. package/.docs/organized/code-examples/with-external-store.md +149 -154
  7. package/.docs/organized/code-examples/with-ffmpeg.md +132 -142
  8. package/.docs/organized/code-examples/with-langgraph.md +234 -228
  9. package/.docs/organized/code-examples/with-parent-id-grouping.md +149 -154
  10. package/.docs/organized/code-examples/with-react-hook-form.md +149 -155
  11. package/.docs/organized/code-examples/{store-example.md → with-store.md} +181 -157
  12. package/.docs/organized/code-examples/with-tanstack.md +31 -45
  13. package/.docs/raw/docs/runtimes/custom/custom-thread-list.mdx +36 -0
  14. package/.docs/raw/docs/runtimes/custom/local.mdx +31 -8
  15. package/.docs/raw/docs/ui/Scrollbar.mdx +0 -6
  16. package/dist/constants.d.ts +10 -0
  17. package/dist/constants.d.ts.map +1 -0
  18. package/dist/constants.js +14 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/index.d.ts +4 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +33 -1
  23. package/dist/index.js.map +1 -0
  24. package/dist/prepare-docs/code-examples.d.ts +2 -0
  25. package/dist/prepare-docs/code-examples.d.ts.map +1 -0
  26. package/dist/prepare-docs/code-examples.js +129 -0
  27. package/dist/prepare-docs/code-examples.js.map +1 -0
  28. package/dist/prepare-docs/copy-raw.d.ts +2 -0
  29. package/dist/prepare-docs/copy-raw.d.ts.map +1 -0
  30. package/dist/prepare-docs/copy-raw.js +50 -0
  31. package/dist/prepare-docs/copy-raw.js.map +1 -0
  32. package/dist/prepare-docs/prepare.d.ts +2 -0
  33. package/dist/prepare-docs/prepare.d.ts.map +1 -0
  34. package/dist/prepare-docs/prepare.js +18 -195
  35. package/dist/prepare-docs/prepare.js.map +1 -0
  36. package/dist/stdio.d.ts +3 -0
  37. package/dist/stdio.d.ts.map +1 -0
  38. package/dist/stdio.js +4 -5
  39. package/dist/stdio.js.map +1 -0
  40. package/dist/tools/docs.d.ts +23 -0
  41. package/dist/tools/docs.d.ts.map +1 -0
  42. package/dist/tools/docs.js +168 -0
  43. package/dist/tools/docs.js.map +1 -0
  44. package/dist/tools/examples.d.ts +23 -0
  45. package/dist/tools/examples.d.ts.map +1 -0
  46. package/dist/tools/examples.js +95 -0
  47. package/dist/tools/examples.js.map +1 -0
  48. package/dist/tools/tests/test-setup.d.ts +4 -0
  49. package/dist/tools/tests/test-setup.d.ts.map +1 -0
  50. package/dist/tools/tests/test-setup.js +36 -0
  51. package/dist/tools/tests/test-setup.js.map +1 -0
  52. package/dist/utils/logger.d.ts +7 -0
  53. package/dist/utils/logger.d.ts.map +1 -0
  54. package/dist/utils/logger.js +20 -0
  55. package/dist/utils/logger.js.map +1 -0
  56. package/dist/utils/mcp-format.d.ts +7 -0
  57. package/dist/utils/mcp-format.d.ts.map +1 -0
  58. package/dist/utils/mcp-format.js +11 -0
  59. package/dist/utils/mcp-format.js.map +1 -0
  60. package/dist/utils/mdx.d.ts +9 -0
  61. package/dist/utils/mdx.d.ts.map +1 -0
  62. package/dist/utils/mdx.js +27 -0
  63. package/dist/utils/mdx.js.map +1 -0
  64. package/dist/utils/paths.d.ts +8 -0
  65. package/dist/utils/paths.d.ts.map +1 -0
  66. package/dist/utils/paths.js +84 -0
  67. package/dist/utils/paths.js.map +1 -0
  68. package/dist/utils/security.d.ts +2 -0
  69. package/dist/utils/security.d.ts.map +1 -0
  70. package/dist/utils/security.js +43 -0
  71. package/dist/utils/security.js.map +1 -0
  72. package/package.json +37 -19
  73. package/src/constants.ts +22 -0
  74. package/src/index.ts +51 -0
  75. package/src/prepare-docs/code-examples.ts +158 -0
  76. package/src/prepare-docs/copy-raw.ts +55 -0
  77. package/src/prepare-docs/prepare.ts +24 -0
  78. package/src/stdio.ts +7 -0
  79. package/src/tools/docs.ts +207 -0
  80. package/src/tools/examples.ts +107 -0
  81. package/src/tools/tests/docs.test.ts +122 -0
  82. package/src/tools/tests/examples.test.ts +94 -0
  83. package/src/tools/tests/integration.test.ts +46 -0
  84. package/src/tools/tests/json-parsing.test.ts +23 -0
  85. package/src/tools/tests/mcp-protocol.test.ts +133 -0
  86. package/src/tools/tests/path-traversal.test.ts +81 -0
  87. package/src/tools/tests/test-setup.ts +40 -0
  88. package/src/utils/logger.ts +20 -0
  89. package/src/utils/mcp-format.ts +12 -0
  90. package/src/utils/mdx.ts +39 -0
  91. package/src/utils/paths.ts +114 -0
  92. package/src/utils/security.ts +52 -0
  93. package/src/utils/tests/security.test.ts +119 -0
  94. package/dist/chunk-M2RKUM66.js +0 -38
  95. package/dist/chunk-NVNFQ5ZO.js +0 -423
@@ -9,43 +9,41 @@
9
9
  @custom-variant dark (&:is(.dark *));
10
10
 
11
11
  @theme inline {
12
- --color-background: var(--background);
13
- --color-foreground: var(--foreground);
14
- --font-sans: var(--font-geist-sans);
15
- --font-mono: var(--font-geist-mono);
16
- --color-sidebar-ring: var(--sidebar-ring);
17
- --color-sidebar-border: var(--sidebar-border);
18
- --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
19
- --color-sidebar-accent: var(--sidebar-accent);
20
- --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
21
- --color-sidebar-primary: var(--sidebar-primary);
22
- --color-sidebar-foreground: var(--sidebar-foreground);
23
- --color-sidebar: var(--sidebar);
24
- --color-chart-5: var(--chart-5);
25
- --color-chart-4: var(--chart-4);
26
- --color-chart-3: var(--chart-3);
27
- --color-chart-2: var(--chart-2);
28
- --color-chart-1: var(--chart-1);
29
- --color-ring: var(--ring);
30
- --color-input: var(--input);
31
- --color-border: var(--border);
32
- --color-destructive: var(--destructive);
33
- --color-accent-foreground: var(--accent-foreground);
34
- --color-accent: var(--accent);
35
- --color-muted-foreground: var(--muted-foreground);
36
- --color-muted: var(--muted);
37
- --color-secondary-foreground: var(--secondary-foreground);
38
- --color-secondary: var(--secondary);
39
- --color-primary-foreground: var(--primary-foreground);
40
- --color-primary: var(--primary);
41
- --color-popover-foreground: var(--popover-foreground);
42
- --color-popover: var(--popover);
43
- --color-card-foreground: var(--card-foreground);
44
- --color-card: var(--card);
45
12
  --radius-sm: calc(var(--radius) - 4px);
46
13
  --radius-md: calc(var(--radius) - 2px);
47
14
  --radius-lg: var(--radius);
48
15
  --radius-xl: calc(var(--radius) + 4px);
16
+ --color-background: var(--background);
17
+ --color-foreground: var(--foreground);
18
+ --color-card: var(--card);
19
+ --color-card-foreground: var(--card-foreground);
20
+ --color-popover: var(--popover);
21
+ --color-popover-foreground: var(--popover-foreground);
22
+ --color-primary: var(--primary);
23
+ --color-primary-foreground: var(--primary-foreground);
24
+ --color-secondary: var(--secondary);
25
+ --color-secondary-foreground: var(--secondary-foreground);
26
+ --color-muted: var(--muted);
27
+ --color-muted-foreground: var(--muted-foreground);
28
+ --color-accent: var(--accent);
29
+ --color-accent-foreground: var(--accent-foreground);
30
+ --color-destructive: var(--destructive);
31
+ --color-border: var(--border);
32
+ --color-input: var(--input);
33
+ --color-ring: var(--ring);
34
+ --color-chart-1: var(--chart-1);
35
+ --color-chart-2: var(--chart-2);
36
+ --color-chart-3: var(--chart-3);
37
+ --color-chart-4: var(--chart-4);
38
+ --color-chart-5: var(--chart-5);
39
+ --color-sidebar: var(--sidebar);
40
+ --color-sidebar-foreground: var(--sidebar-foreground);
41
+ --color-sidebar-primary: var(--sidebar-primary);
42
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
43
+ --color-sidebar-accent: var(--sidebar-accent);
44
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
45
+ --color-sidebar-border: var(--sidebar-border);
46
+ --color-sidebar-ring: var(--sidebar-ring);
49
47
  }
50
48
 
51
49
  :root {
@@ -811,7 +809,7 @@ const ThreadScrollToBottom: FC = () => {
811
809
  <TooltipIconButton
812
810
  tooltip="Scroll to bottom"
813
811
  variant="outline"
814
- className="aui-thread-scroll-to-bottom -top-12 absolute z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent"
812
+ className="aui-thread-scroll-to-bottom absolute -top-12 z-10 self-center rounded-full p-4 disabled:invisible dark:bg-background dark:hover:bg-accent"
815
813
  >
816
814
  <ArrowDownIcon />
817
815
  </TooltipIconButton>
@@ -975,7 +973,7 @@ const AssistantActionBar: FC = () => {
975
973
  hideWhenRunning
976
974
  autohide="not-last"
977
975
  autohideFloat="single-branch"
978
- className="aui-assistant-action-bar-root -ml-1 col-start-3 row-start-2 flex gap-1 text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm"
976
+ className="aui-assistant-action-bar-root col-start-3 row-start-2 -ml-1 flex gap-1 text-muted-foreground data-floating:absolute data-floating:rounded-md data-floating:border data-floating:bg-background data-floating:p-1 data-floating:shadow-sm"
979
977
  >
980
978
  <ActionBarPrimitive.Copy asChild>
981
979
  <TooltipIconButton tooltip="Copy">
@@ -1013,12 +1011,12 @@ const UserMessage: FC = () => {
1013
1011
  <div className="aui-user-message-content wrap-break-word rounded-2xl bg-muted px-4 py-2.5 text-foreground">
1014
1012
  <MessagePrimitive.Parts />
1015
1013
  </div>
1016
- <div className="aui-user-action-bar-wrapper -translate-x-full -translate-y-1/2 absolute top-1/2 left-0 pr-2">
1014
+ <div className="aui-user-action-bar-wrapper absolute top-1/2 left-0 -translate-x-full -translate-y-1/2 pr-2">
1017
1015
  <UserActionBar />
1018
1016
  </div>
1019
1017
  </div>
1020
1018
 
1021
- <BranchPicker className="aui-user-branch-picker -mr-1 col-span-full col-start-1 row-start-3 justify-end" />
1019
+ <BranchPicker className="aui-user-branch-picker col-span-full col-start-1 row-start-3 -mr-1 justify-end" />
1022
1020
  </MessagePrimitive.Root>
1023
1021
  );
1024
1022
  };
@@ -1070,7 +1068,7 @@ const BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({
1070
1068
  <BranchPickerPrimitive.Root
1071
1069
  hideWhenSingleBranch
1072
1070
  className={cn(
1073
- "aui-branch-picker-root -ml-2 mr-2 inline-flex items-center text-muted-foreground text-xs",
1071
+ "aui-branch-picker-root mr-2 -ml-2 inline-flex items-center text-muted-foreground text-xs",
1074
1072
  className,
1075
1073
  )}
1076
1074
  {...rest}
@@ -1251,47 +1249,50 @@ import * as AvatarPrimitive from "@radix-ui/react-avatar";
1251
1249
 
1252
1250
  import { cn } from "@/lib/utils";
1253
1251
 
1254
- const Avatar = React.forwardRef<
1255
- React.ElementRef<typeof AvatarPrimitive.Root>,
1256
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>
1257
- >(({ className, ...props }, ref) => (
1258
- <AvatarPrimitive.Root
1259
- ref={ref}
1260
- className={cn(
1261
- "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",
1262
- className,
1263
- )}
1264
- {...props}
1265
- />
1266
- ));
1267
- Avatar.displayName = AvatarPrimitive.Root.displayName;
1268
-
1269
- const AvatarImage = React.forwardRef<
1270
- React.ElementRef<typeof AvatarPrimitive.Image>,
1271
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>
1272
- >(({ className, ...props }, ref) => (
1273
- <AvatarPrimitive.Image
1274
- ref={ref}
1275
- className={cn("aspect-square h-full w-full", className)}
1276
- {...props}
1277
- />
1278
- ));
1279
- AvatarImage.displayName = AvatarPrimitive.Image.displayName;
1280
-
1281
- const AvatarFallback = React.forwardRef<
1282
- React.ElementRef<typeof AvatarPrimitive.Fallback>,
1283
- React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>
1284
- >(({ className, ...props }, ref) => (
1285
- <AvatarPrimitive.Fallback
1286
- ref={ref}
1287
- className={cn(
1288
- "flex h-full w-full items-center justify-center rounded-full bg-muted",
1289
- className,
1290
- )}
1291
- {...props}
1292
- />
1293
- ));
1294
- AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
1252
+ function Avatar({
1253
+ className,
1254
+ ...props
1255
+ }: React.ComponentProps<typeof AvatarPrimitive.Root>) {
1256
+ return (
1257
+ <AvatarPrimitive.Root
1258
+ data-slot="avatar"
1259
+ className={cn(
1260
+ "relative flex size-8 shrink-0 overflow-hidden rounded-full",
1261
+ className,
1262
+ )}
1263
+ {...props}
1264
+ />
1265
+ );
1266
+ }
1267
+
1268
+ function AvatarImage({
1269
+ className,
1270
+ ...props
1271
+ }: React.ComponentProps<typeof AvatarPrimitive.Image>) {
1272
+ return (
1273
+ <AvatarPrimitive.Image
1274
+ data-slot="avatar-image"
1275
+ className={cn("aspect-square size-full", className)}
1276
+ {...props}
1277
+ />
1278
+ );
1279
+ }
1280
+
1281
+ function AvatarFallback({
1282
+ className,
1283
+ ...props
1284
+ }: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
1285
+ return (
1286
+ <AvatarPrimitive.Fallback
1287
+ data-slot="avatar-fallback"
1288
+ className={cn(
1289
+ "flex size-full items-center justify-center rounded-full bg-muted",
1290
+ className,
1291
+ )}
1292
+ {...props}
1293
+ />
1294
+ );
1295
+ }
1295
1296
 
1296
1297
  export { Avatar, AvatarImage, AvatarFallback };
1297
1298
 
@@ -1300,8 +1301,6 @@ export { Avatar, AvatarImage, AvatarFallback };
1300
1301
  ## components/ui/button.tsx
1301
1302
 
1302
1303
  ```tsx
1303
- "use client";
1304
-
1305
1304
  import * as React from "react";
1306
1305
  import { Slot } from "@radix-ui/react-slot";
1307
1306
  import { cva, type VariantProps } from "class-variance-authority";
@@ -1309,26 +1308,28 @@ import { cva, type VariantProps } from "class-variance-authority";
1309
1308
  import { cn } from "@/lib/utils";
1310
1309
 
1311
1310
  const buttonVariants = cva(
1312
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
1311
+ "inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium text-sm outline-none transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1313
1312
  {
1314
1313
  variants: {
1315
1314
  variant: {
1316
- default:
1317
- "bg-primary text-primary-foreground shadow hover:bg-primary/90",
1315
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
1318
1316
  destructive:
1319
- "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
1317
+ "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
1320
1318
  outline:
1321
- "border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
1319
+ "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",
1322
1320
  secondary:
1323
- "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",
1324
- ghost: "hover:bg-accent hover:text-accent-foreground",
1321
+ "bg-secondary text-secondary-foreground hover:bg-secondary/80",
1322
+ ghost:
1323
+ "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
1325
1324
  link: "text-primary underline-offset-4 hover:underline",
1326
1325
  },
1327
1326
  size: {
1328
- default: "h-9 px-4 py-2",
1329
- sm: "h-8 rounded-md px-3 text-xs",
1330
- lg: "h-10 rounded-md px-8",
1331
- icon: "h-9 w-9",
1327
+ default: "h-9 px-4 py-2 has-[>svg]:px-3",
1328
+ sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",
1329
+ lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
1330
+ icon: "size-9",
1331
+ "icon-sm": "size-8",
1332
+ "icon-lg": "size-10",
1332
1333
  },
1333
1334
  },
1334
1335
  defaultVariants: {
@@ -1338,25 +1339,28 @@ const buttonVariants = cva(
1338
1339
  },
1339
1340
  );
1340
1341
 
1341
- export interface ButtonProps
1342
- extends React.ButtonHTMLAttributes<HTMLButtonElement>,
1343
- VariantProps<typeof buttonVariants> {
1344
- asChild?: boolean;
1345
- }
1342
+ function Button({
1343
+ className,
1344
+ variant = "default",
1345
+ size = "default",
1346
+ asChild = false,
1347
+ ...props
1348
+ }: React.ComponentProps<"button"> &
1349
+ VariantProps<typeof buttonVariants> & {
1350
+ asChild?: boolean;
1351
+ }) {
1352
+ const Comp = asChild ? Slot : "button";
1346
1353
 
1347
- const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
1348
- ({ className, variant, size, asChild = false, ...props }, ref) => {
1349
- const Comp = asChild ? Slot : "button";
1350
- return (
1351
- <Comp
1352
- className={cn(buttonVariants({ variant, size, className }))}
1353
- ref={ref}
1354
- {...props}
1355
- />
1356
- );
1357
- },
1358
- );
1359
- Button.displayName = "Button";
1354
+ return (
1355
+ <Comp
1356
+ data-slot="button"
1357
+ data-variant={variant}
1358
+ data-size={size}
1359
+ className={cn(buttonVariants({ variant, size, className }))}
1360
+ {...props}
1361
+ />
1362
+ );
1363
+ }
1360
1364
 
1361
1365
  export { Button, buttonVariants };
1362
1366
 
@@ -1405,7 +1409,7 @@ function DialogOverlay({
1405
1409
  <DialogPrimitive.Overlay
1406
1410
  data-slot="dialog-overlay"
1407
1411
  className={cn(
1408
- "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80 data-[state=closed]:animate-out data-[state=open]:animate-in",
1412
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in",
1409
1413
  className,
1410
1414
  )}
1411
1415
  {...props}
@@ -1416,24 +1420,32 @@ function DialogOverlay({
1416
1420
  function DialogContent({
1417
1421
  className,
1418
1422
  children,
1423
+ showCloseButton = true,
1419
1424
  ...props
1420
- }: React.ComponentProps<typeof DialogPrimitive.Content>) {
1425
+ }: React.ComponentProps<typeof DialogPrimitive.Content> & {
1426
+ showCloseButton?: boolean;
1427
+ }) {
1421
1428
  return (
1422
1429
  <DialogPortal data-slot="dialog-portal">
1423
1430
  <DialogOverlay />
1424
1431
  <DialogPrimitive.Content
1425
1432
  data-slot="dialog-content"
1426
1433
  className={cn(
1427
- "data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg",
1434
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-lg outline-none duration-200 data-[state=closed]:animate-out data-[state=open]:animate-in sm:max-w-lg",
1428
1435
  className,
1429
1436
  )}
1430
1437
  {...props}
1431
1438
  >
1432
1439
  {children}
1433
- <DialogPrimitive.Close className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0">
1434
- <XIcon />
1435
- <span className="sr-only">Close</span>
1436
- </DialogPrimitive.Close>
1440
+ {showCloseButton && (
1441
+ <DialogPrimitive.Close
1442
+ data-slot="dialog-close"
1443
+ className="absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0"
1444
+ >
1445
+ <XIcon />
1446
+ <span className="sr-only">Close</span>
1447
+ </DialogPrimitive.Close>
1448
+ )}
1437
1449
  </DialogPrimitive.Content>
1438
1450
  </DialogPortal>
1439
1451
  );
@@ -1554,13 +1566,13 @@ function TooltipContent({
1554
1566
  data-slot="tooltip-content"
1555
1567
  sideOffset={sideOffset}
1556
1568
  className={cn(
1557
- "fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-[--radix-tooltip-content-transform-origin] animate-in text-balance rounded-md bg-primary px-3 py-1.5 text-primary-foreground text-xs data-[state=closed]:animate-out",
1569
+ "fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in text-balance rounded-md bg-foreground px-3 py-1.5 text-background text-xs data-[state=closed]:animate-out",
1558
1570
  className,
1559
1571
  )}
1560
1572
  {...props}
1561
1573
  >
1562
1574
  {children}
1563
- <TooltipPrimitive.Arrow className="z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-primary fill-primary" />
1575
+ <TooltipPrimitive.Arrow className="z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" />
1564
1576
  </TooltipPrimitive.Content>
1565
1577
  </TooltipPrimitive.Portal>
1566
1578
  );
@@ -1600,15 +1612,15 @@ export default nextConfig;
1600
1612
  ```json
1601
1613
  {
1602
1614
  "name": "with-external-store",
1603
- "version": "0.1.0",
1615
+ "version": "0.0.0",
1604
1616
  "private": true,
1617
+ "type": "module",
1605
1618
  "scripts": {
1606
- "dev": "next dev --turbo",
1619
+ "dev": "next dev",
1607
1620
  "build": "next build",
1608
1621
  "start": "next start"
1609
1622
  },
1610
1623
  "dependencies": {
1611
- "@ai-sdk/openai": "^2.0.77",
1612
1624
  "@assistant-ui/react": "workspace:*",
1613
1625
  "@assistant-ui/react-markdown": "workspace:*",
1614
1626
  "@radix-ui/react-avatar": "^1.1.11",
@@ -1617,23 +1629,24 @@ export default nextConfig;
1617
1629
  "@radix-ui/react-tooltip": "^1.2.8",
1618
1630
  "class-variance-authority": "^0.7.1",
1619
1631
  "clsx": "^2.1.1",
1620
- "lucide-react": "^0.556.0",
1621
- "next": "16.0.7",
1622
- "react": "19.2.1",
1623
- "react-dom": "19.2.1",
1632
+ "lucide-react": "^0.562.0",
1633
+ "next": "16.1.0",
1634
+ "react": "19.2.3",
1635
+ "react-dom": "19.2.3",
1624
1636
  "remark-gfm": "^4.0.1",
1625
1637
  "tailwind-merge": "^3.4.0",
1626
- "tw-animate-css": "^1.4.0",
1627
1638
  "zustand": "^5.0.9"
1628
1639
  },
1629
1640
  "devDependencies": {
1630
1641
  "@assistant-ui/x-buildutils": "workspace:*",
1631
- "@types/node": "^24",
1632
- "@types/react": "^19",
1633
- "@types/react-dom": "^19",
1634
- "postcss": "^8",
1635
- "tailwindcss": "^4.1.17",
1636
- "typescript": "^5"
1642
+ "@tailwindcss/postcss": "^4.1.18",
1643
+ "@types/node": "^25.0.3",
1644
+ "@types/react": "^19.2.7",
1645
+ "@types/react-dom": "^19.2.3",
1646
+ "postcss": "^8.5.6",
1647
+ "tailwindcss": "^4.1.18",
1648
+ "tw-animate-css": "^1.4.0",
1649
+ "typescript": "^5.9.3"
1637
1650
  }
1638
1651
  }
1639
1652
 
@@ -1643,29 +1656,11 @@ export default nextConfig;
1643
1656
 
1644
1657
  ```json
1645
1658
  {
1646
- "extends": "@assistant-ui/x-buildutils/ts/base",
1659
+ "extends": "@assistant-ui/x-buildutils/ts/next",
1647
1660
  "compilerOptions": {
1648
- "target": "ES6",
1649
- "module": "ESNext",
1650
- "incremental": true,
1651
- "plugins": [
1652
- {
1653
- "name": "next"
1654
- }
1655
- ],
1656
- "allowJs": true,
1657
- "strictNullChecks": true,
1658
- "jsx": "preserve",
1659
- "paths": {
1660
- "@/*": ["./*"],
1661
- "@assistant-ui/*": ["../../packages/*/src"],
1662
- "@assistant-ui/react/*": ["../../packages/react/src/*"],
1663
- "@assistant-ui/tap/*": ["../../packages/tap/src/*"],
1664
- "assistant-stream": ["../../packages/assistant-stream/src"],
1665
- "assistant-stream/*": ["../../packages/assistant-stream/src/*"]
1666
- }
1661
+ "paths": { "@/*": ["./*"] }
1667
1662
  },
1668
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
1663
+ "include": ["**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
1669
1664
  "exclude": ["node_modules"]
1670
1665
  }
1671
1666