sprof 0.8.20 → 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.
@@ -14,5 +14,5 @@ export type { UseFiltersReturn } from './useFilters';
14
14
  export { useFilters } from './useFilters';
15
15
  export type { UsePaginationReturn } from './usePagination';
16
16
  export { usePagination } from './usePagination';
17
- export type { ThemeName, UseThemeOptions, UseThemeReturn } from './useTheme';
18
- export { getStoredTheme, isThemeLockedLight, lockLightTheme, useTheme } from './useTheme';
17
+ export type { PlatformName, ThemeName, UseThemeOptions, UseThemeReturn } from './useTheme';
18
+ export { DEFAULT_PLATFORM, getStoredTheme, isThemeLockedLight, lockLightTheme, MOBILE_MAX_WIDTH, resolvePlatform, useTheme } from './useTheme';
@@ -1,6 +1,32 @@
1
1
  import { Ref } from 'vue';
2
2
  /** Доступные темы дизайн-системы (атрибут `data-theme`). */
3
3
  export type ThemeName = 'light' | 'dark';
4
+ /**
5
+ * Платформы дизайн-системы (атрибут `data-platform`, UI.md §4a).
6
+ * Наборы лежат в `assets/styles/platform/*.css`.
7
+ */
8
+ export type PlatformName = 'web-desktop' | 'web-tablet' | 'web-mobile' | 'ios' | 'android';
9
+ /** Стандартный брендбук/платформа (для клиентов без явного выбора). */
10
+ export declare const DEFAULT_PLATFORM: PlatformName;
11
+ /**
12
+ * Порог «узкого экрана» для мобильной раскладки, px (UI.md §4a).
13
+ * 768 — общий порог планшета: ниже — телефонная оболочка. Один порог (не два)
14
+ * специально: два порога дали бы «мёртвую зону», где платформа не переключается.
15
+ */
16
+ export declare const MOBILE_MAX_WIDTH = 768;
17
+ /**
18
+ * Определить платформу по размеру вьюпорта и типу указателя.
19
+ *
20
+ * ⚠️ Зачем ФУНКЦИЯ, а не CSS-медиазапрос. Платформа — это смена НАБОРА ТОКЕНОВ
21
+ * (плотность, высоты полей, кегль), а не пары правил. Токены живут в CSS под
22
+ * `:root[data-platform=…]`, поэтому переключение — смена атрибута, что нельзя
23
+ * сделать медиазапросом без дублирования всего набора.
24
+ *
25
+ * ⚠️ `coarse pointer` НЕ главный признак: планшет с мышью — всё равно `tablet`,
26
+ * а телефон в «режиме рабочего стола» — всё равно `mobile` по ширине.
27
+ * Порог — ПЕРВИЧЕН (ширина), указатель — только для различения планшета/ПК.
28
+ */
29
+ export declare function resolvePlatform(width: number, coarsePointer?: boolean): PlatformName;
4
30
  /**
5
31
  * Дополнительные атрибуты дизайн-системы на `<html>` (UI.md §0).
6
32
  * Клиент обязан их выставить, иначе токенов нет вовсе.
@@ -8,12 +34,18 @@ export type ThemeName = 'light' | 'dark';
8
34
  export interface UseThemeOptions {
9
35
  /** Набор палитры, `data-brandbook` */
10
36
  brandbook?: string;
11
- /** Платформа, `data-platform` */
12
- platform?: string;
37
+ /** Платформа, `data-platform` (можно менять на лету через `setPlatform`) */
38
+ platform?: PlatformName;
13
39
  /** Ключ в localStorage; меняйте, если на одном домене несколько приложений */
14
40
  storageKey?: string;
15
41
  /** Тема, если выбор ещё не сделан (по умолчанию — светлая) */
16
42
  defaultTheme?: ThemeName;
43
+ /**
44
+ * Следить за размером вьюпорта и менять `platform` автоматически
45
+ * (`resolvePlatform`). По умолчанию — выкл.: публичные сайты и админки
46
+ * с одним сценарием не должны случайно «уезжать» в mobile.
47
+ */
48
+ autoPlatform?: boolean;
17
49
  }
18
50
  export interface UseThemeReturn {
19
51
  /** Текущая тема */
@@ -24,6 +56,10 @@ export interface UseThemeReturn {
24
56
  set(theme: ThemeName): void;
25
57
  /** Переключить */
26
58
  toggle(): void;
59
+ /** Текущая платформа (`data-platform`) */
60
+ platform: Ref<PlatformName>;
61
+ /** Установить платформу вручную (отключает авто-слежение) */
62
+ setPlatform(platform: PlatformName): void;
27
63
  }
28
64
  /** Заморозить тему в светлой (см. `themeLockedLight`). */
29
65
  export declare function lockLightTheme(): void;
package/dist/index.d.ts CHANGED
@@ -47,8 +47,8 @@ export { useCrud, useFilters, usePagination } from './core/composables/index';
47
47
  export type { UseCrudOptions, UseCrudReturn } from './core/composables/useCrud';
48
48
  export type { UseFiltersReturn } from './core/composables/useFilters';
49
49
  export type { UsePaginationReturn } from './core/composables/usePagination';
50
- export type { ThemeName, UseThemeOptions, UseThemeReturn } from './core/composables/useTheme';
51
- export { getStoredTheme, isThemeLockedLight, lockLightTheme, useTheme } from './core/composables/useTheme';
50
+ export type { PlatformName, ThemeName, UseThemeOptions, UseThemeReturn } from './core/composables/useTheme';
51
+ export { DEFAULT_PLATFORM, getStoredTheme, isThemeLockedLight, lockLightTheme, MOBILE_MAX_WIDTH, resolvePlatform, useTheme } from './core/composables/useTheme';
52
52
  export type { QuasarBrand } from './core/brand/quasar';
53
53
  export { quasarBrandExample, quasarBrandRdkb } from './core/brand/quasar';
54
54
  export type { AuthLogOperation, AuthLogProvider, AuthLogReason, AuthLogUser } from './core/auth/AuthLog';