@baybreezy/docd 0.1.10 → 0.1.12

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 (93) hide show
  1. package/app/assets/css/shadcn.css +660 -0
  2. package/app/assets/css/tailwind.css +1 -1
  3. package/app/components/Ui/Avatar/Avatar.vue +7 -19
  4. package/app/components/Ui/Avatar/Badge.vue +1 -1
  5. package/app/components/Ui/Avatar/Fallback.vue +2 -2
  6. package/app/components/Ui/Avatar/Group.vue +1 -1
  7. package/app/components/Ui/Avatar/GroupCount.vue +1 -1
  8. package/app/components/Ui/Avatar/Image.vue +2 -2
  9. package/app/components/Ui/Badge.vue +6 -6
  10. package/app/components/Ui/BadgeGroup.vue +6 -6
  11. package/app/components/Ui/BgPattern/Grid.vue +3 -2
  12. package/app/components/Ui/BorderBeam.vue +10 -30
  13. package/app/components/Ui/Breadcrumbs.vue +5 -10
  14. package/app/components/Ui/Button.vue +23 -18
  15. package/app/components/Ui/ButtonGroup/ButtonGroup.vue +3 -4
  16. package/app/components/Ui/ButtonGroup/Separator.vue +2 -6
  17. package/app/components/Ui/ButtonGroup/Text.vue +1 -3
  18. package/app/components/Ui/Card/Action.vue +1 -1
  19. package/app/components/Ui/Card/Card.vue +4 -4
  20. package/app/components/Ui/Card/Content.vue +2 -2
  21. package/app/components/Ui/Card/Description.vue +2 -2
  22. package/app/components/Ui/Card/Footer.vue +1 -1
  23. package/app/components/Ui/Card/Header.vue +1 -1
  24. package/app/components/Ui/Card/Title.vue +2 -2
  25. package/app/components/Ui/Collapsible/Content.vue +1 -1
  26. package/app/components/Ui/Command/Command.vue +4 -18
  27. package/app/components/Ui/Command/Dialog.vue +2 -6
  28. package/app/components/Ui/Command/Footer.vue +1 -1
  29. package/app/components/Ui/Command/Group.vue +1 -1
  30. package/app/components/Ui/Command/Input.vue +1 -1
  31. package/app/components/Ui/Command/Item.vue +5 -5
  32. package/app/components/Ui/Command/List.vue +1 -1
  33. package/app/components/Ui/Command/Separator.vue +1 -1
  34. package/app/components/Ui/Command/Shortcut.vue +2 -2
  35. package/app/components/Ui/Container.vue +2 -2
  36. package/app/components/Ui/ContextMenu/Arrow.vue +2 -2
  37. package/app/components/Ui/ContextMenu/CheckboxItem.vue +3 -3
  38. package/app/components/Ui/ContextMenu/Content.vue +2 -2
  39. package/app/components/Ui/ContextMenu/Item.vue +6 -8
  40. package/app/components/Ui/ContextMenu/ItemIndicator.vue +1 -1
  41. package/app/components/Ui/ContextMenu/Label.vue +3 -3
  42. package/app/components/Ui/ContextMenu/RadioItem.vue +3 -3
  43. package/app/components/Ui/ContextMenu/Separator.vue +1 -1
  44. package/app/components/Ui/ContextMenu/Shortcut.vue +1 -3
  45. package/app/components/Ui/ContextMenu/SubContent.vue +2 -2
  46. package/app/components/Ui/ContextMenu/SubTrigger.vue +4 -4
  47. package/app/components/Ui/Dialog/Content.vue +7 -7
  48. package/app/components/Ui/Dialog/Description.vue +2 -2
  49. package/app/components/Ui/Dialog/Footer.vue +1 -1
  50. package/app/components/Ui/Dialog/Header.vue +1 -1
  51. package/app/components/Ui/Dialog/Overlay.vue +1 -1
  52. package/app/components/Ui/Dialog/Title.vue +2 -2
  53. package/app/components/Ui/Divider.vue +8 -14
  54. package/app/components/Ui/Drawer/Description.vue +2 -6
  55. package/app/components/Ui/Drawer/Footer.vue +1 -3
  56. package/app/components/Ui/Drawer/Header.vue +1 -3
  57. package/app/components/Ui/Drawer/Title.vue +2 -6
  58. package/app/components/Ui/DropdownMenu/Arrow.vue +2 -2
  59. package/app/components/Ui/DropdownMenu/CheckboxItem.vue +3 -3
  60. package/app/components/Ui/DropdownMenu/Content.vue +2 -2
  61. package/app/components/Ui/DropdownMenu/Item.vue +6 -6
  62. package/app/components/Ui/DropdownMenu/ItemIndicator.vue +2 -2
  63. package/app/components/Ui/DropdownMenu/Label.vue +3 -3
  64. package/app/components/Ui/DropdownMenu/RadioItem.vue +3 -3
  65. package/app/components/Ui/DropdownMenu/Separator.vue +1 -1
  66. package/app/components/Ui/DropdownMenu/Shortcut.vue +1 -1
  67. package/app/components/Ui/DropdownMenu/SubContent.vue +3 -3
  68. package/app/components/Ui/DropdownMenu/SubTrigger.vue +5 -5
  69. package/app/components/Ui/FancyIcon.vue +5 -15
  70. package/app/components/Ui/GradientDivider.vue +16 -3
  71. package/app/components/Ui/IframeLazy.vue +10 -15
  72. package/app/components/Ui/Input.vue +12 -11
  73. package/app/components/Ui/InputGroup/Addon.vue +2 -3
  74. package/app/components/Ui/InputGroup/Button.vue +1 -0
  75. package/app/components/Ui/InputGroup/InputGroup.vue +1 -3
  76. package/app/components/Ui/InputGroup/Text.vue +1 -3
  77. package/app/components/Ui/Kbd/Group.vue +1 -3
  78. package/app/components/Ui/Kbd/Kbd.vue +7 -5
  79. package/app/components/Ui/Label.vue +2 -4
  80. package/app/components/Ui/ScrollArea/ScrollArea.vue +47 -4
  81. package/app/components/Ui/ScrollArea/Scrollbar.vue +1 -1
  82. package/app/components/Ui/ScrollArea/Thumb.vue +1 -1
  83. package/app/components/Ui/ScrollArea/Viewport.vue +1 -1
  84. package/app/components/Ui/Scrollspy.vue +1 -3
  85. package/app/components/Ui/Separator.vue +1 -3
  86. package/app/components/Ui/Skeleton.vue +2 -2
  87. package/app/components/Ui/Tabs/Content.vue +1 -1
  88. package/app/components/Ui/Tabs/Indicator.vue +1 -1
  89. package/app/components/Ui/Tabs/List.vue +1 -1
  90. package/app/components/Ui/Tabs/Trigger.vue +2 -2
  91. package/app/components/Ui/Textarea.vue +10 -10
  92. package/app/components/Ui/Tooltip/Arrow.vue +1 -1
  93. package/package.json +16 -16
