]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Add VCP to build and docs guides (#42157)
authorMark Otto <markd.otto@gmail.com>
Thu, 12 Mar 2026 17:03:51 +0000 (10:03 -0700)
committerGitHub <noreply@github.com>
Thu, 12 Mar 2026 17:03:51 +0000 (10:03 -0700)
* Add VCP to build and docsguides

* fix

17 files changed:
README.md
build/generate-sri.mjs
build/rollup.config.mjs
config.yml
package.json
site/data/plugins.yml
site/src/content/docs/customize/optimize.mdx
site/src/content/docs/customize/rtl.mdx
site/src/content/docs/getting-started/install.mdx
site/src/content/docs/getting-started/javascript.mdx
site/src/content/docs/guides/npm.mdx
site/src/content/docs/guides/parcel.mdx
site/src/content/docs/guides/quickstart.mdx
site/src/content/docs/guides/vite.mdx
site/src/content/docs/guides/webpack.mdx
site/src/libs/config.ts
site/src/libs/data.ts

index 6e2c6c695c2af2fb07852af43079d595c3709ad4..5d0885df546d08cea6e50d0058bc5069ce6009cf 100644 (file)
--- a/README.md
+++ b/README.md
@@ -115,7 +115,7 @@ Within the download you’ll find the following directories and files, logically
   ```
 </details>
 
-We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Floating UI](https://floating-ui.com/). All CSS files work for both LTR and RTL layouts thanks to logical properties—simply set `dir="rtl"` on your HTML element.
+We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). [Source maps](https://web.dev/articles/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Bundled JS files (`bootstrap.bundle.js` and minified `bootstrap.bundle.min.js`) include [Floating UI](https://floating-ui.com/) and [Vanilla Calendar Pro](https://vanilla-calendar.pro/). All CSS files work for both LTR and RTL layouts thanks to logical properties—simply set `dir="rtl"` on your HTML element.
 
 
 ## Bugs and feature requests
index c3d76667b728a10d0786a4ab67beec57bda189e7..ab9409ab5549bf745045b458c325402f85142a3e 100644 (file)
@@ -40,6 +40,10 @@ const files = [
   {
     file: 'node_modules/@floating-ui/dom/dist/floating-ui.dom.umd.min.js',
     configPropertyName: 'floating_ui_hash'
+  },
+  {
+    file: 'node_modules/vanilla-calendar-pro/index.js',
+    configPropertyName: 'vanilla_calendar_pro_hash'
   }
 ]
 
index 3483557f99ebde185651c1c871f225e4d378fb24..a8da028e9890ad75999cd89e43f941ee07613fc8 100644 (file)
@@ -12,7 +12,7 @@ const BUNDLE = process.env.BUNDLE === 'true'
 const ESM = process.env.ESM === 'true'
 
 let destinationFile = `bootstrap${ESM ? '.esm' : ''}`
-const external = ['@floating-ui/dom']
+const external = ['@floating-ui/dom', 'vanilla-calendar-pro']
 const plugins = [
   babel({
     // Only transpile our source code
@@ -22,14 +22,16 @@ const plugins = [
   })
 ]
 const globals = {
-  '@floating-ui/dom': 'FloatingUIDOM'
+  '@floating-ui/dom': 'FloatingUIDOM',
+  'vanilla-calendar-pro': 'VanillaCalendarPro'
 }
 
 if (BUNDLE) {
   destinationFile += '.bundle'
-  // Remove last entry in external array to bundle Floating UI
-  external.pop()
+  // Remove all entries in external array to bundle Floating UI and Vanilla Calendar Pro
+  external.length = 0
   delete globals['@floating-ui/dom']
+  delete globals['vanilla-calendar-pro']
   plugins.push(
     replace({
       'process.env.NODE_ENV': '"production"',
index 2715816227baa2c12a1ff46cc61c4e03cd7393e8..506fae1f5484cbc8fcf4d3b0fd04b942dd7059a1 100644 (file)
@@ -43,6 +43,9 @@ cdn:
   floating_ui:          "https://cdn.jsdelivr.net/npm/@floating-ui/dom@1.7.0/dist/floating-ui.dom.umd.min.js"
   floating_ui_hash:     "sha384-R7p1RqabZNhI+RdPNIzTouzd/LBVorZ0Tn3ApcogSOk+HF3o+P0HIenrUw/n0MOj"
   floating_ui_esm:      "https://cdn.jsdelivr.net/npm/@floating-ui/dom@1.7.0/dist/floating-ui.dom.esm.min.js"
+  vanilla_calendar_pro: "https://cdn.jsdelivr.net/npm/vanilla-calendar-pro@3.1.0/index.js"
+  vanilla_calendar_pro_hash: "sha384-uufJjV19/4zCvBe4t3zJFWdYpBIrAC78Ef5NN2i4VjmTowSYuAx+m56vF6ccI4V3"
+  vanilla_calendar_pro_esm: "https://cdn.jsdelivr.net/npm/vanilla-calendar-pro@3.1.0/index.mjs"
 
 anchors:
   min:                  2
index 7bcb0c57239eb1dbd0932679eed1dfb7915881d9..60fa15a04d7a18d469105621d0b18051cae5c56e 100644 (file)
     "shim": {
       "js/bootstrap": {
         "deps": [
-          "@floating-ui/dom"
+          "@floating-ui/dom",
+          "vanilla-calendar-pro"
         ]
       }
     },
     "dependencies": {},
     "peerDependencies": {
-      "@floating-ui/dom": "^1.7.0"
+      "@floating-ui/dom": "^1.7.0",
+      "vanilla-calendar-pro": "^3.1.0"
     }
   },
   "overrides": {
index 3077d3a36c201104f5bc20bda92ed7802e4be1dc..d4c56257df7cf75185f21b7cf0e94bcee4453b4c 100644 (file)
   description: Expand and collapse areas of content, or create accordions.
   link: components/collapse/
 
+- name: Datepicker
+  description: Add date selection to form inputs. Built on Vanilla Calendar Pro.
+  link: forms/datepicker/
+
 - name: Dialog
   description: Add flexible and responsive dialogs to your project.
   link: components/dialog/
index 195f2e3ba84e8f653e7844e5cbe183c0c7db2c42..6e92ee0d6e9534f35fbcf4ffcd8776a9e8b61538 100644 (file)
@@ -14,7 +14,7 @@ If you’re not using a component, comment it out or delete it entirely. For exa
 
 ## Lean JavaScript
 
-Bootstrap’s JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependency (Floating UI) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you’re customizing via Sass, be sure to remove related JavaScript.
+Bootstrap’s JavaScript includes every component in our primary dist files (`bootstrap.js` and `bootstrap.min.js`), and even our primary dependencies (Floating UI and Vanilla Calendar Pro) with our bundle files (`bootstrap.bundle.js` and `bootstrap.bundle.min.js`). While you’re customizing via Sass, be sure to remove related JavaScript.
 
 For instance, assuming you’re using your own JavaScript bundler like Webpack, Parcel, or Vite, you’d only import the JavaScript you plan on using. In the example below, we show how to just include our dialog JavaScript:
 
@@ -35,7 +35,7 @@ import 'bootstrap/js/dist/dialog';
 // import 'bootstrap/js/dist/tooltip';
 ```
 
-This way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing dropdowns, tooltips or popovers, be sure to list the Floating UI dependency in your `package.json` file.
+This way, you’re not including any JavaScript you don’t intend to use for components like buttons, carousels, and tooltips. If you’re importing dropdowns, tooltips or popovers, be sure to list the Floating UI dependency in your `package.json` file. If you’re using the datepicker, be sure to also list the Vanilla Calendar Pro dependency.
 
 <Callout>
 **Heads up!** Files in `bootstrap/js/dist` use the **default export**. To use them, do the following:
index 74ca2b505e36969f35d192bda99c97f6632a0c9f..45be8c8bc637efeca7a0395db9b7a7c1692058df 100644 (file)
@@ -89,12 +89,13 @@ Here's a modified RTL starter template:
 
     <!-- Optional JavaScript; choose one of the two! -->
 
-    <!-- Option 1: Bootstrap Bundle with Floating UI -->
+    <!-- Option 1: Bootstrap Bundle with Floating UI and Vanilla Calendar Pro -->
     <script src="[[config:cdn.js_bundle]]" integrity="[[config:cdn.js_bundle_hash]]" crossorigin="anonymous"></script>
 
-    <!-- Option 2: Separate Floating UI and Bootstrap JS -->
+    <!-- Option 2: Separate Floating UI, Vanilla Calendar Pro, and Bootstrap JS -->
     <!--
     <script src="[[config:cdn.floating_ui]]" integrity="[[config:cdn.floating_ui_hash]]" crossorigin="anonymous"></script>
+    <script src="[[config:cdn.vanilla_calendar_pro]]" integrity="[[config:cdn.vanilla_calendar_pro_hash]]" crossorigin="anonymous"></script>
     <script src="[[config:cdn.js]]" integrity="[[config:cdn.js_hash]]" crossorigin="anonymous"></script>
     -->
   </body>
index 19b0eae953bed7c53b9a41c8c53e0a76d50fb1f7..13136ee19db6bf9785dc78f85a80efa93989b8de 100644 (file)
@@ -83,10 +83,11 @@ Here are our primary CDN links for CSS and JavaScript:
 <script src="[[config:cdn.js_bundle]]" integrity="[[config:cdn.js_bundle_hash]]" crossorigin="anonymous"></script>
 ```
 
-If you’re using our compiled JavaScript and prefer to include Floating UI separately, add Floating UI before our JS, via a CDN preferably.
+If you’re using our compiled JavaScript and prefer to include Floating UI and Vanilla Calendar Pro separately, add them before our JS, via a CDN preferably.
 
 ```html
 <script src="[[config:cdn.floating_ui]]" integrity="[[config:cdn.floating_ui_hash]]" crossorigin="anonymous"></script>
+<script src="[[config:cdn.vanilla_calendar_pro]]" integrity="[[config:cdn.vanilla_calendar_pro_hash]]" crossorigin="anonymous"></script>
 <script src="[[config:cdn.js]]" integrity="[[config:cdn.js_hash]]" crossorigin="anonymous"></script>
 ```
 
@@ -94,7 +95,7 @@ If you’re using our compiled JavaScript and prefer to include Floating UI sepa
 | File type | URL |
 | --- | --- |
 | CSS | [`[[config:cdn.css]]`]([[config:cdn.css]]) |
-| JS (with Floating UI) | [`[[config:cdn.js_bundle]]`]([[config:cdn.js_bundle]]) |
+| JS bundle (with Floating UI and Vanilla Calendar Pro) | [`[[config:cdn.js_bundle]]`]([[config:cdn.js_bundle]]) |
 </BsTable>
 
 ### Using CDNs
@@ -130,7 +131,7 @@ You can also do the old fashioned thing and download Bootstrap manually. Choose
 <BsTable>
 | Type | Description | Link |
 | --- | --- | --- |
-| <strong class="text-nowrap">Distribution files</strong> | Ready-to-use compiled and minified CSS and JavaScript files. Doesn't include documentation, source files, or dependencies like Floating UI. | <a href="[[config:download.dist]]" class="btn-subtle theme-accent btn-sm">Download</a> |
+| <strong class="text-nowrap">Distribution files</strong> | Ready-to-use compiled and minified CSS and JavaScript files. Doesn't include documentation, source files, or dependencies like Floating UI and Vanilla Calendar Pro. | <a href="[[config:download.dist]]" class="btn-subtle theme-accent btn-sm">Download</a> |
 | <strong class="text-nowrap">Source files</strong> | Sass, JavaScript, and documentation files for compiling with your own asset pipeline. Requires [Sass compiler]([[docsref:/guides/contribute#sass]]), [Autoprefixer](https://github.com/postcss/autoprefixer), and a JavaScript bundler like [Rollup](https://rollupjs.org/) or [Webpack](https://webpack.js.org/). | <a href="[[config:download.source]]" class="btn-subtle theme-accent btn-sm">Download</a> |
 </BsTable>
 
index 031540337a5d0785953c95bf00f42350525ab1d4..8d6becc31d0ab1d51b3f0185dab8579d6374776f 100644 (file)
@@ -6,13 +6,14 @@ toc: true
 
 ## JS components
 
-Curious which components explicitly require our JavaScript and Floating UI?
+Curious which components explicitly require our JavaScript and Floating UI or Vanilla Calendar Pro?
 
 - Accordions for extending our Collapse plugin
 - Alerts for dismissing
 - Buttons for toggling states and checkbox/radio functionality
 - Carousel for all slide behaviors, controls, and indicators
 - Collapse for toggling visibility of content
+- Datepicker for date selection (also requires [Vanilla Calendar Pro](https://vanilla-calendar.pro/))
 - Dropdowns for displaying and positioning (also requires [Floating UI](https://floating-ui.com/))
 - Modals for displaying, positioning, and scroll behavior
 - Navbar for extending our Collapse and Offcanvas plugins to implement responsive behaviors
@@ -59,19 +60,21 @@ We provide a version of Bootstrap built as `ESM` (`bootstrap.esm.js` and `bootst
 </script>
 ```
 
-Compared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. [Read more about JS modules in the browser.](https://v8.dev/features/modules#specifiers) That’s why we use `'bootstrap.esm.min.js'` instead of `'bootstrap'` above. However, this is further complicated by our Floating UI dependency, which imports Floating UI into our JavaScript like so:
+Compared to JS bundlers, using ESM in the browser requires you to use the full path and filename instead of the module name. [Read more about JS modules in the browser.](https://v8.dev/features/modules#specifiers) That’s why we use `'bootstrap.esm.min.js'` instead of `'bootstrap'` above. However, this is further complicated by our Floating UI and Vanilla Calendar Pro dependencies, which are imported into our JavaScript like so:
 
 ```js
 import * as Popper from "@floating-ui/dom"
+import { Calendar } from "vanilla-calendar-pro"
 ```
 
 If you try this as-is, you’ll see an error in the console like the following:
 
 ```text
 Uncaught TypeError: Failed to resolve module specifier "@floating-ui/dom". Relative references must start with either "/", "./", or "../".
+Uncaught TypeError: Failed to resolve module specifier "vanilla-calendar-pro". Relative references must start with either "/", "./", or "../".
 ```
 
-To fix this, you can use an `importmap` to resolve the arbitrary module names to complete paths. If your [targeted browsers](https://caniuse.com/?search=importmap) do not support `importmap`, you’ll need to use the [es-module-shims](https://github.com/guybedford/es-module-shims) project. Here’s how it works for Bootstrap and Floating UI:
+To fix this, you can use an `importmap` to resolve the arbitrary module names to complete paths. If your [targeted browsers](https://caniuse.com/?search=importmap) do not support `importmap`, you’ll need to use the [es-module-shims](https://github.com/guybedford/es-module-shims) project. Here’s how it works for Bootstrap, Floating UI, and Vanilla Calendar Pro:
 
 ```html
 <!doctype html>
@@ -91,6 +94,7 @@ To fix this, you can use an `importmap` to resolve the arbitrary module names to
     {
       "imports": {
         "@floating-ui/dom": "[[config:cdn.floating_ui_esm]]",
+        "vanilla-calendar-pro": "[[config:cdn.vanilla_calendar_pro_esm]]",
         "bootstrap": "https://cdn.jsdelivr.net/npm/bootstrap@[[config:current_version]]/dist/js/bootstrap.esm.min.js"
       }
     }
@@ -108,7 +112,7 @@ To fix this, you can use an `importmap` to resolve the arbitrary module names to
 
 Some plugins and CSS components depend on other plugins. If you include plugins individually, make sure to check for these dependencies in the docs.
 
-Our dropdowns, popovers, and tooltips also depend on [Floating UI](https://floating-ui.com/).
+Our dropdowns, popovers, and tooltips also depend on [Floating UI](https://floating-ui.com/). Our datepicker also depends on [Vanilla Calendar Pro](https://vanilla-calendar.pro/).
 
 ## Data attributes
 
index ff823a7b1c60fe37c9e83f261eaa08e813cc0dcf..6d3472696957f8de6b67cafa9cba4e963ed656bf 100644 (file)
@@ -26,10 +26,10 @@ We’re building a npm project with Bootstrap from scratch, so there are some pr
    npm init -y
    ```
 
-2. **Install Bootstrap.** Now we can install Bootstrap. We’ll also install Floating UI since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don’t plan on using those components, you can omit Floating UI here.
+2. **Install Bootstrap.** Now we can install Bootstrap. We’ll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
-   npm i --save bootstrap @floating-ui/dom
+   npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
    ```
 
 3. **Install additional dependencies.** In addition to Bootstrap, we need a few more dependencies to compile and post-process our CSS. Sass compiles our source `.scss` files into CSS, and Autoprefixer and PostCSS handle browser compatibility. We install the `postcss-cli` package so we can run PostCSS from the command line.
index 6f90b1d8249438030bbe39be4704a7b8f2670190..3b20cc8f21bb93ed1d1d016a7b0a2f937ebb89be 100644 (file)
@@ -32,10 +32,10 @@ We’re building a Parcel project with Bootstrap from scratch, so there are some
    npm i --save-dev parcel
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don’t plan on using those components, you can omit Floating UI here.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
-   npm i --save bootstrap @floating-ui/dom
+   npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
    ```
 
 Now that we have all the necessary dependencies installed, we can get to work creating the project files and importing Bootstrap.
@@ -130,7 +130,7 @@ Importing Bootstrap into Parcel requires two imports, one into our `styles.scss`
 
    *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*
 
-2. **Import Bootstrap’s JS.** Add the following to `src/js/main.js` to import all of Bootstrap’s JS. Floating UI will be imported automatically through Bootstrap.
+2. **Import Bootstrap’s JS.** Add the following to `src/js/main.js` to import all of Bootstrap’s JS. Floating UI and Vanilla Calendar Pro will be imported automatically through Bootstrap.
 
    ```js
    // Import all of Bootstrap’s JS
index 0af7c56c90239934e4e7a7b4d4b51e6727eae473..ad9c11975c7fb83d4ae7a30b4b06729b9fff8852 100644 (file)
@@ -25,7 +25,7 @@ Get started using Bootstrap in seconds by including our production-ready CSS and
    </html>
    ```
 
-2. **Include Bootstrap’s CSS and JS.** Place the `<link>` tag in the `<head>` for our CSS, and the `<script>` tag for our JavaScript bundle (including Floating UI for positioning dropdowns, popovers, and tooltips) before the closing `</body>`. Learn more about [our CDN links]([[docsref:/getting-started/install#cdn]]).
+2. **Include Bootstrap’s CSS and JS.** Place the `<link>` tag in the `<head>` for our CSS, and the `<script>` tag for our JavaScript bundle (including Floating UI for positioning dropdowns, popovers, and tooltips, and Vanilla Calendar Pro for the datepicker) before the closing `</body>`. Learn more about [our CDN links]([[docsref:/getting-started/install#cdn]]).
 
    ```html
    <!doctype html>
@@ -43,10 +43,11 @@ Get started using Bootstrap in seconds by including our production-ready CSS and
    </html>
    ```
 
-   You can also include [Floating UI](https://floating-ui.com/) and our JS separately. If you don’t plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Floating UI.
+   You can also include [Floating UI](https://floating-ui.com/) and [Vanilla Calendar Pro](https://vanilla-calendar.pro/) and our JS separately. If you don’t plan to use dropdowns, popovers, or tooltips, save some kilobytes by not including Floating UI. If you don’t plan to use the datepicker, you can omit Vanilla Calendar Pro.
 
    ```html
    <script src="[[config:cdn.floating_ui]]" integrity="[[config:cdn.floating_ui_hash]]" crossorigin="anonymous"></script>
+   <script src="[[config:cdn.vanilla_calendar_pro]]" integrity="[[config:cdn.vanilla_calendar_pro_hash]]" crossorigin="anonymous"></script>
    <script src="[[config:cdn.js]]" integrity="[[config:cdn.js_hash]]" crossorigin="anonymous"></script>
    ```
 
index 5bc72b2dd82be35696c23c4415c282107017205d..2cf4e2e1081c59f80ec14c9b2b2849403f0ba6b0 100644 (file)
@@ -32,10 +32,10 @@ We’re building a Vite project with Bootstrap from scratch, so there are some p
    npm i --save-dev vite
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don’t plan on using those components, you can omit Floating UI here.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
-   npm i --save bootstrap @floating-ui/dom
+   npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
    ```
 
 4. **Install additional dependency.** In addition to Vite and Bootstrap, we need another dependency (Sass) to properly import and bundle Bootstrap’s CSS.
@@ -148,7 +148,7 @@ In the next and final section to this guide, we’ll import all of Bootstrap’s
 
    *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*
 
-2. **Next we load the CSS and import Bootstrap’s JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap’s JS. Floating UI will be imported automatically through Bootstrap.
+2. **Next we load the CSS and import Bootstrap’s JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap’s JS. Floating UI and Vanilla Calendar Pro will be imported automatically through Bootstrap.
 
    ```js
    // Import our custom CSS
index 937d666a65bcaf0190459870ca17fbab46dfe84a..89395206db9e1994bb4a9700c7896ae82c83081b 100644 (file)
@@ -32,10 +32,10 @@ We’re building a Webpack project with Bootstrap from scratch, so there are som
    npm i --save-dev webpack webpack-cli webpack-dev-server html-webpack-plugin
    ```
 
-3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI since our dropdowns, popovers, and tooltips depend on it for their positioning. If you don’t plan on using those components, you can omit Floating UI here.
+3. **Install Bootstrap.** Now we can install Bootstrap. We'll also install Floating UI and Vanilla Calendar Pro since some of our components depend on them. If you don’t plan on using dropdowns, popovers, or tooltips, you can omit Floating UI. If you don’t plan on using the datepicker, you can omit Vanilla Calendar Pro.
 
    ```sh
-   npm i --save bootstrap @floating-ui/dom
+   npm i --save bootstrap @floating-ui/dom vanilla-calendar-pro
    ```
 
 4. **Install additional dependencies.** In addition to Webpack and Bootstrap, we need a few more dependencies to properly import and bundle Bootstrap’s CSS and JS with Webpack. These include Sass, some loaders, and Autoprefixer.
@@ -221,7 +221,7 @@ Importing Bootstrap into Webpack requires the loaders we installed in the first
 
    *You can also import our stylesheets individually if you want. [Read our Sass import docs]([[docsref:/customize/sass#importing]]) for details.*
 
-3. **Next we load the CSS and import Bootstrap’s JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap’s JS. Floating UI will be imported automatically through Bootstrap.
+3. **Next we load the CSS and import Bootstrap’s JavaScript.** Add the following to `src/js/main.js` to load the CSS and import all of Bootstrap’s JS. Floating UI and Vanilla Calendar Pro will be imported automatically through Bootstrap.
 
    ```js
    // Import our custom CSS
index 0c5b252e8c582e51c59bc8151d960e8ad00ac2c3..38d29d213cf68822d9378cd1737efc8c70403aa6 100644 (file)
@@ -29,7 +29,10 @@ const configSchema = z.object({
     js_bundle_hash: z.string(),
     floating_ui: z.string().url(),
     floating_ui_esm: z.string().url(),
-    floating_ui_hash: z.string()
+    floating_ui_hash: z.string(),
+    vanilla_calendar_pro: z.string().url(),
+    vanilla_calendar_pro_esm: z.string().url(),
+    vanilla_calendar_pro_hash: z.string()
   }),
   current_version: zVersionSemver,
   current_ruby_version: zVersionSemver,
index fb75fb938bd355ff3c8a9d87e8b0613b04dca5ad..59f5911d26f3248137ae45d01bc5144b9ff39995 100644 (file)
@@ -67,7 +67,7 @@ const dataDefinitions = {
   plugins: z
     .object({
       description: z.string(),
-      link: z.string().startsWith('components/'),
+      link: z.string().regex(/^(components|forms)\//),
       name: z.string()
     })
     .array(),