winduum 3.0.0-next.7 → 3.0.0-next.9

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "winduum",
3
- "version": "3.0.0-next.7",
3
+ "version": "3.0.0-next.9",
4
4
  "type": "module",
5
5
  "types": "types/index.d.ts",
6
6
  "main": "plugin/index.cjs",
@@ -31,6 +31,7 @@
31
31
  "eslint": "^10.6.0",
32
32
  "fast-glob": "^3.3.3",
33
33
  "globals": "^17.7.0",
34
+ "interestfor": "^1.0.8",
34
35
  "invokers-polyfill": "^1.0.3",
35
36
  "postcss": "^8.5.16",
36
37
  "postcss-custom-media": "^12.0.1",
@@ -65,6 +66,9 @@
65
66
  "types": "./types/index.d.ts",
66
67
  "default": "./src/supports.js"
67
68
  },
69
+ "./polyfill": {
70
+ "default": "./src/polyfill.js"
71
+ },
68
72
  "./src/*": "./src/*",
69
73
  "./tailwindcss/*": "./tailwindcss/*",
70
74
  "./dist/*": "./dist/*",
@@ -82,7 +86,6 @@
82
86
  "default": "./src/components/details/index.js"
83
87
  },
84
88
  "./src/components/dialog": {
85
- "types": "./src/components/dialog/index.d.ts",
86
89
  "default": "./src/components/dialog/index.js"
87
90
  },
88
91
  "./src/components/drawer": {
@@ -53,12 +53,14 @@
53
53
  }
54
54
 
