vanilla-jui 1.5.23 → 1.5.25

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.
@@ -1,11 +1,4 @@
1
1
  @layer gradient {
2
- :root,
3
- .light,
4
- .dark {
5
- --gradient-card-border: var(--ui-border);
6
- --gradient-card-shadow: var(--shadow-md);
7
- }
8
-
9
2
  .bg-gradient-sunrise,
10
3
  .bg-gradient-aurora,
11
4
  .bg-gradient-ocean,
@@ -212,88 +205,4 @@
212
205
  )
213
206
  );
214
207
  }
215
-
216
- .gradient-grid {
217
- grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
218
- }
219
-
220
- .gradient-card {
221
- display: grid;
222
- gap: 12px;
223
- padding: 16px;
224
- border-radius: 22px;
225
- border: 1px solid var(--gradient-card-border);
226
- background: var(--ui-surface-raised);
227
- box-shadow: var(--gradient-card-shadow);
228
- overflow: hidden;
229
- }
230
-
231
- .gradient-preview {
232
- min-height: 150px;
233
- display: grid;
234
- align-content: space-between;
235
- gap: 12px;
236
- padding: 16px;
237
- border-radius: 18px;
238
- border: 1px solid var(--ui-border-subtle);
239
- color: var(--ui-fg);
240
- }
241
-
242
- .gradient-preview-title {
243
- display: inline-flex;
244
- width: fit-content;
245
- align-items: center;
246
- padding: 0.38rem 0.64rem;
247
- border-radius: 9999px;
248
- background: color-mix(in srgb, var(--ui-surface-raised) 72%, transparent);
249
- border: 1px solid color-mix(in srgb, var(--ui-border) 60%, transparent);
250
- font-size: 0.76rem;
251
- font-weight: 700;
252
- letter-spacing: 0.08em;
253
- text-transform: uppercase;
254
- }
255
-
256
- .gradient-preview-token {
257
- font-size: 0.82rem;
258
- font-weight: 700;
259
- letter-spacing: 0.04em;
260
- color: color-mix(in srgb, var(--ui-fg) 78%, transparent);
261
- }
262
-
263
- .gradient-card h3 {
264
- margin: 0;
265
- font-size: 1.02rem;
266
- }
267
-
268
- .gradient-card p {
269
- margin: 0;
270
- line-height: 1.65;
271
- color: var(--ui-fg-muted);
272
- }
273
-
274
- .gradient-note {
275
- padding: 0.82rem 0.9rem;
276
- border-radius: 14px;
277
- border: 1px solid var(--ui-border-subtle);
278
- background: var(--ui-surface-subtle);
279
- }
280
-
281
- .gradient-meta {
282
- display: flex;
283
- flex-wrap: wrap;
284
- gap: 8px;
285
- }
286
-
287
- .gradient-pill {
288
- display: inline-flex;
289
- align-items: center;
290
- gap: 0.35rem;
291
- padding: 0.34rem 0.6rem;
292
- border-radius: 9999px;
293
- border: 1px solid var(--ui-border-subtle);
294
- background: var(--ui-surface-subtle);
295
- color: var(--ui-fg-soft);
296
- font-size: 0.76rem;
297
- font-weight: 700;
298
- }
299
208
  }
package/src/css/index.css CHANGED
@@ -1,13 +1,11 @@
1
- @layer config, layout, content, icon, font, components, themes, animation, status;
1
+ @layer tokens, gradient, layout, icon, font, components, themes, animation, status;
2
2
 
3
3
  @import url('./tokens.css');
4
- /* @import url('./gradient.css'); */
4
+ @import url('./gradient.css');
5
5
  @import url('./layout.css');
6
6
  @import url('./icon.css');
7
7
  @import url('./font.css');
8
8
 
9
- @import url('./content.css');
10
-
11
9
  @import url('./components.css');
12
10
  @import url('./themes/index.css');
13
11
 
@@ -790,6 +790,18 @@
790
790
  columns: auto;
791
791
  }
792
792
 
793
+ .columns-6xs {
794
+ columns: var(--columns-6xs);
795
+ }
796
+
797
+ .columns-5xs {
798
+ columns: var(--columns-5xs);
799
+ }
800
+
801
+ .columns-4xs {
802
+ columns: var(--columns-4xs);
803
+ }
804
+
793
805
  .columns-3xs {
794
806
  columns: var(--columns-3xs);
795
807
  }
@@ -18,12 +18,8 @@
18
18
  padding: 0;
19
19
  }
20
20
 
21
- .j-pagination .more span,
22
- .j-pagination .is-active {
23
- cursor: default;
24
- }
25
-
26
21
  .j-pagination ul.pagination li {
27
22
  margin: 0;
23
+ padding: 0;
28
24
  }
29
25
  }
