Skip to content

Conversation

dwgray
Copy link
Member

@dwgray dwgray commented Jun 26, 2025

Describe the PR

  • Ported the documentation for tooltips
  • Filled out the component reference (mostly by sharing the BPopover component reference
  • Updated the migration guide
  • Updated the parity spreadsheet.

This fixes #2101

Small replication

n/a

PR checklist

What kind of change does this PR introduce? (check at least one)

  • Bugfix 🐛 - fix(...)
  • Feature - feat(...)
  • ARIA accessibility - fix(...)
  • Documentation update - docs(...)
  • Other (please describe)

The PR fulfills these requirements:

  • Pull request title and all commits follow the Conventional Commits convention or has an override in this pull request body This is very important, as the CHANGELOG is generated from these messages, and determines the next version type. Pull requests that do not follow conventional commits or do not have an override will be denied

Summary by CodeRabbit

  • New Features

    • Added many tooltip demo pages and interactive examples (overview, positioning, triggers, start-open, interactive, v-model, exposed methods, close-on-hide, content, custom classes, variants, styles).
  • Documentation

    • Major rewrite of Tooltip docs and expanded BTooltip migration guidance; updated Popover docs, examples, links, and minor text fixes.
  • Refactor

    • Centralized popover props/emits into shared utilities and added data-driven tooltip component reference.

Copy link

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

Copy link

coderabbitai bot commented Jun 26, 2025

Warning

Rate limit exceeded

@dwgray has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 1 minutes and 13 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 457aac4 and 67721d3.

📒 Files selected for processing (3)
  • apps/docs/src/docs/components/popover.md (5 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
  • apps/docs/src/docs/migration-guide.md (1 hunks)

Walkthrough

Centralizes popover/tooltip prop and emit metadata into new shared helpers, updates popover docs data to use them, adds a tooltip data module, introduces many tooltip demo components, rewrites tooltip docs and migration notes, and includes minor popover demo/template tweaks and small docs/formatting edits.

Changes

Cohort / File(s) Summary
Shared utilities for popover-like components
apps/docs/src/utils/popover-shared.ts
New helpers popoverSharedProps(type) and popoverSharedEmits(type) that deep-clone a shared props/emits blueprint, substitute {component} in descriptions, and return typed PropRecord/EmitRecord for popover-like components.
Docs data: Popover & Tooltip metadata
apps/docs/src/data/components/popover.data.ts, apps/docs/src/data/components/tooltip.data.ts
popover.data.ts now sources props/emits from popoverShared*; new tooltip.data.ts exports a ComponentReference mapping using shared helpers and adds interactive prop/slots/styleSpec metadata.
Tooltip demos (new)
apps/docs/src/docs/components/demo/Tooltip*.vue (CloseOnHide, Content, CustomClass, Exposed, Interactive, Model, Overview, Positioning, StartOpen, Styles, Triggers, Variant)
Adds a suite of tooltip demo components demonstrating triggers, positioning, v-model/exposed API, interactive content, styling, close-on-hide, start-open, and variants.
Popover demos (minor changes)
apps/docs/src/docs/components/demo/PopoverOverview.vue, apps/docs/src/docs/components/demo/PopoverStyles.vue
Reorders a demo button in Overview and removes show attribute from Styles template.
Docs pages updates
apps/docs/src/docs/components/tooltip.md, apps/docs/src/docs/components/popover.md, apps/docs/src/docs/migration-guide.md, apps/docs/src/docs/components/form-input.md
Tooltip documentation rewritten/expanded with demos and data-driven references; popover docs wording/links/placements updated; migration guide expanded for BTooltip; minor typo fix (i.e.).
Formatting-only change
packages/bootstrap-vue-next/src/components/BModal/BModal.vue
Non-functional formatting change in computed classes only.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Reader as Docs User
  participant Page as Tooltip Docs Page
  participant Data as apps/docs/.../tooltip.data.ts
  participant Shared as apps/docs/.../popover-shared.ts
  participant Demos as demo components

  Reader->>Page: Open Tooltip docs
  Page->>Data: import/load ComponentReference
  Data->>Shared: popoverSharedProps("tooltip")
  Shared-->>Data: PropRecord
  Data->>Shared: popoverSharedEmits("tooltip")
  Shared-->>Data: EmitRecord
  Data-->>Page: ComponentReference (props/emits/slots/styleSpec)
  Page->>Demos: embed demo components (Tooltip*.vue)
  Page-->>Reader: Render docs & demos
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Assessment against linked issues

Objective Addressed Explanation
Document the BTooltip component (#2101)

Assessment against linked issues: Out-of-scope changes

Code Change Explanation
Popover docs wording/links/placements updates (apps/docs/src/docs/components/popover.md) Changes to popover page content are unrelated to the objective of documenting BTooltip.
Typo fix “ie.” → “i.e.” (apps/docs/src/docs/components/form-input.md) Simple documentation typo correction not relevant to BTooltip documentation objective.
Popover demo reorder & show-attribute removal (apps/docs/src/docs/components/demo/PopoverOverview.vue, PopoverStyles.vue) Demo ordering/visibility tweak for popover demos; not required by the BTooltip documentation task.
Formatting change in BModal component (packages/bootstrap-vue-next/src/components/BModal/BModal.vue) Non-functional formatting edit unrelated to BTooltip docs objective.

Possibly related PRs

Suggested reviewers

  • VividLemon
  • xvaara

Poem

Hop hop — I polished props and emits with care,
Shared helpers stitched the docs everywhere.
Tooltips now show demos, data, and art,
A rabbit's nudge to give the docs a start. 🐇✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

pkg-pr-new bot commented Jun 26, 2025

bsvn-vite-ts

npm i https://pkg.pr.new/bootstrap-vue-next/bootstrap-vue-next@2762
npm i https://pkg.pr.new/bootstrap-vue-next/bootstrap-vue-next/@bootstrap-vue-next/nuxt@2762

commit: 67721d3

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (11)
apps/docs/src/utils/popover-shared.ts (1)

73-73: Fix typo in description.

"scrool" should be "scroll".

-      'Disables automatic closing on click outside or scrool out of view. Overrides `close-on-hide`'
+      'Disables automatic closing on click outside or scroll out of view. Overrides `close-on-hide`'
apps/docs/src/docs/components/demo/TooltipStyles.vue (1)

3-3: Consider removing unnecessary flex container.

Since there's only one tooltip in this demo, the d-flex gap-2 classes are unnecessary and could be simplified to just a div or removed entirely.

-  <div class="d-flex gap-2">
+  <div>
apps/docs/src/docs/components/demo/TooltipVariant.vue (1)

3-3: Consider removing unnecessary flex container.

Similar to other single-tooltip demos, the d-flex gap-2 classes are unnecessary since there's only one tooltip element.

-  <div class="d-flex gap-2">
+  <div>
apps/docs/src/docs/components/demo/TooltipContent.vue (1)

4-4: Fix typo in tooltip title.

There's a spelling error: "Tootip" should be "Tooltip".

-    <BTooltip title="Tootip Title via Property">
+    <BTooltip title="Tooltip Title via Property">
apps/docs/src/docs/components/demo/TooltipPositioning.vue (1)

82-84: Fix formatting of closing tags.

The closing tags are formatted inconsistently. Consider improving readability.

-      </BCol></BRow
-    ></BContainer
-  >
+      </BCol>
+    </BRow>
+  </BContainer>
apps/docs/src/docs/components/demo/TooltipCloseOnHide.vue (1)

30-34: Consider the DOM query selector robustness.

The hardcoded selector '#app > nav' works for the current documentation site structure but could be brittle if the navigation markup changes. For a demo component, this is probably acceptable, but consider if a more resilient approach might be beneficial.

apps/docs/src/docs/migration-guide.md (1)

802-803: Fix missing comma for better readability.

The sentence would read more clearly with a comma after "default".

-`BTooltip` is noninteractive by default unlike in BootstrapVue. This provides for a smoother user
+`BTooltip` is noninteractive by default, unlike in BootstrapVue. This provides for a smoother user
apps/docs/src/docs/components/tooltip.md (4)

21-23: Fix repeated “tootlip/Tootlips” misspellings

Spelling errors undermine professionalism and hurt search indexing.

- Tootlips rely on the 3rd party library ...
- ... where in the DOM the tootlip is rendered.
+ Tooltips rely on the 3rd-party library …
+ … where in the DOM the tooltip is rendered.

78-78: Minor wording tweak for clarity

“… when the mouse is over it or focus is in it …”

Replace “in” with “on” or “within” for idiomatic English:

- … when the mouse is over it or focus is in it …
+ … when the mouse is over it or focus is within it …

35-35: Use the correct abbreviation “i.e.”

- A string with querySelector. (ie. '#toolbar > div:first-child')
+ A string with querySelector (i.e. `#toolbar > div:first-child`)

110-111: Spelling & wording in custom-class section

  1. tootliptooltip
  2. Remove extraneous “to”
-Custom classes can be applied to the tootlip using the `title-class` prop and to or `body-class` prop
+Custom classes can be applied to the tooltip using the `title-class` or `body-class` prop
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 02be37d and a5d122f.

📒 Files selected for processing (22)
  • apps/docs/src/data/components/popover.data.ts (2 hunks)
  • apps/docs/src/data/components/tooltip.data.ts (1 hunks)
  • apps/docs/src/docs/components/demo/PopoverExposed.vue (1 hunks)
  • apps/docs/src/docs/components/demo/PopoverOverview.vue (1 hunks)
  • apps/docs/src/docs/components/demo/PopoverStyles.vue (0 hunks)
  • apps/docs/src/docs/components/demo/TooltipCloseOnHide.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipContent.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipCustomClass.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipExposed.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipInteractive.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipModel.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipOverview.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipPositioning.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipStartOpen.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipStyles.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipTriggers.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipVariant.vue (1 hunks)
  • apps/docs/src/docs/components/popover.md (4 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
  • apps/docs/src/docs/migration-guide.md (2 hunks)
  • apps/docs/src/utils/index.ts (1 hunks)
  • apps/docs/src/utils/popover-shared.ts (1 hunks)
💤 Files with no reviewable changes (1)
  • apps/docs/src/docs/components/demo/PopoverStyles.vue
🧰 Additional context used
🧠 Learnings (21)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
apps/docs/src/docs/components/demo/PopoverOverview.vue (4)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:425-430
Timestamp: 2025-05-28T07:32:45.658Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex synchronization within sortTabs() is necessary and correct. When sorting tabs by DOM position, indices change, so activeIndex must be updated immediately to maintain consistency with activeId. This is not an unwanted side effect but a required consequence of the sorting operation.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/docs/components/demo/TooltipContent.vue (1)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/docs/components/demo/TooltipStyles.vue (2)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: unstoppablecarl
PR: bootstrap-vue-next/bootstrap-vue-next#2671
File: packages/bootstrap-vue-next/src/components/BToast/_toast.scss:1-3
Timestamp: 2025-04-27T17:30:42.045Z
Learning: In global SCSS files for bootstrap-vue-next, `:deep()` combinator should not be used as it only works in Vue's scoped style blocks. Standard CSS/SCSS selectors should be used instead.
apps/docs/src/docs/components/popover.md (5)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: unstoppablecarl
PR: bootstrap-vue-next/bootstrap-vue-next#2671
File: packages/bootstrap-vue-next/src/components/BToast/_toast.scss:1-3
Timestamp: 2025-04-27T17:30:42.045Z
Learning: In global SCSS files for bootstrap-vue-next, `:deep()` combinator should not be used as it only works in Vue's scoped style blocks. Standard CSS/SCSS selectors should be used instead.
apps/docs/src/docs/components/demo/PopoverExposed.vue (8)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: unstoppablecarl
PR: bootstrap-vue-next/bootstrap-vue-next#2671
File: packages/bootstrap-vue-next/src/components/BToast/_toast.scss:1-3
Timestamp: 2025-04-27T17:30:42.045Z
Learning: In global SCSS files for bootstrap-vue-next, `:deep()` combinator should not be used as it only works in Vue's scoped style blocks. Standard CSS/SCSS selectors should be used instead.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:425-430
Timestamp: 2025-05-28T07:32:45.658Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex synchronization within sortTabs() is necessary and correct. When sorting tabs by DOM position, indices change, so activeIndex must be updated immediately to maintain consistency with activeId. This is not an unwanted side effect but a required consequence of the sorting operation.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
apps/docs/src/docs/components/demo/TooltipInteractive.vue (2)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
apps/docs/src/docs/components/demo/TooltipVariant.vue (1)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/docs/components/demo/TooltipCustomClass.vue (1)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/docs/components/demo/TooltipStartOpen.vue (1)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/docs/components/demo/TooltipTriggers.vue (1)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
apps/docs/src/data/components/tooltip.data.ts (4)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
apps/docs/src/data/components/popover.data.ts (6)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: unstoppablecarl
PR: bootstrap-vue-next/bootstrap-vue-next#2671
File: packages/bootstrap-vue-next/src/components/BToast/_toast.scss:1-3
Timestamp: 2025-04-27T17:30:42.045Z
Learning: In global SCSS files for bootstrap-vue-next, `:deep()` combinator should not be used as it only works in Vue's scoped style blocks. Standard CSS/SCSS selectors should be used instead.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
apps/docs/src/docs/components/demo/TooltipModel.vue (2)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
apps/docs/src/docs/components/demo/TooltipOverview.vue (2)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
apps/docs/src/docs/components/demo/TooltipPositioning.vue (2)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
apps/docs/src/docs/components/demo/TooltipCloseOnHide.vue (3)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
apps/docs/src/docs/components/demo/TooltipExposed.vue (4)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
apps/docs/src/docs/migration-guide.md (7)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: unstoppablecarl
PR: bootstrap-vue-next/bootstrap-vue-next#2671
File: packages/bootstrap-vue-next/src/components/BToast/_toast.scss:1-3
Timestamp: 2025-04-27T17:30:42.045Z
Learning: In global SCSS files for bootstrap-vue-next, `:deep()` combinator should not be used as it only works in Vue's scoped style blocks. Standard CSS/SCSS selectors should be used instead.
apps/docs/src/utils/popover-shared.ts (3)
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
apps/docs/src/docs/components/tooltip.md (5)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
🧬 Code Graph Analysis (1)
apps/docs/src/utils/popover-shared.ts (3)
apps/docs/src/utils/index.ts (5)
  • popoverSharedProps (10-10)
  • showHideProps (8-8)
  • pick (4-4)
  • buildCommonProps (3-3)
  • popoverSharedEmits (10-10)
packages/bootstrap-vue-next/src/types/ComponentProps.ts (1)
  • BTooltipProps (1324-1326)
apps/docs/src/types/index.ts (2)
  • PropertyReference (13-18)
  • EmitArgReference (5-5)
🪛 LanguageTool
apps/docs/src/docs/migration-guide.md

[uncategorized] ~802-~802: Possible missing comma found.
Context: ... prop. BTooltip is noninteractive by default unlike in BootstrapVue. This provides f...

(AI_HYDRA_LEO_MISSING_COMMA)

apps/docs/src/docs/components/tooltip.md

[uncategorized] ~25-~25: Possible missing comma found.
Context: ...d. Set the inline prop to improve the positioning see the [Floating UI docs](https://floa...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~35-~35: The abbreviation “i.e.” (= that is) requires two periods.
Context: ...ponent) - A string with querySelector. (ie. '#toolbar > div:first-child') - A refer...

(I_E)


[uncategorized] ~78-~78: The preposition “on” seems more likely in this position than the preposition “in”.
Context: ...n when the mouse is over it or focus is in it, allowing users to interact with its...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_IN_ON)


[uncategorized] ~97-~97: Possible missing comma found.
Context: ...er can be set via the title or body props or the title and default slots. <<...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~104-~104: Possible missing comma found.
Context: ...recedence over the body and default slots and the slots (as always) take preceden...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
🔇 Additional comments (25)
apps/docs/src/utils/popover-shared.ts (2)

17-160: LGTM on comprehensive prop definitions.

The shared props object provides thorough coverage of popover/tooltip functionality with detailed descriptions and proper typing. The dynamic string replacement approach is clever for component-specific documentation.


160-160: I’m digging into the prop‐type definitions to confirm whether BTooltipProps aligns with BvnComponentProps['BPopover']. Let’s extract their declarations:

#!/bin/bash
# Find tooltip/​popover prop interfaces or type aliases
rg 'interface BTooltipProps' -A5
rg 'type BTooltipProps' -A5
rg 'interface BPopoverProps' -A5
rg 'type BPopoverProps' -A5
rg 'interface BvnComponentProps' -A5
rg 'type BvnComponentProps' -A5
apps/docs/src/utils/index.ts (1)

10-10: LGTM on the export additions.

The new exports follow the existing pattern and properly expose the shared utilities for use in other parts of the documentation system.

apps/docs/src/docs/components/demo/PopoverOverview.vue (1)

15-22: LGTM on the element reordering.

The reordering of the BButton with v-b-popover directive doesn't affect functionality and likely improves the visual flow of the demo.

apps/docs/src/docs/components/demo/PopoverExposed.vue (1)

42-42: LGTM on the import change.

Changing from a type-only import to the actual component import is necessary for the component to function properly. The direct import path from bootstrap-vue-next/components/BPopover is appropriate for this use case.

apps/docs/src/docs/components/popover.md (4)

7-8: LGTM on the composable clarification.

Adding the "composable" label clarifies the nature of usePopoverController and improves documentation clarity.


18-18: LGTM on the URL correction.

Correcting the floating-ui URL from /docs to / ensures users reach the correct documentation.


58-58: LGTM on removing redundant phrase.

Removing "by default" improves the sentence flow without losing meaning.


89-89: LGTM on the directive link correction.

Correcting the link from /docs/directives/popover to /docs/directives/bpopover ensures proper navigation to the directive documentation.

apps/docs/src/docs/components/demo/TooltipStyles.vue (1)

4-11: CSS custom properties usage looks good.

The demonstration of styling tooltips with CSS custom properties is clear and follows Bootstrap's CSS variable conventions properly. The tooltip content with HTML markup is also appropriate for showing rich content support.

apps/docs/src/docs/components/demo/TooltipStartOpen.vue (1)

1-10: Clean implementation of the show prop demo.

The component correctly demonstrates how to use the show prop to display a tooltip immediately on load. The implementation is clear and follows proper Vue template conventions.

apps/docs/src/docs/components/demo/TooltipVariant.vue (1)

4-11: Good demonstration of title-class prop.

The use of title-class="text-bg-danger" effectively demonstrates how to style tooltip variants. The combination with the title prop shows a clean way to apply Bootstrap utility classes to tooltips.

apps/docs/src/docs/components/demo/TooltipInteractive.vue (1)

1-16: Excellent demonstration of interactive tooltips.

The component effectively showcases the interactive prop functionality with a practical example. The counter implementation is clean, and the TypeScript setup is appropriate. The flex layout is justified here since it spaces the counter and button elements within the tooltip.

apps/docs/src/docs/components/demo/TooltipContent.vue (1)

3-16: Great comparison of content delivery methods.

The side-by-side demonstration of title prop vs. slot content is educational and clearly shows the difference between simple text and rich HTML content capabilities. The flex layout is appropriate for displaying two tooltips together.

apps/docs/src/docs/components/demo/TooltipCustomClass.vue (1)

1-28: LGTM! Clean demonstration of custom tooltip classes.

The component effectively showcases both body-class and title-class props with clear examples. The template structure is well-organized and follows Vue SFC best practices.

apps/docs/src/docs/components/demo/TooltipTriggers.vue (1)

1-23: LGTM! Effective demonstration of tooltip triggers.

The component clearly shows the difference between default trigger behavior and click-triggered tooltips. The implementation is clean and follows consistent patterns.

apps/docs/src/docs/components/demo/TooltipOverview.vue (1)

1-17: Excellent overview of tooltip usage patterns.

Apart from the typos, this component effectively demonstrates the three main ways to use tooltips: scoped slots, target prop, and directive. This provides valuable reference material for users.

apps/docs/src/docs/components/demo/TooltipModel.vue (1)

1-29: LGTM! Excellent demonstration of tooltip v-model binding.

The component effectively showcases how to control tooltip visibility programmatically using v-model. The implementation follows Vue 3 Composition API best practices with a clean, minimal script setup and intuitive user interaction.

apps/docs/src/docs/components/demo/TooltipPositioning.vue (1)

1-86: Excellent comprehensive positioning demo.

This component provides a complete reference for all tooltip placement options using a well-organized grid layout. The systematic approach makes it easy for users to understand all available positioning choices.

apps/docs/src/data/components/tooltip.data.ts (1)

1-41: LGTM! Well-structured component metadata.

The tooltip metadata correctly uses the shared utility pattern and properly defines the tooltip-specific interactive prop. The structure follows established conventions and TypeScript usage is appropriate.

apps/docs/src/data/components/popover.data.ts (2)

1-2: LGTM! Good refactoring to use shared utilities.

The import changes properly bring in the shared utility functions for consistent prop and emit definitions.


11-13: LGTM! Effective consolidation using shared utilities.

The refactoring to use popoverSharedProps and popoverSharedEmits reduces duplication and improves maintainability while preserving the same functionality.

apps/docs/src/docs/components/demo/TooltipExposed.vue (1)

1-48: LGTM! Well-implemented demo component.

The component correctly demonstrates programmatic tooltip control using Vue 3 Composition API. Good use of optional chaining for safe method calls and proper ref typing with InstanceType<typeof BTooltip>.

apps/docs/src/docs/components/demo/TooltipCloseOnHide.vue (1)

1-35: LGTM! Good demonstration of close-on-hide functionality.

The component effectively shows how boundary padding works with navigation elements. The reactive computation for navHeight is well-implemented.

apps/docs/src/docs/migration-guide.md (1)

802-834: LGTM! Comprehensive and well-structured migration documentation.

The BTooltip migration section thoroughly covers all the major API changes, deprecated props, and behavioral differences. The documentation will be very helpful for users migrating from BootstrapVue.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

5-7: Still-broken composable link & wording
The directive typo is fixed, but this sentence still mixes tooltip/popover terminology and the link remains malformed.

-or [`v-b-tooltip`](/docs/directives/btooltip) directive. Popovers can also be created and programmatically controlled via the composable
-[`usePopoverController`](<(/docs/composables/useTooltipController)>)
+or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be programmatically controlled via the composable
+[`useTooltipController`](/docs/composables/useTooltipController)
🧹 Nitpick comments (5)
apps/docs/src/docs/components/tooltip.md (5)

15-21: Replace “popover” with “tooltip” & correct prop names
The overview section is for tooltips, so using “popover component” is confusing. Also, the prop is hideMargin (camel-case) and “non-interactive” needs a hyphen.

-Things to know when using the popover component:
+Things to know when using the tooltip component:

-  - HideMargin is 0
+  - `hideMargin` is `0`
-  - Tooltips are noninteractive by default.
+  - Tooltips are non-interactive by default.

25-25: Missing comma after introductory clause

-...the positioning see the [Floating UI docs]...
+...the positioning, see the [Floating UI docs]...

90-93: Tooltip-specific phrasing

Since this doc is about tooltips, “popover visibility” may confuse readers.

-To take finer control of popover visibility, you can use the ...
+To take finer control of tooltip visibility, you can use the ...

95-99: Replace “popover” with “tooltip”

-The title and body content of a popover can be set via the ...
+The content of a tooltip can be set via the ...

120-121: Incorrect component name in reactive note

-...can be changed while the popover is open.
+...can be changed while the tooltip is open.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a5d122f and e2d7732.

📒 Files selected for processing (10)
  • apps/docs/src/docs/components/demo/TooltipContent.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipOverview.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipPositioning.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipStyles.vue (1 hunks)
  • apps/docs/src/docs/components/demo/TooltipVariant.vue (1 hunks)
  • apps/docs/src/docs/components/form-input.md (1 hunks)
  • apps/docs/src/docs/components/popover.md (6 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
  • apps/docs/src/docs/migration-guide.md (2 hunks)
  • apps/docs/src/utils/popover-shared.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/docs/src/docs/components/form-input.md
🚧 Files skipped from review as they are similar to previous changes (8)
  • apps/docs/src/docs/components/demo/TooltipStyles.vue
  • apps/docs/src/docs/components/demo/TooltipContent.vue
  • apps/docs/src/docs/components/demo/TooltipVariant.vue
  • apps/docs/src/docs/components/demo/TooltipOverview.vue
  • apps/docs/src/docs/components/demo/TooltipPositioning.vue
  • apps/docs/src/docs/components/popover.md
  • apps/docs/src/docs/migration-guide.md
  • apps/docs/src/utils/popover-shared.ts
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
apps/docs/src/docs/components/tooltip.md (6)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[uncategorized] ~25-~25: Possible missing comma found.
Context: ...d. Set the inline prop to improve the positioning see the [Floating UI docs](https://floa...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~97-~97: Possible missing comma found.
Context: ...er can be set via the title or body props or the title and default slots. <<...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~104-~104: Possible missing comma found.
Context: ...recedence over the body and default slots and the slots (as always) take preceden...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
🔇 Additional comments (1)
apps/docs/src/docs/components/tooltip.md (1)

67-70: Placement list looks good – conventions now correct
top-start / top-end etc. match floating-ui nomenclature.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

5-7: Fix wrong link, extra brackets & copy-paste error
The directive typo was fixed, but the following issues remain:

  1. Text still says “Popovers” although the context is tooltips.
  2. The markdown link is malformed (<(/docs/composables/useTooltipController)>).
  3. It points to a non-existent Tooltip controller; the correct composable is usePopoverController.
-or [`v-b-tooltip`](/docs/directives/btooltip) directive. Popovers can also be created and programmatically controlled via the composable
-[`usePopoverController`](<(/docs/composables/useTooltipController)>)
+or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be programmatically controlled via the composable
+[`usePopoverController`](/docs/composables/usePopoverController)
🧹 Nitpick comments (1)
apps/docs/src/docs/components/tooltip.md (1)

100-103: Minor wording & comma nits for readability

-Unlike [popover content](/docs/components/popover#content) which has a separate title and body, tooltips only
-have one place to place content. The `title` prop and slot take precedence over the `body` and `default`
-slots and the slots (as always) take precedence over the props.
+Unlike [popover content](/docs/components/popover#content), which has separate title and body areas, tooltips only
+have a single content area. The `title` prop and slot take precedence over the `body` and `default`
+slots, and the slots (as always) take precedence over the props.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e2d7732 and abef743.

📒 Files selected for processing (1)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.297Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
apps/docs/src/docs/components/tooltip.md (8)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.297Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[uncategorized] ~97-~97: Possible missing comma found.
Context: ...ip can be set via the title or body props or the title or default slots. :::...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~102-~102: Possible missing comma found.
Context: ...recedence over the body and default slots and the slots (as always) take preceden...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build
🔇 Additional comments (1)
apps/docs/src/docs/components/tooltip.md (1)

17-21: ```shell
#!/usr/bin/env bash
set -e

1. Locate the tooltip markdown file

echo "🔍 Finding tooltip.md..."
MD_FILE=$(fd --ignore-case --type f tooltip.md | head -n1)
echo "Markdown file: $MD_FILE"

2. Show the first 30 lines of the markdown for context

echo "🔍 Showing top of the markdown:"
sed -n '1,30p' "$MD_FILE"

3. Find all component files with “Tooltip” in their names

echo "🔍 Listing component files named Tooltip:"
fd --ignore-case --type f tooltip

4. For each Tooltip component file, print the first 50 lines

for f in $(fd --ignore-case --type f tooltip); do
echo "---- File: $f ----"
sed -n '1,50p' "$f"
done

5. Search codebase for margin-related props in Tooltip

echo "🔍 Searching for margin-related props in code:"
rg -C2 'margin' -g '.ts' || true


</details>

</blockquote></details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

5-7: Malformed link & wrong composable name still present

The anchor is wrapped in the odd <( … )> construct and it points to the non-existent useTooltipController.
This was raised earlier but has not been applied.

-or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be created and programmatically controlled via the composable
-[`usePopoverController`](<(/docs/composables/useTooltipController)>)
+or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be created and programmatically controlled via the composable
+[`usePopoverController`](/docs/composables/usePopoverController)
🧹 Nitpick comments (2)
apps/docs/src/docs/components/tooltip.md (2)

17-20: Typo: kideMarginhideMargin (or the correct prop name)

kideMargin isn’t a documented prop; it looks like a simple misspelling.

-  - kideMargin is 0
+  - hideMargin is 0

Double-check the actual prop name in BPopover to avoid confusing users.


97-103: Missing commas make the sentence hard to parse

Two quick punctuation tweaks improve readability.

-The content of a tooltip can be set via the `title` or `body` props or the `title`
-or `default` slots.
+The content of a tooltip can be set via the `title` or `body` props, or the `title`
+or `default` slots.
@@
-... over the `body` and `default` slots and the slots (as always) take precedence ...
+... over the `body` and `default` slots, and the slots (as always) take precedence ...
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between abef743 and 5e7c76b.

📒 Files selected for processing (1)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.297Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
apps/docs/src/docs/components/tooltip.md (8)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.297Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[uncategorized] ~97-~97: Possible missing comma found.
Context: ...ip can be set via the title or body props or the title or default slots. :::...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~102-~102: Possible missing comma found.
Context: ...recedence over the body and default slots and the slots (as always) take preceden...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

5-7: Fix incorrect composable link & stray brackets

usePopoverController is the correct composable, but the link still points to useTooltipController and is wrapped in an extra <( … )> pair.

-or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be created and programmatically controlled via the composable
-[`usePopoverController`](<(/docs/composables/useTooltipController)>)
+or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be created and programmatically controlled via the composable
+[`usePopoverController`](/docs/composables/usePopoverController)
🧹 Nitpick comments (2)
apps/docs/src/docs/components/tooltip.md (2)

67-70: Ensure wording matches the updated placement list

You removed the obsolete *-left / *-right values—good—but line 69 still starts a new sentence with “options” after the comma, which reads awkwardly.

- options `auto`, `auto-start` and `auto-end`.
+plus the auto-placement options `auto`, `auto-start`, and `auto-end`.

97-104: Add missing commas for readability

Two compound sentences are missing commas after the first clause.

-The content of a tooltip can be set via the `title` or `body` props or the `title`
-or `default` slots.
+The content of a tooltip can be set via the `title` or `body` props, or the `title`
+or `default` slots.
@@
-have one place to place content. The `title` prop and slot take precedence over the `body` and `default`
-slots and the slots (as always) take precedence over the props.
+have one place to place content. The `title` prop and slot take precedence over the `body` and `default`
+slots, and the slots (as always) take precedence over the props.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5e7c76b and cba88b5.

📒 Files selected for processing (2)
  • apps/docs/src/docs/components/popover.md (6 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/docs/src/docs/components/popover.md
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
apps/docs/src/docs/components/tooltip.md (8)
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2669
File: apps/docs/src/data/components/table.data.ts:334-336
Timestamp: 2025-04-24T20:35:48.629Z
Learning: The generic type parameter for table items should use the singular form `Item` rather than the plural `Items` to improve readability and follow TypeScript conventions. This change would primarily affect two files: `packages/bootstrap-vue-next/src/types/ComponentProps.ts` and `apps/docs/src/data/components/table.data.ts`.
Learnt from: VividLemon
PR: bootstrap-vue-next/bootstrap-vue-next#2691
File: packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts:85-86
Timestamp: 2025-05-26T17:28:35.902Z
Learning: In the `useBLinkTagResolver` function in `packages/bootstrap-vue-next/src/composables/useBLinkHelper.ts`, the `routerComponentName` parameter is required and typed as `MaybeRefOrGetter<string>`, ensuring it cannot be undefined.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:384-404
Timestamp: 2025-05-28T07:57:19.915Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the activeIndex and activeId watchers are intentionally designed with separation of concerns: activeIndex watcher handles activate-tab event emission and complex validation logic, while activeId watcher is kept simple for synchronization between activeId and activeIndex values only.
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[uncategorized] ~97-~97: Possible missing comma found.
Context: ...ip can be set via the title or body props or the title or default slots. :::...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~102-~102: Possible missing comma found.
Context: ...recedence over the body and default slots and the slots (as always) take preceden...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: build

Copy link
Contributor

This PR is stale because it has been open for 45 days with no activity. It will not be auto-closed

@github-actions github-actions bot added the stale There has been no additional replies or questions and the thread is assumed closed label Aug 17, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
apps/docs/src/docs/components/tooltip.md (2)

5-7: Fix grammar and directive link path (likely 404 on case-sensitive hosts)

  • Grammar: "an interactive element or components" → "an interactive element or component".
  • Link: Directive route segment should be lowercase to match docs routing (see prior discussion). Also, "created and programmatically controlled" is awkward here.

Apply this diff:

-Easily add tooltips to an interactive element or components via the `<BTooltip>` component
-or [`v-b-tooltip`](/docs/directives/BTooltip) directive. Tooltips can also be created and programmatically controlled via the composable
+Easily add tooltips to an interactive element or component via the `<BTooltip>` component
+or [`v-b-tooltip`](/docs/directives/btooltip) directive. Tooltips can also be programmatically controlled via the composable
 [`usePopoverController`](/docs/composables/usePopoverController)

Run this to verify the correct directive doc path:

#!/bin/bash
# Inspect directive docs files to confirm actual route casing/slug
fd -a -t f -H 'apps/docs/src/docs/directives/*tooltip*.md' || true
rg -n -C2 '/docs/directives/' apps/docs/src/docs | rg -n 'btooltip|BTooltip' || true

122-123: Directive link path casing should be lowercase

Align this link with the directive route used elsewhere; uppercase may break on case-sensitive hosting.

Apply this diff:

-Refer to the [tooltip directive](/docs/directives/BTooltip) docs on applying custom
+Refer to the [tooltip directive](/docs/directives/btooltip) docs on applying custom

You can reuse the earlier script to confirm the correct slug exists.

🧹 Nitpick comments (10)
packages/bootstrap-vue-next/src/components/BModal/BModal.vue (3)

387-389: Keep docs-only PRs scoped; revert the unrelated runtime change in BModal

This PR is described as documentation-only, but this formatting change touches runtime code. Please revert or move to a separate PR to keep the scope clean and avoid accidental churn.


387-388: Fix lint/style: avoid newline after the property key

ESLint/Prettier are likely flagging the newline after the colon (see static analysis hint). Put true on the same line as the key.

Apply this diff:

-  [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]:
-    true,
+  [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]: true,

387-389: Confirm activeModalCount cannot be 0 to avoid negative class suffix

If activeModalCount.value is 0 (not nullish), the suffix becomes -1 - position, yielding a class like stack-inverse-position--1. If that state is possible, consider clamping the value to avoid negative class names.

Optional tweak:

-  [`stack-inverse-position-${(activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0)}`]: true,
+  [`stack-inverse-position-${Math.max((activeModalCount?.value ?? 1) - 1 - (activePosition?.value ?? 0), 0)}`]: true,

Or coerce count to at least 1 via Math.max(activeModalCount?.value ?? 1, 1).

Can you confirm whether activeModalCount is guaranteed to be >= 1 when this code runs? If not, we should clamp.

apps/docs/src/utils/popover-shared.ts (1)

197-253: Address TODO comments for production readiness.

The shared emits definition is well-structured, but there are several TODO comments indicating missing descriptions for BvTriggerableEvent arguments (Lines 204, 213, 222, 232). Consider adding these descriptions to complete the documentation.

Do you want me to help generate appropriate descriptions for the BvTriggerableEvent arguments in the emit definitions?

apps/docs/src/docs/components/tooltip.md (6)

29-33: Remove redundant sentence about the target prop

You already introduce the target and say “can be any of the following,” then repeat it. Drop the duplicated line.

Apply this diff:

-The `target` prop may be any of the following:

35-35: Use “e.g.” instead of “i.e.” for an example and fix punctuation

This is providing an example, not an equivalence.

Apply this diff:

-- A string with querySelector. (i.e. '#toolbar > div:first-child')
+- A string with a query selector (e.g., '#toolbar > div:first-child')

21-22: Hyphenate “third‑party”

Doc polish: preferred style is “third-party”.

Apply this diff:

-- Tooltips rely on the 3rd party library [floating-ui](https://floating-ui.com/) for positioning.
+- Tooltips rely on the third-party library [floating-ui](https://floating-ui.com/) for positioning.

90-94: Prefer “Alternatively” over “Alternately”

Minor wording polish.

Apply this diff:

-To take finer control of tooltip visibility, you can use the [useToggle](/docs/composables/useToggle) or
+To take finer control of tooltip visibility, you can use the [useToggle](/docs/composables/useToggle) or
 [usePopoverController](/docs/composables/usePopoverController). Alternately, you can set the `manual` prop
+and use the [`v-model`](#programmatic-control-via-v-model) or
+ [exposed functions](#exposed-functions) to control visibility.
+ 
+Alternatively, you can set the `manual` prop and use the [`v-model`](#programmatic-control-via-v-model) or
+[exposed functions](#exposed-functions) to control visibility.

If you’d rather not duplicate the sentence, change “Alternately” in-place instead:

-Alternately, you can set the `manual` prop
+Alternatively, you can set the `manual` prop

125-127: Capitalize framework and technology names

Use “Bootstrap 5 CSS variables”.

Apply this diff:

-For finer control, use the bootstrap 5 css variables to apply styles directly.
+For finer control, use the Bootstrap 5 CSS variables to apply styles directly.

152-154: End the lead-in sentence with a colon

Reads better before the demo snippet.

Apply this diff:

-These are accessed through the [template ref](https://vuejs.org/guide/essentials/template-refs.html#template-refs)
+These are accessed through the [template ref](https://vuejs.org/guide/essentials/template-refs.html#template-refs):
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e8bdf1e and 915a600.

📒 Files selected for processing (10)
  • apps/docs/src/data/components/popover.data.ts (1 hunks)
  • apps/docs/src/data/components/tooltip.data.ts (1 hunks)
  • apps/docs/src/docs/components/form-input.md (1 hunks)
  • apps/docs/src/docs/components/popover.md (4 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
  • apps/docs/src/docs/migration-guide.md (1 hunks)
  • apps/docs/src/utils/popover-shared.ts (1 hunks)
  • packages/bootstrap-vue-next/CHANGELOG.md (1 hunks)
  • packages/bootstrap-vue-next/src/components/BModal/BModal.vue (1 hunks)
  • packages/nuxt/CHANGELOG.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/docs/src/data/components/popover.data.ts
  • apps/docs/src/docs/components/form-input.md
🧰 Additional context used
🧠 Learnings (7)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/data/components/tooltip.data.ts
  • apps/docs/src/docs/components/tooltip.md
  • apps/docs/src/docs/components/popover.md
  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-04-28T22:48:46.738Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.

Applied to files:

  • apps/docs/src/data/components/tooltip.data.ts
  • apps/docs/src/utils/popover-shared.ts
  • apps/docs/src/docs/components/popover.md
📚 Learning: 2025-06-05T11:43:10.793Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-05-23T23:58:07.165Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-08-19T14:23:46.746Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2732
File: packages/bootstrap-vue-next/CHANGELOG.md:35-41
Timestamp: 2025-08-19T14:23:46.746Z
Learning: In the bootstrap-vue-next repository, CHANGELOG.md files (e.g., packages/bootstrap-vue-next/CHANGELOG.md) are autogenerated and should be ignored in reviews; do not propose edits for them.

Applied to files:

  • packages/bootstrap-vue-next/CHANGELOG.md
📚 Learning: 2025-05-28T07:01:55.095Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2716
File: packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue:240-261
Timestamp: 2025-05-28T07:01:55.095Z
Learning: In BTabs component (packages/bootstrap-vue-next/src/components/BTabs/BTabs.vue), the complex initialization logic with updateInitialActiveIndex and updateInitialActiveId flags is necessary for SSR compatibility. Tab initialization cannot be deferred to mounted lifecycle because tabs must be available for server-side rendering of the initial HTML state.

Applied to files:

  • packages/bootstrap-vue-next/CHANGELOG.md
🧬 Code Graph Analysis (2)
apps/docs/src/data/components/tooltip.data.ts (5)
apps/docs/src/types/index.ts (4)
  • ComponentReference (59-74)
  • PropRecord (17-17)
  • EmitRecord (30-30)
  • SlotRecord (44-44)
apps/docs/src/utils/popover-shared.ts (2)
  • popoverSharedProps (7-15)
  • popoverSharedEmits (172-195)
packages/bootstrap-vue-next/src/types/ComponentProps.ts (1)
  • BTooltipProps (1328-1330)
packages/bootstrap-vue-next/src/types/ComponentEmits.ts (1)
  • BTooltipEmits (153-153)
packages/bootstrap-vue-next/src/types/ComponentSlots.ts (1)
  • BTooltipSlots (658-658)
apps/docs/src/utils/popover-shared.ts (4)
apps/docs/src/types/index.ts (4)
  • PropRecord (17-17)
  • PropReference (5-10)
  • EmitRecord (30-30)
  • EmitReference (26-29)
packages/bootstrap-vue-next/src/types/ComponentProps.ts (1)
  • BPopoverProps (1290-1326)
packages/bootstrap-vue-next/src/utils/object.ts (1)
  • pick (20-33)
packages/bootstrap-vue-next/src/types/ComponentEmits.ts (2)
  • BPopoverEmits (35-40)
  • showHideEmits (4-15)
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[grammar] ~5-~5: There might be a mistake here.
Context: ...omponents via the <BTooltip> component or [v-b-tooltip](/docs/directives/BToo...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...Tooltips are non-interactive by default. - Tooltips rely on the 3rd party library [...

(QB_NEW_EN)


[grammar] ~29-~29: There might be a mistake here.
Context: ... will trigger the tooltip. The target is specified via the target slot or prop,...

(QB_NEW_EN)


[grammar] ~35-~35: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~42-~42: There might be a mistake here.
Context: ...>, , etc., while SVGElementrefers to` or supported child ele...

(QB_NEW_EN)


[grammar] ~52-~52: There might be a mistake here.
Context: ...ts for keyboard users. In addition, most assistive technologies currently do not ...

(QB_NEW_EN)


[grammar] ~55-~55: There might be a mistake here.
Context: ...for your tooltip, as this will make your tooltips _impossible to trigger for keyb...

(QB_NEW_EN)


[grammar] ~61-~61: There might be a mistake here.
Context: ...ound, you’ll want to trigger the tooltip from a wrapper <div> or <span>, idea...

(QB_NEW_EN)


[grammar] ~62-~62: There might be a mistake here.
Context: ...oard-focusable using tabindex="0", and override the pointer-events on the dis...

(QB_NEW_EN)


[grammar] ~67-~67: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)


[grammar] ~68-~68: There might be a mistake here.
Context: ...ht, right-start, and right-end` from [@floating-ui/vue](https://floating-ui.c...

(QB_NEW_EN)


[grammar] ~85-~85: There might be a mistake here.
Context: ...and make the tooltip show and hide based on click events, set the click prop ...

(QB_NEW_EN)


[grammar] ~91-~91: There might be a mistake here.
Context: ...ternately, you can set the manual prop and use the [v-model](#programmatic-co...

(QB_NEW_EN)


[grammar] ~92-~92: There might be a mistake here.
Context: ...`](#programmatic-control-via-v-model) or exposed functions ...

(QB_NEW_EN)


[grammar] ~97-~97: There might be a mistake here.
Context: ... title or body props, or the title or default slots. ::: info NOTE Unlik...

(QB_NEW_EN)


[grammar] ~100-~100: There might be a mistake here.
Context: ...itleordefault` slots. ::: info NOTE Unlike [popover content](/docs/component...

(QB_NEW_EN)


[grammar] ~101-~101: There might be a mistake here.
Context: ...a separate title and body, tooltips only have one location to place the content. ...

(QB_NEW_EN)


[grammar] ~110-~110: There might be a mistake here.
Context: ... title-class prop or body-class prop (depending on which prop or slot you use...

(QB_NEW_EN)


[grammar] ~115-~115: There might be a mistake here.
Context: ....com/docs/5.3/helpers/color-background/) utilities to change the variant of the t...

(QB_NEW_EN)


[grammar] ~122-~122: There might be a mistake here.
Context: ...ctives/BTooltip) docs on applying custom classes to the directive version. For f...

(QB_NEW_EN)


[grammar] ~131-~131: There might be a mistake here.
Context: ...etting it to true will show the tooltip, while setting it to false will hide the ...

(QB_NEW_EN)


[grammar] ~145-~145: There might be a mistake here.
Context: ...w. The boundary and boundary-padding props can be used to control what's cons...

(QB_NEW_EN)


[grammar] ~152-~152: There might be a mistake here.
Context: ...ipulation of the state of the component. These are accessed through the [template...

(QB_NEW_EN)

apps/docs/src/docs/components/popover.md

[grammar] ~32-~32: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~46-~46: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)

apps/docs/src/docs/migration-guide.md

[grammar] ~866-~866: There might be a mistake here.
Context: ... floating-ui to handle placement. The ability for th...

(QB_NEW_EN)


[grammar] ~871-~871: There might be a mistake here.
Context: ... use to manage popovers has changed. See [our documentation](/docs/components/pop...

(QB_NEW_EN)


[grammar] ~872-~872: There might be a mistake here.
Context: ... floating-ui for details. The variant prop has bee...

(QB_NEW_EN)


[grammar] ~876-~876: There might be a mistake here.
Context: ...nts/tooltip#custom-classes-and-variants) for details. The disabled prop and [P...

(QB_NEW_EN)


[grammar] ~881-~881: There might be a mistake here.
Context: ... to disable BootstrapVueNext's automatic trigger handling and if your own code sh...

(QB_NEW_EN)


[grammar] ~882-~882: There might be a mistake here.
Context: ...s well. If you believe that implementing full parity with the BootstrapVue featur...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.17.2)
packages/bootstrap-vue-next/CHANGELOG.md

16-16: Multiple headings with the same content

(MD024, no-duplicate-heading)


22-22: Multiple headings with the same content

(MD024, no-duplicate-heading)


28-28: Multiple headings with the same content

(MD024, no-duplicate-heading)


33-33: Multiple headings with the same content

(MD024, no-duplicate-heading)


45-45: Multiple headings with the same content

(MD024, no-duplicate-heading)


60-60: Multiple headings with the same content

(MD024, no-duplicate-heading)


67-67: Multiple headings with the same content

(MD024, no-duplicate-heading)


80-80: Multiple headings with the same content

(MD024, no-duplicate-heading)


89-89: Multiple headings with the same content

(MD024, no-duplicate-heading)

packages/nuxt/CHANGELOG.md

19-19: Multiple headings with the same content

(MD024, no-duplicate-heading)


23-23: Multiple headings with the same content

(MD024, no-duplicate-heading)


33-33: Multiple headings with the same content

(MD024, no-duplicate-heading)


37-37: Multiple headings with the same content

(MD024, no-duplicate-heading)


47-47: Multiple headings with the same content

(MD024, no-duplicate-heading)


51-51: Multiple headings with the same content

(MD024, no-duplicate-heading)


61-61: Multiple headings with the same content

(MD024, no-duplicate-heading)


65-65: Multiple headings with the same content

(MD024, no-duplicate-heading)


75-75: Multiple headings with the same content

(MD024, no-duplicate-heading)


79-79: Multiple headings with the same content

(MD024, no-duplicate-heading)


93-93: Multiple headings with the same content

(MD024, no-duplicate-heading)

🪛 GitHub Check: test-lint
packages/bootstrap-vue-next/src/components/BModal/BModal.vue

[warning] 387-387:
Delete ⏎···

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (12)
packages/bootstrap-vue-next/CHANGELOG.md (1)

7-12: Changelog is autogenerated; formatting-only changes — no action needed

Per project convention, this CHANGELOG is autogenerated and not meant for hand edits or detailed review. The changes here are just bullet-style formatting and don’t affect code or documentation semantics. Also safe to ignore markdownlint “duplicate heading” warnings for this file type.

LGTM to proceed.

Also applies to: 18-18, 24-41

packages/nuxt/CHANGELOG.md (1)

7-99: LGTM! Formatting standardization looks good.

The changes consistently replace asterisk-based bullets (*) with dash-based bullets (-) throughout the changelog entries. This standardization improves consistency across the changelog format.

apps/docs/src/docs/components/popover.md (4)

6-8: LGTM! Documentation improvements enhance clarity.

The changes correctly update the documentation to reflect the composable-based approach for programmatic control. The link to usePopoverController provides users with the proper reference for programmatic popover management.


18-19: LGTM! Documentation updates align with current implementation.

The changes appropriately:

  • Update the Floating UI link to the current domain
  • Clarify that teleportTo defaults to undefined (removing Nuxt-specific guidance)

These changes make the documentation more accurate and universally applicable.


32-32: LGTM! Minor typographical correction.

The change from "ie." to "i.e." follows proper Latin abbreviation formatting.


46-46: LGTM! Placement options updated correctly.

The change from top-left/top-right to top-start/top-end aligns with Bootstrap 5's directional naming conventions that use logical properties (start/end) instead of physical directions (left/right).

apps/docs/src/docs/migration-guide.md (1)

857-889: LGTM! Comprehensive BTooltip migration information.

The migration notes provide excellent coverage of the changes from BootstrapVue to BootstrapVueNext for tooltips:

  • Clearly explains the noninteractive default behavior change
  • Documents all deprecated props with their replacements
  • Provides proper links to relevant documentation sections
  • Explains the new trigger system and references to usePopoverController
  • Notes the timing and placement default changes

This gives users clear guidance for migrating their tooltip implementations.

apps/docs/src/utils/popover-shared.ts (3)

1-15: LGTM! Clean implementation of shared props utility.

The function correctly:

  • Uses structuredClone for proper deep cloning
  • Performs placeholder substitution for {component} in descriptions
  • Maintains proper TypeScript typing with the return type

17-170: LGTM! Comprehensive shared props definition.

The sharedProps object provides a thorough set of popover-related properties with:

  • Accurate type definitions and default values
  • Descriptive documentation with component placeholders
  • Proper integration of existing utilities (showHideProps, buildCommonProps)
  • Appropriate use of the satisfies operator for type safety

172-195: LGTM! Robust emit handling with nested placeholder replacement.

The function properly handles:

  • Deep cloning of the emits structure
  • Placeholder replacement in both descriptions and nested arg descriptions
  • Correct TypeScript typing for the return value
apps/docs/src/data/components/tooltip.data.ts (1)

12-45: LGTM! Well-structured tooltip data configuration.

The implementation effectively:

  • Uses the shared popover utilities for consistency
  • Adds tooltip-specific props (like interactive)
  • Properly maps BPopover to tooltip functionality via BTooltip.vue
  • Maintains correct TypeScript constraints with satisfies clauses
  • Uses appropriate CSS selector targeting for both tooltip and popover styles

The approach of extending shared popover functionality with tooltip-specific properties is clean and maintainable.

apps/docs/src/docs/components/tooltip.md (1)

67-71: Correct use of start/end placement names — LGTM

The switch to *-start/*-end matches Floating UI and Bootstrap v5 conventions.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (13)
apps/docs/src/docs/components/tooltip.md (13)

17-21: Tighten wording; brand/style nits (“third‑party”, brand case)

Minor editorial tweaks to align with our docs style and brand naming.

 - Tooltips rely on the 3rd party library [floating-ui](https://floating-ui.com/) for positioning.
+ - Tooltips rely on the third‑party library [Floating UI](https://floating-ui.com/) for positioning.

29-33: Reduce repetition: merge “target” explanation with prop intro

“The target is … specified via slot or prop … The target prop may be …” repeats itself. Merge into one concise paragraph.

-The target is the _trigger_ element (or component) that will trigger the tooltip. The target is
-specified via the `target` slot or prop, and can be any of the following:
-
-The `target` prop may be any of the following:
+The target is the _trigger_ element (or component) that will trigger the tooltip. It can be
+specified via the `target` slot or the `target` prop. When using the prop, it may be any of the following:

35-38: Clarify selector wording; fix “i.e.” vs “e.g.”

“querySelector” is an API, whereas here we accept any CSS selector string. Also use “e.g.” for examples.

-- A string with querySelector. (i.e. '#toolbar > div:first-child')
+- A CSS selector string (e.g., '#toolbar > div:first-child')

40-45: Minor wording tweak for SVG phrasing

Reads better and is slightly more precise.

-`HTMLElement` refers to standard HTML elements such as `<div>`, `<button>`, etc., while `SVGElement`
-refers to `<svg>` or supported child elements of SVGs.
+`HTMLElement` refers to standard HTML elements such as `<div>`, `<button>`, etc., while `SVGElement`
+refers to `<svg>` or supported SVG child elements.

47-57: Accessibility: add reference to WAI‑ARIA tooltip pattern

Good guidance here. Add an authoritative reference for readers who want deeper a11y context.

 tooltips _impossible to trigger for keyboard-only users_.
+
+For additional accessibility guidance, see the
+[WAI‑ARIA Authoring Practices: Tooltip Pattern](https://www.w3.org/WAI/ARIA/apg/patterns/tooltip/).

58-64: Disabled elements: add actionable tip

Consider adding a concrete pointer-events hint for typical disabled-button cases so users don’t get stuck.

 from a wrapper `<div>` or `<span>`, ideally made keyboard-focusable using `tabindex="0"`, and
-override the `pointer-events` on the disabled element.
+override the `pointer-events` on the disabled element (e.g., `.btn[disabled]{ pointer-events: none; }` on the button and `pointer-events: auto` on the wrapper as needed).

67-71: Placement phrasing and targeted docs link

We pull placements from Floating UI; adjust phrasing and link directly to the placement docs.

-`right`, `right-start`, and `right-end` from
-[@floating-ui/vue](https://floating-ui.com/) plus three [auto placement](https://floating-ui.com/docs/autoplacement)
+`right`, `right-start`, and `right-end` as defined by
+[Floating UI](https://floating-ui.com/docs/computePosition#placement), plus three [auto placement](https://floating-ui.com/docs/autoplacement)

78-79: Format prop name as code

Small readability polish.

-`BTooltip` has an interactive prop, which allows you to set the tooltip to be interactive. This means that the tooltip will remain open when the mouse is over it or focus is within it, allowing users to interact with its content.
+`BTooltip` has an `interactive` prop, which allows you to set the tooltip to be interactive. This means that the tooltip will remain open when the mouse is over it or focus is within it, allowing users to interact with its content.

90-94: “Alternately” → “Alternatively”

Minor language polish; also clarify sentence flow.

-To take finer control of tooltip visibility, you can use the [useToggle](/docs/composables/useToggle) or
-[usePopoverController](/docs/composables/usePopoverController). Alternately, you can set the `manual` prop
+To take finer control of tooltip visibility, you can use [useToggle](/docs/composables/useToggle) or
+[usePopoverController](/docs/composables/usePopoverController). Alternatively, you can set the `manual` prop
 and use the [`v-model`](#programmatic-control-via-v-model) or
 [exposed functions](#exposed-functions) to control visibility.

97-104: Clarify “body” prop/slot semantics for tooltips

Since tooltips render a single content area, clarify that body/default are supported for API parity but map to the same content region. This helps prevent confusion for users migrating from Popover.

 have one location to place the content. The `title` prop and slot take precedence over the `body` and `default`
 slot, and the slots (as always) take precedence over the props.
+For API parity, `body` (prop/slot) is accepted but renders in the same single content area as `title`/`default`.

125-127: Capitalize “Bootstrap 5 CSS variables” and link to reference

Docs style and discoverability improvement.

-For finer control, use the bootstrap 5 css variables to apply styles directly.
+For finer control, use Bootstrap 5 CSS variables to apply styles directly (see
+[the variables reference](https://getbootstrap.com/docs/5.3/customize/css-variables/)).

131-133: Format boolean values as code

Tiny readability improvement.

-You can manually control the visibility of a tooltip via the v-model. Setting it to true will show the tooltip,
-while setting it to false will hide the tooltip.
+You can manually control the visibility of a tooltip via the v-model. Setting it to `true` will show the tooltip,
+while setting it to `false` will hide the tooltip.

142-147: Cross-reference Floating UI “hide” behavior

Add pointer to underlying behavior to help advanced users tune boundary/clipping logic.

 when the target is scrolled out of view. The `boundary` and `boundary-padding`
 props can be used to control what's considered clipping.
+See Floating UI’s [hide middleware](https://floating-ui.com/docs/hide) and
+[detectOverflow options](https://floating-ui.com/docs/detectOverflow) for details on clipping behavior.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 915a600 and e2a4af8.

📒 Files selected for processing (1)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/docs/components/tooltip.md
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[grammar] ~20-~20: There might be a mistake here.
Context: ...Tooltips are non-interactive by default. - Tooltips rely on the 3rd party library [...

(QB_NEW_EN)


[grammar] ~29-~29: There might be a mistake here.
Context: ... will trigger the tooltip. The target is specified via the target slot or prop,...

(QB_NEW_EN)


[grammar] ~35-~35: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~42-~42: There might be a mistake here.
Context: ...>, , etc., while SVGElementrefers to` or supported child ele...

(QB_NEW_EN)


[grammar] ~52-~52: There might be a mistake here.
Context: ...ts for keyboard users. In addition, most assistive technologies currently do not ...

(QB_NEW_EN)


[grammar] ~55-~55: There might be a mistake here.
Context: ...for your tooltip, as this will make your tooltips _impossible to trigger for keyb...

(QB_NEW_EN)


[grammar] ~61-~61: There might be a mistake here.
Context: ...ound, you’ll want to trigger the tooltip from a wrapper <div> or <span>, idea...

(QB_NEW_EN)


[grammar] ~62-~62: There might be a mistake here.
Context: ...oard-focusable using tabindex="0", and override the pointer-events on the dis...

(QB_NEW_EN)


[grammar] ~67-~67: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)


[grammar] ~68-~68: There might be a mistake here.
Context: ...ht, right-start, and right-end` from [@floating-ui/vue](https://floating-ui.c...

(QB_NEW_EN)


[grammar] ~85-~85: There might be a mistake here.
Context: ...and make the tooltip show and hide based on click events, set the click prop ...

(QB_NEW_EN)


[grammar] ~91-~91: There might be a mistake here.
Context: ...ternately, you can set the manual prop and use the [v-model](#programmatic-co...

(QB_NEW_EN)


[grammar] ~92-~92: There might be a mistake here.
Context: ...`](#programmatic-control-via-v-model) or exposed functions ...

(QB_NEW_EN)


[grammar] ~97-~97: There might be a mistake here.
Context: ... title or body props, or the title or default slots. ::: info NOTE Unlik...

(QB_NEW_EN)


[grammar] ~100-~100: There might be a mistake here.
Context: ...itleordefault` slots. ::: info NOTE Unlike [popover content](/docs/component...

(QB_NEW_EN)


[grammar] ~101-~101: There might be a mistake here.
Context: ...a separate title and body, tooltips only have one location to place the content. ...

(QB_NEW_EN)


[grammar] ~110-~110: There might be a mistake here.
Context: ... title-class prop or body-class prop (depending on which prop or slot you use...

(QB_NEW_EN)


[grammar] ~115-~115: There might be a mistake here.
Context: ....com/docs/5.3/helpers/color-background/) utilities to change the variant of the t...

(QB_NEW_EN)


[grammar] ~122-~122: There might be a mistake here.
Context: ...ctives/btooltip) docs on applying custom classes to the directive version. For f...

(QB_NEW_EN)


[grammar] ~131-~131: There might be a mistake here.
Context: ...etting it to true will show the tooltip, while setting it to false will hide the ...

(QB_NEW_EN)


[grammar] ~145-~145: There might be a mistake here.
Context: ...w. The boundary and boundary-padding props can be used to control what's cons...

(QB_NEW_EN)


[grammar] ~152-~152: There might be a mistake here.
Context: ...ipulation of the state of the component. These are accessed through the [template...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (2)
apps/docs/src/docs/components/tooltip.md (2)

5-8: Correct composable and link (matches design: tooltips use Popover controller)

The usePopoverController reference is correct per our architecture (BTooltip is a thin wrapper over BPopover). Thanks for fixing the earlier malformed link and keeping parity with Popover control APIs.


84-87: No changes needed: click boolean prop is supported
The click prop is indeed exposed as a boolean on both <BTooltip> and <BPopover>, as shown in the demos (e.g. apps/docs/src/docs/components/demo/TooltipCloseOnHide.vue and apps/docs/src/docs/components/demo/PopoverTriggers.vue). The wording “set the click prop to true” is accurate.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

159-166: Fix import: tooltip.data.ts uses a default export, not a named export

Using {data} will be undefined at runtime. Switch to default import.

Apply:

-<script lang="ts">
-import {data} from '../../data/components/tooltip.data'
+<script lang="ts">
+import data from '../../data/components/tooltip.data'
 export default {
   setup() {
     return {data}
   }
 }
🧹 Nitpick comments (3)
apps/docs/src/docs/components/tooltip.md (3)

21-21: Style nit: “third-party”

Minor docs polish: prefer “third-party” over “3rd party”.

Apply:

- - Tooltips rely on the 3rd party library [floating-ui](https://floating-ui.com/) for positioning.
+ - Tooltips rely on the third-party library [floating-ui](https://floating-ui.com/) for positioning.

29-33: Remove duplication in Target description

Lines 29–31 already introduce valid target forms; line 32 repeats the intro and narrows it to the prop, which reads redundant/confusing alongside the slot mention. Simplify to one intro.

Apply:

-The target is the _trigger_ element (or component) that will trigger the tooltip. The target is
-specified via the `target` slot or prop, and can be any of the following:
-
-The `target` prop may be any of the following:
+The target is the _trigger_ element (or component) that will trigger the tooltip. Specify it via the `target` slot or prop. If using the prop, it may be any of the following:

110-121: Clarify which class hook applies to BTooltip

BTooltip inherits both title-class and body-class from BPopover, but in tooltip mode only one is used depending on how you supply content:

  • When using the title prop or #title slot, apply your CSS via the title-class prop.
  • When using the default slot (or body content), apply your CSS via the body-class prop.

Please update apps/docs/src/docs/components/tooltip.md (around lines 110–121) to explicitly map each prop to its corresponding usage.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between e2a4af8 and 44564c7.

📒 Files selected for processing (1)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/docs/components/tooltip.md
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[grammar] ~20-~20: There might be a mistake here.
Context: ...Tooltips are non-interactive by default. - Tooltips rely on the 3rd party library [...

(QB_NEW_EN)


[grammar] ~29-~29: There might be a mistake here.
Context: ... will trigger the tooltip. The target is specified via the target slot or prop,...

(QB_NEW_EN)


[grammar] ~35-~35: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~42-~42: There might be a mistake here.
Context: ...>, , etc., while SVGElementrefers to` or supported child ele...

(QB_NEW_EN)


[grammar] ~52-~52: There might be a mistake here.
Context: ...ts for keyboard users. In addition, most assistive technologies currently do not ...

(QB_NEW_EN)


[grammar] ~55-~55: There might be a mistake here.
Context: ...for your tooltip, as this will make your tooltips _impossible to trigger for keyb...

(QB_NEW_EN)


[grammar] ~61-~61: There might be a mistake here.
Context: ...ound, you’ll want to trigger the tooltip from a wrapper <div> or <span>, idea...

(QB_NEW_EN)


[grammar] ~62-~62: There might be a mistake here.
Context: ...oard-focusable using tabindex="0", and override the pointer-events on the dis...

(QB_NEW_EN)


[grammar] ~67-~67: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)


[grammar] ~68-~68: There might be a mistake here.
Context: ...ht, right-start, and right-end` from [@floating-ui/vue](https://floating-ui.c...

(QB_NEW_EN)


[grammar] ~85-~85: There might be a mistake here.
Context: ...and make the tooltip show and hide based on click events, set the click prop ...

(QB_NEW_EN)


[grammar] ~91-~91: There might be a mistake here.
Context: ...ternately, you can set the manual prop and use the [v-model](#programmatic-co...

(QB_NEW_EN)


[grammar] ~92-~92: There might be a mistake here.
Context: ...`](#programmatic-control-via-v-model) or exposed functions ...

(QB_NEW_EN)


[grammar] ~97-~97: There might be a mistake here.
Context: ... title or body props, or the title or default slots. ::: info NOTE Unlik...

(QB_NEW_EN)


[grammar] ~100-~100: There might be a mistake here.
Context: ...itleordefault` slots. ::: info NOTE Unlike [popover content](/docs/component...

(QB_NEW_EN)


[grammar] ~101-~101: There might be a mistake here.
Context: ...a separate title and body, tooltips only have one location to place the content. ...

(QB_NEW_EN)


[grammar] ~110-~110: There might be a mistake here.
Context: ... title-class prop or body-class prop (depending on which prop or slot you use...

(QB_NEW_EN)


[grammar] ~115-~115: There might be a mistake here.
Context: ....com/docs/5.3/helpers/color-background/) utilities to change the variant of the t...

(QB_NEW_EN)


[grammar] ~122-~122: There might be a mistake here.
Context: ...ctives/BTooltip) docs on applying custom classes to the directive version. For f...

(QB_NEW_EN)


[grammar] ~131-~131: There might be a mistake here.
Context: ...etting it to true will show the tooltip, while setting it to false will hide the ...

(QB_NEW_EN)


[grammar] ~145-~145: There might be a mistake here.
Context: ...w. The boundary and boundary-padding props can be used to control what's cons...

(QB_NEW_EN)


[grammar] ~152-~152: There might be a mistake here.
Context: ...ipulation of the state of the component. These are accessed through the [template...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (6)
apps/docs/src/docs/components/tooltip.md (6)

5-8: Correct controller reference (usePopoverController) — good catch

Referencing usePopoverController for programmatic control is correct since BTooltip is a thin wrapper over BPopover and shares the controller. This aligns with our prior learnings.


67-71: Correct placement names (start/end) — looks good

The placements correctly use *-start/*-end (not *-left/*-right), matching Floating UI and Bootstrap v5 conventions.


97-104: Content API Verification Complete
The body prop is included in popoverSharedProps (lines 30–34 in popover-shared.ts) and is thus exposed on BTooltip. The title and default slots are also defined in tooltip.data.ts. No changes to the documented API are required.


84-87: Docs correctly reference the click boolean prop
The click prop is defined in apps/docs/src/utils/popover-shared.ts (type: boolean, default: false) and is inherited by BTooltip. No changes required.


6-6: Ignore directive doc link casing suggestion

The directive docs routes use the file name casing (e.g. /docs/directives/BTooltip, /docs/directives/BPopover, etc.), which matches the generated routes and existing links across the docs. Converting these to lowercase would break navigation. No changes are needed.

Likely an incorrect or invalid review comment.


131-139: Tooltip initial visibility prop and v-model usage are correct

The show prop is defined in showHideProps to trigger an initial render animation, and the default v-model key is modelValue (with the update:model-value emit). The examples in tooltip.md correctly demonstrate using

  • v-model for reactive visibility
  • show for initial open-on-mount

No changes needed.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/docs/src/docs/components/tooltip.md (1)

159-161: Fix import: tooltip.data.ts exports a default, not a named data

Using a named import will cause a runtime error in the docs page.

-<script setup lang="ts">
-import {data} from '../../data/components/tooltip.data'
+<script setup lang="ts">
+import data from '../../data/components/tooltip.data'
🧹 Nitpick comments (6)
apps/docs/src/docs/components/tooltip.md (4)

29-36: Remove redundant “target” lead-in sentence

The two consecutive lines introduce the same list twice; tighten to a single introduction for clarity.

-The target is the _trigger_ element (or component) that will trigger the tooltip. The target is
-specified via the `target` slot or prop, and can be any of the following:
-
-The `target` prop may be any of the following:
+The target is the _trigger_ element (or component) specified via the `target` slot or prop. It may be any of the following:

34-36: Minor grammar: “querySelector” example formatting

Use “i.e.” without the preceding period and keep it inline with the sentence.

-- A string with querySelector. (i.e. '#toolbar > div:first-child')
+- A string with a query selector (i.e. '#toolbar > div:first-child')

90-94: Prefer “Alternatively” and streamline phrasing

Minor wording/grammar improvements.

-To take finer control of tooltip visibility, you can use the [useToggle](/docs/composables/useToggle) or
-[usePopoverController](/docs/composables/usePopoverController). Alternately, you can set the `manual` prop
-and use the [`v-model`](#programmatic-control-via-v-model) or
-[exposed functions](#exposed-functions) to control visibility.
+To take finer control of tooltip visibility, you can use [useToggle](/docs/composables/useToggle) or
+[usePopoverController](/docs/composables/usePopoverController). Alternatively, set the `manual` prop and use
+[`v-model`](#programmatic-control-via-v-model) or the [exposed functions](#exposed-functions) to control visibility.

90-94: Ensure manual prop appears in the API table (tooltip.data.ts)

We reference manual here; confirm the ComponentReference data includes it (via shared popover props). If missing, add it so the docs and API table are consistent.

apps/docs/src/docs/components/popover.md (2)

31-33: Minor grammar: “querySelector” example formatting

Match the same nit fix as in tooltip docs for consistency and clarity.

-- A string with querySelector. (i.e. '#toolbar > div:first-child')
+- A string with a query selector (i.e. '#toolbar > div:first-child')

22-22: Minor grammar: add comma in inline positioning sentence

Small readability tweak.

-When triggered from hyperlinks that span multiple lines, popovers will be centered. Set the `inline` prop to improve the positioning see the [Floating UI docs](https://floating-ui.com/docs/inline) for details.
+When triggered from hyperlinks that span multiple lines, popovers will be centered. Set the `inline` prop to improve positioning, see the [Floating UI docs](https://floating-ui.com/docs/inline) for details.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 44564c7 and 8c8fd1c.

📒 Files selected for processing (2)
  • apps/docs/src/docs/components/popover.md (5 hunks)
  • apps/docs/src/docs/components/tooltip.md (1 hunks)
🧰 Additional context used
🧠 Learnings (3)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/docs/components/tooltip.md
  • apps/docs/src/docs/components/popover.md
📚 Learning: 2025-04-28T22:48:46.738Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.

Applied to files:

  • apps/docs/src/docs/components/popover.md
🪛 LanguageTool
apps/docs/src/docs/components/tooltip.md

[grammar] ~20-~20: There might be a mistake here.
Context: ...Tooltips are non-interactive by default. - Tooltips rely on the 3rd party library [...

(QB_NEW_EN)


[grammar] ~29-~29: There might be a mistake here.
Context: ... will trigger the tooltip. The target is specified via the target slot or prop,...

(QB_NEW_EN)


[grammar] ~35-~35: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~42-~42: There might be a mistake here.
Context: ...>, , etc., while SVGElementrefers to` or supported child ele...

(QB_NEW_EN)


[grammar] ~52-~52: There might be a mistake here.
Context: ...ts for keyboard users. In addition, most assistive technologies currently do not ...

(QB_NEW_EN)


[grammar] ~55-~55: There might be a mistake here.
Context: ...for your tooltip, as this will make your tooltips _impossible to trigger for keyb...

(QB_NEW_EN)


[grammar] ~61-~61: There might be a mistake here.
Context: ...ound, you’ll want to trigger the tooltip from a wrapper <div> or <span>, idea...

(QB_NEW_EN)


[grammar] ~62-~62: There might be a mistake here.
Context: ...oard-focusable using tabindex="0", and override the pointer-events on the dis...

(QB_NEW_EN)


[grammar] ~67-~67: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)


[grammar] ~68-~68: There might be a mistake here.
Context: ...ht, right-start, and right-end` from [@floating-ui/vue](https://floating-ui.c...

(QB_NEW_EN)


[grammar] ~85-~85: There might be a mistake here.
Context: ...and make the tooltip show and hide based on click events, set the click prop ...

(QB_NEW_EN)


[grammar] ~91-~91: There might be a mistake here.
Context: ...ternately, you can set the manual prop and use the [v-model](#programmatic-co...

(QB_NEW_EN)


[grammar] ~92-~92: There might be a mistake here.
Context: ...`](#programmatic-control-via-v-model) or exposed functions ...

(QB_NEW_EN)


[grammar] ~97-~97: There might be a mistake here.
Context: ... title or body props, or the title or default slots. ::: info NOTE Unlik...

(QB_NEW_EN)


[grammar] ~100-~100: There might be a mistake here.
Context: ...itleordefault` slots. ::: info NOTE Unlike [popover content](/docs/component...

(QB_NEW_EN)


[grammar] ~101-~101: There might be a mistake here.
Context: ...a separate title and body, tooltips only have one location to place the content. ...

(QB_NEW_EN)


[grammar] ~110-~110: There might be a mistake here.
Context: ... title-class prop or body-class prop (depending on which prop or slot you use...

(QB_NEW_EN)


[grammar] ~115-~115: There might be a mistake here.
Context: ....com/docs/5.3/helpers/color-background/) utilities to change the variant of the t...

(QB_NEW_EN)


[grammar] ~122-~122: There might be a mistake here.
Context: ...ctives/BTooltip) docs on applying custom classes to the directive version. For f...

(QB_NEW_EN)


[grammar] ~131-~131: There might be a mistake here.
Context: ...etting it to true will show the tooltip, while setting it to false will hide the ...

(QB_NEW_EN)


[grammar] ~145-~145: There might be a mistake here.
Context: ...w. The boundary and boundary-padding props can be used to control what's cons...

(QB_NEW_EN)


[grammar] ~152-~152: There might be a mistake here.
Context: ...ipulation of the state of the component. These are accessed through the [template...

(QB_NEW_EN)

apps/docs/src/docs/components/popover.md

[grammar] ~32-~32: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~46-~46: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (4)
apps/docs/src/docs/components/tooltip.md (1)

5-7: Directive link and controller reference look correct

  • Typo from prior revision is resolved (v-b-tooltip), and link now points to usePopoverController per product decision that no separate tooltip controller exists.
apps/docs/src/docs/components/popover.md (3)

7-9: LGTM on controller mention

Clear directive link and correct composable path for programmatic control.


18-19: Teleport default guidance and floating-ui link look good

Accurately reflects current defaults and library reference.


46-49: Placement values correctly use start/end (not left/right)

Accurate with floating-ui and Bootstrap v5 semantics.

@github-actions github-actions bot removed the stale There has been no additional replies or questions and the thread is assumed closed label Aug 20, 2025
@dwgray dwgray mentioned this pull request Aug 20, 2025
6 tasks
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/docs/src/docs/components/popover.md (1)

141-143: VitePress data loading: named import is correct

The named import import {data} from '../../data/components/popover.data' matches VitePress’s .data.ts build-time data loading behavior. Leaving as-is is correct.

🧹 Nitpick comments (1)
apps/docs/src/docs/components/popover.md (1)

32-32: Tighten wording: use “query selector string” and e.g.

Minor copyedit to improve clarity and fix the i.e./e.g. usage.

-- A string with querySelector. (i.e. '#toolbar > div:first-child')
+- A query selector string (e.g., '#toolbar > div:first-child')
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8c8fd1c and db4a806.

📒 Files selected for processing (2)
  • apps/docs/src/docs/components/popover.md (5 hunks)
  • apps/docs/src/docs/migration-guide.md (1 hunks)
🧰 Additional context used
🧠 Learnings (9)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('popover') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this prop spreading/inheritance mechanism.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('tooltip') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this inheritance mechanism.
📚 Learning: 2025-08-19T23:30:07.034Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('popover') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this prop spreading/inheritance mechanism.

Applied to files:

  • apps/docs/src/docs/components/popover.md
  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-08-19T23:30:07.034Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('tooltip') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this inheritance mechanism.

Applied to files:

  • apps/docs/src/docs/components/popover.md
  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/docs/components/popover.md
  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-08-19T23:25:20.631Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/popover.md:141-143
Timestamp: 2025-08-19T23:25:20.631Z
Learning: In VitePress projects, .data.ts files use build-time data loading where the file exports a `load()` function, and VitePress makes the loaded data available as a named export `{data}`. The correct import syntax is `import {data} from './file.data'`, not a default import.

Applied to files:

  • apps/docs/src/docs/components/popover.md
📚 Learning: 2025-08-19T23:30:52.865Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-08-19T23:30:52.865Z
Learning: VitePress .data.ts files use build-time data loading where the file exports a default object with a load() function, and VitePress processes this at build time to make the loaded data available as a named export {data}. The correct import syntax is `import {data} from './file.data'`, not a default import, even though the .data.ts file itself uses export default.

Applied to files:

  • apps/docs/src/docs/components/popover.md
📚 Learning: 2025-04-28T22:48:46.738Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2425
File: packages/bootstrap-vue-next/src/plugins/popoverController/index.ts:138-140
Timestamp: 2025-04-28T22:48:46.738Z
Learning: In bootstrap-vue-next, `PopoverOrchestratorParam` includes an `id` field of type `ControllerKey` through inheritance from base types. This field is declared in the `BvControllerOptions` interface and propagated through the type hierarchy.

Applied to files:

  • apps/docs/src/docs/components/popover.md
📚 Learning: 2025-06-05T11:43:10.793Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-05-23T23:58:07.165Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
🪛 LanguageTool
apps/docs/src/docs/components/popover.md

[grammar] ~32-~32: There might be a mistake here.
Context: ...tor. (i.e. '#toolbar > div:first-child') - A reference (ref) to an HTMLElement or...

(QB_NEW_EN)


[grammar] ~46-~46: There might be a mistake here.
Context: ...ntprop:top, top-start, top-end, bottom, bottom-start, bottom-end`, ...

(QB_NEW_EN)

apps/docs/src/docs/migration-guide.md

[grammar] ~868-~868: There might be a mistake here.
Context: ... floating-ui to handle placement. The ability for th...

(QB_NEW_EN)


[grammar] ~873-~873: There might be a mistake here.
Context: ... use to manage popovers has changed. See [our documentation](/docs/components/pop...

(QB_NEW_EN)


[grammar] ~874-~874: There might be a mistake here.
Context: ... floating-ui for details. The variant prop has bee...

(QB_NEW_EN)


[grammar] ~878-~878: There might be a mistake here.
Context: ...nts/tooltip#custom-classes-and-variants) for details. The disabled prop and [P...

(QB_NEW_EN)


[grammar] ~883-~883: There might be a mistake here.
Context: ... to disable BootstrapVueNext's automatic trigger handling and if your own code sh...

(QB_NEW_EN)


[grammar] ~884-~884: There might be a mistake here.
Context: ...s well. If you believe that implementing full parity with the BootstrapVue featur...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (3)
apps/docs/src/docs/components/popover.md (3)

7-8: Good call-out to programmatic control via composable

Referencing usePopoverController here improves discoverability for devs needing imperative control.


18-19: Teleport guidance and default are clear

Calling out teleportTo/teleportDisabled with an explicit default (undefined) is helpful and Nuxt-agnostic. LGTM.


46-49: Placement list and terminology look consistent with Floating UI

The switch to start/end variants and inclusion of auto placements is accurate. No issues.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
apps/docs/src/docs/migration-guide.md (2)

859-867: Tooltip: terminology fixes and correct links — looks good

The switch to “tooltip” terminology, the teleportTo replacement for container, and the custom-class → body-class/title-class notes with the correct tooltip docs link are on point.


873-880: Trigger behavior: correct cross-link to tooltip triggers

The link now points to /components/tooltip#triggers (not popover), which resolves the earlier confusion. Wording is clear.

🧹 Nitpick comments (4)
apps/docs/src/docs/migration-guide.md (4)

887-887: Clarify delay semantics and add period

Minor clarity/punctuation tweak: explicitly say “for both show and hide,” and end with a period.

-`delay` now defaults to 0 rather than 50ms
+`delay` now defaults to 0 for both show and hide, rather than 50ms.

889-889: Punctuation nit: add terminal period

Stay consistent with sentence punctuation.

-The default for `placement` is now `top` rather than `right`
+The default for `placement` is now `top` rather than `right`.

726-726: Popover section references usePopover but Tooltip uses usePopoverController — align for consistency

Elsewhere (including this tooltip block) you reference usePopoverController as the programmatic alternative. Consider updating the popover section to match.

-`$root` events are deprecated. See [usePopover](/docs/composables/usePopover) as an alternative.
+`$root` events are deprecated. See [usePopoverController](/docs/composables/usePopoverController) as an alternative.

881-886: Manual mode guidance is accurate; clarify programmatic control path

I’ve verified that the manual prop is indeed exposed for BTooltip via popoverSharedProps('popover') in apps/docs/src/data/components/tooltip.data.ts, and that the migration guide already links to usePopoverController. To make it even clearer how to control visibility programmatically, consider the following small tweak in apps/docs/src/docs/migration-guide.md around line 884:

- Use `manual=true` to disable BootstrapVueNext’s automatic trigger handling. If your application shows the tooltip programmatically, disable those automatic triggers as well.
+ Use `manual=true` to disable BootstrapVueNext’s automatic trigger handling. When showing or hiding programmatically (via `v-model` or `usePopoverController`), disable automatic triggers as well.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between db4a806 and 457aac4.

📒 Files selected for processing (1)
  • apps/docs/src/docs/migration-guide.md (1 hunks)
🧰 Additional context used
🧠 Learnings (6)
📓 Common learnings
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('popover') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this prop spreading/inheritance mechanism.
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('tooltip') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this inheritance mechanism.
📚 Learning: 2025-08-19T23:30:07.034Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('popover') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this prop spreading/inheritance mechanism.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-08-19T23:30:07.034Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:90-94
Timestamp: 2025-08-19T23:30:07.034Z
Learning: In bootstrap-vue-next docs, tooltip.data.ts uses popoverSharedProps('tooltip') to define props, which includes the 'manual' prop through the shared props structure from popover-shared.ts. The manual prop is available in BTooltip documentation through this inheritance mechanism.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-06-26T19:46:19.333Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2762
File: apps/docs/src/docs/components/tooltip.md:0-0
Timestamp: 2025-06-26T19:46:19.333Z
Learning: BTooltip is a very thin wrapper around BPopover in bootstrap-vue-next. There is no separate `useTooltipController` composable - the `usePopoverController` composable can be used to programmatically control both popovers and tooltips.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-06-05T11:43:10.793Z
Learnt from: xvaara
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:622-626
Timestamp: 2025-06-05T11:43:10.793Z
Learning: In migration guides, links to the old/previous version's documentation (like bootstrap-vue.org) are appropriate and helpful when explaining deprecated features, as they provide users with reference points for what they're migrating from.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
📚 Learning: 2025-05-23T23:58:07.165Z
Learnt from: dwgray
PR: bootstrap-vue-next/bootstrap-vue-next#2701
File: apps/docs/src/docs/migration-guide.md:630-632
Timestamp: 2025-05-23T23:58:07.165Z
Learning: The `<NotYetImplemented/>` component in the bootstrap-vue-next documentation automatically renders text indicating "Not Yet Implemented", so additional explanatory text about features not being implemented is redundant when this component is used.

Applied to files:

  • apps/docs/src/docs/migration-guide.md
🪛 LanguageTool
apps/docs/src/docs/migration-guide.md

[grammar] ~868-~868: There might be a mistake here.
Context: ... Floating UI to handle placement. The ability for th...

(QB_NEW_EN)


[grammar] ~873-~873: There might be a mistake here.
Context: ...e tooltips and popovers has changed. See [our documentation](/docs/components/too...

(QB_NEW_EN)


[grammar] ~874-~874: There might be a mistake here.
Context: ... Floating UI for details. The variant prop has bee...

(QB_NEW_EN)


[grammar] ~878-~878: There might be a mistake here.
Context: ...nts/tooltip#custom-classes-and-variants) for details. The disabled prop and [P...

(QB_NEW_EN)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (2)
apps/docs/src/docs/migration-guide.md (2)

868-872: Deprecations read clearly

  • “fallback-placement” deprecation with “Floating UI” capitalization
  • Deprecating function-valued target

Both are concise and accurate.


891-891: Correct composable referenced — good

Linking to usePopoverController for $root-event replacement aligns with the current composable strategy and with tooltip/popover unification.

@VividLemon VividLemon merged commit 4fd49d5 into bootstrap-vue-next:main Aug 26, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Docs: BTooltip component needs to be documented
3 participants