@tekton-ui/core 0.2.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/README.md +758 -0
- package/dist/blueprint.d.ts +44 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +163 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/component-schemas.d.ts +78 -0
- package/dist/component-schemas.d.ts.map +1 -0
- package/dist/component-schemas.js +1037 -0
- package/dist/component-schemas.js.map +1 -0
- package/dist/css-generator.d.ts +42 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +339 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/icon-library.d.ts +109 -0
- package/dist/icon-library.d.ts.map +1 -0
- package/dist/icon-library.js +204 -0
- package/dist/icon-library.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/layout-css-generator.d.ts +158 -0
- package/dist/layout-css-generator.d.ts.map +1 -0
- package/dist/layout-css-generator.js +901 -0
- package/dist/layout-css-generator.js.map +1 -0
- package/dist/layout-resolver.d.ts +92 -0
- package/dist/layout-resolver.d.ts.map +1 -0
- package/dist/layout-resolver.js +275 -0
- package/dist/layout-resolver.js.map +1 -0
- package/dist/layout-tokens/index.d.ts +16 -0
- package/dist/layout-tokens/index.d.ts.map +1 -0
- package/dist/layout-tokens/index.js +16 -0
- package/dist/layout-tokens/index.js.map +1 -0
- package/dist/layout-tokens/keyboard.d.ts +254 -0
- package/dist/layout-tokens/keyboard.d.ts.map +1 -0
- package/dist/layout-tokens/keyboard.js +407 -0
- package/dist/layout-tokens/keyboard.js.map +1 -0
- package/dist/layout-tokens/mobile-shells.d.ts +78 -0
- package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
- package/dist/layout-tokens/mobile-shells.js +635 -0
- package/dist/layout-tokens/mobile-shells.js.map +1 -0
- package/dist/layout-tokens/pages.d.ts +100 -0
- package/dist/layout-tokens/pages.d.ts.map +1 -0
- package/dist/layout-tokens/pages.js +576 -0
- package/dist/layout-tokens/pages.js.map +1 -0
- package/dist/layout-tokens/responsive.d.ts +109 -0
- package/dist/layout-tokens/responsive.d.ts.map +1 -0
- package/dist/layout-tokens/responsive.js +167 -0
- package/dist/layout-tokens/responsive.js.map +1 -0
- package/dist/layout-tokens/safe-area.d.ts +156 -0
- package/dist/layout-tokens/safe-area.d.ts.map +1 -0
- package/dist/layout-tokens/safe-area.js +316 -0
- package/dist/layout-tokens/safe-area.js.map +1 -0
- package/dist/layout-tokens/sections-advanced.d.ts +277 -0
- package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
- package/dist/layout-tokens/sections-advanced.js +593 -0
- package/dist/layout-tokens/sections-advanced.js.map +1 -0
- package/dist/layout-tokens/sections.d.ts +137 -0
- package/dist/layout-tokens/sections.d.ts.map +1 -0
- package/dist/layout-tokens/sections.js +694 -0
- package/dist/layout-tokens/sections.js.map +1 -0
- package/dist/layout-tokens/shells.d.ts +77 -0
- package/dist/layout-tokens/shells.d.ts.map +1 -0
- package/dist/layout-tokens/shells.js +408 -0
- package/dist/layout-tokens/shells.js.map +1 -0
- package/dist/layout-tokens/touch-target.d.ts +119 -0
- package/dist/layout-tokens/touch-target.d.ts.map +1 -0
- package/dist/layout-tokens/touch-target.js +156 -0
- package/dist/layout-tokens/touch-target.js.map +1 -0
- package/dist/layout-tokens/types.d.ts +632 -0
- package/dist/layout-tokens/types.d.ts.map +1 -0
- package/dist/layout-tokens/types.js +49 -0
- package/dist/layout-tokens/types.js.map +1 -0
- package/dist/layout-validation.d.ts +1547 -0
- package/dist/layout-validation.d.ts.map +1 -0
- package/dist/layout-validation.js +628 -0
- package/dist/layout-validation.js.map +1 -0
- package/dist/render.d.ts +23 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +244 -0
- package/dist/render.js.map +1 -0
- package/dist/schema-validation.d.ts +208 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +205 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
- package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
- package/dist/screen-generation/generators/index.d.ts +13 -0
- package/dist/screen-generation/generators/index.d.ts.map +1 -0
- package/dist/screen-generation/generators/index.js +32 -0
- package/dist/screen-generation/generators/index.js.map +1 -0
- package/dist/screen-generation/generators/react-generator.d.ts +100 -0
- package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/react-generator.js +379 -0
- package/dist/screen-generation/generators/react-generator.js.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.js +355 -0
- package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
- package/dist/screen-generation/generators/types.d.ts +136 -0
- package/dist/screen-generation/generators/types.d.ts.map +1 -0
- package/dist/screen-generation/generators/types.js +18 -0
- package/dist/screen-generation/generators/types.js.map +1 -0
- package/dist/screen-generation/generators/utils.d.ts +187 -0
- package/dist/screen-generation/generators/utils.d.ts.map +1 -0
- package/dist/screen-generation/generators/utils.js +312 -0
- package/dist/screen-generation/generators/utils.js.map +1 -0
- package/dist/screen-generation/index.d.ts +14 -0
- package/dist/screen-generation/index.d.ts.map +1 -0
- package/dist/screen-generation/index.js +33 -0
- package/dist/screen-generation/index.js.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.js +295 -0
- package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/index.d.ts +10 -0
- package/dist/screen-generation/resolver/index.d.ts.map +1 -0
- package/dist/screen-generation/resolver/index.js +46 -0
- package/dist/screen-generation/resolver/index.js.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.js +193 -0
- package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.js +373 -0
- package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.js +260 -0
- package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
- package/dist/screen-generation/types.d.ts +116 -0
- package/dist/screen-generation/types.d.ts.map +1 -0
- package/dist/screen-generation/types.js +33 -0
- package/dist/screen-generation/types.js.map +1 -0
- package/dist/screen-generation/validators.d.ts +286 -0
- package/dist/screen-generation/validators.d.ts.map +1 -0
- package/dist/screen-generation/validators.js +323 -0
- package/dist/screen-generation/validators.js.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.js +247 -0
- package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.js +179 -0
- package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
- package/dist/screen-templates/index.d.ts +39 -0
- package/dist/screen-templates/index.d.ts.map +1 -0
- package/dist/screen-templates/index.js +79 -0
- package/dist/screen-templates/index.js.map +1 -0
- package/dist/screen-templates/registry.d.ts +177 -0
- package/dist/screen-templates/registry.d.ts.map +1 -0
- package/dist/screen-templates/registry.js +274 -0
- package/dist/screen-templates/registry.js.map +1 -0
- package/dist/screen-templates/templates/account/index.d.ts +6 -0
- package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/index.js +6 -0
- package/dist/screen-templates/templates/account/index.js.map +1 -0
- package/dist/screen-templates/templates/account/profile.d.ts +23 -0
- package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/profile.js +249 -0
- package/dist/screen-templates/templates/account/profile.js.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
- package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
- package/dist/screen-templates/templates/auth/index.d.ts +9 -0
- package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/index.js +9 -0
- package/dist/screen-templates/templates/auth/index.js.map +1 -0
- package/dist/screen-templates/templates/auth/login.d.ts +24 -0
- package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/login.js +254 -0
- package/dist/screen-templates/templates/auth/login.js.map +1 -0
- package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
- package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/signup.js +315 -0
- package/dist/screen-templates/templates/auth/signup.js.map +1 -0
- package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
- package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/verification.js +239 -0
- package/dist/screen-templates/templates/auth/verification.js.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
- package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.js +90 -0
- package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
- package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/error.js +99 -0
- package/dist/screen-templates/templates/feedback/error.js.map +1 -0
- package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
- package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/index.js +10 -0
- package/dist/screen-templates/templates/feedback/index.js.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.js +77 -0
- package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
- package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/success.js +99 -0
- package/dist/screen-templates/templates/feedback/success.js.map +1 -0
- package/dist/screen-templates/templates/home/index.d.ts +6 -0
- package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/index.js +6 -0
- package/dist/screen-templates/templates/home/index.js.map +1 -0
- package/dist/screen-templates/templates/home/landing.d.ts +24 -0
- package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/landing.js +197 -0
- package/dist/screen-templates/templates/home/landing.js.map +1 -0
- package/dist/screen-templates/templates/settings/index.d.ts +6 -0
- package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/index.js +6 -0
- package/dist/screen-templates/templates/settings/index.js.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.js +265 -0
- package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
- package/dist/screen-templates/types.d.ts +229 -0
- package/dist/screen-templates/types.d.ts.map +1 -0
- package/dist/screen-templates/types.js +7 -0
- package/dist/screen-templates/types.js.map +1 -0
- package/dist/theme-v2.d.ts +228 -0
- package/dist/theme-v2.d.ts.map +1 -0
- package/dist/theme-v2.js +158 -0
- package/dist/theme-v2.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +76 -0
- package/dist/theme.js.map +1 -0
- package/dist/token-resolver.d.ts +69 -0
- package/dist/token-resolver.d.ts.map +1 -0
- package/dist/token-resolver.js +122 -0
- package/dist/token-resolver.js.map +1 -0
- package/dist/token-validation.d.ts +432 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +140 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tokens.d.ts +158 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +10 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Mobile Shell Token Definitions
|
|
3
|
+
* Concrete Mobile Shell Token implementations for mobile applications
|
|
4
|
+
* [SPEC-LAYOUT-004] [MILESTONE-2]
|
|
5
|
+
*/
|
|
6
|
+
import type { MobileShellToken } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Standard mobile app layout with header, main content, and bottom tab
|
|
9
|
+
* Suitable for most mobile applications with tab-based navigation
|
|
10
|
+
*/
|
|
11
|
+
export declare const SHELL_MOBILE_APP: MobileShellToken;
|
|
12
|
+
/**
|
|
13
|
+
* Fullscreen content layout with safe area applied
|
|
14
|
+
* Perfect for media viewing, immersive experiences, and splash screens
|
|
15
|
+
*/
|
|
16
|
+
export declare const SHELL_MOBILE_FULLSCREEN: MobileShellToken;
|
|
17
|
+
/**
|
|
18
|
+
* Modal or bottom sheet layout with handle and content
|
|
19
|
+
* Designed for dialogs, bottom sheets, and overlay content
|
|
20
|
+
*/
|
|
21
|
+
export declare const SHELL_MOBILE_MODAL: MobileShellToken;
|
|
22
|
+
/**
|
|
23
|
+
* Tab-based navigation with bottom tab bar
|
|
24
|
+
* Optimized for tab-based navigation patterns with persistent tab bar
|
|
25
|
+
*/
|
|
26
|
+
export declare const SHELL_MOBILE_TAB: MobileShellToken;
|
|
27
|
+
/**
|
|
28
|
+
* Drawer navigation with slide-out menu
|
|
29
|
+
* Suitable for applications with hierarchical navigation and menu
|
|
30
|
+
*/
|
|
31
|
+
export declare const SHELL_MOBILE_DRAWER: MobileShellToken;
|
|
32
|
+
/**
|
|
33
|
+
* Detail view layout with header and action bar
|
|
34
|
+
* Designed for content detail pages with actions
|
|
35
|
+
*/
|
|
36
|
+
export declare const SHELL_MOBILE_DETAIL: MobileShellToken;
|
|
37
|
+
/**
|
|
38
|
+
* Get a mobile shell token by its ID
|
|
39
|
+
*
|
|
40
|
+
* @param shellId - Mobile shell token ID (e.g., "shell.mobile.app")
|
|
41
|
+
* @returns MobileShellToken if found, undefined otherwise
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const appShell = getMobileShellToken('shell.mobile.app');
|
|
46
|
+
* if (appShell) {
|
|
47
|
+
* console.log(appShell.description);
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export declare function getMobileShellToken(shellId: string): MobileShellToken | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Get all available mobile shell tokens
|
|
54
|
+
*
|
|
55
|
+
* @returns Array of all MobileShellTokens
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const allMobileShells = getAllMobileShellTokens();
|
|
60
|
+
* console.log(`Available mobile shells: ${allMobileShells.length}`);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function getAllMobileShellTokens(): MobileShellToken[];
|
|
64
|
+
/**
|
|
65
|
+
* Get mobile shell tokens filtered by target OS
|
|
66
|
+
*
|
|
67
|
+
* @param os - Target operating system ('ios', 'android', or 'cross-platform')
|
|
68
|
+
* @returns Array of MobileShellTokens for the specified OS
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const iosShells = getMobileShellsByOS('ios');
|
|
73
|
+
* const crossPlatformShells = getMobileShellsByOS('cross-platform');
|
|
74
|
+
* console.log(`iOS shells: ${iosShells.length}`);
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
export declare function getMobileShellsByOS(os: 'ios' | 'android' | 'cross-platform'): MobileShellToken[];
|
|
78
|
+
//# sourceMappingURL=mobile-shells.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mobile-shells.d.ts","sourceRoot":"","sources":["../../src/layout-tokens/mobile-shells.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOnD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAwG9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,gBAyErC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAmFhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBA+F9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAqFjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBA2FjC,CAAC;AAuBF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAEjF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,EAAE,CAE5D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,KAAK,GAAG,SAAS,GAAG,gBAAgB,GAAG,gBAAgB,EAAE,CAIhG"}
|
|
@@ -0,0 +1,635 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @tekton-ui/core - Mobile Shell Token Definitions
|
|
3
|
+
* Concrete Mobile Shell Token implementations for mobile applications
|
|
4
|
+
* [SPEC-LAYOUT-004] [MILESTONE-2]
|
|
5
|
+
*/
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Mobile Shell Token Definitions
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Standard mobile app layout with header, main content, and bottom tab
|
|
11
|
+
* Suitable for most mobile applications with tab-based navigation
|
|
12
|
+
*/
|
|
13
|
+
export const SHELL_MOBILE_APP = {
|
|
14
|
+
id: 'shell.mobile.app',
|
|
15
|
+
description: 'Standard mobile app layout with header, main content, and bottom tab',
|
|
16
|
+
platform: 'mobile',
|
|
17
|
+
os: 'cross-platform',
|
|
18
|
+
regions: [
|
|
19
|
+
{
|
|
20
|
+
name: 'header',
|
|
21
|
+
position: 'top',
|
|
22
|
+
size: 'atomic.spacing.14',
|
|
23
|
+
collapsible: false,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'main',
|
|
27
|
+
position: 'center',
|
|
28
|
+
size: 'atomic.spacing.full',
|
|
29
|
+
collapsible: false,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'bottomTab',
|
|
33
|
+
position: 'bottom',
|
|
34
|
+
size: 'atomic.spacing.16',
|
|
35
|
+
collapsible: true,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
safeArea: {
|
|
39
|
+
top: 'atomic.spacing.0',
|
|
40
|
+
bottom: 'atomic.spacing.0',
|
|
41
|
+
left: 'atomic.spacing.0',
|
|
42
|
+
right: 'atomic.spacing.0',
|
|
43
|
+
defaults: {
|
|
44
|
+
notch: 44,
|
|
45
|
+
dynamicIsland: 59,
|
|
46
|
+
homeIndicator: 34,
|
|
47
|
+
statusBar: 20,
|
|
48
|
+
},
|
|
49
|
+
edges: {
|
|
50
|
+
top: true,
|
|
51
|
+
bottom: true,
|
|
52
|
+
horizontal: true,
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
systemUI: {
|
|
56
|
+
statusBar: {
|
|
57
|
+
height: 'atomic.spacing.5',
|
|
58
|
+
visible: true,
|
|
59
|
+
style: 'auto',
|
|
60
|
+
translucent: true,
|
|
61
|
+
},
|
|
62
|
+
navigationBar: {
|
|
63
|
+
height: 'atomic.spacing.12',
|
|
64
|
+
mode: 'overlay',
|
|
65
|
+
buttonStyle: 'auto',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
keyboard: {
|
|
69
|
+
avoidance: 'padding',
|
|
70
|
+
behavior: 'height',
|
|
71
|
+
animation: {
|
|
72
|
+
duration: 250,
|
|
73
|
+
easing: 'keyboard',
|
|
74
|
+
enabled: true,
|
|
75
|
+
},
|
|
76
|
+
dismissMode: 'on-drag',
|
|
77
|
+
},
|
|
78
|
+
bottomTab: {
|
|
79
|
+
height: 'atomic.spacing.16',
|
|
80
|
+
safeAreaBottom: 'atomic.spacing.9',
|
|
81
|
+
totalHeight: 'atomic.spacing.25',
|
|
82
|
+
visibility: 'always',
|
|
83
|
+
maxItems: 5,
|
|
84
|
+
item: {
|
|
85
|
+
minTouchTarget: 'atomic.spacing.11',
|
|
86
|
+
iconSize: 'atomic.spacing.6',
|
|
87
|
+
labelSize: 'atomic.spacing.3',
|
|
88
|
+
spacing: 'atomic.spacing.1',
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
touchTarget: {
|
|
92
|
+
minSize: 'atomic.spacing.11',
|
|
93
|
+
hitSlop: {
|
|
94
|
+
top: 8,
|
|
95
|
+
bottom: 8,
|
|
96
|
+
left: 8,
|
|
97
|
+
right: 8,
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
responsive: {
|
|
101
|
+
default: {
|
|
102
|
+
headerVisible: true,
|
|
103
|
+
bottomTabVisible: true,
|
|
104
|
+
},
|
|
105
|
+
md: {
|
|
106
|
+
headerVisible: true,
|
|
107
|
+
bottomTabVisible: true,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
tokenBindings: {
|
|
111
|
+
headerBackground: 'semantic.background.surface',
|
|
112
|
+
mainBackground: 'semantic.background.base',
|
|
113
|
+
bottomTabBackground: 'semantic.background.surface',
|
|
114
|
+
headerBorder: 'semantic.border.default',
|
|
115
|
+
bottomTabBorder: 'semantic.border.default',
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Fullscreen content layout with safe area applied
|
|
120
|
+
* Perfect for media viewing, immersive experiences, and splash screens
|
|
121
|
+
*/
|
|
122
|
+
export const SHELL_MOBILE_FULLSCREEN = {
|
|
123
|
+
id: 'shell.mobile.fullscreen',
|
|
124
|
+
description: 'Fullscreen content layout with safe area applied',
|
|
125
|
+
platform: 'mobile',
|
|
126
|
+
os: 'cross-platform',
|
|
127
|
+
regions: [
|
|
128
|
+
{
|
|
129
|
+
name: 'main',
|
|
130
|
+
position: 'center',
|
|
131
|
+
size: 'atomic.spacing.full',
|
|
132
|
+
collapsible: false,
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
safeArea: {
|
|
136
|
+
top: 'atomic.spacing.0',
|
|
137
|
+
bottom: 'atomic.spacing.0',
|
|
138
|
+
left: 'atomic.spacing.0',
|
|
139
|
+
right: 'atomic.spacing.0',
|
|
140
|
+
defaults: {
|
|
141
|
+
notch: 44,
|
|
142
|
+
dynamicIsland: 59,
|
|
143
|
+
homeIndicator: 34,
|
|
144
|
+
statusBar: 20,
|
|
145
|
+
},
|
|
146
|
+
edges: {
|
|
147
|
+
top: true,
|
|
148
|
+
bottom: true,
|
|
149
|
+
horizontal: true,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
systemUI: {
|
|
153
|
+
statusBar: {
|
|
154
|
+
height: 'atomic.spacing.5',
|
|
155
|
+
visible: true,
|
|
156
|
+
style: 'auto',
|
|
157
|
+
translucent: true,
|
|
158
|
+
},
|
|
159
|
+
navigationBar: {
|
|
160
|
+
height: 'atomic.spacing.12',
|
|
161
|
+
mode: 'overlay',
|
|
162
|
+
buttonStyle: 'auto',
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
keyboard: {
|
|
166
|
+
avoidance: 'none',
|
|
167
|
+
behavior: 'height',
|
|
168
|
+
animation: {
|
|
169
|
+
duration: 250,
|
|
170
|
+
easing: 'keyboard',
|
|
171
|
+
enabled: true,
|
|
172
|
+
},
|
|
173
|
+
dismissMode: 'on-drag',
|
|
174
|
+
},
|
|
175
|
+
touchTarget: {
|
|
176
|
+
minSize: 'atomic.spacing.11',
|
|
177
|
+
hitSlop: {
|
|
178
|
+
top: 8,
|
|
179
|
+
bottom: 8,
|
|
180
|
+
left: 8,
|
|
181
|
+
right: 8,
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
responsive: {
|
|
185
|
+
default: {
|
|
186
|
+
contentFit: 'cover',
|
|
187
|
+
},
|
|
188
|
+
md: {
|
|
189
|
+
contentFit: 'contain',
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
tokenBindings: {
|
|
193
|
+
mainBackground: 'semantic.background.base',
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Modal or bottom sheet layout with handle and content
|
|
198
|
+
* Designed for dialogs, bottom sheets, and overlay content
|
|
199
|
+
*/
|
|
200
|
+
export const SHELL_MOBILE_MODAL = {
|
|
201
|
+
id: 'shell.mobile.modal',
|
|
202
|
+
description: 'Modal or bottom sheet layout with handle and content',
|
|
203
|
+
platform: 'mobile',
|
|
204
|
+
os: 'cross-platform',
|
|
205
|
+
regions: [
|
|
206
|
+
{
|
|
207
|
+
name: 'handle',
|
|
208
|
+
position: 'top',
|
|
209
|
+
size: 'atomic.spacing.6',
|
|
210
|
+
collapsible: false,
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
name: 'content',
|
|
214
|
+
position: 'center',
|
|
215
|
+
size: 'atomic.spacing.full',
|
|
216
|
+
collapsible: false,
|
|
217
|
+
},
|
|
218
|
+
],
|
|
219
|
+
safeArea: {
|
|
220
|
+
top: 'atomic.spacing.0',
|
|
221
|
+
bottom: 'atomic.spacing.0',
|
|
222
|
+
left: 'atomic.spacing.0',
|
|
223
|
+
right: 'atomic.spacing.0',
|
|
224
|
+
defaults: {
|
|
225
|
+
notch: 44,
|
|
226
|
+
dynamicIsland: 59,
|
|
227
|
+
homeIndicator: 34,
|
|
228
|
+
statusBar: 20,
|
|
229
|
+
},
|
|
230
|
+
edges: {
|
|
231
|
+
top: false,
|
|
232
|
+
bottom: true,
|
|
233
|
+
horizontal: false,
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
systemUI: {
|
|
237
|
+
statusBar: {
|
|
238
|
+
height: 'atomic.spacing.5',
|
|
239
|
+
visible: true,
|
|
240
|
+
style: 'auto',
|
|
241
|
+
translucent: true,
|
|
242
|
+
},
|
|
243
|
+
navigationBar: {
|
|
244
|
+
height: 'atomic.spacing.12',
|
|
245
|
+
mode: 'overlay',
|
|
246
|
+
buttonStyle: 'auto',
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
keyboard: {
|
|
250
|
+
avoidance: 'padding',
|
|
251
|
+
behavior: 'padding',
|
|
252
|
+
animation: {
|
|
253
|
+
duration: 250,
|
|
254
|
+
easing: 'keyboard',
|
|
255
|
+
enabled: true,
|
|
256
|
+
},
|
|
257
|
+
dismissMode: 'on-drag',
|
|
258
|
+
},
|
|
259
|
+
touchTarget: {
|
|
260
|
+
minSize: 'atomic.spacing.11',
|
|
261
|
+
hitSlop: {
|
|
262
|
+
top: 8,
|
|
263
|
+
bottom: 8,
|
|
264
|
+
left: 8,
|
|
265
|
+
right: 8,
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
responsive: {
|
|
269
|
+
default: {
|
|
270
|
+
maxHeight: '90%',
|
|
271
|
+
borderRadius: 'atomic.spacing.4',
|
|
272
|
+
},
|
|
273
|
+
md: {
|
|
274
|
+
maxHeight: '80%',
|
|
275
|
+
borderRadius: 'atomic.spacing.4',
|
|
276
|
+
},
|
|
277
|
+
},
|
|
278
|
+
tokenBindings: {
|
|
279
|
+
handleBackground: 'semantic.background.surface',
|
|
280
|
+
contentBackground: 'semantic.background.surface',
|
|
281
|
+
overlayBackground: 'semantic.background.overlay',
|
|
282
|
+
},
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Tab-based navigation with bottom tab bar
|
|
286
|
+
* Optimized for tab-based navigation patterns with persistent tab bar
|
|
287
|
+
*/
|
|
288
|
+
export const SHELL_MOBILE_TAB = {
|
|
289
|
+
id: 'shell.mobile.tab',
|
|
290
|
+
description: 'Tab-based navigation with bottom tab bar',
|
|
291
|
+
platform: 'mobile',
|
|
292
|
+
os: 'cross-platform',
|
|
293
|
+
regions: [
|
|
294
|
+
{
|
|
295
|
+
name: 'main',
|
|
296
|
+
position: 'center',
|
|
297
|
+
size: 'atomic.spacing.full',
|
|
298
|
+
collapsible: false,
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
name: 'bottomTab',
|
|
302
|
+
position: 'bottom',
|
|
303
|
+
size: 'atomic.spacing.16',
|
|
304
|
+
collapsible: false,
|
|
305
|
+
},
|
|
306
|
+
],
|
|
307
|
+
safeArea: {
|
|
308
|
+
top: 'atomic.spacing.0',
|
|
309
|
+
bottom: 'atomic.spacing.0',
|
|
310
|
+
left: 'atomic.spacing.0',
|
|
311
|
+
right: 'atomic.spacing.0',
|
|
312
|
+
defaults: {
|
|
313
|
+
notch: 44,
|
|
314
|
+
dynamicIsland: 59,
|
|
315
|
+
homeIndicator: 34,
|
|
316
|
+
statusBar: 20,
|
|
317
|
+
},
|
|
318
|
+
edges: {
|
|
319
|
+
top: true,
|
|
320
|
+
bottom: true,
|
|
321
|
+
horizontal: true,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
systemUI: {
|
|
325
|
+
statusBar: {
|
|
326
|
+
height: 'atomic.spacing.5',
|
|
327
|
+
visible: true,
|
|
328
|
+
style: 'auto',
|
|
329
|
+
translucent: true,
|
|
330
|
+
},
|
|
331
|
+
navigationBar: {
|
|
332
|
+
height: 'atomic.spacing.12',
|
|
333
|
+
mode: 'overlay',
|
|
334
|
+
buttonStyle: 'auto',
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
keyboard: {
|
|
338
|
+
avoidance: 'resize',
|
|
339
|
+
behavior: 'height',
|
|
340
|
+
animation: {
|
|
341
|
+
duration: 250,
|
|
342
|
+
easing: 'keyboard',
|
|
343
|
+
enabled: true,
|
|
344
|
+
},
|
|
345
|
+
dismissMode: 'on-drag',
|
|
346
|
+
},
|
|
347
|
+
bottomTab: {
|
|
348
|
+
height: 'atomic.spacing.16',
|
|
349
|
+
safeAreaBottom: 'atomic.spacing.9',
|
|
350
|
+
totalHeight: 'atomic.spacing.25',
|
|
351
|
+
visibility: 'always',
|
|
352
|
+
maxItems: 5,
|
|
353
|
+
item: {
|
|
354
|
+
minTouchTarget: 'atomic.spacing.11',
|
|
355
|
+
iconSize: 'atomic.spacing.6',
|
|
356
|
+
labelSize: 'atomic.spacing.3',
|
|
357
|
+
spacing: 'atomic.spacing.1',
|
|
358
|
+
},
|
|
359
|
+
},
|
|
360
|
+
touchTarget: {
|
|
361
|
+
minSize: 'atomic.spacing.11',
|
|
362
|
+
hitSlop: {
|
|
363
|
+
top: 8,
|
|
364
|
+
bottom: 8,
|
|
365
|
+
left: 8,
|
|
366
|
+
right: 8,
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
responsive: {
|
|
370
|
+
default: {
|
|
371
|
+
bottomTabVisible: true,
|
|
372
|
+
},
|
|
373
|
+
md: {
|
|
374
|
+
bottomTabVisible: true,
|
|
375
|
+
},
|
|
376
|
+
},
|
|
377
|
+
tokenBindings: {
|
|
378
|
+
mainBackground: 'semantic.background.base',
|
|
379
|
+
bottomTabBackground: 'semantic.background.surface',
|
|
380
|
+
bottomTabBorder: 'semantic.border.default',
|
|
381
|
+
tabActiveBackground: 'semantic.background.brand',
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
/**
|
|
385
|
+
* Drawer navigation with slide-out menu
|
|
386
|
+
* Suitable for applications with hierarchical navigation and menu
|
|
387
|
+
*/
|
|
388
|
+
export const SHELL_MOBILE_DRAWER = {
|
|
389
|
+
id: 'shell.mobile.drawer',
|
|
390
|
+
description: 'Drawer navigation with slide-out menu',
|
|
391
|
+
platform: 'mobile',
|
|
392
|
+
os: 'cross-platform',
|
|
393
|
+
regions: [
|
|
394
|
+
{
|
|
395
|
+
name: 'drawer',
|
|
396
|
+
position: 'left',
|
|
397
|
+
size: 'atomic.spacing.72',
|
|
398
|
+
collapsible: true,
|
|
399
|
+
defaultCollapsed: true,
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
name: 'main',
|
|
403
|
+
position: 'center',
|
|
404
|
+
size: 'atomic.spacing.full',
|
|
405
|
+
collapsible: false,
|
|
406
|
+
},
|
|
407
|
+
],
|
|
408
|
+
safeArea: {
|
|
409
|
+
top: 'atomic.spacing.0',
|
|
410
|
+
bottom: 'atomic.spacing.0',
|
|
411
|
+
left: 'atomic.spacing.0',
|
|
412
|
+
right: 'atomic.spacing.0',
|
|
413
|
+
defaults: {
|
|
414
|
+
notch: 44,
|
|
415
|
+
dynamicIsland: 59,
|
|
416
|
+
homeIndicator: 34,
|
|
417
|
+
statusBar: 20,
|
|
418
|
+
},
|
|
419
|
+
edges: {
|
|
420
|
+
top: true,
|
|
421
|
+
bottom: true,
|
|
422
|
+
horizontal: false,
|
|
423
|
+
},
|
|
424
|
+
},
|
|
425
|
+
systemUI: {
|
|
426
|
+
statusBar: {
|
|
427
|
+
height: 'atomic.spacing.5',
|
|
428
|
+
visible: true,
|
|
429
|
+
style: 'auto',
|
|
430
|
+
translucent: true,
|
|
431
|
+
},
|
|
432
|
+
navigationBar: {
|
|
433
|
+
height: 'atomic.spacing.12',
|
|
434
|
+
mode: 'overlay',
|
|
435
|
+
buttonStyle: 'auto',
|
|
436
|
+
},
|
|
437
|
+
},
|
|
438
|
+
keyboard: {
|
|
439
|
+
avoidance: 'none',
|
|
440
|
+
behavior: 'height',
|
|
441
|
+
animation: {
|
|
442
|
+
duration: 250,
|
|
443
|
+
easing: 'keyboard',
|
|
444
|
+
enabled: true,
|
|
445
|
+
},
|
|
446
|
+
dismissMode: 'on-drag',
|
|
447
|
+
},
|
|
448
|
+
touchTarget: {
|
|
449
|
+
minSize: 'atomic.spacing.11',
|
|
450
|
+
hitSlop: {
|
|
451
|
+
top: 8,
|
|
452
|
+
bottom: 8,
|
|
453
|
+
left: 8,
|
|
454
|
+
right: 8,
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
responsive: {
|
|
458
|
+
default: {
|
|
459
|
+
drawerWidth: 'atomic.spacing.72',
|
|
460
|
+
drawerType: 'overlay',
|
|
461
|
+
},
|
|
462
|
+
md: {
|
|
463
|
+
drawerWidth: 'atomic.spacing.80',
|
|
464
|
+
drawerType: 'overlay',
|
|
465
|
+
},
|
|
466
|
+
},
|
|
467
|
+
tokenBindings: {
|
|
468
|
+
drawerBackground: 'semantic.background.surface',
|
|
469
|
+
mainBackground: 'semantic.background.base',
|
|
470
|
+
drawerBorder: 'semantic.border.default',
|
|
471
|
+
overlayBackground: 'semantic.background.overlay',
|
|
472
|
+
},
|
|
473
|
+
};
|
|
474
|
+
/**
|
|
475
|
+
* Detail view layout with header and action bar
|
|
476
|
+
* Designed for content detail pages with actions
|
|
477
|
+
*/
|
|
478
|
+
export const SHELL_MOBILE_DETAIL = {
|
|
479
|
+
id: 'shell.mobile.detail',
|
|
480
|
+
description: 'Detail view layout with header and action bar',
|
|
481
|
+
platform: 'mobile',
|
|
482
|
+
os: 'cross-platform',
|
|
483
|
+
regions: [
|
|
484
|
+
{
|
|
485
|
+
name: 'header',
|
|
486
|
+
position: 'top',
|
|
487
|
+
size: 'atomic.spacing.14',
|
|
488
|
+
collapsible: true,
|
|
489
|
+
},
|
|
490
|
+
{
|
|
491
|
+
name: 'main',
|
|
492
|
+
position: 'center',
|
|
493
|
+
size: 'atomic.spacing.full',
|
|
494
|
+
collapsible: false,
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
name: 'actionBar',
|
|
498
|
+
position: 'bottom',
|
|
499
|
+
size: 'atomic.spacing.14',
|
|
500
|
+
collapsible: false,
|
|
501
|
+
},
|
|
502
|
+
],
|
|
503
|
+
safeArea: {
|
|
504
|
+
top: 'atomic.spacing.0',
|
|
505
|
+
bottom: 'atomic.spacing.0',
|
|
506
|
+
left: 'atomic.spacing.0',
|
|
507
|
+
right: 'atomic.spacing.0',
|
|
508
|
+
defaults: {
|
|
509
|
+
notch: 44,
|
|
510
|
+
dynamicIsland: 59,
|
|
511
|
+
homeIndicator: 34,
|
|
512
|
+
statusBar: 20,
|
|
513
|
+
},
|
|
514
|
+
edges: {
|
|
515
|
+
top: true,
|
|
516
|
+
bottom: true,
|
|
517
|
+
horizontal: true,
|
|
518
|
+
},
|
|
519
|
+
},
|
|
520
|
+
systemUI: {
|
|
521
|
+
statusBar: {
|
|
522
|
+
height: 'atomic.spacing.5',
|
|
523
|
+
visible: true,
|
|
524
|
+
style: 'auto',
|
|
525
|
+
translucent: true,
|
|
526
|
+
},
|
|
527
|
+
navigationBar: {
|
|
528
|
+
height: 'atomic.spacing.12',
|
|
529
|
+
mode: 'overlay',
|
|
530
|
+
buttonStyle: 'auto',
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
keyboard: {
|
|
534
|
+
avoidance: 'padding',
|
|
535
|
+
behavior: 'height',
|
|
536
|
+
animation: {
|
|
537
|
+
duration: 250,
|
|
538
|
+
easing: 'keyboard',
|
|
539
|
+
enabled: true,
|
|
540
|
+
},
|
|
541
|
+
dismissMode: 'on-drag',
|
|
542
|
+
},
|
|
543
|
+
touchTarget: {
|
|
544
|
+
minSize: 'atomic.spacing.11',
|
|
545
|
+
hitSlop: {
|
|
546
|
+
top: 8,
|
|
547
|
+
bottom: 8,
|
|
548
|
+
left: 8,
|
|
549
|
+
right: 8,
|
|
550
|
+
},
|
|
551
|
+
},
|
|
552
|
+
responsive: {
|
|
553
|
+
default: {
|
|
554
|
+
headerCollapsible: true,
|
|
555
|
+
actionBarVisible: true,
|
|
556
|
+
},
|
|
557
|
+
md: {
|
|
558
|
+
headerCollapsible: true,
|
|
559
|
+
actionBarVisible: true,
|
|
560
|
+
},
|
|
561
|
+
},
|
|
562
|
+
tokenBindings: {
|
|
563
|
+
headerBackground: 'semantic.background.surface',
|
|
564
|
+
mainBackground: 'semantic.background.base',
|
|
565
|
+
actionBarBackground: 'semantic.background.surface',
|
|
566
|
+
headerBorder: 'semantic.border.default',
|
|
567
|
+
actionBarBorder: 'semantic.border.default',
|
|
568
|
+
},
|
|
569
|
+
};
|
|
570
|
+
// ============================================================================
|
|
571
|
+
// Internal Token Map
|
|
572
|
+
// ============================================================================
|
|
573
|
+
/**
|
|
574
|
+
* Internal map for quick mobile shell token lookups by ID
|
|
575
|
+
* Used by getMobileShellToken() for O(1) access
|
|
576
|
+
*/
|
|
577
|
+
const MOBILE_SHELL_TOKENS_MAP = {
|
|
578
|
+
'shell.mobile.app': SHELL_MOBILE_APP,
|
|
579
|
+
'shell.mobile.fullscreen': SHELL_MOBILE_FULLSCREEN,
|
|
580
|
+
'shell.mobile.modal': SHELL_MOBILE_MODAL,
|
|
581
|
+
'shell.mobile.tab': SHELL_MOBILE_TAB,
|
|
582
|
+
'shell.mobile.drawer': SHELL_MOBILE_DRAWER,
|
|
583
|
+
'shell.mobile.detail': SHELL_MOBILE_DETAIL,
|
|
584
|
+
};
|
|
585
|
+
// ============================================================================
|
|
586
|
+
// Utility Functions
|
|
587
|
+
// ============================================================================
|
|
588
|
+
/**
|
|
589
|
+
* Get a mobile shell token by its ID
|
|
590
|
+
*
|
|
591
|
+
* @param shellId - Mobile shell token ID (e.g., "shell.mobile.app")
|
|
592
|
+
* @returns MobileShellToken if found, undefined otherwise
|
|
593
|
+
*
|
|
594
|
+
* @example
|
|
595
|
+
* ```typescript
|
|
596
|
+
* const appShell = getMobileShellToken('shell.mobile.app');
|
|
597
|
+
* if (appShell) {
|
|
598
|
+
* console.log(appShell.description);
|
|
599
|
+
* }
|
|
600
|
+
* ```
|
|
601
|
+
*/
|
|
602
|
+
export function getMobileShellToken(shellId) {
|
|
603
|
+
return MOBILE_SHELL_TOKENS_MAP[shellId];
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* Get all available mobile shell tokens
|
|
607
|
+
*
|
|
608
|
+
* @returns Array of all MobileShellTokens
|
|
609
|
+
*
|
|
610
|
+
* @example
|
|
611
|
+
* ```typescript
|
|
612
|
+
* const allMobileShells = getAllMobileShellTokens();
|
|
613
|
+
* console.log(`Available mobile shells: ${allMobileShells.length}`);
|
|
614
|
+
* ```
|
|
615
|
+
*/
|
|
616
|
+
export function getAllMobileShellTokens() {
|
|
617
|
+
return Object.values(MOBILE_SHELL_TOKENS_MAP);
|
|
618
|
+
}
|
|
619
|
+
/**
|
|
620
|
+
* Get mobile shell tokens filtered by target OS
|
|
621
|
+
*
|
|
622
|
+
* @param os - Target operating system ('ios', 'android', or 'cross-platform')
|
|
623
|
+
* @returns Array of MobileShellTokens for the specified OS
|
|
624
|
+
*
|
|
625
|
+
* @example
|
|
626
|
+
* ```typescript
|
|
627
|
+
* const iosShells = getMobileShellsByOS('ios');
|
|
628
|
+
* const crossPlatformShells = getMobileShellsByOS('cross-platform');
|
|
629
|
+
* console.log(`iOS shells: ${iosShells.length}`);
|
|
630
|
+
* ```
|
|
631
|
+
*/
|
|
632
|
+
export function getMobileShellsByOS(os) {
|
|
633
|
+
return getAllMobileShellTokens().filter(shell => shell.os === os || shell.os === 'cross-platform');
|
|
634
|
+
}
|
|
635
|
+
//# sourceMappingURL=mobile-shells.js.map
|