@@ -1,3 +1,4 @@
1
+ <!-- eslint-disable vue/html-self-closing -->
1
2
  <template>
2
3
  <input
3
4
  v-bind="props"
@@ -14,27 +15,27 @@
14
15
  import type { HTMLAttributes, InputHTMLAttributes } from "vue";
15
16
 
16
17
  export type InputProps = {
17
- /** Additional classes to add to the input */
18
+ /** Additional classes to add to the input. */
18
19
  class?: HTMLAttributes["class"];
19
- /** The id of the input */
20
+ /** The id of the input. */
20
21
  id?: string;
21
- /** The name of the input */
22
+ /** The name of the input. */
22
23
  name?: string;
23
- /** The placeholder of the input */
24
+ /** The placeholder of the input. */
24
25
  placeholder?: string;
25
- /** Whether the input is disabled */
26
+ /** Whether the input is disabled. */
26
27
  disabled?: boolean;
27
- /** Whether the input is required */
28
+ /** Whether the input is required. */
28
29
  required?: boolean;
29
- /** The type of the input */
30
+ /** The type of the input. */
30
31
  type?: InputHTMLAttributes["type"];
31
- /** The value of the input */
32
+ /** The value of the input. */
32
33
  modelValue?: any;
33
- /** The maximum length of the input */
34
+ /** The maximum length of the input. */
34
35
  maxlength?: number;
35
- /** The `RegExp` pattern of the input */
36
+ /** The `RegExp` pattern of the input. */
36
37
  pattern?: string;
37
- /** When `true`, the input will be focused when mounted */
38
+ /** When `true`, the input will be focused when mounted. */
38
39
  autofocus?: boolean;
39
40
  };