@@ -1,5 +1,5 @@
1
1
  @layer themes {
2
- #j-editor {
2
+ #j-editor-container {
3
3
  --editor-max-width: 880px;
4
4
  --editor-min-height: calc(100vh - 51px);
5
5
  --editor-padding: 1.5rem 1.5rem 4rem;
@@ -7,4 +7,62 @@
7
7
  --editor-border-style: solid;
8
8
  --editor-border-color: var(--ui-border);
9
9
  }
10
+
11
+ .j-editor {
12
+ --editor-outline: 0;
13
+ --editor-font-size: var(--font-size-lg);
14
+ --editor-line-height: 1.75;
15
+ --editor-letter-space: 0.01em;
16
+ --editor-word-space: 0.02em;
17
+ --editor-paragraph-space: 1.25em;
18
+ --editor-heading-space: 1.5em;
19
+ --editor-block-space: 1.5em;
20
+ --editor-list-space: 0.5em;
21
+
22
+ --editor-heading-fg: var(--tone-heading);
23
+ --editor-caption-fg: var(--tone-caption);
24
+ --editor-ring: var(--tone-ring);
25
+ --editor-border-tone: var(--tone-border);
26
+ --editor-border-subtle: var(--ui-border-subtle);
27
+ --editor-blockquote-bg: var(--tone-wash);
28
+ --editor-blockquote-fg: var(--tone-subtitle);
29
+ --editor-link: var(--tone-link);
30
+ --editor-link-hover: var(--tone-link-hover);
31
+ --editor-link-visited: var(--tone-link-visited);
32
+ --editor-link-active: var(--tone-link-active);
33
+ --editor-border: var(--ui-border);
34
+ --editor-code-bg: var(--tone-code-bg);
35
+ --editor-code-fg: var(--tone-code-fg);
36
+ --editor-bg-subtle: var(--ui-bg-subtle);
37
+ }
38
+
39
+ .j-editor.is-sm {
40
+ --editor-font-size: var(--font-size-md);
41
+ --editor-line-height: 1.65;
42
+ --editor-paragraph-space: 1em;
43
+ --editor-heading-space: 1.25em;
44
+ --editor-block-space: 1.25em;
45
+ }
46
+
47
+ .j-editor.is-lg {
48
+ --editor-font-size: var(--font-size-xl);
49
+ --editor-line-height: 1.8;
50
+ --editor-paragraph-space: 1.5em;
51
+ --editor-heading-space: 1.75em;
52
+ --editor-block-space: 1.75em;
53
+ }
54
+
55
+ .j-editor.is-xl {
56
+ --editor-font-size: var(--font-size-2xl);
57
+ --editor-line-height: 1.85;
58
+ --editor-paragraph-space: 1.75em;
59
+ --editor-heading-space: 2em;
60
+ --editor-block-space: 2em;
61
+ }
62
+
63
+ .j-radius-round .j-editor {
64
+ --radius-sm: 0.75rem;
65
+ --radius-md: 1rem;
66
+ --radius-lg: 1.5rem;
67
+ }
10
68
  }
@@ -1,4 +1,3 @@
1
- @import url('./content.css');
2
1
  @import url('./toolbar.css');
3
2
  @import url('./editor.css');
4
3
  @import url('./button.css');
package/src/css/toc.css CHANGED
@@ -6,7 +6,6 @@
6
6
  .j-toc .toc-list {
7
7
  display: flex;
8
8
  flex-direction: column;
9
- gap: 0;
10
9
  }
11
10
 
12
11
  .j-toc .toc-link {
@@ -15,9 +14,6 @@
15
14
  color: var(--tone-caption);
16
15
  font-size: var(--font-size-sm);
17
16
  text-decoration: none;
18
- transition:
19
- color 0.15s,
20
- border-color 0.15s;
21
17
  }
22
18
 
23
19
  .j-toc .toc-link:hover,
@@ -3,7 +3,7 @@
3
3
  vanilla-jui v2
4
4
  ============================================ */
5
5
 