55
55
  :where(html) {
56
+ scroll-padding-top: var(--scroll-padding-top);
56
57
  color-scheme: var(--default-color-scheme);
57
58
  font-family: var(--font-primary);
58
59
  font-weight: var(--font-weight-normal);
59
60
  block-size: 100%;
60
61
  line-height: 1.5;
61
62
  text-size-adjust: 100%;
63
+ container-type: scroll-state;
62
64
 
63
65
  @media (prefers-reduced-motion: no-preference) {
64
66
  scroll-behavior: smooth;
@@ -73,6 +75,7 @@
73
75
  display: flex;
74
76
  flex-direction: column;
75
77
  overflow-x: clip;
78
+ container-type: inline-size;
76
79
  }
77
80
 
78
81
  [hidden] {
package/src/common.d.ts CHANGED
@@ -1,2 +1,6 @@
1
1
  export function nextRepaint(): Promise<void>;
2
2
  export function animationsFinished(element: HTMLElement): Promise<any>;
3
+ export const supportsAnchor: boolean;
4
+ export const supportsAnchoredContainer: boolean;
5
+ export const supportsAnchor: boolean;
6
+ export const supportsAnchoredContainer: boolean;
@@ -1,40 +1,19 @@
1
- export interface ObserveCarouselOptions {
2
- visibleAttribute?: string
3
- observerOptions?: {
4
- rootMargin?: string
5
- threshold?: number | number[]
6
- }
7
- }
8
-
9
- export interface PaginationCarouselOptions {
10
- element?: HTMLElement | Element
11
- itemContent?: string
12
- activeAttribute?: string
13
- }
14
-
15
- export interface ScrollCarouselOptions {
16
- observe?: ObserveCarouselOptions
17
- pagination?: PaginationCarouselOptions
18
- progressElement?: HTMLProgressElement | Element
19
- counterMinElement?: HTMLElement | Element
20
- counterMaxElement?: HTMLElement | Element
21
- }
1
+ export type CarouselPlacement = 'left' | 'right' | 'top' | 'bottom'
22
2
 
23
- export interface AutoplayCarouselOptions {
24
- delay?: number
25
- pauseElements?: HTMLElement[] | Element[]
3
+ export interface ScrollByOptions {
4
+ direction?: number
5
+ vertical?: boolean
6
+ ratio?: number
26
7
  }
27
8
 
28
- export interface DragCarouselOptions {
29
- activeAttribute?: string
9
+ export interface ToggleScrollStateOptions {
10
+ prevElement?: HTMLButtonElement | null
11
+ nextElement?: HTMLButtonElement | null
12
+ vertical?: boolean
30
13
  }
31
14
 
32
- export function scrollPrev(element: HTMLElement | Element): void
33
- export function scrollNext(element: HTMLElement | Element): void
34
- export function scrollTo(element: HTMLElement | Element, selected?: number): void
35
- export function getItemCount(element: HTMLElement | Element, scrollWidth?: number, mathFloor?: boolean): number
36
- export function observeCarousel(element: HTMLElement | Element, options?: ObserveCarouselOptions): void
37
- export function scrollCarousel(element: HTMLElement | Element, options?: ScrollCarouselOptions): void
38
- export function paginationCarousel(element: HTMLElement | Element, options?: PaginationCarouselOptions): void
39
- export function autoplayCarousel(element: HTMLElement | Element, options?: AutoplayCarouselOptions): void
40
- export function dragCarousel(element: HTMLElement | Element, options?: DragCarouselOptions): void
15
+ export function scrollBy(element: HTMLElement, options?: ScrollByOptions): void
16
+ export function toggleScrollState(element: HTMLElement, options?: ToggleScrollStateOptions): void
17
+ export function setCurrentAttribute(element: HTMLElement, index: number, attributeName?: string): void
18
+ export function setSnappedAttribute(element: HTMLElement, target: HTMLElement, markerGroupElement?: HTMLElement | null): void
19
+ export function scrollToMarker(element: HTMLElement, target: HTMLElement, markerGroupElement: HTMLElement, scrollIntoViewOptions?: ScrollIntoViewOptions): void
@@ -3,7 +3,7 @@
3
3
  --x-check-size: 1.25rem;
4
4
  --x-check-gap: calc(var(--spacing) * 3);
5
5
  --x-check-font-size: var(--text-sm);
6
- --x-check-line-height: calc(1em + 0.25rem);
6
+ --x-check-line-height: 1.25rem;
7
7
  --x-check-border-radius: var(--radius-md);
8
8
  --x-check-border-width: 1px;
9
9
  --x-check-background-color: currentcolor;
@@ -5,12 +5,12 @@
5
5
  --x-control-select-picker-border-color: currentcolor;
6
6
  --x-control-select-picker-background-color: var(--color-body-primary);
7
7
  --x-control-select-picker-margin-block: 0.375rem;
8
- --x-control-select-picker-padding-block: 0.375rem;
9
- --x-control-select-picker-padding-inline: 0.375rem;
8
+ --x-control-select-picker-padding-block: calc(var(--spacing) * 1);
9
+ --x-control-select-picker-padding-inline: calc(var(--spacing) * 1);
10
10
  --x-control-select-picker-gap: 0.25rem;
11
11
  --x-control-select-picker-scrollbar-color: currentcolor var(--color-body-primary);
12
- --x-control-select-option-padding-block: 0.75rem;
13
- --x-control-select-option-padding-inline: 0.75rem;
12
+ --x-control-select-option-padding-block: calc(var(--spacing) * 2.5);
13
+ --x-control-select-option-padding-inline: calc(var(--spacing) * 3);
14
14
  --x-control-select-option-border-radius: var(--radius-md);
15
15
  --x-control-select-option-hocus-background-color: var(--color-body-secondary);
16
16
  }
@@ -1,6 +1,6 @@
1
1
  :root,
2
2
  :host {
3
- --x-control-select-icon-size: 1.25rem;
4
- --x-control-select-icon-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" viewBox="0 0 24 24" stroke="currentColor"><path d="M10.998 15.467c.491.71 1.513.71 2.004 0l3.767-5.453c.581-.843 0-2.013-1.002-2.014H8.234C7.232 8 6.65 9.17 7.231 10.014z" /></svg>');
3
+ --x-control-select-icon-size: 1rem;
4
+ --x-control-select-icon-mask: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5" /></svg>');
5
5
  --x-control-select-icon-margin-inline-end: -0.25rem;
6
6
  }
@@ -0,0 +1,24 @@
1
+ .x-control {
2
+ &:has([autocomplete="tel-country-code"]) {
3
+ :where(select) {
4
+ @media not (scripting: none) {
5
+ font-size: 0;
6
+ }
7
+
8
+ + :where(span) {
9
+ pointer-events: none;
10
+
11
+ @media (scripting: none) {
12
+ display: none;
13
+ }
14
+ }
15
+
16
+ :where(option) {
17
+ &::before {
18
+ content: attr(data-icon);
19
+ margin-inline-end: 0.5ch;
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,5 @@
1
+ export interface ToggleDetailsOptions {
2
+ selector?: string
3
+ }
4
+
5
+ export function toggleDetails(element: HTMLInputElement, options?: ToggleDetailsOptions): void
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @param {HTMLInputElement} element
3
+ * @param {import("./").ToggleDetailsOptions} options
4
+ * @returns void
5
+ */
6
+ export const toggleDetails = (element, options = {}) => {
7
+ const { selector } = {
8
+ selector: 'details',
9
+ ...options,
10
+ }
11
+
12
+ element?.closest(selector)?.toggleAttribute('open', element.checked)
13
+ }
@@ -1,8 +1,5 @@
1
1
  # [Details](https://winduum.dev/docs/components/details.html)
2
2
 
3
- ## Dependencies
4
- * [slide-element](https://www.npmjs.com/package/slide-element)
5
-
6
3
  ## Installation
7
4
  ```shell
8
5
  npm i winduum
@@ -10,7 +7,7 @@ npm i winduum
10
7
  Learn more how to set up Winduum [here](https://winduum.dev/docs/).
11
8
 
12
9
  ```js
13
- import { showDetails } from 'winduum/src/components/details/index.js'
10
+ import { toggleDetails } from 'winduum/src/components/details/index.js'
14
11
  ```
15
12
 
16
13
  ### Local imports
@@ -18,7 +15,7 @@ By default, imports are directly from `npm` so you can leverage updates.
18
15
  You can also copy and paste the code from this directory to your project and remap the imports to local.
19
16
 
20
17
  ```js
21
- import { showDetails } from '@/components/details/assets/index.js'
18
+ import { toggleDetails } from '@/components/details/assets/index.js'
22
19
  ```
23
20
 
24
21
  ### Docs
@@ -1,16 +1,9 @@
1
- export interface ScrollDrawerOptions {
2
- snapClass?: string
3
- opacityProperty?: string
4
- opacityRatio?: number
5
- scrollOpen?: number
6
- scrollClose?: number
7
- scrollSize?: number
8
- scrollDirection?:number
9
- }
1
+ export type DrawerPlacement = 'left' | 'right' | 'top' | 'bottom'
10
2
 
11
- export function showDrawer(element: HTMLElement | Element, distance?: number, direction?: 'left' | 'top'): void
12
- export function closeDrawer(element: HTMLElement | Element, distance?: number, direction?: 'left' | 'top'): void
13
- export function scrollInitDrawer(element: HTMLElement | Element, distance?: number, direction?: 'left' | 'top'): void
14
- export function toggleDrawerAttributes(element: HTMLDialogElement | Element, state?: 'open' | 'close', snapClass?: string): void
15
- export function scrollDrawerState(scrollState: number, scrollDirection: number): boolean
16
- export function scrollDrawer(element: HTMLDialogElement | Element, options?: ScrollDrawerOptions): void
3
+ export function isVerticalDrawer(placement: DrawerPlacement): boolean
4
+ export function scrollDrawer(element: HTMLElement | Element, placement: DrawerPlacement, reverse?: boolean, behavior?: 'auto' | 'instant'): void
5
+ export function showDrawer(element: HTMLElement | Element, placement: DrawerPlacement): Promise<void>
6
+ export function closeDrawer(element: HTMLElement | Element, placement: DrawerPlacement): void
7
+ export function drawerEvents(element: HTMLDialogElement | Element, contentElement: HTMLElement | Element, placement: DrawerPlacement, signal?: AbortSignal): void
8
+ export function drawerObserver(element: HTMLDialogElement | Element, placement: DrawerPlacement): IntersectionObserver
9
+ export function drawerProperties(element: HTMLElement | Element, placement: DrawerPlacement): ['top' | 'left', number, number]
@@ -1,5 +1,5 @@
1
1
  .x-drawer {
2
- &:is(.no-snap) {
2
+ &:where(.no-snap) {
3
3
  --x-drawer-backdrop-opacity: 1;
4
4
 
5
5
  width: fit-content;
@@ -1,3 +1,3 @@
1
1
  .x-heading:is(.lg) {
2
- --x-heading-font-size: var(--text-3xl);
2
+ --x-heading-font-size: var(--text-5xl);
3
3
  }
@@ -2,6 +2,6 @@
2
2
  :host {
3
3
  --x-heading-font-family: var(--font-primary);
4
4
  --x-heading-font-weight: var(--font-weight-semibold);
5
- --x-heading-font-size: var(--text-xl);
5
+ --x-heading-font-size: var(--text-4xl);
6
6
  --x-heading-line-height: calc(1em + 0.375rem);
7
7
  }
@@ -1,3 +1,3 @@
1
1
  .x-heading:is(.sm) {
2
- --x-heading-font-size: var(--text-lg);
2
+ --x-heading-font-size: var(--text-3xl);
3
3
  }
@@ -1,5 +1,6 @@
1
1
  :root,
2
2
  :host {
3
- --x-label-font-size: var(--text-sm);
4
- --x-label-line-height: calc(1em + 0.25rem);
3
+ --x-label-font-size: var(--text-2xs);
4
+ --x-label-line-height: calc(1em + 0.125rem);
5
+ --x-label-font-weight: var(--font-weight-medium);
5
6
  }
@@ -0,0 +1,241 @@
1
+ .x-text {
2
+ &:where(.content) {
3
+ > :is(*:first-child) {
4
+ margin-block-start: 0;
5
+ }
6
+
7
+ > :is(*:last-child) {
8
+ margin-block-end: 0;
9
+ }
10
+
11
+ :where(b, strong) {
12
+ font-weight: var(--x-text-content-bold);
13
+ }
14
+
15
+ :where(em) {
16
+ font-style: italic;
17
+ }
18
+
19
+ :where(img) {
20
+ display: block;
21
+ height: auto;
22
+ border-radius: var(--x-text-img-border-radius);
23
+ }
24
+
25
+ :where(p) {
26
+ margin-block: var(--x-text-p-margin-block, var(--x-text-content-margin-block));
27
+
28
+ &:empty {
29
+ line-height: 0;
30
+ margin: 0;
31
+
32
+ &::after {
33
+ content: "\00a0";
34
+ }
35
+ }
36
+ }
37
+
38
+ :where(hr) {
39
+ margin-block: var(--x-text-hr-margin-block);
40
+ background-color:
41
+ color-mix(
42
+ in var(--x-text-hr-background-color-space, srgb),
43
+ var(--x-text-hr-background-color, currentColor) var(--x-text-hr-background-color-opacity, 10%),
44
+ var(--x-text-hr-background-color-mix, transparent)
45
+ );
46
+ }
47
+
48
+ :where(a) {
49
+ color: var(--x-text-link-color, var(--color-accent));
50
+ text-decoration: var(--x-text-link-text-decoration, underline);
51
+ transition: var(--transition-color);
52
+
53
+ &:hover {
54
+ color:
55
+ color-mix(
56
+ in var(--x-text-link-hover-color-space, srgb),
57
+ var(--x-text-link-hover-color, var(--color-accent)) var(--x-text-link-hover-color-opacity, 75%),
58
+ var(--x-text-link-hover-color-mix, transparent)
59
+ );
60
+ }
61
+
62
+ &:focus-visible {
63
+ color:
64
+ color-mix(
65
+ in var(--x-text-link-focus-color-space, srgb),
66
+ var(--x-text-link-focus-color, var(--color-accent)) var(--x-text-link-focus-color-opacity, 75%),
67
+ var(--x-text-link-focus-color-mix, transparent)
68
+ );
69
+ }
70
+ }
71
+
72
+ :where(h1, h2, h3, h4, h5, h6) {
73
+ font-family: var(--x-text-heading-font-family);
74
+ font-weight: var(--x-text-heading-font-weight, var(--x-text-content-bold));
75
+ font-size: var(--x-text-heading-font-size);
76
+ line-height: var(--x-text-heading-line-height);
77
+ letter-spacing: var(--x-text-heading-letter-spacing);
78
+ margin-block: var(--x-text-heading-margin-block);
79
+ color: var(--x-text-heading-color);
80
+ text-wrap: balance;
81
+ }
82
+
83
+ :where(h1) {
84
+ --x-text-heading-font-size: var(--x-text-heading-1-font-size, var(--text-5xl));
85
+ }
86
+
87
+ :where(h2) {
88
+ --x-text-heading-font-size: var(--x-text-heading-2-font-size, var(--text-4xl));
89
+ }
90
+
91
+ :where(h3) {
92
+ --x-text-heading-font-size: var(--x-text-heading-3-font-size, var(--text-3xl));
93
+ }
94
+
95
+ :where(h4) {
96
+ --x-text-heading-font-size: var(--x-text-heading-4-font-size, var(--text-2xl));
97
+ }
98
+
99
+ :where(h5) {
100
+ --x-text-heading-font-size: var(--x-text-heading-5-font-size, var(--text-xl));
101
+ }
102
+
103
+ :where(h6) {
104
+ --x-text-heading-font-size: var(--x-text-heading-6-font-size, var(--text-lg));
105
+ }
106
+
107
+ :where(table) {
108
+ border: 0;
109
+ min-inline-size: 100%;
110
+
111
+ :where(td, th) {
112
+ padding: var(--x-text-table-cell-padding-block, 1em) var(--x-text-table-cell-padding-inline, 1.25em);
113
+ text-align: left;
114
+ }
115
+
116
+ :where(thead) {
117
+ font-weight: var(--x-text-table-thead-font-weight, var(--x-text-content-bold));
118
+ border-block-end:
119
+ 1px solid color-mix(
120
+ in var(--x-text-table-thead-border-color-space, srgb),
121
+ var(--x-text-table-thead-border-color, currentColor) var(--x-text-table-thead-border-color-opacity, 10%),
122
+ var(--x-text-table-thead-border-color-mix, transparent)
123
+ );
124
+ }
125
+
126
+ :where(tbody tr) {
127
+ &:nth-of-type(even) {
128
+ background-color:
129
+ color-mix(
130
+ in var(--x-text-table-row-even-background-color-space, srgb),
131
+ var(--x-text-table-row-even-background-color, currentColor) var(--x-text-table-row-even-background-color-opacity, 5%),
132
+ var(--x-text-table-row-even-background-color-mix, transparent)
133
+ );
134
+ }
135
+ }
136
+ }
137
+
138
+ :where(ol, ul) {
139
+ margin-inline-start: var(--x-text-list-margin-inline-start, 0.75em);
140
+ padding-inline-start: var(--x-text-list-padding-inline-start, 1em);
141
+ margin-block: var(--x-text-list-margin-block, var(--x-text-content-margin-block));
142
+
143
+ :where(li) {
144
+ margin-block: var(--x-text-list-item-margin-block, 0.5em);
145
+ padding-inline-start: var(--x-text-list-item-padding-inline-start, 1ch);
146
+ }
147
+ }
148
+
149
+ :where(ol) {
150
+ &:not([type]) {
151
+ list-style: decimal;
152
+ }
153
+
154
+ & :where(li) {
155
+ &::marker {
156
+ color: var(--x-text-list-marker-color, var(--color-accent));
157
+ font-weight: var(--x-text-list-marker-font-weight, var(--x-text-content-bold));
158
+ }
159
+ }
160
+ }
161
+
162
+ :where(ul) {
163
+ :where(li) {
164
+ position: relative;
165
+ list-style-type: "";
166
+
167
+ &::before {
168
+ inline-size: var(--x-text-list-marker-size);
169
+ block-size: var(--x-text-list-marker-size);
170
+ inset-inline-start: var(--x-text-list-marker-inset-inline-start, -0.75em);
171
+ inset-block-start: var(--x-text-list-marker-inset-block-start, 0.5lh);
172
+ border:
173
+ var(--x-text-list-marker-border-width, 1px) solid
174
+ var(--x-text-list-marker-border-color, var(--color-accent));
175
+ background-color: var(--x-text-list-marker-background-color, var(--color-accent));
176
+ margin-inline-start: calc((var(--x-text-list-marker-size) / 2) * -1);
177
+ margin-block-start: calc(var(--x-text-list-marker-size) / 2 * -1);
178
+ border-radius: var(--x-text-list-marker-border-radius, 50%);
179
+ mask: var(--x-text-list-marker-mask);
180
+ position: absolute;
181
+ will-change: transform;
182
+ content: "";
183
+ }
184
+ }
185
+
186
+ &[style*="square"] {
187
+ --x-text-list-marker-border-radius: 0;
188
+ }
189
+
190
+ &[style*="circle"] {
191
+ --x-text-list-marker-background-color: transparent;
192
+ }
193
+ }
194
+
195
+ :where(blockquote) {
196
+ border-inline-start:
197
+ var(--x-text-blockquote-border-inline-start-width, 0.125rem) solid
198
+ var(--x-text-blockquote-border-inline-start-color, var(--color-accent));
199
+ margin-block: var(--x-text-blockquote-margin-block, var(--x-text-content-margin-block));
200
+ padding: var(--x-text-blockquote-padding-block, 0) var(--x-text-blockquote-padding-inline, 1.25em);
201
+ font-size: var(--x-text-blockquote-font-size, var(--text-lg));
202
+ font-style: var(--x-text-blockquote-font-style);
203
+ letter-spacing: var(--x-text-blockquote-letter-spacing, inherit);
204
+ line-height: var(--x-text-blockquote-line-height, inherit);
205
+ }
206
+
207
+ :where(code) {
208
+ font-size: var(--x-text-code-font-size, 87.5%);
209
+ }
210
+
211
+ :where(figure) {
212
+ margin-block: var(--x-text-figure-margin-block, var(--x-text-content-margin-block));
213
+ }
214
+
215
+ :where(figcaption) {
216
+ font-size: var(--x-text-figcaption-font-size, 87.5%);
217
+ font-weight: var(--x-text-figcaption-font-weight, var(--font-weight-normal));
218
+ font-style: var(--x-text-figcaption-font-style);
219
+ line-height: var(--x-text-figcaption-line-height, 1.5);
220
+ letter-spacing: var(--x-text-figcaption-letter-spacing);
221
+ margin-block-start: var(--x-text-figcaption-margin-block-start, 0.5em);
222
+ padding-inline-start: var(--x-text-figcaption-padding-inline-start);
223
+ border-inline-start: var(--x-text-figcaption-border-inline-start);
224
+ }
225
+
226
+ :where(pre) {
227
+ padding: var(--x-text-pre-padding-block, 0.25rem) var(--x-text-pre-padding-inline, 0.5rem);
228
+ background-color: var(--x-text-pre-background-color, var(--color-body-secondary));
229
+ border-radius: var(--x-pre-border-radius, var(--radius-md));
230
+ scrollbar-color: var(--x-pre-scrollbar-color, currentcolor var(--color-body-secondary));
231
+ overflow-x: auto;
232
+ overscroll-behavior: contain;
233
+
234
+ > :where(code) {
235
+ background: transparent;
236
+ width: max-content;
237
+ color: inherit;
238
+ }
239
+ }
240
+ }
241
+ }
@@ -5,242 +5,4 @@
5
5
  line-height: var(--x-text-line-height);
6
6
  letter-spacing: var(--x-text-letter-spacing);
7
7
  text-wrap: pretty;
8
-
9
- > :is(*:first-child) {
10
- margin-block-start: 0;
11
- }
12
-
13
- > :is(*:last-child) {
14
- margin-block-end: 0;
15
- }
16
-
17
- :where(b, strong) {
18
- font-weight: var(--x-text-content-bold);
19
- }
20
-
21
- :where(em) {
22
- font-style: italic;
23
- }
24
-
25
- :where(img) {
26
- display: block;
27
- height: auto;
28
- border-radius: var(--x-text-img-border-radius);
29
- }
30
-
31
- :where(p) {
32
- margin-block: var(--x-text-p-margin-block, var(--x-text-content-margin-block));
33
-
34
- &:empty {
35
- line-height: 0;
36
- margin: 0;
37
-
38
- &::after {
39
- content: "\00a0";
40
- }
41
- }
42
- }
43
-
44
- :where(hr) {
45
- margin-block: var(--x-text-hr-margin-block);
46
- background-color:
47
- color-mix(
48
- in var(--x-text-hr-background-color-space, srgb),
49
- var(--x-text-hr-background-color, currentColor) var(--x-text-hr-background-color-opacity, 10%),
50
- var(--x-text-hr-background-color-mix, transparent)
51
- );
52
- }
53
-
54
- :where(a) {
55
- color: var(--x-text-link-color, var(--color-accent));
56
- text-decoration: var(--x-text-link-text-decoration, underline);
57
- transition: var(--transition-color);
58
-
59
- &:hover {
60
- color:
61
- color-mix(
62
- in var(--x-text-link-hover-color-space, srgb),
63
- var(--x-text-link-hover-color, var(--color-accent)) var(--x-text-link-hover-color-opacity, 75%),
64
- var(--x-text-link-hover-color-mix, transparent)
65
- );
66
- }
67
-
68
- &:focus-visible {
69
- color:
70
- color-mix(
71
- in var(--x-text-link-focus-color-space, srgb),
72
- var(--x-text-link-focus-color, var(--color-accent)) var(--x-text-link-focus-color-opacity, 75%),
73
- var(--x-text-link-focus-color-mix, transparent)
74
- );
75
- }
76
- }
77
-
78
- :where(h1, h2, h3, h4, h5, h6) {
79
- font-family: var(--x-text-heading-font-family);
80
- font-weight: var(--x-text-heading-font-weight, var(--x-text-content-bold));
81
- font-size: var(--x-text-heading-font-size);
82
- line-height: var(--x-text-heading-line-height);
83
- letter-spacing: var(--x-text-heading-letter-spacing);
84
- margin-block: var(--x-text-heading-margin-block);
85
- color: var(--x-text-heading-color);
86
- text-wrap: balance;
87
- }
88
-
89
- :where(h1) {
90
- --x-text-heading-font-size: var(--x-text-heading-1-font-size, var(--text-4xl));
91
- }
92
-
93
- :where(h2) {
94
- --x-text-heading-font-size: var(--x-text-heading-2-font-size, var(--text-3xl));
95
- }
96
-
97
- :where(h3) {
98
- --x-text-heading-font-size: var(--x-text-heading-3-font-size, var(--text-2xl));
99
- }
100
-
101
- :where(h4) {
102
- --x-text-heading-font-size: var(--x-text-heading-4-font-size, var(--text-xl));
103
- }
104
-
105
- :where(h5) {
106
- --x-text-heading-font-size: var(--x-text-heading-5-font-size, var(--text-lg));
107
- }
108
-
109
- :where(h6) {
110
- --x-text-heading-font-size: var(--x-text-heading-6-font-size);
111
- }
112
-
113
- :where(table) {
114
- border: 0;
115
- min-inline-size: 100%;
116
-
117
- :where(td, th) {
118
- padding: var(--x-text-table-cell-padding-block, 1em) var(--x-text-table-cell-padding-inline, 1.25em);
119
- text-align: left;
120
- }
121
-
122
- :where(thead) {
123
- font-weight: var(--x-text-table-thead-font-weight, var(--x-text-content-bold));
124
- border-block-end:
125
- 1px solid color-mix(
126
- in var(--x-text-table-thead-border-color-space, srgb),
127
- var(--x-text-table-thead-border-color, currentColor) var(--x-text-table-thead-border-color-opacity, 10%),
128
- var(--x-text-table-thead-border-color-mix, transparent)
129
- );
130
- }
131
-
132
- :where(tbody tr) {
133
- &:nth-of-type(even) {
134
- background-color:
135
- color-mix(
136
- in var(--x-text-table-row-even-background-color-space, srgb),
137
- var(--x-text-table-row-even-background-color, currentColor) var(--x-text-table-row-even-background-color-opacity, 5%),
138
- var(--x-text-table-row-even-background-color-mix, transparent)
139
- );
140
- }
141
- }
142
- }
143
-
144
- :where(ol, ul) {
145
- margin-inline-start: var(--x-text-list-margin-inline-start, 0.75em);
146
- padding-inline-start: var(--x-text-list-padding-inline-start, 1em);
147
- margin-block: var(--x-text-list-margin-block, var(--x-text-content-margin-block));
148
-
149
- :where(li) {
150
- margin-block: var(--x-text-list-item-margin-block, 0.5em);
151
- padding-inline-start: var(--x-text-list-item-padding-inline-start, 1ch);
152
- }
153
- }
154
-
155
- :where(ol) {
156
- &:not([type]) {
157
- list-style: decimal;
158
- }
159
-
160
- & :where(li) {
161
- &::marker {
162
- color: var(--x-text-list-marker-color, var(--color-accent));
163
- font-weight: var(--x-text-list-marker-font-weight, var(--x-text-content-bold));
164
- }
165
- }
166
- }
167
-
168
- :where(ul) {
169
- :where(li) {
170
- position: relative;
171
- list-style-type: "";
172
-
173
- &::before {
174
- inline-size: var(--x-text-list-marker-size);
175
- block-size: var(--x-text-list-marker-size);
176
- inset-inline-start: var(--x-text-list-marker-inset-inline-start, -0.75em);
177
- inset-block-start: var(--x-text-list-marker-inset-block-start, 0.5lh);
178
- border:
179
- var(--x-text-list-marker-border-width, 1px) solid
180
- var(--x-text-list-marker-border-color, var(--color-accent));
181
- background-color: var(--x-text-list-marker-background-color, var(--color-accent));
182
- margin-inline-start: calc((var(--x-text-list-marker-size) / 2) * -1);
183
- margin-block-start: calc(var(--x-text-list-marker-size) / 2 * -1);
184
- border-radius: var(--x-text-list-marker-border-radius, 50%);
185
- mask: var(--x-text-list-marker-mask);
186
- position: absolute;
187
- will-change: transform;
188
- content: "";
189
- }
190
- }
191
-
192
- &[style*="square"] {
193
- --x-text-list-marker-border-radius: 0;
194
- }
195
-
196
- &[style*="circle"] {
197
- --x-text-list-marker-background-color: transparent;
198
- }
199
- }
200
-
201
- :where(blockquote) {
202
- border-inline-start:
203
- var(--x-text-blockquote-border-inline-start-width, 0.375em) solid
204
- var(--x-text-blockquote-border-inline-start-color, var(--color-accent));
205
- margin-block: var(--x-text-blockquote-margin-block, var(--x-text-content-margin-block));
206
- padding: var(--x-text-blockquote-padding-block, 0) var(--x-text-blockquote-padding-inline, 1.25em);
207
- font-size: var(--x-text-blockquote-font-size, inherit);
208
- font-style: var(--x-text-blockquote-font-style);
209
- letter-spacing: var(--x-text-blockquote-letter-spacing, inherit);
210
- line-height: var(--x-text-blockquote-line-height, inherit);
211
- }
212
-
213
- :where(code) {
214
- font-size: var(--x-text-code-font-size, 87.5%);
215
- }
216
-
217
- :where(figure) {
218
- margin-block: var(--x-text-figure-margin-block, var(--x-text-content-margin-block));
219
- }
220
-
221
- :where(figcaption) {
222
- font-size: var(--x-text-figcaption-font-size, 87.5%);
223
- font-weight: var(--x-text-figcaption-font-weight, var(--font-weight-semibold));
224
- font-style: var(--x-text-figcaption-font-style);
225
- line-height: var(--x-text-figcaption-line-height, 1.5);
226
- letter-spacing: var(--x-text-figcaption-letter-spacing);
227
- margin-block-start: var(--x-text-figcaption-margin-block-start, 0.5em);
228
- padding-inline-start: var(--x-text-figcaption-padding-inline-start);
229
- border-inline-start: var(--x-text-figcaption-border-inline-start);
230
- }
231
-
232
- :where(pre) {
233
- padding: var(--x-text-pre-padding-block, 0.25rem) var(--x-text-pre-padding-inline, 0.5rem);
234
- background-color: var(--x-text-pre-background-color, var(--color-body-secondary));
235
- border-radius: var(--x-pre-border-radius, var(--radius-md));
236
- scrollbar-color: var(--x-pre-scrollbar-color, currentcolor var(--color-body-secondary));
237
- overflow-x: auto;
238
- overscroll-behavior: contain;
239
-
240
- > :where(code) {
241
- background: transparent;
242
- width: max-content;
243
- color: inherit;
244
- }
245
- }
246
8
  }
@@ -1,2 +1,4 @@
1
1
  @import "./props/default.css";
2
+ @import "./props/content.css";
2
3
  @import "./default.css";
4
+ @import "./content.css";
@@ -0,0 +1,9 @@
1
+ :root,
2
+ :host {
3
+ --x-text-content-bold: var(--font-weight-semibold);
4
+ --x-text-list-marker-size: 0.375em;
5
+ --x-text-content-margin-block: 1.25em;
6
+ --x-text-hr-margin-block: 3em;
7
+ --x-text-heading-line-height: 1.2;
8
+ --x-text-img-border-radius: var(--radius-2xl);
9
+ }
@@ -1,10 +1,4 @@
1
1
  :root,
2
2
  :host {
3
- --x-text-content-bold: var(--font-weight-semibold);
4
- --x-text-content-margin-block: calc(var(--spacing) * 5);
5
- --x-text-list-marker-size: 0.375em;
6
- --x-text-line-height: calc(1em + 0.75rem);
7
- --x-text-hr-margin-block: 3em;
8
- --x-text-heading-line-height: calc(1em + 0.375rem);
9
- --x-text-heading-margin-block: 1.5em 0.5em;
3
+ --x-text-line-height: 1.5;
10
4
  }
@@ -4,3 +4,4 @@ export interface CloseToastOptions {
4
4
  }
5
5
 
6
6
  export function closeToaster(element: HTMLElement, options?: CloseToastOptions): Promise<void>
7
+ export function toasterObserver(): MutationObserver
@@ -0,0 +1,18 @@
1
+ import { supportsCommand, supportsIs } from 'webuum/supports'
2
+ import { supportsTimelineTrigger, supportsInterestFor } from './supports.js'
3
+
4
+ if (!supportsCommand) {
5
+ import('invokers-polyfill')
6
+ }
7
+
8
+ if (!supportsIs()) {
9
+ import('@webreflection/custom-elements-builtin')
10
+ }
11
+
12
+ if (!supportsInterestFor) {
13
+ import('interestfor/src/interestfor.js')
14
+ }
15
+
16
+ if (!supportsTimelineTrigger) {
17
+ import('./polyfills/timelineTrigger.js')
18
+ }
@@ -2,8 +2,8 @@
2
2
  :host {
3
3
  --container: min(100% - (var(--container-padding) * 2), var(--container-width));
4
4
  --container-breakout: min(100% - (var(--container-padding) * 2), var(--container-breakout-width));
5
- --container-width: 80rem;
5
+ --container-width: 82rem;
6
6
  --container-breakout-width: calc(var(--container-width) + 10rem);
7
- --container-padding: 5vw;
8
- --container-padding-calc: max(calc(50vw - (var(--container-width) / 2)), var(--container-padding));
7
+ --container-padding: clamp(1.25rem, 7.5cqw - 1.5rem, 4rem);
8
+ --container-padding-calc: max(calc(50cqw - (var(--container-width) / 2)), var(--container-padding));
9
9
  }
@@ -0,0 +1,18 @@
1
+ @utility animation-trigger-enter {
2
+ @supports not (timeline-trigger-name: --v) {
3
+ animation-play-state: paused;
4
+
5
+ @media (scripting: none) {
6
+ animation: none;
7
+ }
8
+
9
+ &:is([data-enter]),
10
+ :is([data-enter]) & {
11
+ animation-play-state: running;
12
+ }
13
+ }
14
+
15
+ @media (prefers-reduced-motion), print {
16
+ animation: none;
17
+ }
18
+ }