es-application-template 0.0.8 → 0.0.15

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +50 -9
  3. package/dist/api/index.d.ts +14 -0
  4. package/dist/appearance/core/contrast.d.ts +30 -0
  5. package/dist/appearance/core/defaults.d.ts +5 -0
  6. package/dist/appearance/core/grid.d.ts +7 -0
  7. package/dist/appearance/core/index.d.ts +14 -0
  8. package/dist/appearance/core/migrate.d.ts +2 -0
  9. package/dist/appearance/core/options.d.ts +125 -0
  10. package/dist/appearance/core/presets.d.ts +22 -0
  11. package/dist/appearance/core/ranges.d.ts +313 -0
  12. package/dist/appearance/core/runtime.d.ts +4 -0
  13. package/dist/appearance/core/theme-constants.d.ts +13 -0
  14. package/dist/appearance/core/theme-presets.d.ts +3 -0
  15. package/dist/appearance/core/theme-types.d.ts +37 -0
  16. package/dist/appearance/core/theme-utils.d.ts +8 -0
  17. package/dist/appearance/core/types.d.ts +231 -0
  18. package/dist/appearance/core/validate.d.ts +5 -0
  19. package/dist/appearance/runtime/AppearanceRuntime.d.ts +6 -0
  20. package/dist/appearance/runtime/bootstrap.d.ts +4 -0
  21. package/dist/components/sidebar/index.d.ts +1 -0
  22. package/dist/config/config-document.d.ts +3 -2
  23. package/dist/config/use-runtime-config.d.ts +2 -1
  24. package/dist/config/use-runtime-identity.d.ts +1 -0
  25. package/dist/domain/constants/index.d.ts +8 -0
  26. package/dist/index.js +5463 -1155
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +5474 -1170
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/management/appearance/appearance-mode-control.d.ts +8 -0
  31. package/dist/management/appearance/appearance-number-field.d.ts +15 -0
  32. package/dist/management/appearance/appearance-preview.d.ts +12 -0
  33. package/dist/management/appearance/appearance-primitives.d.ts +95 -0
  34. package/dist/management/appearance/appearance-theme-library.d.ts +22 -0
  35. package/dist/management/appearance/appearance-theme-modal.d.ts +27 -0
  36. package/dist/management/appearance/appearance-workspace.d.ts +16 -0
  37. package/dist/management/appearance/index.d.ts +3 -0
  38. package/dist/management/appearance/use-appearance-theme-library.d.ts +25 -0
  39. package/dist/management/setting-keys/config-tree/setting-key-convention.d.ts +56 -0
  40. package/dist/package/index.d.ts +6 -1
  41. package/dist/styles/index.css +4696 -233
  42. package/package.json +3 -3
  43. package/dist/index.cjs +0 -6743
  44. package/dist/index.cjs.map +0 -1
  45. package/dist/styles.css +0 -438
  46. package/dist/styles.css.map +0 -1
  47. package/dist/views/es-application-template/management/setting-keys/config-tree/ConfigTreeGridEditor.d.ts +0 -14
  48. package/dist/views/es-application-template/management/setting-keys/config-tree/TreeSelect.d.ts +0 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.13
4
+
5
+ - Add Appearance core/runtime/bootstrap and the Appearance management workspace with Theme Library.
6
+ - Add schema 14 migration, including explicit schema 13 to 14 grid color-source migration.
7
+ - AppProvider now composes AppearanceRuntime, SettingRuntime and ShortcutRuntime.
8
+ - Export bootstrapAppearance, useAppearance, AppearanceSettingsPage, appearanceDefaults and AppearanceConfig from the package root.
9
+ - Widen es-grid-template peer compatibility to the verified 1.9.46+ line used by ADMIN/PO.
10
+ - Skip protected Config API fetches in Appearance/Setting runtime until a user identity exists.
11
+
12
+ ## 0.0.9
13
+
14
+ - Add the Settings key convention living specification with quick-reference and full-contract views.
15
+ - Add copy-all and JSON download actions generated from one structured convention source.
16
+ - Make the package sidebar styling self-contained instead of relying on the host application's `.customizer` class.
17
+
3
18
  ## 0.1.0
4
19
 
5
20
  - Initial standalone package extracted from the verified ADMIN embedded module.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # es-application-template
2
2
 
3
- Shared Setting and Shortcut infrastructure for ES applications.
3
+ Shared Setting, Shortcut and Appearance infrastructure for ES applications.
4
4
 
5
5
  The package layout/build convention follows `client/es-document-template`: `src/index.tsx`, `src/package/index.ts`, `rollup.config.mjs`, one package `tsconfig.json`, CJS + ESM + declaration + extracted CSS output.