6
- @layer config {
6
+ @layer tokens {
7
7
  /* ============================================
8
8
  1. Layout Tokens
9
9
  ============================================ */
@@ -88,6 +88,7 @@
88
88
  --columns-4xl: 56rem;
89
89
  --columns-5xl: 64rem;
90
90
  --columns-6xl: 72rem;
91
+ --columns-7xl: 80rem;
91
92
 
92
93
  /* --- Border Radius --- */
93
94
  --radius-full: 9999px;
package/src/index.ts CHANGED
@@ -7,14 +7,15 @@ export * from './utilities/id.ts';
7
7
  export * from './utilities/dom.ts';
8
8
  export * from './utilities/events.ts';
9
9
  export * from './utilities/http.ts';
10
- export * from './core/motion.ts';
10
+ export * from './utilities/locale.ts';
11
11
  export * from './utilities/object.ts';
12
12
  export * from './utilities/timer.ts';
13
13
  export * from './utilities/types.ts';
14
- export * from './core/scheduler.ts';
15
14
  export * from './utilities/state.ts';
16
15
  export * from './utilities/refs.ts';
16
+ export * from './core/scheduler.ts';
17
17
  export * from './core/view.ts';
18
+ export * from './core/motion.ts';
18
19
  export * from './core/presence.ts';
19
20
 
20
21
  // UI primitives
@@ -46,5 +46,7 @@ export default {
46
46
  Submit: '提交',
47
47
  Reset: '重置',
48
48
  'Loading...': '加载中...',
49
+ 'Go to previous page': '访问上一页',
50
+ 'Go to next page': '访问下一页',
49
51
  },
50
52
  };
@@ -7,9 +7,7 @@ import {
7
7
  flushSync,
8
8
  jsx,
9
9
  } from 'vanilla-signal';
10
- import { t } from 'vanilla-signal-i18n';
11
-
12
- import locales from '../locales/index.ts';
10
+ import { translate } from '../utilities/locale.ts';
13
11
  import { all, joinClasses } from '../utilities/dom.ts';
14
12
  import { createEventManager } from '../utilities/events.ts';
15
13
  import { isPlainObject } from '../utilities/object.ts';
@@ -228,7 +226,6 @@ export function createTheme(options: ThemeOptions = {}): ThemeInstance {
228
226
  const storage = createThemeStorage();
229
227
  const bindings = new Set<() => void>();
230
228
  const events = createEventManager();
231
- const translate = (key: string): string => t(key, locales);
232
229
  const scheme = (): string =>
233
230
  window.matchMedia?.('(prefers-color-scheme: dark)').matches
234
231
  ? 'dark'
@@ -6,9 +6,7 @@ import {
6
6
  insert,
7
7
  jsx,
8
8
  } from 'vanilla-signal';
9
- import { t } from 'vanilla-signal-i18n';
10
-
11
- import locales from '../locales/index.ts';
9
+ import { translate } from '../utilities/locale.ts';
12
10
  import { icon } from '../primitives/icons.ts';
13
11
  import { createLoading } from '../primitives/loading.ts';
14
12
  import { joinClasses, q } from '../utilities/dom.ts';
@@ -17,8 +15,6 @@ import { randomId } from '../utilities/id.ts';
17
15
  import { timer } from '../utilities/timer.ts';
18
16
  import { validateParam } from '../utilities/types.ts';
19
17
 
20
- const s = (k: string) => t(k, locales);
21
-
22
18
  export type ToastTheme = 'info' | 'success' | 'warning' | 'error' | 'primary';
23
19
 
24
20
  export interface ToastClassNames {
@@ -174,7 +170,7 @@ function toastIconContent(
174
170
 
175
171
  function toastMessage(message: string, options: ToastOptions): string {
176
172
  return isToastLoading(options)
177
- ? options.text?.loading || s('Loading...')
173
+ ? options.text?.loading || translate('Loading...')
178
174
  : message;
179
175
  }
180
176
 
@@ -456,8 +452,8 @@ function confirm(message = '', props: ToastConfirmProps = {}): HTMLElement {
456
452
  if (toast) return toast;
457
453
  }
458
454
  validateParam('message', message, 'string', 'Toast.confirm');
459
- const closeText = props.text?.close || s('Close');
460
- const confirmText = props.text?.confirm || s('Confirm');
455
+ const closeText = props.text?.close || translate('Close');
456
+ const confirmText = props.text?.confirm || translate('Confirm');
461
457
  const theme = props.theme || 'info';
462
458
  validateParam('once', once, 'boolean', 'Toast.confirm');
463
459
  validateParam('theme', theme, TOAST_THEME_RULE, 'Toast.confirm');
@@ -1,6 +1,5 @@
1
- import { t } from 'vanilla-signal-i18n';
2
1
  import { Toast } from '../primitives/toast';
3
- import locales from '../locales';
2
+ import { translate } from '../utilities/locale.ts';
4
3
 
5
4
  declare global {
6
5
  interface Navigator {
@@ -128,7 +127,7 @@ export function isModernBrowser(): SupportES2022 {
128
127
  }
129
128
  export function checkModernBrowser(): SupportES2022 {
130
129
  if (!isModernBrowser()) {
131
- Toast.confirm(t('wn', locales), {
130
+ Toast.confirm(translate('wn'), {
132
131
  theme: 'error',
133
132
  onConfirm: () => {
134
133
  window.open('https://www.google.cn/chrome/fallback/', '_blank');
@@ -0,0 +1,6 @@
1
+ import { t } from 'vanilla-signal-i18n';
2
+ import locales from '../locales/index.ts';
3
+
4
+ export function translate(key: string) {
5
+ return t(key, locales);
6
+ }