@openvoxproject/voxblocks 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +66 -0
- package/dist/cdn/voxblocks.css +1 -0
- package/dist/cdn/voxblocks.js +5057 -0
- package/dist/types/components/accordion/vox-accordion.d.ts +32 -0
- package/dist/types/components/alert/vox-alert.d.ts +23 -0
- package/dist/types/components/avatar/vox-avatar.d.ts +18 -0
- package/dist/types/components/badge/vox-badge.d.ts +17 -0
- package/dist/types/components/billboard/vox-billboard.d.ts +22 -0
- package/dist/types/components/breadcrumbs/vox-breadcrumbs.d.ts +24 -0
- package/dist/types/components/button/vox-button.d.ts +24 -0
- package/dist/types/components/calendar-tile/vox-calendar-tile.d.ts +18 -0
- package/dist/types/components/callout/vox-callout.d.ts +20 -0
- package/dist/types/components/card/vox-card.d.ts +28 -0
- package/dist/types/components/checkbox/vox-checkbox.d.ts +20 -0
- package/dist/types/components/cta/vox-cta.d.ts +17 -0
- package/dist/types/components/cta-band/vox-cta-band.d.ts +22 -0
- package/dist/types/components/dialog/vox-dialog.d.ts +30 -0
- package/dist/types/components/disclosure/vox-disclosure.d.ts +19 -0
- package/dist/types/components/dropdown/vox-dropdown.d.ts +29 -0
- package/dist/types/components/empty-state/vox-empty-state.d.ts +18 -0
- package/dist/types/components/file-input/vox-file-input.d.ts +22 -0
- package/dist/types/components/footer/vox-footer.d.ts +28 -0
- package/dist/types/components/grid/vox-grid.d.ts +22 -0
- package/dist/types/components/header/vox-header.d.ts +23 -0
- package/dist/types/components/hero/vox-hero.d.ts +21 -0
- package/dist/types/components/input/vox-input.d.ts +24 -0
- package/dist/types/components/input-group/vox-input-group.d.ts +25 -0
- package/dist/types/components/link-hub/vox-link-hub.d.ts +27 -0
- package/dist/types/components/loader/vox-loader.d.ts +16 -0
- package/dist/types/components/pagination/vox-pagination.d.ts +25 -0
- package/dist/types/components/quote/vox-quote.d.ts +18 -0
- package/dist/types/components/radio/vox-radio-group.d.ts +23 -0
- package/dist/types/components/radio/vox-radio.d.ts +21 -0
- package/dist/types/components/select/vox-select.d.ts +27 -0
- package/dist/types/components/series-nav/vox-series-nav.d.ts +18 -0
- package/dist/types/components/sidenav/vox-sidenav.d.ts +50 -0
- package/dist/types/components/sponsor/vox-sponsor.d.ts +35 -0
- package/dist/types/components/stat/vox-stat.d.ts +17 -0
- package/dist/types/components/step-indicator/vox-step-indicator.d.ts +28 -0
- package/dist/types/components/subnav/vox-subnav.d.ts +18 -0
- package/dist/types/components/switch/vox-switch.d.ts +20 -0
- package/dist/types/components/tabs/vox-tabs.d.ts +57 -0
- package/dist/types/components/textarea/vox-textarea.d.ts +22 -0
- package/dist/types/components/theme-toggle/vox-theme-toggle.d.ts +35 -0
- package/dist/types/components/timeline/vox-timeline.d.ts +27 -0
- package/dist/types/index.d.ts +51 -0
- package/dist/types/internal/field.d.ts +27 -0
- package/dist/voxblocks.css +1 -0
- package/dist/voxblocks.js +4350 -0
- package/package.json +59 -0
- package/src/components/accordion/vox-accordion.ts +150 -0
- package/src/components/alert/vox-alert.ts +155 -0
- package/src/components/avatar/vox-avatar.ts +80 -0
- package/src/components/badge/vox-badge.ts +67 -0
- package/src/components/billboard/vox-billboard.ts +109 -0
- package/src/components/breadcrumbs/vox-breadcrumbs.ts +68 -0
- package/src/components/button/vox-button.ts +165 -0
- package/src/components/calendar-tile/vox-calendar-tile.ts +74 -0
- package/src/components/callout/vox-callout.ts +97 -0
- package/src/components/card/vox-card.ts +147 -0
- package/src/components/checkbox/vox-checkbox.ts +101 -0
- package/src/components/cta/vox-cta.ts +69 -0
- package/src/components/cta-band/vox-cta-band.ts +105 -0
- package/src/components/dialog/vox-dialog.ts +176 -0
- package/src/components/disclosure/vox-disclosure.ts +98 -0
- package/src/components/dropdown/vox-dropdown.ts +186 -0
- package/src/components/empty-state/vox-empty-state.ts +76 -0
- package/src/components/file-input/vox-file-input.ts +127 -0
- package/src/components/footer/vox-footer.ts +109 -0
- package/src/components/grid/vox-grid.ts +54 -0
- package/src/components/header/vox-header.ts +109 -0
- package/src/components/hero/vox-hero.ts +100 -0
- package/src/components/input/vox-input.ts +72 -0
- package/src/components/input-group/vox-input-group.ts +85 -0
- package/src/components/link-hub/vox-link-hub.ts +108 -0
- package/src/components/loader/vox-loader.ts +82 -0
- package/src/components/pagination/vox-pagination.ts +76 -0
- package/src/components/quote/vox-quote.ts +82 -0
- package/src/components/radio/vox-radio-group.ts +117 -0
- package/src/components/radio/vox-radio.ts +102 -0
- package/src/components/select/vox-select.ts +89 -0
- package/src/components/series-nav/vox-series-nav.ts +94 -0
- package/src/components/sidenav/vox-sidenav.ts +192 -0
- package/src/components/sponsor/vox-sponsor.ts +187 -0
- package/src/components/stat/vox-stat.ts +55 -0
- package/src/components/step-indicator/vox-step-indicator.ts +152 -0
- package/src/components/subnav/vox-subnav.ts +64 -0
- package/src/components/switch/vox-switch.ts +90 -0
- package/src/components/tabs/vox-tabs.ts +201 -0
- package/src/components/textarea/vox-textarea.ts +75 -0
- package/src/components/theme-toggle/vox-theme-toggle.ts +164 -0
- package/src/components/timeline/vox-timeline.ts +100 -0
- package/src/index.ts +65 -0
- package/src/internal/field.ts +165 -0
- package/src/styles/utilities.css +409 -0
- package/src/tokens/tokens.css +161 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { VoxFieldElement } from '../../internal/field.js';
|
|
2
|
+
/**
|
|
3
|
+
* Groups `<vox-radio>` options: manages selection, arrow-key navigation,
|
|
4
|
+
* and submits the selected value with the surrounding form.
|
|
5
|
+
*
|
|
6
|
+
* @slot - `<vox-radio>` elements.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VoxRadioGroup extends VoxFieldElement {
|
|
9
|
+
value: string;
|
|
10
|
+
static styles: import("lit").CSSResult[];
|
|
11
|
+
private get radios();
|
|
12
|
+
formResetCallback(): void;
|
|
13
|
+
updated(): void;
|
|
14
|
+
private syncRadios;
|
|
15
|
+
private handleSelect;
|
|
16
|
+
private handleKeydown;
|
|
17
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
18
|
+
}
|
|
19
|
+
declare global {
|
|
20
|
+
interface HTMLElementTagNameMap {
|
|
21
|
+
'vox-radio-group': VoxRadioGroup;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A single radio option. Must be placed inside a `<vox-radio-group>`,
|
|
4
|
+
* which handles selection state, keyboard navigation, and form value.
|
|
5
|
+
*
|
|
6
|
+
* @slot - Radio label.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VoxRadio extends LitElement {
|
|
9
|
+
value: string;
|
|
10
|
+
checked: boolean;
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
static styles: import("lit").CSSResult;
|
|
13
|
+
select(): void;
|
|
14
|
+
private handleKeydown;
|
|
15
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
16
|
+
}
|
|
17
|
+
declare global {
|
|
18
|
+
interface HTMLElementTagNameMap {
|
|
19
|
+
'vox-radio': VoxRadio;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { VoxFieldElement } from '../../internal/field.js';
|
|
2
|
+
/**
|
|
3
|
+
* A select input. Options are provided as light-DOM `<option>` /
|
|
4
|
+
* `<optgroup>` children and mirrored into the shadow select:
|
|
5
|
+
*
|
|
6
|
+
* ```html
|
|
7
|
+
* <vox-select label="Distribution">
|
|
8
|
+
* <option value="deb">Debian</option>
|
|
9
|
+
* <option value="rpm">RHEL</option>
|
|
10
|
+
* </vox-select>
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export declare class VoxSelect extends VoxFieldElement {
|
|
14
|
+
value: string;
|
|
15
|
+
private selectEl;
|
|
16
|
+
static styles: import("lit").CSSResult[];
|
|
17
|
+
formResetCallback(): void;
|
|
18
|
+
updated(): void;
|
|
19
|
+
private syncOptions;
|
|
20
|
+
private handleChange;
|
|
21
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
interface HTMLElementTagNameMap {
|
|
25
|
+
'vox-select': VoxSelect;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Previous/next navigation between pages in a series, like the links at
|
|
4
|
+
* the bottom of a docs page.
|
|
5
|
+
*/
|
|
6
|
+
export declare class VoxSeriesNav extends LitElement {
|
|
7
|
+
previousHref?: string;
|
|
8
|
+
previousLabel: string;
|
|
9
|
+
nextHref?: string;
|
|
10
|
+
nextLabel: string;
|
|
11
|
+
static styles: import("lit").CSSResult;
|
|
12
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
13
|
+
}
|
|
14
|
+
declare global {
|
|
15
|
+
interface HTMLElementTagNameMap {
|
|
16
|
+
'vox-series-nav': VoxSeriesNav;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A vertical section navigation, in the style of the OpenVox docs sidebar.
|
|
4
|
+
*
|
|
5
|
+
* ```html
|
|
6
|
+
* <vox-sidenav>
|
|
7
|
+
* <vox-sidenav-item href="/" current>Overview</vox-sidenav-item>
|
|
8
|
+
* <vox-sidenav-group heading="Installation" open>
|
|
9
|
+
* <vox-sidenav-item href="/install/deb">Debian</vox-sidenav-item>
|
|
10
|
+
* </vox-sidenav-group>
|
|
11
|
+
* </vox-sidenav>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @slot - `<vox-sidenav-item>` and `<vox-sidenav-group>` elements.
|
|
15
|
+
*/
|
|
16
|
+
export declare class VoxSidenav extends LitElement {
|
|
17
|
+
label: string;
|
|
18
|
+
static styles: import("lit").CSSResult;
|
|
19
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* A collapsible group of sidenav items.
|
|
23
|
+
*
|
|
24
|
+
* @slot - `<vox-sidenav-item>` elements.
|
|
25
|
+
*/
|
|
26
|
+
export declare class VoxSidenavGroup extends LitElement {
|
|
27
|
+
heading: string;
|
|
28
|
+
open: boolean;
|
|
29
|
+
static styles: import("lit").CSSResult;
|
|
30
|
+
private toggle;
|
|
31
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One sidenav link. Set `current` on the active page's item.
|
|
35
|
+
*
|
|
36
|
+
* @slot - Link text.
|
|
37
|
+
*/
|
|
38
|
+
export declare class VoxSidenavItem extends LitElement {
|
|
39
|
+
href: string;
|
|
40
|
+
current: boolean;
|
|
41
|
+
static styles: import("lit").CSSResult;
|
|
42
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
43
|
+
}
|
|
44
|
+
declare global {
|
|
45
|
+
interface HTMLElementTagNameMap {
|
|
46
|
+
'vox-sidenav': VoxSidenav;
|
|
47
|
+
'vox-sidenav-group': VoxSidenavGroup;
|
|
48
|
+
'vox-sidenav-item': VoxSidenavItem;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A group of sponsors under a shared tier, for sponsorship/funding pages.
|
|
4
|
+
*
|
|
5
|
+
* @slot description - Optional text under the heading, e.g. what the tier means.
|
|
6
|
+
* @slot - `<vox-sponsor>` elements.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VoxSponsorTier extends LitElement {
|
|
9
|
+
heading: string;
|
|
10
|
+
static styles: import("lit").CSSResult;
|
|
11
|
+
private hasDescription;
|
|
12
|
+
private handleDescriptionSlotChange;
|
|
13
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* One sponsor card in a `<vox-sponsor-tier>`, linking to the sponsor's site.
|
|
17
|
+
*
|
|
18
|
+
* @slot - Optional description, e.g. contribution type and amount.
|
|
19
|
+
*/
|
|
20
|
+
export declare class VoxSponsor extends LitElement {
|
|
21
|
+
name: string;
|
|
22
|
+
href?: string;
|
|
23
|
+
logo?: string;
|
|
24
|
+
target?: string;
|
|
25
|
+
static styles: import("lit").CSSResult;
|
|
26
|
+
private hasBody;
|
|
27
|
+
private handleBodySlotChange;
|
|
28
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
29
|
+
}
|
|
30
|
+
declare global {
|
|
31
|
+
interface HTMLElementTagNameMap {
|
|
32
|
+
'vox-sponsor-tier': VoxSponsorTier;
|
|
33
|
+
'vox-sponsor': VoxSponsor;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A large statistic with a label, e.g. module counts or contributors.
|
|
4
|
+
*
|
|
5
|
+
* @slot - Optional supporting description.
|
|
6
|
+
*/
|
|
7
|
+
export declare class VoxStat extends LitElement {
|
|
8
|
+
value: string;
|
|
9
|
+
label: string;
|
|
10
|
+
static styles: import("lit").CSSResult;
|
|
11
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
12
|
+
}
|
|
13
|
+
declare global {
|
|
14
|
+
interface HTMLElementTagNameMap {
|
|
15
|
+
'vox-stat': VoxStat;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export type StepState = 'complete' | 'current' | 'upcoming';
|
|
3
|
+
/**
|
|
4
|
+
* Shows progress through a multi-step process.
|
|
5
|
+
*
|
|
6
|
+
* @slot - `<vox-step>` elements.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VoxStepIndicator extends LitElement {
|
|
9
|
+
static styles: import("lit").CSSResult;
|
|
10
|
+
private numberSteps;
|
|
11
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* One step in a `<vox-step-indicator>`.
|
|
15
|
+
*/
|
|
16
|
+
export declare class VoxStep extends LitElement {
|
|
17
|
+
label: string;
|
|
18
|
+
state: StepState;
|
|
19
|
+
number: number;
|
|
20
|
+
static styles: import("lit").CSSResult;
|
|
21
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
22
|
+
}
|
|
23
|
+
declare global {
|
|
24
|
+
interface HTMLElementTagNameMap {
|
|
25
|
+
'vox-step-indicator': VoxStepIndicator;
|
|
26
|
+
'vox-step': VoxStep;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A horizontal secondary navigation bar. Children are plain links;
|
|
4
|
+
* mark the active one with `aria-current="page"`.
|
|
5
|
+
*
|
|
6
|
+
* @slot - `<a>` elements.
|
|
7
|
+
*/
|
|
8
|
+
export declare class VoxSubnav extends LitElement {
|
|
9
|
+
/** Accessible name distinguishing this nav from others on the page. */
|
|
10
|
+
label: string;
|
|
11
|
+
static styles: import("lit").CSSResult;
|
|
12
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
13
|
+
}
|
|
14
|
+
declare global {
|
|
15
|
+
interface HTMLElementTagNameMap {
|
|
16
|
+
'vox-subnav': VoxSubnav;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { VoxFieldElement } from '../../internal/field.js';
|
|
2
|
+
/**
|
|
3
|
+
* A toggle switch for on/off settings.
|
|
4
|
+
*
|
|
5
|
+
* @slot - Switch label.
|
|
6
|
+
*/
|
|
7
|
+
export declare class VoxSwitch extends VoxFieldElement {
|
|
8
|
+
checked: boolean;
|
|
9
|
+
value: string;
|
|
10
|
+
static styles: import("lit").CSSResult[];
|
|
11
|
+
formResetCallback(): void;
|
|
12
|
+
updated(): void;
|
|
13
|
+
private handleChange;
|
|
14
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
'vox-switch': VoxSwitch;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Tabbed content:
|
|
4
|
+
*
|
|
5
|
+
* ```html
|
|
6
|
+
* <vox-tabs>
|
|
7
|
+
* <vox-tab slot="tab" panel="deb" selected>Debian</vox-tab>
|
|
8
|
+
* <vox-tab slot="tab" panel="rpm">RHEL</vox-tab>
|
|
9
|
+
* <vox-tab-panel name="deb">...</vox-tab-panel>
|
|
10
|
+
* <vox-tab-panel name="rpm">...</vox-tab-panel>
|
|
11
|
+
* </vox-tabs>
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @slot tab - `<vox-tab>` elements.
|
|
15
|
+
* @slot - `<vox-tab-panel>` elements.
|
|
16
|
+
* @fires vox-tab-change - When the selected tab changes; `detail.panel` names it.
|
|
17
|
+
*/
|
|
18
|
+
export declare class VoxTabs extends LitElement {
|
|
19
|
+
static styles: import("lit").CSSResult;
|
|
20
|
+
private get tabs();
|
|
21
|
+
private get panels();
|
|
22
|
+
private sync;
|
|
23
|
+
private handleSelect;
|
|
24
|
+
private handleKeydown;
|
|
25
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A tab button; `panel` names the `<vox-tab-panel>` it controls.
|
|
29
|
+
*
|
|
30
|
+
* @slot - Tab label.
|
|
31
|
+
*/
|
|
32
|
+
export declare class VoxTab extends LitElement {
|
|
33
|
+
panel: string;
|
|
34
|
+
selected: boolean;
|
|
35
|
+
static styles: import("lit").CSSResult;
|
|
36
|
+
select(): void;
|
|
37
|
+
focusTab(): void;
|
|
38
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Content shown when the matching `<vox-tab>` is selected.
|
|
42
|
+
*
|
|
43
|
+
* @slot - Panel content.
|
|
44
|
+
*/
|
|
45
|
+
export declare class VoxTabPanel extends LitElement {
|
|
46
|
+
name: string;
|
|
47
|
+
active: boolean;
|
|
48
|
+
static styles: import("lit").CSSResult;
|
|
49
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
50
|
+
}
|
|
51
|
+
declare global {
|
|
52
|
+
interface HTMLElementTagNameMap {
|
|
53
|
+
'vox-tabs': VoxTabs;
|
|
54
|
+
'vox-tab': VoxTab;
|
|
55
|
+
'vox-tab-panel': VoxTabPanel;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { VoxFieldElement } from '../../internal/field.js';
|
|
2
|
+
/**
|
|
3
|
+
* A multi-line text input with label and help note.
|
|
4
|
+
*/
|
|
5
|
+
export declare class VoxTextarea extends VoxFieldElement {
|
|
6
|
+
value: string;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
rows: number;
|
|
9
|
+
readonly: boolean;
|
|
10
|
+
static styles: import("lit").CSSResult[];
|
|
11
|
+
formResetCallback(): void;
|
|
12
|
+
updated(): void;
|
|
13
|
+
focus(options?: FocusOptions): void;
|
|
14
|
+
private handleInput;
|
|
15
|
+
private handleChange;
|
|
16
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
17
|
+
}
|
|
18
|
+
declare global {
|
|
19
|
+
interface HTMLElementTagNameMap {
|
|
20
|
+
'vox-textarea': VoxTextarea;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A self-contained light/dark theme switch. Reads and writes
|
|
4
|
+
* `data-vox-theme` on `<html>` and persists the choice to
|
|
5
|
+
* `localStorage['vox-theme']` — the same convention VoxBlocks' own dark
|
|
6
|
+
* mode support already uses, so this is a drop-in control for it.
|
|
7
|
+
*
|
|
8
|
+
* A page still needs its own blocking inline script in `<head>` to apply
|
|
9
|
+
* the stored (or system) theme before first paint — a custom element
|
|
10
|
+
* can't upgrade in time to prevent that flash. See the docs page for the
|
|
11
|
+
* exact snippet.
|
|
12
|
+
*
|
|
13
|
+
* Fires `vox-theme-change` with `detail: { theme: 'light' | 'dark' }`.
|
|
14
|
+
*/
|
|
15
|
+
export declare class VoxThemeToggle extends LitElement {
|
|
16
|
+
/** Accessible label while the page is in light mode. */
|
|
17
|
+
lightLabel: string;
|
|
18
|
+
/** Accessible label while the page is in dark mode. */
|
|
19
|
+
darkLabel: string;
|
|
20
|
+
private dark;
|
|
21
|
+
private media;
|
|
22
|
+
private observer?;
|
|
23
|
+
static styles: import("lit").CSSResult;
|
|
24
|
+
connectedCallback(): void;
|
|
25
|
+
disconnectedCallback(): void;
|
|
26
|
+
private handleSystemChange;
|
|
27
|
+
private syncFromDocument;
|
|
28
|
+
private handleClick;
|
|
29
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
30
|
+
}
|
|
31
|
+
declare global {
|
|
32
|
+
interface HTMLElementTagNameMap {
|
|
33
|
+
'vox-theme-toggle': VoxThemeToggle;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* A vertical timeline of dated events.
|
|
4
|
+
*
|
|
5
|
+
* @slot - `<vox-timeline-item>` elements.
|
|
6
|
+
*/
|
|
7
|
+
export declare class VoxTimeline extends LitElement {
|
|
8
|
+
static styles: import("lit").CSSResult;
|
|
9
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* One event on a `<vox-timeline>`.
|
|
13
|
+
*
|
|
14
|
+
* @slot - Event description.
|
|
15
|
+
*/
|
|
16
|
+
export declare class VoxTimelineItem extends LitElement {
|
|
17
|
+
heading: string;
|
|
18
|
+
date: string;
|
|
19
|
+
static styles: import("lit").CSSResult;
|
|
20
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
21
|
+
}
|
|
22
|
+
declare global {
|
|
23
|
+
interface HTMLElementTagNameMap {
|
|
24
|
+
'vox-timeline': VoxTimeline;
|
|
25
|
+
'vox-timeline-item': VoxTimelineItem;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import './tokens/tokens.css';
|
|
2
|
+
import './styles/utilities.css';
|
|
3
|
+
export { VoxButton } from './components/button/vox-button.js';
|
|
4
|
+
export { VoxCta } from './components/cta/vox-cta.js';
|
|
5
|
+
export { VoxThemeToggle } from './components/theme-toggle/vox-theme-toggle.js';
|
|
6
|
+
export { VoxCheckbox } from './components/checkbox/vox-checkbox.js';
|
|
7
|
+
export { VoxFileInput } from './components/file-input/vox-file-input.js';
|
|
8
|
+
export { VoxInput } from './components/input/vox-input.js';
|
|
9
|
+
export { VoxInputGroup } from './components/input-group/vox-input-group.js';
|
|
10
|
+
export { VoxRadio } from './components/radio/vox-radio.js';
|
|
11
|
+
export { VoxRadioGroup } from './components/radio/vox-radio-group.js';
|
|
12
|
+
export { VoxSelect } from './components/select/vox-select.js';
|
|
13
|
+
export { VoxSwitch } from './components/switch/vox-switch.js';
|
|
14
|
+
export { VoxTextarea } from './components/textarea/vox-textarea.js';
|
|
15
|
+
export { VoxAvatar } from './components/avatar/vox-avatar.js';
|
|
16
|
+
export { VoxBillboard } from './components/billboard/vox-billboard.js';
|
|
17
|
+
export { VoxBreadcrumbs } from './components/breadcrumbs/vox-breadcrumbs.js';
|
|
18
|
+
export { VoxHeader } from './components/header/vox-header.js';
|
|
19
|
+
export { VoxSeriesNav } from './components/series-nav/vox-series-nav.js';
|
|
20
|
+
export { VoxSidenav, VoxSidenavGroup, VoxSidenavItem } from './components/sidenav/vox-sidenav.js';
|
|
21
|
+
export { VoxSubnav } from './components/subnav/vox-subnav.js';
|
|
22
|
+
export { VoxTabs, VoxTab, VoxTabPanel } from './components/tabs/vox-tabs.js';
|
|
23
|
+
export { VoxDialog } from './components/dialog/vox-dialog.js';
|
|
24
|
+
export { VoxDisclosure } from './components/disclosure/vox-disclosure.js';
|
|
25
|
+
export { VoxDropdown } from './components/dropdown/vox-dropdown.js';
|
|
26
|
+
export { VoxAccordion, VoxAccordionItem } from './components/accordion/vox-accordion.js';
|
|
27
|
+
export { VoxAlert } from './components/alert/vox-alert.js';
|
|
28
|
+
export { VoxBadge } from './components/badge/vox-badge.js';
|
|
29
|
+
export { VoxCalendarTile } from './components/calendar-tile/vox-calendar-tile.js';
|
|
30
|
+
export { VoxCallout } from './components/callout/vox-callout.js';
|
|
31
|
+
export { VoxCard } from './components/card/vox-card.js';
|
|
32
|
+
export { VoxCtaBand } from './components/cta-band/vox-cta-band.js';
|
|
33
|
+
export { VoxEmptyState } from './components/empty-state/vox-empty-state.js';
|
|
34
|
+
export { VoxFooter, VoxFooterColumn } from './components/footer/vox-footer.js';
|
|
35
|
+
export { VoxGrid } from './components/grid/vox-grid.js';
|
|
36
|
+
export { VoxHero } from './components/hero/vox-hero.js';
|
|
37
|
+
export { VoxLinkHub, VoxLinkHubItem } from './components/link-hub/vox-link-hub.js';
|
|
38
|
+
export { VoxLoader } from './components/loader/vox-loader.js';
|
|
39
|
+
export { VoxPagination } from './components/pagination/vox-pagination.js';
|
|
40
|
+
export { VoxQuote } from './components/quote/vox-quote.js';
|
|
41
|
+
export { VoxSponsor, VoxSponsorTier } from './components/sponsor/vox-sponsor.js';
|
|
42
|
+
export { VoxStat } from './components/stat/vox-stat.js';
|
|
43
|
+
export { VoxStepIndicator, VoxStep } from './components/step-indicator/vox-step-indicator.js';
|
|
44
|
+
export { VoxTimeline, VoxTimelineItem } from './components/timeline/vox-timeline.js';
|
|
45
|
+
export type { ButtonVariant, ButtonSize } from './components/button/vox-button.js';
|
|
46
|
+
export type { CalloutVariant } from './components/callout/vox-callout.js';
|
|
47
|
+
export type { BadgeVariant } from './components/badge/vox-badge.js';
|
|
48
|
+
export type { AlertVariant } from './components/alert/vox-alert.js';
|
|
49
|
+
export type { AvatarSize } from './components/avatar/vox-avatar.js';
|
|
50
|
+
export type { LoaderSize } from './components/loader/vox-loader.js';
|
|
51
|
+
export type { StepState } from './components/step-indicator/vox-step-indicator.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { LitElement, nothing } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Shared base for form-associated VoxBlocks controls. Uses ElementInternals
|
|
4
|
+
* so controls participate in native <form> submission and validation.
|
|
5
|
+
*/
|
|
6
|
+
export declare class VoxFieldElement extends LitElement {
|
|
7
|
+
static formAssociated: boolean;
|
|
8
|
+
protected internals: ElementInternals;
|
|
9
|
+
name: string;
|
|
10
|
+
label: string;
|
|
11
|
+
note: string;
|
|
12
|
+
disabled: boolean;
|
|
13
|
+
required: boolean;
|
|
14
|
+
constructor();
|
|
15
|
+
get form(): HTMLFormElement | null;
|
|
16
|
+
get validity(): ValidityState;
|
|
17
|
+
get validationMessage(): string;
|
|
18
|
+
checkValidity(): boolean;
|
|
19
|
+
reportValidity(): boolean;
|
|
20
|
+
/** Mirror a native inner control's validity onto the host element. */
|
|
21
|
+
protected syncValidity(inner: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement): void;
|
|
22
|
+
protected renderLabel(forId: string): typeof nothing | import("lit-html").TemplateResult<1>;
|
|
23
|
+
protected renderNote(): typeof nothing | import("lit-html").TemplateResult<1>;
|
|
24
|
+
}
|
|
25
|
+
export declare const fieldStyles: import("lit").CSSResult;
|
|
26
|
+
/** Styles shared by the checkbox-like controls (checkbox, radio, switch). */
|
|
27
|
+
export declare const checkableStyles: import("lit").CSSResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--vox-color-brand-1: #0f5c5c;--vox-color-brand-2: #0a4f49;--vox-color-brand-3: #106b66;--vox-color-brand-soft: rgba(16, 107, 102, .14);--vox-color-tip-1: #18794e;--vox-color-tip-soft: rgba(16, 185, 129, .14);--vox-color-warning-1: #915930;--vox-color-warning-soft: rgba(234, 179, 8, .14);--vox-color-danger-1: #b8272c;--vox-color-danger-2: #d5393e;--vox-color-danger-3: #e0575b;--vox-color-danger-soft: rgba(244, 63, 94, .14);--vox-color-bg: #f5faf9;--vox-color-bg-alt: #e8f1ef;--vox-color-bg-soft: #e8f1ef;--vox-color-bg-elv: #ffffff;--vox-color-text-1: #12262c;--vox-color-text-2: #4c6469;--vox-color-text-3: #86999c;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(18, 38, 44, .12);--vox-color-border: rgba(18, 38, 44, .28);--vox-font-family-base: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vox-font-family-display: "Source Serif 4", Georgia, "Times New Roman", serif;--vox-font-family-mono: "JetBrains Mono", "Source Code Pro", ui-monospace, "SF Mono", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--vox-radius-sm: 4px;--vox-radius-md: 8px;--vox-radius-lg: 12px;--vox-radius-full: 9999px;--vox-space-1: .25rem;--vox-space-2: .5rem;--vox-space-3: .75rem;--vox-space-4: 1rem;--vox-space-6: 1.5rem;--vox-space-8: 2rem;--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vox-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--vox-transition-base: .25s cubic-bezier(.4, 0, .2, 1)}.dark,[data-vox-theme=dark]{--vox-color-brand-1: #7fd8cf;--vox-color-brand-2: #0b5c52;--vox-color-brand-3: #0e7267;--vox-color-brand-soft: rgba(127, 216, 207, .16);--vox-color-tip-1: #3dd68c;--vox-color-tip-soft: rgba(16, 185, 129, .16);--vox-color-warning-1: #f9b44e;--vox-color-warning-soft: rgba(234, 179, 8, .16);--vox-color-danger-1: #f66f81;--vox-color-danger-2: #f14158;--vox-color-danger-3: #b62a3c;--vox-color-danger-soft: rgba(244, 63, 94, .16);--vox-color-bg: #0d1417;--vox-color-bg-alt: #131b1f;--vox-color-bg-soft: #131b1f;--vox-color-bg-elv: #161f23;--vox-color-text-1: #dff3f0;--vox-color-text-2: #9fb8bb;--vox-color-text-3: #5f7275;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(159, 184, 187, .24);--vox-color-border: rgba(159, 184, 187, .5);--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .2), 0 1px 2px rgba(0, 0, 0, .24);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .26), 0 1px 4px rgba(0, 0, 0, .26)}body{margin:0;font-family:var(--vox-font-family-base);background-color:var(--vox-color-bg);color:var(--vox-color-text-1)}vox-hero a,vox-alert a,vox-callout a,vox-dialog a,vox-accordion-item a{color:var(--vox-color-brand-1);text-decoration:underline}vox-hero a:hover,vox-alert a:hover,vox-callout a:hover,vox-dialog a:hover,vox-accordion-item a:hover{color:var(--vox-color-brand-2)}.vox-table{width:100%;border-collapse:collapse;font-family:var(--vox-font-family-base);font-size:14px;color:var(--vox-color-text-1)}.vox-table caption{margin-bottom:.5rem;font-weight:600;text-align:left;color:var(--vox-color-text-1)}.vox-table th{padding:.6rem .9rem;border-bottom:2px solid var(--vox-color-divider);font-weight:600;text-align:left;white-space:nowrap;color:var(--vox-color-text-1);background-color:var(--vox-color-bg-soft)}.vox-table td{padding:.6rem .9rem;border-bottom:1px solid var(--vox-color-divider);color:var(--vox-color-text-2)}.vox-table--striped tbody tr:nth-child(odd){background-color:var(--vox-color-bg-soft)}.vox-table--compact th,.vox-table--compact td{padding:.35rem .6rem}.vox-table-wrap{overflow-x:auto;border:1px solid var(--vox-color-divider);border-radius:var(--vox-radius-lg)}.vox-table-wrap .vox-table tbody tr:last-child th,.vox-table-wrap .vox-table tbody tr:last-child td{border-bottom:none}.vox-list{font-family:var(--vox-font-family-base);font-size:14px;line-height:1.7;color:var(--vox-color-text-2);padding-left:1.25rem}.vox-list li+li{margin-top:.25rem}.vox-list--plain{list-style:none;padding-left:0}.vox-list--inline{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.vox-list--inline li+li{margin-top:0}.vox-prose{max-width:44rem;font-family:var(--vox-font-family-base);font-size:16px;line-height:1.75;color:var(--vox-color-text-2)}.vox-prose+.vox-prose{margin-top:var(--vox-space-4)}.vox-prose a{color:var(--vox-color-brand-1);text-decoration:underline}.vox-prose a:hover{color:var(--vox-color-brand-2)}.vox-m-all-none{margin:0!important}.vox-m-all-xs{margin:.25rem!important}.vox-m-all-sm{margin:.5rem!important}.vox-m-all-md{margin:1rem!important}.vox-m-all-lg{margin:1.5rem!important}.vox-m-all-xl{margin:2rem!important}.vox-m-all-xxl{margin:3rem!important}.vox-m-top-none{margin-top:0!important}.vox-m-top-xs{margin-top:.25rem!important}.vox-m-top-sm{margin-top:.5rem!important}.vox-m-top-md{margin-top:1rem!important}.vox-m-top-lg{margin-top:1.5rem!important}.vox-m-top-xl{margin-top:2rem!important}.vox-m-top-xxl{margin-top:3rem!important}.vox-m-right-none{margin-right:0!important}.vox-m-right-xs{margin-right:.25rem!important}.vox-m-right-sm{margin-right:.5rem!important}.vox-m-right-md{margin-right:1rem!important}.vox-m-right-lg{margin-right:1.5rem!important}.vox-m-right-xl{margin-right:2rem!important}.vox-m-right-xxl{margin-right:3rem!important}.vox-m-bottom-none{margin-bottom:0!important}.vox-m-bottom-xs{margin-bottom:.25rem!important}.vox-m-bottom-sm{margin-bottom:.5rem!important}.vox-m-bottom-md{margin-bottom:1rem!important}.vox-m-bottom-lg{margin-bottom:1.5rem!important}.vox-m-bottom-xl{margin-bottom:2rem!important}.vox-m-bottom-xxl{margin-bottom:3rem!important}.vox-m-left-none{margin-left:0!important}.vox-m-left-xs{margin-left:.25rem!important}.vox-m-left-sm{margin-left:.5rem!important}.vox-m-left-md{margin-left:1rem!important}.vox-m-left-lg{margin-left:1.5rem!important}.vox-m-left-xl{margin-left:2rem!important}.vox-m-left-xxl{margin-left:3rem!important}.vox-m-x-none{margin-left:0!important;margin-right:0!important}.vox-m-x-xs{margin-left:.25rem!important;margin-right:.25rem!important}.vox-m-x-sm{margin-left:.5rem!important;margin-right:.5rem!important}.vox-m-x-md{margin-left:1rem!important;margin-right:1rem!important}.vox-m-x-lg{margin-left:1.5rem!important;margin-right:1.5rem!important}.vox-m-x-xl{margin-left:2rem!important;margin-right:2rem!important}.vox-m-x-xxl{margin-left:3rem!important;margin-right:3rem!important}.vox-m-x-auto{margin-left:auto!important;margin-right:auto!important}.vox-m-y-none{margin-top:0!important;margin-bottom:0!important}.vox-m-y-xs{margin-top:.25rem!important;margin-bottom:.25rem!important}.vox-m-y-sm{margin-top:.5rem!important;margin-bottom:.5rem!important}.vox-m-y-md{margin-top:1rem!important;margin-bottom:1rem!important}.vox-m-y-lg{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.vox-m-y-xl{margin-top:2rem!important;margin-bottom:2rem!important}.vox-m-y-xxl{margin-top:3rem!important;margin-bottom:3rem!important}.vox-p-all-none{padding:0!important}.vox-p-all-xs{padding:.25rem!important}.vox-p-all-sm{padding:.5rem!important}.vox-p-all-md{padding:1rem!important}.vox-p-all-lg{padding:1.5rem!important}.vox-p-all-xl{padding:2rem!important}.vox-p-all-xxl{padding:3rem!important}.vox-p-top-none{padding-top:0!important}.vox-p-top-xs{padding-top:.25rem!important}.vox-p-top-sm{padding-top:.5rem!important}.vox-p-top-md{padding-top:1rem!important}.vox-p-top-lg{padding-top:1.5rem!important}.vox-p-top-xl{padding-top:2rem!important}.vox-p-top-xxl{padding-top:3rem!important}.vox-p-right-none{padding-right:0!important}.vox-p-right-xs{padding-right:.25rem!important}.vox-p-right-sm{padding-right:.5rem!important}.vox-p-right-md{padding-right:1rem!important}.vox-p-right-lg{padding-right:1.5rem!important}.vox-p-right-xl{padding-right:2rem!important}.vox-p-right-xxl{padding-right:3rem!important}.vox-p-bottom-none{padding-bottom:0!important}.vox-p-bottom-xs{padding-bottom:.25rem!important}.vox-p-bottom-sm{padding-bottom:.5rem!important}.vox-p-bottom-md{padding-bottom:1rem!important}.vox-p-bottom-lg{padding-bottom:1.5rem!important}.vox-p-bottom-xl{padding-bottom:2rem!important}.vox-p-bottom-xxl{padding-bottom:3rem!important}.vox-p-left-none{padding-left:0!important}.vox-p-left-xs{padding-left:.25rem!important}.vox-p-left-sm{padding-left:.5rem!important}.vox-p-left-md{padding-left:1rem!important}.vox-p-left-lg{padding-left:1.5rem!important}.vox-p-left-xl{padding-left:2rem!important}.vox-p-left-xxl{padding-left:3rem!important}.vox-p-x-none{padding-left:0!important;padding-right:0!important}.vox-p-x-xs{padding-left:.25rem!important;padding-right:.25rem!important}.vox-p-x-sm{padding-left:.5rem!important;padding-right:.5rem!important}.vox-p-x-md{padding-left:1rem!important;padding-right:1rem!important}.vox-p-x-lg{padding-left:1.5rem!important;padding-right:1.5rem!important}.vox-p-x-xl{padding-left:2rem!important;padding-right:2rem!important}.vox-p-x-xxl{padding-left:3rem!important;padding-right:3rem!important}.vox-p-y-none{padding-top:0!important;padding-bottom:0!important}.vox-p-y-xs{padding-top:.25rem!important;padding-bottom:.25rem!important}.vox-p-y-sm{padding-top:.5rem!important;padding-bottom:.5rem!important}.vox-p-y-md{padding-top:1rem!important;padding-bottom:1rem!important}.vox-p-y-lg{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.vox-p-y-xl{padding-top:2rem!important;padding-bottom:2rem!important}.vox-p-y-xxl{padding-top:3rem!important;padding-bottom:3rem!important}.vox-ts-xs{font-size:12px!important}.vox-ts-sm{font-size:14px!important}.vox-ts-md{font-size:16px!important}.vox-ts-lg{font-size:18px!important}.vox-ts-xl{font-size:22px!important}.vox-ts-xxl{font-size:28px!important}.vox-ts-3xl{font-size:36px!important}.vox-text-regular{font-weight:400!important}.vox-text-medium{font-weight:500!important}.vox-text-semibold{font-weight:600!important}.vox-text-bold{font-weight:700!important}.vox-text-left{text-align:left!important}.vox-text-center{text-align:center!important}.vox-text-right{text-align:right!important}.vox-text-uppercase{text-transform:uppercase!important;letter-spacing:.05em!important}.vox-text-mono{font-family:var(--vox-font-family-mono)!important}.vox-lh-tight{line-height:1.25!important}.vox-lh-base{line-height:1.5!important}.vox-lh-loose{line-height:1.75!important}.vox-color-text-1{color:var(--vox-color-text-1)!important}.vox-color-text-2{color:var(--vox-color-text-2)!important}.vox-color-text-3{color:var(--vox-color-text-3)!important}.vox-color-brand{color:var(--vox-color-brand-1)!important}.vox-color-tip{color:var(--vox-color-tip-1)!important}.vox-color-warning{color:var(--vox-color-warning-1)!important}.vox-color-danger{color:var(--vox-color-danger-1)!important}.vox-bg{background-color:var(--vox-color-bg)!important}.vox-bg-alt{background-color:var(--vox-color-bg-alt)!important}.vox-bg-soft{background-color:var(--vox-color-bg-soft)!important}.vox-bg-elv{background-color:var(--vox-color-bg-elv)!important}.vox-bg-brand{background-color:var(--vox-color-brand-3)!important;color:var(--vox-color-text-inverse)!important}.vox-bg-brand-soft{background-color:var(--vox-color-brand-soft)!important}.vox-bg-tip-soft{background-color:var(--vox-color-tip-soft)!important}.vox-bg-warning-soft{background-color:var(--vox-color-warning-soft)!important}.vox-bg-danger-soft{background-color:var(--vox-color-danger-soft)!important}.vox-border-all{border:1px solid var(--vox-color-divider)!important}.vox-border-top{border-top:1px solid var(--vox-color-divider)!important}.vox-border-right{border-right:1px solid var(--vox-color-divider)!important}.vox-border-bottom{border-bottom:1px solid var(--vox-color-divider)!important}.vox-border-left{border-left:1px solid var(--vox-color-divider)!important}.vox-border-none{border:none!important}.vox-radius-sm{border-radius:var(--vox-radius-sm)!important}.vox-radius-md{border-radius:var(--vox-radius-md)!important}.vox-radius-lg{border-radius:var(--vox-radius-lg)!important}.vox-radius-full{border-radius:var(--vox-radius-full)!important}.vox-display-block{display:block!important}.vox-display-inline{display:inline!important}.vox-display-inline-block{display:inline-block!important}.vox-display-flex{display:flex!important}.vox-display-inline-flex{display:inline-flex!important}.vox-display-grid{display:grid!important}.vox-flex-row{flex-direction:row!important}.vox-flex-column{flex-direction:column!important}.vox-flex-wrap{flex-wrap:wrap!important}.vox-flex-nowrap{flex-wrap:nowrap!important}.vox-justify-start{justify-content:flex-start!important}.vox-justify-center{justify-content:center!important}.vox-justify-end{justify-content:flex-end!important}.vox-justify-between{justify-content:space-between!important}.vox-items-start{align-items:flex-start!important}.vox-items-center{align-items:center!important}.vox-items-end{align-items:flex-end!important}.vox-items-stretch{align-items:stretch!important}.vox-grow-0{flex-grow:0!important}.vox-grow-1{flex-grow:1!important}.vox-shrink-0{flex-shrink:0!important}.vox-gap-none{gap:0!important}.vox-gap-xs{gap:.25rem!important}.vox-gap-sm{gap:.5rem!important}.vox-gap-md{gap:1rem!important}.vox-gap-lg{gap:1.5rem!important}.vox-gap-xl{gap:2rem!important}.vox-gap-xxl{gap:3rem!important}.vox-shadow-1{box-shadow:var(--vox-shadow-1)!important}.vox-shadow-2{box-shadow:var(--vox-shadow-2)!important}.vox-shadow-none{box-shadow:none!important}.vox-hide{display:none!important}.vox-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}@media(max-width:479.98px){.vox-hide-sm-down{display:none!important}}@media(max-width:767.98px){.vox-hide-md-down{display:none!important}}@media(max-width:1023.98px){.vox-hide-lg-down{display:none!important}}@media(min-width:480px){.vox-hide-sm-up{display:none!important}}@media(min-width:768px){.vox-hide-md-up{display:none!important}}@media(min-width:1024px){.vox-hide-lg-up{display:none!important}}.vox-width-full{width:100%!important}.vox-width-auto{width:auto!important}.vox-width-sm{width:20rem!important}.vox-width-md{width:30rem!important}.vox-width-lg{width:40rem!important}.vox-width-xl{width:50rem!important}.vox-max-width-sm{max-width:20rem!important}.vox-max-width-md{max-width:30rem!important}.vox-max-width-lg{max-width:40rem!important}.vox-max-width-xl{max-width:50rem!important}.vox-max-width-full{max-width:100%!important}.vox-z-0{z-index:0!important}.vox-z-10{z-index:10!important}.vox-z-100{z-index:100!important}.vox-z-1000{z-index:1000!important}
|