6
6
 
@@ -10,7 +10,7 @@ The package layout/build convention follows `client/es-document-template`: `src/
10
10
  npm install es-application-template
11
11
  ```
12
12
 
13
- Host applications provide the peer dependencies declared in `package.json`, including React 18, TanStack React Query and `es-grid-template >=1.9.72 <2`.
13
+ Host applications provide the peer dependencies declared in `package.json`, including React 18, TanStack React Query and `es-grid-template >=1.9.46 <2`.
14
14
 
15
15
  Package CSS is emitted at:
16
16
 
@@ -18,17 +18,38 @@ Package CSS is emitted at:
18
18
  dist/styles/index.css
19
19
  ```
20
20
 
21
- ## Provider
21
+ Host applications must import the extracted stylesheet once from their
22
+ application entry, after the host global styles:
23
+
24
+ ```ts
25
+ import 'es-application-template/dist/styles/index.css'
26
+ ```
27
+
28
+ The package `style` metadata does not make CRA/Webpack load the stylesheet
29
+ automatically.
30
+
31
+ ## Bootstrap and Provider
32
+
33
+ Apply the cached Appearance before React paints, then mount the package runtime inside the host QueryClient:
22
34
 
23
35
  ```tsx
24
- import { AppProvider } from 'es-application-template'
36
+ import { AppProvider, bootstrapAppearance } from 'es-application-template'
37
+
38
+ bootstrapAppearance()
25
39
 
26
- <AppProvider>
27
- <App />
28
- </AppProvider>
40
+ const root = createRoot(document.getElementById('root')!)
41
+ root.render(
42
+ <QueryClientProvider client={queryClient}>
43
+ <AppProvider>
44
+ <App />
45
+ </AppProvider>
46
+ </QueryClientProvider>
47
+ )
29
48
  ```
30
49
 
31
- The package uses the host `QueryClientProvider`; it does not create its own `QueryClient`.
50
+ `AppProvider` composes `AppearanceRuntime -> SettingRuntime -> ShortcutRuntime`. The package uses the host `QueryClientProvider`; it never creates a `QueryClient`.
51
+
52
+ Host applications keep router/menu/permission/Redux and layout composition. A Vuexy application may add one host-owned compatibility bridge that consumes `useAppearance()` and synchronizes legacy layout state.
32
53
 
33
54
  ## Setting
34
55
 
@@ -62,6 +83,19 @@ const actions: ShortcutActions = {
62
83
  <Shortcuts actions={actions} />
63
84
  ```
64
85
 
86
+ ## Appearance
87
+
88
+ ```tsx
89
+ import {
90
+ AppearanceSettingsPage,
91
+ appearanceDefaults,
92
+ useAppearance
93
+ } from 'es-application-template'
94
+ ```
95
+
96
+ `AppearanceSettingsPage` edits the current PRODUCT override. Runtime resolution remains `SYSTEM -> PRODUCT -> USER`. `useAppearance()` exposes only the effective saved Appearance; editor drafts stay inside Preview until saved.
97
+
98
+ The package owns visual tokens, theme normalization/migration, light/dark runtime, common control/Grid visual styling and Theme Library UI. The host owns where Navbar/Sidebar/Product Rail/Mega Menu are rendered.
65
99
  ## Management pages
66
100
 
67
101
  The management screens stay independent:
@@ -69,7 +103,8 @@ The management screens stay independent:
69
103
  ```tsx
70
104
  import {
71
105
  SettingsPage,
72
- ShortcutsPage
106
+ ShortcutsPage,
107
+ AppearanceSettingsPage
73
108
  } from 'es-application-template'
74
109
  ```
75
110
 
@@ -92,6 +127,12 @@ useShortcutHint
92
127
 
93
128
  ShortcutActionId
94
129
  ShortcutActions
