mirror of https://github.com/twbs/bootstrap.git
More docs stuff and wip edits
This commit is contained in:
parent
e09539933c
commit
785c31f79b
|
@ -18,6 +18,11 @@
|
|||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"remark": "^15.0.1",
|
||||
"remark-html": "^16.0.1",
|
||||
"yaml": "^2.7.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@astrojs/check": "^0.9.4",
|
||||
"@astrojs/markdown-remark": "^6.3.2",
|
||||
|
@ -19398,7 +19403,6 @@
|
|||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz",
|
||||
"integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"yaml": "bin.mjs"
|
||||
|
|
|
@ -205,5 +205,10 @@
|
|||
"peerDependencies": {
|
||||
"@popperjs/core": "^2.11.8"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"remark": "^15.0.1",
|
||||
"remark-html": "^16.0.1",
|
||||
"yaml": "^2.7.0"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
---
|
||||
interface Props {
|
||||
tabs: {
|
||||
id: string;
|
||||
label: string;
|
||||
content?: string;
|
||||
}[];
|
||||
activeTab?: string;
|
||||
}
|
||||
|
||||
const { tabs, activeTab } = Astro.props;
|
||||
---
|
||||
|
||||
<div class="tabs-component">
|
||||
<ul class="nav nav-underline mb-3" role="tablist">
|
||||
{tabs.map((tab) => (
|
||||
<li class="nav-item" role="presentation">
|
||||
<button
|
||||
class={`nav-link ${activeTab === tab.id ? 'active' : ''}`}
|
||||
id={`${tab.id}-tab`}
|
||||
data-bs-toggle="tab"
|
||||
data-bs-target={`#${tab.id}`}
|
||||
type="button"
|
||||
role="tab"
|
||||
aria-controls={tab.id}
|
||||
aria-selected={activeTab === tab.id}
|
||||
>
|
||||
{tab.label}
|
||||
</button>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
{tabs.map((tab) => (
|
||||
<div
|
||||
class={`tab-pane fade ${activeTab === tab.id ? 'show active' : ''}`}
|
||||
id={tab.id}
|
||||
role="tabpanel"
|
||||
aria-labelledby={`${tab.id}-tab`}
|
||||
>
|
||||
{tab.content || <slot />}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// Initialize Bootstrap tabs
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
const triggerTabList = document.querySelectorAll('[data-bs-toggle="tab"]');
|
||||
triggerTabList.forEach(triggerEl => {
|
||||
const tabTrigger = new bootstrap.Tab(triggerEl);
|
||||
triggerEl.addEventListener('click', event => {
|
||||
event.preventDefault();
|
||||
tabTrigger.show();
|
||||
});
|
||||
});
|
||||
|
||||
// Handle URL hash changes
|
||||
const handleHashChange = () => {
|
||||
const hash = window.location.hash.substring(1);
|
||||
if (hash) {
|
||||
const tab = document.querySelector(`[data-bs-target="#${hash}"]`);
|
||||
if (tab) {
|
||||
const tabTrigger = new bootstrap.Tab(tab);
|
||||
tabTrigger.show();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Initial hash check
|
||||
handleHashChange();
|
||||
|
||||
// Listen for hash changes
|
||||
window.addEventListener('hashchange', handleHashChange);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.tabs-component {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.nav-underline .nav-link {
|
||||
color: var(--bs-body-color);
|
||||
border-bottom: 2px solid transparent;
|
||||
transition: border-color 0.2s ease-in-out;
|
||||
}
|
||||
|
||||
.nav-underline .nav-link:hover {
|
||||
border-bottom-color: var(--bs-primary);
|
||||
}
|
||||
|
||||
.nav-underline .nav-link.active {
|
||||
color: var(--bs-primary);
|
||||
border-bottom-color: var(--bs-primary);
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
padding: 1rem 0;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
/*
|
||||
* Outputs badge to identify this as a breaking change from previous major version
|
||||
*/
|
||||
|
||||
interface Props {
|
||||
version: string
|
||||
}
|
||||
|
||||
const { version } = Astro.props
|
||||
---
|
||||
|
||||
<small
|
||||
class="d-inline-flex mb-3 px-2 py-1 fw-semibold bg-danger text-on-danger rounded-3"
|
||||
>Breaking Change</small
|
||||
>
|
|
@ -22,7 +22,7 @@ If you are using the `.btn` class on its own, remember to at least define some e
|
|||
|
||||
Bootstrap includes several button variants, each serving its own semantic purpose, with a few extras thrown in for more control.
|
||||
|
||||
<Example class="grid gap-2" style="--bs-columns: 4;" code={[...getData('theme-colors').map((themeColor) => `<button type="button" class="btn btn-${themeColor.name}-solid">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-outline">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-subtle">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-text">${themeColor.title}</button>`), `
|
||||
<Example class="grid gap-2" style="--bs-columns: 4; justify-content: start;" code={[...getData('theme-colors').map((themeColor) => `<button type="button" class="btn btn-${themeColor.name}-solid justify-self-start">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-outline justify-self-start">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-subtle justify-self-start">${themeColor.title}</button> <button type="button" class="btn btn-${themeColor.name}-text justify-self-start">${themeColor.title}</button>`), `
|
||||
<button type="button" class="btn btn-link">Link</button>`]} />
|
||||
|
||||
<Callout name="warning-color-assistive-technologies" />
|
||||
|
|
|
@ -4,6 +4,29 @@ description: Download Bootstrap to get the compiled CSS and JavaScript, source c
|
|||
toc: true
|
||||
---
|
||||
|
||||
import Tabs from '@components/Tabs.astro';
|
||||
|
||||
## CDN
|
||||
|
||||
## Install
|
||||
|
||||
<Tabs
|
||||
tabs={[
|
||||
{ id: 'tab1', label: 'npm', content: 'Default content for tab 2' },
|
||||
{ id: 'tab2', label: 'RubyGems', content: 'Default content for tab 3' },
|
||||
{ id: 'tab3', label: 'Composer', content: 'Default content for tab 4' },
|
||||
{ id: 'tab4', label: 'NuGet', content: 'Default content for tab 5' },
|
||||
]}
|
||||
activeTab="tab1"
|
||||
>
|
||||
<div slot="tab1">
|
||||
Custom content for tab 1
|
||||
</div>
|
||||
<div slot="tab2">
|
||||
Custom content for tab 2
|
||||
</div>
|
||||
</Tabs>
|
||||
|
||||
## Compiled CSS and JS
|
||||
|
||||
Download ready-to-use compiled code for **Bootstrap v[[config:current_version]]** to easily drop into your project, which includes:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
title: Get started with Bootstrap
|
||||
description: Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in minutes.
|
||||
description: Bootstrap is a powerful, feature-packed frontend toolkit. Build anything—from prototype to production—in a few minutes.
|
||||
aliases:
|
||||
- "/docs/[[config:docs_version]]/getting-started/"
|
||||
- "/docs/getting-started/"
|
||||
|
@ -12,8 +12,6 @@ toc: true
|
|||
|
||||
Get started by including Bootstrap’s production-ready CSS and JavaScript via CDN without the need for any build steps. See it in practice with this [Bootstrap CodePen demo](https://codepen.io/team/bootstrap/pen/qBamdLj).
|
||||
|
||||
<br/>
|
||||
|
||||
1. **Create a new `index.html` file in your project root.** Include the `<meta name="viewport">` tag as well for [proper responsive behavior](https://developer.mozilla.org/en-US/docs/Web/HTML/Viewport_meta_tag) in mobile devices.
|
||||
|
||||
```html
|
||||
|
|
|
@ -1,32 +1,80 @@
|
|||
---
|
||||
title: Background
|
||||
description: Convey meaning through `background-color` and add decoration with gradients.
|
||||
description: Convey meaning through `background-color`, adjust opacity with `color-mix()` utilities, and add decoration with gradients.
|
||||
toc: true
|
||||
---
|
||||
|
||||
import { getData } from '@libs/data'
|
||||
|
||||
<Callout name="warning-color-assistive-technologies" />
|
||||
|
||||
## Background color
|
||||
|
||||
Similar to the contextual text color classes, set the background of an element to any contextual class. Background utilities **do not set `color`**, so in some cases you’ll want to use `.text-*` [color utilities]([[docsref:/utilities/colors]]).
|
||||
Set the `background-color` of an element.
|
||||
|
||||
<Callout>
|
||||
Background utilities like `.bg-*` that generated from our original `$theme-colors` Sass map don’t yet respond to color modes, however, any `.bg-*-subtle` utility will. This will be resolved in v6.
|
||||
</Callout>
|
||||
- Colors are generated from the `$new-theme-colors` Sass map with a `theme-color-values()` function that looks up semantic colors based on a particular key from the Bootstrap theme config.
|
||||
- Additional colors are generated from the separate `$theme-bgs` Sass map.
|
||||
- Background utilities are generated in a two-step process to allow for dynamic alpha transparency changes:
|
||||
- We generate an attribute utility for classes that include `.bg-`, which looks like `[class*="bg-"]`, and set `background-color: var(--bs-bg)`.
|
||||
- Then, our specific color utilities set the `--bs-bg` CSS variable to the color value.
|
||||
- Background utilities don't set `color`, so you may need to use `.text-` or `.text-on-*` [color utilities]([[docsref:/utilities/colors]]).
|
||||
|
||||
<Example code={[
|
||||
...getData('theme-colors').map((themeColor) => `<div class="p-3 mb-2 bg-${themeColor.name} ${themeColor.contrast_color ? `text-${themeColor.contrast_color}` : `text-white`}">.bg-${themeColor.name}</div>
|
||||
<div class="p-3 mb-2 bg-${themeColor.name}-subtle text-${themeColor.name}-emphasis">.bg-${themeColor.name}-subtle</div>`),
|
||||
`<div class="p-3 mb-2 bg-body-secondary">.bg-body-secondary</div>
|
||||
<div class="p-3 mb-2 bg-body-tertiary">.bg-body-tertiary</div>
|
||||
<div class="p-3 mb-2 bg-body text-body">.bg-body</div>
|
||||
<div class="p-3 mb-2 bg-black text-white">.bg-black</div>
|
||||
<div class="p-3 mb-2 bg-white text-dark">.bg-white</div>
|
||||
<div class="p-3 mb-2 bg-transparent text-body">.bg-transparent</div>`
|
||||
...getData('theme-colors').map((themeColor) => `<div class="p-3 mb-2 bg-${themeColor.name} text-on-${themeColor.name}">.bg-${themeColor.name}</div>
|
||||
<div class="p-3 mb-2 bg-subtle-${themeColor.name} text-${themeColor.name}">.bg-subtle-${themeColor.name}</div>`),
|
||||
`<div class="p-3 mb-2 bg">.bg</div>
|
||||
<div class="p-3 mb-2 bg-1">.bg-1</div>
|
||||
<div class="p-3 mb-2 bg-2">.bg-2</div>
|
||||
<div class="p-3 mb-2 bg-3">.bg-3</div>`
|
||||
]} />
|
||||
|
||||
Behind the scenes, the utilities come together like this:
|
||||
|
||||
```css
|
||||
[class*="bg-"] {
|
||||
background-color: var(--bs-bg);
|
||||
}
|
||||
|
||||
.bg-success {
|
||||
--bs-bg: var(--bs-success);
|
||||
}
|
||||
```
|
||||
|
||||
<Callout name="warning-color-assistive-technologies" />
|
||||
|
||||
## Background opacity
|
||||
|
||||
<BreakingChange />
|
||||
|
||||
**Background opacity utilities have changed in v6** to use `.bg-{number}` instead of `.bg-opacity-{number}`. These new utilities are built with CSS-native `color-mix()` functions that mix the `.bg-{color}`'s CSS variable with `transparent`. This allows for real-time background opacity changes without compilation.
|
||||
|
||||
Note that changing the alpha-transparency or opacity of a background color may require you to also update the text color to ensure proper contrast.
|
||||
|
||||
<Example code={`<div class="p-2 bg-success text-on-success">.bg-success</div>
|
||||
<div class="p-2 bg-success bg-90 text-on-success">.bg-90</div>
|
||||
<div class="p-2 bg-success bg-80 text-on-success">.bg-80</div>
|
||||
<div class="p-2 bg-success bg-70 text-on-success">.bg-70</div>
|
||||
<div class="p-2 bg-success bg-60 text-on-success">.bg-60</div>
|
||||
<div class="p-2 bg-success bg-50 text-success">.bg-50</div>
|
||||
<div class="p-2 bg-success bg-40 text-success">.bg-40</div>
|
||||
<div class="p-2 bg-success bg-30 text-success">.bg-30</div>
|
||||
<div class="p-2 bg-success bg-20 text-success">.bg-20</div>
|
||||
<div class="p-2 bg-success bg-10 text-success">.bg-10</div>`} />
|
||||
|
||||
As mentioned above, this works by combining the power of multiple utilities and CSS `color-mix()`. Here's how the compiled CSS looks:
|
||||
|
||||
```css
|
||||
[class*="bg-"] {
|
||||
background-color: var(--bs-bg);
|
||||
}
|
||||
|
||||
.bg-success {
|
||||
--bs-bg: var(--bs-success);
|
||||
}
|
||||
|
||||
.bg-10 {
|
||||
background-color: color-mix(in srgb, var(--bs-bg) 10%, transparent);
|
||||
}
|
||||
```
|
||||
|
||||
## Background gradient
|
||||
|
||||
By adding a `.bg-gradient` class, a linear gradient is added as background image to the backgrounds. This gradient starts with a semi-transparent white which fades out to the bottom.
|
||||
|
@ -40,6 +88,7 @@ Do you need a gradient in your custom CSS? Just add `background-image: var(--bs-
|
|||
})}
|
||||
<div class="p-3 mb-2 bg-black bg-gradient text-white">.bg-black.bg-gradient</div>
|
||||
|
||||
<<<<<<< HEAD
|
||||
## Opacity
|
||||
|
||||
<AddedIn version="5.1.0" />
|
||||
|
@ -74,6 +123,8 @@ Or, choose from any of the `.bg-opacity` utilities:
|
|||
<div class="bg-success p-2 text-dark bg-opacity-25">This is 25% opacity success background</div>
|
||||
<div class="bg-success p-2 text-dark bg-opacity-10">This is 10% opacity success background</div>`} />
|
||||
|
||||
=======
|
||||
>>>>>>> c719573e0 (More docs stuff and wip edits)
|
||||
## CSS
|
||||
|
||||
In addition to the following Sass functionality, consider reading about our included [CSS custom properties]([[docsref:/customize/css-variables]]) (aka CSS variables) for colors and more.
|
||||
|
@ -82,7 +133,9 @@ In addition to the following Sass functionality, consider reading about our incl
|
|||
|
||||
Most `background-color` utilities are generated by our theme colors, reassigned from our generic color palette variables.
|
||||
|
||||
{/* <ScssDocs name="color-variables" file="scss/_variables.scss" /> */}
|
||||
<ScssDocs name="theme-colors" file="scss/_theme.scss" />
|
||||
|
||||
<ScssDocs name="utils-bg-color" file="scss/_utilities.scss" />
|
||||
|
||||
{/* <ScssDocs name="theme-color-variables" file="scss/_variables.scss" /> */}
|
||||
|
||||
|
|
|
@ -6,38 +6,41 @@ toc: true
|
|||
|
||||
import { getData } from '@libs/data'
|
||||
|
||||
<Callout name="warning-color-assistive-technologies" />
|
||||
|
||||
## Colors
|
||||
|
||||
Colorize text with color utilities. If you want to colorize links, you can use the [`.link-*` helper classes]([[docsref:/helpers/colored-links]]) which have `:hover` and `:focus` states.
|
||||
|
||||
<Callout>
|
||||
Color utilities like `.text-*` that generated from our original `$theme-colors` Sass map don’t yet respond to color modes, however, any `.text-*-emphasis` utility will. This will be resolved in v6.
|
||||
</Callout>
|
||||
- Colors are generated from the `$new-theme-colors` Sass map with a `theme-color-values()` function that looks up semantic colors based on a particular key from the Bootstrap theme config.
|
||||
- Additional colors are generated from the separate `$theme-texts` Sass map.
|
||||
- Text utilities are generated in a two-step process to allow for dynamic alpha transparency changes:
|
||||
- We generate an attribute utility for classes that include `.text-`, which looks like `[class*="text-"]`, and set `color: var(--bs-text)`.
|
||||
- Then, our specific color utilities set the `--bs-text` CSS variable to the color value.
|
||||
- Text utilities don't set `background-color`, so you may need to use `.bg-` [background utilities]([[docsref:/utilities/background]]) for proper contrast.
|
||||
|
||||
<Example code={[
|
||||
...getData('theme-colors').map((themeColor) => `<p class="text-${themeColor.name}${themeColor.contrast_color ? ` bg-${themeColor.contrast_color}` : ``}">.text-${themeColor.name}</p>
|
||||
<p class="text-${themeColor.name}-emphasis">.text-${themeColor.name}-emphasis</p>`),
|
||||
`
|
||||
<p class="text-body">.text-body</p>
|
||||
<p class="text-body-emphasis">.text-body-emphasis</p>
|
||||
<p class="text-body-secondary">.text-body-secondary</p>
|
||||
<p class="text-body-tertiary">.text-body-tertiary</p>
|
||||
...getData('theme-colors').map((themeColor) => `<div class="mb-2 text-${themeColor.name}${themeColor.contrast_color ? ` bg-${themeColor.contrast_color}` : ``}">.text-${themeColor.name}</div>`),
|
||||
`<div class="mb-2 text-fg">.text-fg</div>
|
||||
<div class="mb-2 text-fg-1">.text-fg-1</div>
|
||||
<div class="mb-2 text-fg-2">.text-fg-2</div>
|
||||
<div class="mb-2 text-fg-3">.text-fg-3</div>
|
||||
|
||||
<p class="text-black bg-white">.text-black</p>
|
||||
<p class="text-white bg-dark">.text-white</p>
|
||||
<p class="text-black-50 bg-white">.text-black-50</p>
|
||||
<p class="text-white-50 bg-dark">.text-white-50</p>`
|
||||
<div class="mb-2 text-black bg-white">.text-black</div>
|
||||
<div class="mb-2 text-white bg-black">.text-white</div>`
|
||||
]} />
|
||||
|
||||
<Callout type="warning">
|
||||
**Deprecation:** With the addition of `.text-opacity-*` utilities and CSS variables for text utilities, `.text-black-50` and `.text-white-50` are deprecated as of v5.1.0. They’ll be removed in v6.0.0.
|
||||
</Callout>
|
||||
Behind the scenes, the utilities come together like this:
|
||||
|
||||
<Callout type="warning">
|
||||
**Deprecation:** With the addition of the expanded theme colors and variables, the `.text-muted` utility has been deprecated as of v5.3.0. Its default value has also been reassigned to the new `--bs-secondary-color` CSS variable to better support color modes. It will be removed in v6.0.0.
|
||||
</Callout>
|
||||
```css
|
||||
[class*="text-"] {
|
||||
color: var(--bs-text);
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
--bs-text: var(--bs-primary);
|
||||
}
|
||||
```
|
||||
|
||||
<Callout name="warning-color-assistive-technologies" />
|
||||
|
||||
## Opacity
|
||||
|
||||
|
@ -84,16 +87,14 @@ In addition to the following Sass functionality, consider reading about our incl
|
|||
|
||||
Most `color` utilities are generated by our theme colors, reassigned from our generic color palette variables.
|
||||
|
||||
{/* <ScssDocs name="color-variables" file="scss/_variables.scss" /> */}
|
||||
<ScssDocs name="theme-colors" file="scss/_theme.scss" />
|
||||
|
||||
{/* <ScssDocs name="theme-color-variables" file="scss/_variables.scss" /> */}
|
||||
<ScssDocs name="utils-color" file="scss/_utilities.scss" />
|
||||
|
||||
Grayscale colors are also available, but only a subset are used to generate any utilities.
|
||||
|
||||
{/* <ScssDocs name="gray-color-variables" file="scss/_variables.scss" /> */}
|
||||
|
||||
{/* <ScssDocs name="theme-text-map" file="scss/_maps.scss" /> */}
|
||||
|
||||
Variables for setting colors in `.text-*-emphasis` utilities in light and dark mode:
|
||||
|
||||
{/* <ScssDocs name="theme-text-variables" file="scss/_variables.scss" /> */}
|
||||
|
|
|
@ -23,7 +23,7 @@ const dataDefinitions = {
|
|||
container: zPxSizeOrEmpty
|
||||
})
|
||||
.array(),
|
||||
colors: zNamedHexColors(13),
|
||||
colors: zNamedHexColors(11),
|
||||
'core-team': z
|
||||
.object({
|
||||
name: z.string(),
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
*/
|
||||
export declare global {
|
||||
export const AddedIn: typeof import('@shortcodes/AddedIn.astro').default
|
||||
export const BreakingChange: typeof import('@shortcodes/BreakingChange.astro').default
|
||||
export const BsTable: typeof import('@shortcodes/BsTable.astro').default
|
||||
export const Callout: typeof import('@shortcodes/Callout.astro').default
|
||||
export const CalloutDeprecatedDarkVariants: typeof import('@shortcodes/CalloutDeprecatedDarkVariants.astro').default
|
||||
|
|
Loading…
Reference in New Issue