40
41
  </script>
@@ -39,12 +39,11 @@
39
39
  export type InputGroupAddonVariants = PrimitiveProps & {
40
40
  /**
41
41
  * Alignment of the addon within the input group.
42
+ *
42
43
  * @default "inline-start"
43
44
  */
44
45
  align?: VariantProps<typeof inputGroupAddonVariants>["align"];
45
- /**
46
- * Additional classes to apply to the input group addon container.
47
- */
46
+ /** Additional classes to apply to the input group addon container. */
48
47
  class?: HTMLAttributes["class"];
49
48
  };
50
49
  </script>
@@ -33,6 +33,7 @@
33
33
  export type InputGroupAddonVariants = Omit<ButtonProps, "size"> & {
34
34
  /**
35
35
  * The size of the button within the input group.
36
+ *
36
37
  * @default "xs"
37
38
  */
38
39
  size?: VariantProps<typeof inputGroupButtonVariants>["size"];
@@ -35,9 +35,7 @@
35
35
  <script lang="ts" setup>
36
36
  const props = defineProps<
37
37
  PrimitiveProps & {
38
- /**
39
- * Additional classes to apply to the input group container.
40
- */
38
+ /** Additional classes to apply to the input group container. */
41
39
  class?: HTMLAttributes["class"];
42
40
  }
43
41
  >();
@@ -19,9 +19,7 @@
19
19
  });
20
20
 
21
21
  export type InputGroupText = PrimitiveProps & {
22
- /**
23
- * Additional classes to apply to the input group addon container.
24
- */
22
+ /** Additional classes to apply to the input group addon container. */
25
23
  class?: HTMLAttributes["class"];
26
24
  };
27
25
  </script>
@@ -19,9 +19,7 @@
19
19
  });
20
20
 
21
21
  export type KbdGroupProps = PrimitiveProps & {
22
- /**
23
- * Additional classes to apply to the parent element.
24
- */
22
+ /** Additional classes to apply to the parent element. */
25
23
  class?: HTMLAttributes["class"];
26
24
  };
27
25
  </script>
@@ -17,16 +17,18 @@
17
17
  defineProps<
18
18
  PrimitiveProps & {
19
19
  /**
20
- * The size of the component
20
+ * The size of the component.
21
+ *
21
22
  * @default "sm"
22
- * */
23
+ */
23
24
  size?: VariantProps<typeof styles>["size"];
24
- /** Custom class(es) to add to the parent */
25
+ /** Custom class(es) to add to the parent. */
25
26
  class?: HTMLAttributes["class"];
26
27
  /**
27
- * The variant of the component
28
+ * The variant of the component.
29
+ *
28
30
  * @default "solid"
29
- * */
31
+ */
30
32
  variant?: VariantProps<typeof styles>["variant"];
31
33
  }
32
34
  >(),
@@ -20,11 +20,9 @@
20
20
  import type { HTMLAttributes } from "vue";
21
21
 
22
22
  export type LabelProps = LP & {
23
- /** Custom class(es) to add to the label */
23
+ /** Custom class(es) to add to the label. */
24
24
  class?: HTMLAttributes["class"];
25
- /**
26
- * Optional hint text to display alongside the label.
27
- */
25
+ /** Optional hint text to display alongside the label. */
28
26
  hint?: string;
29
27
  };