130
+
131
+ bootstrapAppearance
132
+ useAppearance
133
+ AppearanceSettingsPage
134
+ appearanceDefaults
135
+ AppearanceConfig
95
136
  ```
96
137
 
97
138
  ## Deliberate differences from es-document-template
@@ -1,6 +1,13 @@
1
1
  import { IConfig, IParamsConfigByCode } from '../domain/models/IConfig';
2
2
  import { IFListBoxResourceProductDeployParams } from '../domain/models/IProductsDeploy';
3
3
  export declare const configApi: {
4
+ getPagingApi: (params: {
5
+ Keyword: string;
6
+ Filter: string;
7
+ Order: string;
8
+ PageNumber: number;
9
+ PageSize: number;
10
+ }) => Promise<any>;
4
11
  getConfigByCodeApi: (params: IParamsConfigByCode) => Promise<any>;
5
12
  updateApi: (params: IConfig) => Promise<any>;
6
13
  deleteApi: (id: string) => Promise<any>;
@@ -10,6 +17,13 @@ export declare const settingCatalogApi: {
10
17
  };
11
18
  declare const _default: {
12
19
  configApi: {
20
+ getPagingApi: (params: {
21
+ Keyword: string;
22
+ Filter: string;
23
+ Order: string;
24
+ PageNumber: number;
25
+ PageSize: number;
26
+ }) => Promise<any>;
13
27
  getConfigByCodeApi: (params: IParamsConfigByCode) => Promise<any>;
14
28
  updateApi: (params: IConfig) => Promise<any>;
15
29
  deleteApi: (id: string) => Promise<any>;
@@ -0,0 +1,30 @@
1
+ export declare const AUTO_TEXT_LIGHT = "#FFFFFF";
2
+ export declare const AUTO_TEXT_DARK = "#000000";
3
+ /**
4
+ * Trộn foreground vào background.
5
+ * ratio = 0 => background; ratio = 1 => foreground.
6
+ */
7
+ export declare const mixHex: (background: string, foreground: string, ratio: number) => string;
8
+ export declare const getRelativeLuminance: (hex: string) => number;
9
+ export declare const getContrastRatio: (background: string, foreground: string) => number;
10
+ /**
11
+ * Ưu tiên trắng cho nền tối/trung bình và đen cho nền sáng.
12
+ * Nếu màu ưu tiên không đạt 3:1 thì tự đổi sang màu còn lại.
13
+ */
14
+ export declare const getReadableTextColor: (background: string) => string;
15
+ export type SidebarStateColors = {
16
+ text: string;
17
+ groupText: string;
18
+ hoverBackground: string;
19
+ hoverText: string;
20
+ activeBackground: string;
21
+ activeText: string;
22
+ accentText: string;
23
+ activeIndicator: string;
24
+ };
25
+ /**
26
+ * Sidebar sáng và tối dùng tỷ lệ pha khác nhau.
27
+ * - Sidebar tối: active là màu Sidebar pha Primary, chữ trắng/đen tự tính.
28
+ * - Sidebar sáng: active là Primary rất nhạt, chữ ưu tiên Primary làm đậm.
29
+ */
30
+ export declare const buildSidebarStateColors: (sidebarBackground: string, primary: string) => SidebarStateColors;
@@ -0,0 +1,5 @@
1
+ import { AppearanceConfig } from './types';
2
+ export declare const APPEARANCE_SCHEMA_VERSION = 14;
3
+ export declare const allowedAppearanceFonts: readonly string[];
4
+ export declare const appearanceDefaults: AppearanceConfig;
5
+ export declare const cloneAppearanceConfig: (config: AppearanceConfig) => AppearanceConfig;
@@ -0,0 +1,7 @@
1
+ import { AppearanceConfig, AppearanceGridPalette, AppearanceGridShadow } from './types';
2
+ export declare const resolveAppearanceGridPalette: (input: AppearanceConfig, darkMode: boolean) => AppearanceGridPalette;
3
+ export declare const resolveAppearanceGridShadow: (value: AppearanceGridShadow) => string;
4
+ export declare const resolveAppearanceGridLineWidths: (config: AppearanceConfig) => {
5
+ horizontal: string;
6
+ vertical: string;
7
+ };
@@ -0,0 +1,14 @@
1
+ export * from './contrast';
2
+ export * from './defaults';
3
+ export * from './grid';
4
+ export * from './migrate';
5
+ export * from './options';
6
+ export * from './presets';
7
+ export * from './runtime';
8
+ export * from './types';
9
+ export * from './validate';
10
+ export * from './ranges';
11
+ export * from './theme-constants';
12
+ export * from './theme-presets';
13
+ export * from './theme-types';
14
+ export * from './theme-utils';
@@ -0,0 +1,2 @@
1
+ import { AppearanceConfig } from './types';
2
+ export declare const migrateAppearanceConfig: (stored: unknown) => AppearanceConfig;
@@ -0,0 +1,125 @@
1
+ import { AppearanceDropdownShadow, AppearanceGridColorMode, AppearanceGridLineMode, AppearanceGridShadow, AppearanceMode, AppearanceShadow, NavigationActiveStyle } from './types';
2
+ export type AppearanceOption<T extends string | number = string | number> = {
3
+ value: T;
4
+ label: string;
5
+ };
6
+ export declare const createNumberOptions: (min: number, max: number, step?: number, suffix?: string) => Array<AppearanceOption<number>>;
7
+ export declare const createSelectedNumberOptions: (values: number[], suffix?: string) => Array<AppearanceOption<number>>;
8
+ export declare const appearanceModeOptions: Array<AppearanceOption<AppearanceMode>>;
9
+ /**
10
+ * Chỉ dùng font hệ thống hoặc font ứng dụng đã tải sẵn để có thể áp dụng ngay.
11
+ * Tránh trường hợp chọn font nhưng thực tế browser fallback nên nhìn như không đổi.
12
+ */
13
+ export declare const appearanceFontOptions: readonly [{
14
+ readonly value: "system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif";
15
+ readonly label: "Mặc định theo thiết bị (Khuyến nghị)";
16
+ }, {
17
+ readonly value: "\"Segoe UI\", Arial, sans-serif";
18
+ readonly label: "Segoe UI";
19
+ }, {
20
+ readonly value: "Montserrat, \"Segoe UI\", Arial, sans-serif";
21
+ readonly label: "Montserrat";
22
+ }, {
23
+ readonly value: "Arial, \"Segoe UI\", sans-serif";
24
+ readonly label: "Arial";
25
+ }, {
26
+ readonly value: "Tahoma, \"Segoe UI\", Arial, sans-serif";
27
+ readonly label: "Tahoma";
28
+ }, {
29
+ readonly value: "Calibri, \"Segoe UI\", Arial, sans-serif";
30
+ readonly label: "Calibri";
31
+ }, {
32
+ readonly value: "Verdana, \"Segoe UI\", Arial, sans-serif";
33
+ readonly label: "Verdana";
34
+ }, {
35
+ readonly value: "\"Trebuchet MS\", \"Segoe UI\", Arial, sans-serif";
36
+ readonly label: "Trebuchet MS";
37
+ }, {
38
+ readonly value: "\"Arial Narrow\", Arial, \"Segoe UI\", sans-serif";
39
+ readonly label: "Arial Narrow";
40
+ }, {
41
+ readonly value: "\"Microsoft Sans Serif\", \"Segoe UI\", Arial, sans-serif";
42
+ readonly label: "Microsoft Sans Serif";
43
+ }, {
44
+ readonly value: "Bahnschrift, \"Segoe UI\", Arial, sans-serif";
45
+ readonly label: "Bahnschrift";
46
+ }, {
47
+ readonly value: "Georgia, \"Times New Roman\", serif";
48
+ readonly label: "Georgia (Serif)";
49
+ }, {
50
+ readonly value: "Cambria, Georgia, \"Times New Roman\", serif";
51
+ readonly label: "Cambria (Serif)";
52
+ }, {
53
+ readonly value: "\"Times New Roman\", Times, serif";
54
+ readonly label: "Times New Roman (Serif)";
55
+ }, {
56
+ readonly value: "Consolas, \"Courier New\", monospace";
57
+ readonly label: "Consolas (Monospace)";
58
+ }, {
59
+ readonly value: "\"Courier New\", Courier, monospace";
60
+ readonly label: "Courier New (Monospace)";
61
+ }];
62
+ export declare const appearanceFontWeightOptions: Array<AppearanceOption<number>>;
63
+ export declare const appearanceLineHeightOptions: AppearanceOption<number>[];
64
+ export declare const appearanceLetterSpacingOptions: AppearanceOption<number>[];
65
+ export declare const appearanceBaseFontSizeOptions: AppearanceOption<number>[];
66
+ export declare const appearancePageTitleSizeOptions: AppearanceOption<number>[];
67
+ export declare const appearanceSectionTitleSizeOptions: AppearanceOption<number>[];
68
+ export declare const appearanceCardTitleSizeOptions: AppearanceOption<number>[];
69
+ export declare const appearanceMenuFontSizeOptions: AppearanceOption<number>[];
70
+ export declare const appearanceFormLabelSizeOptions: AppearanceOption<number>[];
71
+ export declare const appearanceSmallFontSizeOptions: AppearanceOption<number>[];
72
+ export declare const appearanceControlHeightOptions: AppearanceOption<number>[];
73
+ export declare const appearanceButtonHeightOptions: AppearanceOption<number>[];
74
+ export declare const appearanceButtonPaddingOptions: AppearanceOption<number>[];
75
+ export declare const appearanceButtonRadiusOptions: AppearanceOption<number>[];
76
+ export declare const appearanceInputRadiusOptions: AppearanceOption<number>[];
77
+ export declare const appearanceCardRadiusOptions: AppearanceOption<number>[];
78
+ export declare const appearanceModalRadiusOptions: AppearanceOption<number>[];
79
+ export declare const appearanceDropdownRadiusOptions: AppearanceOption<number>[];
80
+ export declare const appearanceSpacingOptions: AppearanceOption<number>[];
81
+ export declare const appearanceFocusRingOptions: AppearanceOption<number>[];
82
+ export declare const appearanceTransitionOptions: AppearanceOption<number>[];
83
+ export declare const appearanceTabHeightOptions: AppearanceOption<number>[];
84
+ export declare const appearanceTabRadiusOptions: AppearanceOption<number>[];
85
+ export declare const appearanceCheckboxSizeOptions: AppearanceOption<number>[];
86
+ export declare const appearanceSwitchHeightOptions: AppearanceOption<number>[];
87
+ export declare const appearanceGridFontSizeOptions: AppearanceOption<number>[];
88
+ export declare const appearanceGridRowHeightOptions: AppearanceOption<number>[];
89
+ export declare const appearanceGridHeaderHeightOptions: AppearanceOption<number>[];
90
+ export declare const appearanceGridCellPaddingXOptions: AppearanceOption<number>[];
91
+ export declare const appearanceGridCellPaddingYOptions: AppearanceOption<number>[];
92
+ export declare const appearanceGridHeaderPaddingXOptions: AppearanceOption<number>[];
93
+ export declare const appearanceGridHeaderPaddingYOptions: AppearanceOption<number>[];
94
+ export declare const appearanceGridHeaderFontWeightOptions: AppearanceOption<number>[];
95
+ export declare const appearanceGridPagerHeightOptions: AppearanceOption<number>[];
96
+ export declare const appearanceGridBorderWidthOptions: AppearanceOption<number>[];
97
+ export declare const appearanceGridRadiusOptions: AppearanceOption<number>[];
98
+ export declare const appearanceGridLineModeOptions: Array<AppearanceOption<AppearanceGridLineMode>>;
99
+ export declare const appearanceGridShadowOptions: Array<AppearanceOption<AppearanceGridShadow>>;
100
+ export declare const appearanceGridColorModeOptions: Array<AppearanceOption<AppearanceGridColorMode>>;
101
+ export declare const appearanceCardShadowOptions: Array<AppearanceOption<AppearanceShadow>>;
102
+ export declare const appearanceDropdownShadowOptions: Array<AppearanceOption<AppearanceDropdownShadow>>;
103
+ export declare const appearanceSidebarWidthOptions: AppearanceOption<number>[];
104
+ export declare const appearanceCollapsedWidthOptions: AppearanceOption<number>[];
105
+ export declare const appearanceNavbarHeightOptions: AppearanceOption<number>[];
106
+ export declare const appearanceFooterHeightOptions: AppearanceOption<number>[];
107
+ export declare const appearanceContentPaddingOptions: AppearanceOption<number>[];
108
+ export declare const appearanceGutterOptions: AppearanceOption<number>[];
109
+ export declare const appearanceSectionGapOptions: AppearanceOption<number>[];
110
+ export declare const appearanceNavigationItemHeightOptions: AppearanceOption<number>[];
111
+ export declare const appearanceNavigationIndentOptions: AppearanceOption<number>[];
112
+ export declare const appearanceNavigationGroupSpacingOptions: AppearanceOption<number>[];
113
+ export declare const appearanceNavigationIconSizeOptions: AppearanceOption<number>[];
114
+ export declare const appearanceNavigationActiveRadiusOptions: AppearanceOption<number>[];
115
+ export declare const appearanceNavigationActiveStyleOptions: Array<AppearanceOption<NavigationActiveStyle>>;
116
+ export declare const appearanceScrollbarOptions: readonly [{
117
+ readonly value: "Mảnh";
118
+ readonly label: "Mảnh";
119
+ }, {
120
+ readonly value: "Mặc định";
121
+ readonly label: "Mặc định theo hệ điều hành";
122
+ }, {
123
+ readonly value: "Ẩn";
124
+ readonly label: "Ẩn thanh cuộn";
125
+ }];
@@ -0,0 +1,22 @@
1
+ import { AppearanceConfig } from './types';
2
+ export type AppearanceGridDensityPreset = Pick<AppearanceConfig['grid'], 'fontSize' | 'rowHeight' | 'headerHeight' | 'cellPaddingX' | 'cellPaddingY' | 'headerPaddingX' | 'headerPaddingY' | 'pagerHeight'>;
3
+ export declare const appearanceGridPresets: Record<'compact' | 'standard' | 'comfortable', AppearanceGridDensityPreset>;
4
+ export declare const appearancePresets: {
5
+ professional: AppearanceConfig;
6
+ compact: AppearanceConfig;
7
+ comfortable: AppearanceConfig;
8
+ };
9
+ export type AppearanceColorPreset = {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ colors: AppearanceConfig['colors'];
14
+ darkColors: AppearanceConfig['darkColors'];
15
+ };
16
+ export declare const appearanceColorPresets: AppearanceColorPreset[];
17
+ export type AppearanceTypographyPreset = {
18
+ id: string;
19
+ name: string;
20
+ typography: Partial<AppearanceConfig['typography']>;
21
+ };
22
+ export declare const appearanceTypographyPresets: AppearanceTypographyPreset[];
@@ -0,0 +1,313 @@
1
+ export type AppearanceNumericRange = {
2
+ min: number;
3
+ max: number;
4
+ step: number;
5
+ quick?: readonly number[];
6
+ specialValues?: readonly AppearanceSpecialNumericValue[];
7
+ };
8
+ export type AppearanceSpecialNumericValue = {
9
+ value: number;
10
+ label: string;
11
+ };
12
+ /**
13
+ * Nguồn min/max duy nhất cho Appearance.
14
+ * Editor, options, normalize và validate phải dùng chung map này để tránh
15
+ * trường hợp UI cho nhập một giá trị nhưng Save lại bị clamp về range khác.
16
+ */
17
+ export declare const appearanceRanges: {
18
+ readonly 'typography.baseFontSize': {
19
+ readonly min: 8;
20
+ readonly max: 40;
21
+ readonly step: 1;
22
+ readonly quick: readonly [8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 28, 32, 36, 40];
23
+ };
24
+ readonly 'typography.baseLineHeight': {
25
+ readonly min: 1;
26
+ readonly max: 2.2;
27
+ readonly step: 0.05;
28
+ readonly quick: readonly [1, 1.1, 1.2, 1.3, 1.4, 1.45, 1.5, 1.6, 1.7, 1.8, 2, 2.2];
29
+ };
30
+ readonly 'typography.pageTitleSize': {
31
+ readonly min: 12;
32
+ readonly max: 48;
33
+ readonly step: 1;
34
+ readonly quick: readonly [12, 14, 16, 18, 20, 22, 24, 28, 32, 36, 40, 44, 48];
35
+ };
36
+ readonly 'typography.sectionTitleSize': {
37
+ readonly min: 10;
38
+ readonly max: 40;
39
+ readonly step: 1;
40
+ readonly quick: readonly [10, 11, 12, 14, 16, 18, 20, 24, 28, 32, 36, 40];
41
+ };
42
+ readonly 'typography.cardTitleSize': {
43
+ readonly min: 10;
44
+ readonly max: 36;
45
+ readonly step: 1;
46
+ readonly quick: readonly [10, 11, 12, 13, 14, 16, 18, 20, 24, 28, 32, 36];
47
+ };
48
+ readonly 'typography.menuFontSize': {
49
+ readonly min: 8;
50
+ readonly max: 28;
51
+ readonly step: 1;
52
+ readonly quick: readonly [8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24, 28];
53
+ };
54
+ readonly 'typography.formLabelSize': {
55
+ readonly min: 8;
56
+ readonly max: 24;
57
+ readonly step: 1;
58
+ readonly quick: readonly [8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24];
59
+ };
60
+ readonly 'typography.smallFontSize': {
61
+ readonly min: 8;
62
+ readonly max: 24;
63
+ readonly step: 1;
64
+ readonly quick: readonly [8, 9, 10, 11, 12, 13, 14, 16, 18, 20, 22, 24];
65
+ };
66
+ readonly 'typography.letterSpacing': {
67
+ readonly min: -2;
68
+ readonly max: 4;
69
+ readonly step: 0.1;
70
+ readonly quick: readonly [-2, -1.5, -1, -0.5, 0, 0.25, 0.5, 1, 1.5, 2, 3, 4];
71
+ };
72
+ readonly 'components.controlHeight': {
73
+ readonly min: 22;
74
+ readonly max: 64;
75
+ readonly step: 1;
76
+ readonly quick: readonly [22, 24, 26, 28, 30, 32, 34, 36, 40, 44, 48, 52, 56, 60, 64];
77
+ };
78
+ readonly 'components.buttonHeight': {
79
+ readonly min: 22;
80
+ readonly max: 64;
81
+ readonly step: 1;
82
+ readonly quick: readonly [22, 24, 26, 28, 30, 32, 34, 36, 40, 44, 48, 52, 56, 60, 64];
83
+ };
84
+ readonly 'components.buttonRadius': {
85
+ readonly min: 0;
86
+ readonly max: 24;
87
+ readonly step: 1;
88
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 999];
89
+ readonly specialValues: readonly [{
90
+ readonly value: 999;
91
+ readonly label: "Pill";
92
+ }];
93
+ };
94
+ readonly 'components.inputRadius': {
95
+ readonly min: 0;
96
+ readonly max: 48;
97
+ readonly step: 1;
98
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48];
99
+ };
100
+ readonly 'components.cardRadius': {
101
+ readonly min: 0;
102
+ readonly max: 48;
103
+ readonly step: 1;
104
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48];
105
+ };
106
+ readonly 'components.modalRadius': {
107
+ readonly min: 0;
108
+ readonly max: 64;
109
+ readonly step: 1;
110
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
111
+ };
112
+ readonly 'components.dropdownRadius': {
113
+ readonly min: 0;
114
+ readonly max: 48;
115
+ readonly step: 1;
116
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48];
117
+ };
118
+ readonly 'components.buttonPaddingX': {
119
+ readonly min: 4;
120
+ readonly max: 48;
121
+ readonly step: 1;
122
+ readonly quick: readonly [4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 36, 40, 48];
123
+ };
124
+ readonly 'components.cardPadding': {
125
+ readonly min: 0;
126
+ readonly max: 64;
127
+ readonly step: 1;
128
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
129
+ };
130
+ readonly 'components.cardGap': {
131
+ readonly min: 0;
132
+ readonly max: 64;
133
+ readonly step: 1;
134
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
135
+ };
136
+ readonly 'components.focusRingSize': {
137
+ readonly min: 0;
138
+ readonly max: 12;
139
+ readonly step: 1;
140
+ readonly quick: readonly [0, 1, 2, 3, 4, 5, 6, 8, 10, 12];
141
+ };
142
+ readonly 'components.transitionDuration': {
143
+ readonly min: 0;
144
+ readonly max: 1000;
145
+ readonly step: 10;
146
+ readonly quick: readonly [0, 80, 100, 120, 150, 180, 200, 250, 300, 400, 500, 650, 800, 1000];
147
+ };
148
+ readonly 'components.tabHeight': {
149
+ readonly min: 28;
150
+ readonly max: 72;
151
+ readonly step: 1;
152
+ readonly quick: readonly [28, 30, 32, 34, 36, 40, 44, 48, 52, 56, 60, 64, 68, 72];
153
+ };
154
+ readonly 'components.tabRadius': {
155
+ readonly min: 0;
156
+ readonly max: 16;
157
+ readonly step: 1;
158
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 14, 16];
159
+ };
160
+ readonly 'components.checkboxSize': {
161
+ readonly min: 10;
162
+ readonly max: 32;
163
+ readonly step: 1;
164
+ readonly quick: readonly [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32];
165
+ };
166
+ readonly 'components.switchHeight': {
167
+ readonly min: 12;
168
+ readonly max: 40;
169
+ readonly step: 1;
170
+ readonly quick: readonly [12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 36, 40];
171
+ };
172
+ readonly 'grid.fontSize': {
173
+ readonly min: 8;
174
+ readonly max: 32;
175
+ readonly step: 1;
176
+ readonly quick: readonly [8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 28, 32];
177
+ };
178
+ readonly 'grid.rowHeight': {
179
+ readonly min: 22;
180
+ readonly max: 120;
181
+ readonly step: 1;
182
+ readonly quick: readonly [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 44, 48, 52, 56, 64, 72, 80, 96, 120];
183
+ };
184
+ readonly 'grid.headerHeight': {
185
+ readonly min: 22;
186
+ readonly max: 96;
187
+ readonly step: 1;
188
+ readonly quick: readonly [22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 44, 48, 52, 56, 64, 72, 80, 96];
189
+ };
190
+ readonly 'grid.cellPaddingX': {
191
+ readonly min: 0;
192
+ readonly max: 48;
193
+ readonly step: 1;
194
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48];
195
+ };
196
+ readonly 'grid.cellPaddingY': {
197
+ readonly min: 0;
198
+ readonly max: 32;
199
+ readonly step: 1;
200
+ readonly quick: readonly [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 28, 32];
201
+ };
202
+ readonly 'grid.headerPaddingX': {
203
+ readonly min: 0;
204
+ readonly max: 48;
205
+ readonly step: 1;
206
+ readonly quick: readonly [0, 2, 4, 6, 8, 9, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48];
207
+ };
208
+ readonly 'grid.headerPaddingY': {
209
+ readonly min: 0;
210
+ readonly max: 32;
211
+ readonly step: 1;
212
+ readonly quick: readonly [0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 16, 20, 24, 28, 32];
213
+ };
214
+ readonly 'grid.headerFontWeight': {
215
+ readonly min: 100;
216
+ readonly max: 900;
217
+ readonly step: 100;
218
+ readonly quick: readonly [100, 200, 300, 400, 500, 600, 700, 800, 900];
219
+ };
220
+ readonly 'grid.pagerHeight': {
221
+ readonly min: 24;
222
+ readonly max: 96;
223
+ readonly step: 1;
224
+ readonly quick: readonly [24, 28, 32, 36, 40, 44, 46, 48, 52, 56, 60, 64, 72, 80, 96];
225
+ };
226
+ readonly 'grid.borderWidth': {
227
+ readonly min: 0;
228
+ readonly max: 6;
229
+ readonly step: 1;
230
+ readonly quick: readonly [0, 1, 2, 3, 4, 5, 6];
231
+ };
232
+ readonly 'grid.radius': {
233
+ readonly min: 0;
234
+ readonly max: 48;
235
+ readonly step: 1;
236
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48];
237
+ };
238
+ readonly 'layout.sidebarWidth': {
239
+ readonly min: 140;
240
+ readonly max: 480;
241
+ readonly step: 1;
242
+ readonly quick: readonly [140, 160, 180, 200, 220, 240, 260, 280, 300, 320, 340, 360, 400, 440, 480];
243
+ };
244
+ readonly 'layout.collapsedWidth': {
245
+ readonly min: 40;
246
+ readonly max: 160;
247
+ readonly step: 1;
248
+ readonly quick: readonly [40, 44, 48, 52, 56, 64, 72, 80, 88, 96, 104, 112, 120, 136, 160];
249
+ };
250
+ readonly 'layout.navbarHeight': {
251
+ readonly min: 40;
252
+ readonly max: 120;
253
+ readonly step: 1;
254
+ readonly quick: readonly [40, 44, 48, 52, 56, 60, 64, 72, 80, 88, 96, 100, 108, 120];
255
+ };
256
+ readonly 'layout.footerHeight': {
257
+ readonly min: 0;
258
+ readonly max: 120;
259
+ readonly step: 1;
260
+ readonly quick: readonly [0, 24, 28, 32, 36, 40, 44, 48, 56, 64, 72, 80, 96, 120];
261
+ };
262
+ readonly 'layout.contentPadding': {
263
+ readonly min: 0;
264
+ readonly max: 64;
265
+ readonly step: 1;
266
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
267
+ };
268
+ readonly 'layout.gutter': {
269
+ readonly min: 0;
270
+ readonly max: 64;
271
+ readonly step: 1;
272
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
273
+ };
274
+ readonly 'layout.sectionGap': {
275
+ readonly min: 0;
276
+ readonly max: 64;
277
+ readonly step: 1;
278
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
279
+ };
280
+ readonly 'navigation.itemHeight': {
281
+ readonly min: 24;
282
+ readonly max: 72;
283
+ readonly step: 1;
284
+ readonly quick: readonly [24, 26, 28, 30, 32, 34, 36, 38, 40, 44, 48, 52, 56, 60, 64, 72];
285
+ };
286
+ readonly 'navigation.indent': {
287
+ readonly min: 0;
288
+ readonly max: 64;
289
+ readonly step: 1;
290
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
291
+ };
292
+ readonly 'navigation.groupSpacing': {
293
+ readonly min: 0;
294
+ readonly max: 64;
295
+ readonly step: 1;
296
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 16, 20, 24, 32, 40, 48, 56, 64];
297
+ };
298
+ readonly 'navigation.iconSize': {
299
+ readonly min: 10;
300
+ readonly max: 36;
301
+ readonly step: 1;
302
+ readonly quick: readonly [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36];
303
+ };
304
+ readonly 'navigation.activeRadius': {
305
+ readonly min: 0;
306
+ readonly max: 32;
307
+ readonly step: 1;
308
+ readonly quick: readonly [0, 2, 4, 6, 8, 10, 12, 14, 16, 20, 24, 28, 32];
309
+ };
310
+ };
311
+ export type AppearanceRangeKey = keyof typeof appearanceRanges;
312
+ export declare const getAppearanceRange: (key: AppearanceRangeKey) => AppearanceNumericRange;
313
+ export declare const isAppearanceRangeValueValid: (key: AppearanceRangeKey, value: unknown) => boolean;