30
28
  </script>
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <ScrollAreaRoot
3
+ ref="scrollArea"
3
4
  data-slot="scroll-area"
4
5
  v-bind="forwarded"
5
6
  :class="styles({ class: normalizeClass(props.class) || undefined })"
@@ -21,9 +22,9 @@
21
22
  const props = withDefaults(
22
23
  defineProps<
23
24
  ScrollAreaRootProps & {
24
- /** Orientation for scrolling */
25
+ /** Orientation for scrolling. */
25
26
  orientation?: "vertical" | "horizontal";
26
- /** Custom class(es) to add to the parent */
27
+ /** Custom class(es) to add to the parent. */
27
28
  class?: HTMLAttributes["class"];
28
29
  }
29
30
  >(),
@@ -31,8 +32,50 @@
31
32
  orientation: "vertical",
32
33
  }
33
34
  );
35
+
36
+ const scrollAreaRef = useTemplateRef<InstanceType<typeof ScrollAreaRoot>>("scrollArea");
37
+
38
+ /** The viewport element of the scroll area. */
39
+ const viewport = computed(() => scrollAreaRef.value?.viewport);
40
+ /** The maximum scrollTop value (content height minus visible height). */
41
+ const top = computed(() => {
42
+ const vp = viewport.value;
43
+ if (!vp) return 0;
44
+ return vp.scrollHeight - vp.clientHeight;
45
+ });
46
+ /** Scrolls the viewport to the specified position. */
47
+ const scrollTo = (options: ScrollToOptions) => {
48
+ if (!viewport.value) return;
49
+ viewport.value.scrollTo(options);
50
+ };
51
+ /** Scrolls the viewport to the bottom. */
52
+ function scrollToBottom() {
53
+ const vp = viewport.value;
54
+ if (vp) {
55
+ vp.scrollTo({ top: vp.scrollHeight - vp.clientHeight, behavior: "smooth" });
56
+ }
57
+ }
58
+
34
59
  const forwarded = reactiveOmit(props, "class");
35
- const styles = tv({
36
- base: "relative",
60
+ const styles = tv({ base: "relative" });
61
+
62
+ defineExpose({
63
+ /** Scrolls the viewport to the specified position. */
64
+ scrollTo,
65
+ /** The maximum scrollTop value (content height minus visible height). */
66
+ top,
67
+ /** The viewport element of the scroll area. */
68
+ viewport,
69
+ /** Scrolls the viewport to the top. */
70
+ scrollTop: () => scrollAreaRef.value?.scrollTop(),
71
+ /** Scrolls the viewport to the top-left corner. */
72
+ scrollTopLeft: () => scrollAreaRef.value?.scrollTopLeft(),
73
+ /** Scrolls the viewport to the bottom. */
74
+ scrollToBottom,
37
75
  });
76
+
77
+ defineSlots<{
78
+ /** The content of the scroll area. */
79
+ default: (_?: any) => any;
80
+ }>();
38
81
  </script>
@@ -18,7 +18,7 @@
18
18
  const props = withDefaults(
19
19
  defineProps<
20
20
  ScrollAreaScrollbarProps & {
21
- /** Class to apply to the scrollbar */
21
+ /** Class to apply to the scrollbar. */
22
22
  class?: HTMLAttributes["class"];
23
23
  }
24
24
  >(),
@@ -17,7 +17,7 @@
17
17
  const props = withDefaults(
18
18
  defineProps<
19
19
  ScrollAreaThumbProps & {
20
- /** Custom class(es) to add to the parent */
20
+ /** Custom class(es) to add to the parent. */
21
21
  class?: HTMLAttributes["class"];
22
22
  orientation?: "vertical" | "horizontal";
23
23
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  const props = defineProps<
18
18
  ScrollAreaViewportProps & {
19
- /** Custom class(es) to add to the parent */
19
+ /** Custom class(es) to add to the parent. */
20
20
  class?: HTMLAttributes["class"];
21
21
  }
22
22
  >();
@@ -28,9 +28,7 @@
28
28
  mode?: "single" | "multiple";
29
29
  /** Optional callback on change (also emits 'change'). */
30
30
  onUpdate?: (id: string) => void;
31
- /**
32
- * Additional classes to apply to the wrapper element.
33
- */
31
+ /** Additional classes to apply to the wrapper element. */
34
32
  class?: HTMLAttributes["class"];
35
33
  }>(),
36
34
  {
@@ -13,9 +13,7 @@
13
13
  import type { HTMLAttributes } from "vue";
14
14
 
15
15
  export type UiSeparatorProps = SeparatorProps & {
16
- /**
17
- * Custom class(es) to add to the separator
18
- */
16
+ /** Custom class(es) to add to the separator. */
19
17
  class?: HTMLAttributes["class"];
20
18
  };
21
19
  </script>
@@ -24,9 +24,9 @@
24
24
  const props = withDefaults(
25
25
  defineProps<
26
26
  PrimitiveProps & {
27
- /** Custom class(es) to add to parent element */
27
+ /** Custom class(es) to add to parent element. */
28
28
  class?: HTMLAttributes["class"];
29
- /** Whether the skeleton is loading */
29
+ /** Whether the skeleton is loading. */
30
30
  loading?: boolean;
31
31
  }
32
32
  >(),
@@ -16,7 +16,7 @@
16
16
 
17
17
  const props = defineProps<
18
18
  TabsContentProps & {
19
- /** Custom class(es) to add to parent element */
19
+ /** Custom class(es) to add to parent element. */
20
20
  class?: HTMLAttributes["class"];
21
21
  }
22
22
  >();
@@ -26,7 +26,7 @@
26
26
 
27
27
  const props = defineProps<
28
28
  TabsIndicatorProps & {
29
- /** Custom class(es) to add to parent element */
29
+ /** Custom class(es) to add to parent element. */
30
30
  class?: HTMLAttributes["class"];
31
31
  }
32
32
  >();
@@ -17,7 +17,7 @@
17
17
  const props = withDefaults(
18
18
  defineProps<
19
19
  TabsListProps & {
20
- /** Custom class(es) to add to parent element */
20
+ /** Custom class(es) to add to parent element. */
21
21
  class?: HTMLAttributes["class"];
22
22
  pill?: boolean;
23
23
  }
@@ -17,9 +17,9 @@
17
17
  const props = withDefaults(
18
18
  defineProps<
19
19
  TabsTriggerProps & {
20
- /** Custom class(es) to add to parent element */
20
+ /** Custom class(es) to add to parent element. */
21
21
  class?: HTMLAttributes["class"];
22
- /** Whether the trigger should be pill-shaped */
22
+ /** Whether the trigger should be pill-shaped. */
23
23
  pill?: boolean;
24
24
  }
25
25
  >(),
@@ -14,25 +14,25 @@
14
14
  import type { HTMLAttributes, TextareaHTMLAttributes } from "vue";
15
15
 
16
16
  export type TextareaProps = {
17
- /** Additional classes to add to the textarea */
17
+ /** Additional classes to add to the textarea. */
18
18
  class?: HTMLAttributes["class"];
19
- /** The name of the textarea */
19
+ /** The name of the textarea. */
20
20
  name?: TextareaHTMLAttributes["name"];
21
- /** The id of the textarea */
21
+ /** The id of the textarea. */
22
22
  id?: TextareaHTMLAttributes["id"];
23
- /** The placeholder of the textarea */
23
+ /** The placeholder of the textarea. */
24
24
  placeholder?: TextareaHTMLAttributes["placeholder"];
25
- /** Whether the textarea is required */
25
+ /** Whether the textarea is required. */
26
26
  required?: boolean;
27
- /** Whether the textarea is disabled */
27
+ /** Whether the textarea is disabled. */
28
28
  disabled?: boolean;
29
- /** The number of rows to display */
29
+ /** The number of rows to display. */
30
30
  rows?: number;
31
- /** The value of the textarea */
31
+ /** The value of the textarea. */
32
32
  modelValue?: string;
33
- /** The maximum number of characters allowed */
33
+ /** The maximum number of characters allowed. */
34
34
  maxlength?: number;
35
- /** The `RegExp` pattern of the textarea */
35
+ /** The `RegExp` pattern of the textarea. */
36
36
  pattern?: string;
37
37
  /** Whether the textarea should be focused when mounted. */
38
38
  autofocus?: boolean;
@@ -15,7 +15,7 @@
15
15
  const props = withDefaults(
16
16
  defineProps<
17
17
  TooltipArrowProps & {
18
- /** Additional classes for the tooltip arrow */
18
+ /** Additional classes for the tooltip arrow. */
19
19
  class?: HTMLAttributes["class"];
20
20
  }
21
21
  >(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baybreezy/docd",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "A Nuxt layer for building documentation sites with UI Thing.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,42 +31,42 @@
31
31
  },
32
32
  "dependencies": {
33
33
  "@baybreezy/file-extension-icon": "^0.0.5",
34
- "@iconify-json/lucide": "^1.2.114",
35
- "@iconify-json/material-icon-theme": "^1.2.67",
36
- "@iconify-json/simple-icons": "^1.2.86",
37
- "@iconify/utils": "^3.1.3",
34
+ "@iconify-json/lucide": "^1.2.116",
35
+ "@iconify-json/material-icon-theme": "^1.2.69",
36
+ "@iconify-json/simple-icons": "^1.2.89",
37
+ "@iconify/utils": "^3.1.4",
38
38
  "@morev/vue-transitions": "^3.0.5",
39
- "@nuxt/content": "3.14.0",
39
+ "@nuxt/content": "3.15.0",
40
40
  "@nuxt/fonts": "^0.14.0",
41
- "@nuxt/icon": "^2.2.3",
41
+ "@nuxt/icon": "^2.3.1",
42
42
  "@nuxt/image": "2.0.0",
43
43
  "@nuxt/kit": "^4.4.8",
44
44
  "@nuxtjs/color-mode": "^4.0.1",
45
45
  "@nuxtjs/mcp-toolkit": "^0.17.2",
46
- "@nuxtjs/mdc": "^0.22.0",
47
- "@nuxtjs/robots": "^6.1.1",
46
+ "@nuxtjs/mdc": "^0.22.1",
47
+ "@nuxtjs/robots": "^6.1.2",
48
48
  "@tailwindcss/forms": "^0.5.11",
49
49
  "@tailwindcss/typography": "^0.5.20",
50
- "@tailwindcss/vite": "^4.3.1",
51
- "@takumi-rs/core": "^1.8.7",
50
+ "@tailwindcss/vite": "^4.3.2",
51
+ "@takumi-rs/core": "^2.0.3",
52
52
  "@vueuse/core": "^14.3.0",
53
53
  "@vueuse/nuxt": "^14.3.0",
54
54
  "better-sqlite3": "^12.11.1",
55
55
  "defu": "^6.1.7",
56
56
  "git-url-parse": "^16.1.0",
57
57
  "lodash-es": "^4.18.1",
58
- "mermaid": "^11.15.0",
58
+ "mermaid": "^11.16.0",
59
59
  "motion-v": "^2.3.0",
60
60
  "nuxt-component-meta": "^0.17.2",
61
61
  "nuxt-gtag": "4.1.0",
62
62
  "nuxt-llms": "^0.2.0",
63
- "nuxt-og-image": "^6.6.0",
63
+ "nuxt-og-image": "^6.7.2",
64
64
  "pkg-types": "^2.3.1",
65
- "reka-ui": "^2.10.0",
66
- "shiki": "^4.2.0",
65
+ "reka-ui": "^2.10.1",
66
+ "shiki": "^4.3.1",
67
67
  "tailwind-merge": "^3.6.0",
68
68
  "tailwind-variants": "^3.2.2",
69
- "tailwindcss": "^4.3.1",
69
+ "tailwindcss": "^4.3.2",
70
70
  "tw-animate-css": "^1.4.0",
71
71
  "ufo": "^1.6.4",
72
72
  "vaul-vue": "^0.4.1",