@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.
Files changed (254) hide show
  1. package/README.md +758 -0
  2. package/dist/blueprint.d.ts +44 -0
  3. package/dist/blueprint.d.ts.map +1 -0
  4. package/dist/blueprint.js +163 -0
  5. package/dist/blueprint.js.map +1 -0
  6. package/dist/component-schemas.d.ts +78 -0
  7. package/dist/component-schemas.d.ts.map +1 -0
  8. package/dist/component-schemas.js +1037 -0
  9. package/dist/component-schemas.js.map +1 -0
  10. package/dist/css-generator.d.ts +42 -0
  11. package/dist/css-generator.d.ts.map +1 -0
  12. package/dist/css-generator.js +339 -0
  13. package/dist/css-generator.js.map +1 -0
  14. package/dist/icon-library.d.ts +109 -0
  15. package/dist/icon-library.d.ts.map +1 -0
  16. package/dist/icon-library.js +204 -0
  17. package/dist/icon-library.js.map +1 -0
  18. package/dist/index.d.ts +36 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +51 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/layout-css-generator.d.ts +158 -0
  23. package/dist/layout-css-generator.d.ts.map +1 -0
  24. package/dist/layout-css-generator.js +901 -0
  25. package/dist/layout-css-generator.js.map +1 -0
  26. package/dist/layout-resolver.d.ts +92 -0
  27. package/dist/layout-resolver.d.ts.map +1 -0
  28. package/dist/layout-resolver.js +275 -0
  29. package/dist/layout-resolver.js.map +1 -0
  30. package/dist/layout-tokens/index.d.ts +16 -0
  31. package/dist/layout-tokens/index.d.ts.map +1 -0
  32. package/dist/layout-tokens/index.js +16 -0
  33. package/dist/layout-tokens/index.js.map +1 -0
  34. package/dist/layout-tokens/keyboard.d.ts +254 -0
  35. package/dist/layout-tokens/keyboard.d.ts.map +1 -0
  36. package/dist/layout-tokens/keyboard.js +407 -0
  37. package/dist/layout-tokens/keyboard.js.map +1 -0
  38. package/dist/layout-tokens/mobile-shells.d.ts +78 -0
  39. package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
  40. package/dist/layout-tokens/mobile-shells.js +635 -0
  41. package/dist/layout-tokens/mobile-shells.js.map +1 -0
  42. package/dist/layout-tokens/pages.d.ts +100 -0
  43. package/dist/layout-tokens/pages.d.ts.map +1 -0
  44. package/dist/layout-tokens/pages.js +576 -0
  45. package/dist/layout-tokens/pages.js.map +1 -0
  46. package/dist/layout-tokens/responsive.d.ts +109 -0
  47. package/dist/layout-tokens/responsive.d.ts.map +1 -0
  48. package/dist/layout-tokens/responsive.js +167 -0
  49. package/dist/layout-tokens/responsive.js.map +1 -0
  50. package/dist/layout-tokens/safe-area.d.ts +156 -0
  51. package/dist/layout-tokens/safe-area.d.ts.map +1 -0
  52. package/dist/layout-tokens/safe-area.js +316 -0
  53. package/dist/layout-tokens/safe-area.js.map +1 -0
  54. package/dist/layout-tokens/sections-advanced.d.ts +277 -0
  55. package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
  56. package/dist/layout-tokens/sections-advanced.js +593 -0
  57. package/dist/layout-tokens/sections-advanced.js.map +1 -0
  58. package/dist/layout-tokens/sections.d.ts +137 -0
  59. package/dist/layout-tokens/sections.d.ts.map +1 -0
  60. package/dist/layout-tokens/sections.js +694 -0
  61. package/dist/layout-tokens/sections.js.map +1 -0
  62. package/dist/layout-tokens/shells.d.ts +77 -0
  63. package/dist/layout-tokens/shells.d.ts.map +1 -0
  64. package/dist/layout-tokens/shells.js +408 -0
  65. package/dist/layout-tokens/shells.js.map +1 -0
  66. package/dist/layout-tokens/touch-target.d.ts +119 -0
  67. package/dist/layout-tokens/touch-target.d.ts.map +1 -0
  68. package/dist/layout-tokens/touch-target.js +156 -0
  69. package/dist/layout-tokens/touch-target.js.map +1 -0
  70. package/dist/layout-tokens/types.d.ts +632 -0
  71. package/dist/layout-tokens/types.d.ts.map +1 -0
  72. package/dist/layout-tokens/types.js +49 -0
  73. package/dist/layout-tokens/types.js.map +1 -0
  74. package/dist/layout-validation.d.ts +1547 -0
  75. package/dist/layout-validation.d.ts.map +1 -0
  76. package/dist/layout-validation.js +628 -0
  77. package/dist/layout-validation.js.map +1 -0
  78. package/dist/render.d.ts +23 -0
  79. package/dist/render.d.ts.map +1 -0
  80. package/dist/render.js +244 -0
  81. package/dist/render.js.map +1 -0
  82. package/dist/schema-validation.d.ts +208 -0
  83. package/dist/schema-validation.d.ts.map +1 -0
  84. package/dist/schema-validation.js +205 -0
  85. package/dist/schema-validation.js.map +1 -0
  86. package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
  87. package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
  88. package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
  89. package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
  90. package/dist/screen-generation/generators/index.d.ts +13 -0
  91. package/dist/screen-generation/generators/index.d.ts.map +1 -0
  92. package/dist/screen-generation/generators/index.js +32 -0
  93. package/dist/screen-generation/generators/index.js.map +1 -0
  94. package/dist/screen-generation/generators/react-generator.d.ts +100 -0
  95. package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
  96. package/dist/screen-generation/generators/react-generator.js +379 -0
  97. package/dist/screen-generation/generators/react-generator.js.map +1 -0
  98. package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
  99. package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
  100. package/dist/screen-generation/generators/tailwind-generator.js +355 -0
  101. package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
  102. package/dist/screen-generation/generators/types.d.ts +136 -0
  103. package/dist/screen-generation/generators/types.d.ts.map +1 -0
  104. package/dist/screen-generation/generators/types.js +18 -0
  105. package/dist/screen-generation/generators/types.js.map +1 -0
  106. package/dist/screen-generation/generators/utils.d.ts +187 -0
  107. package/dist/screen-generation/generators/utils.d.ts.map +1 -0
  108. package/dist/screen-generation/generators/utils.js +312 -0
  109. package/dist/screen-generation/generators/utils.js.map +1 -0
  110. package/dist/screen-generation/index.d.ts +14 -0
  111. package/dist/screen-generation/index.d.ts.map +1 -0
  112. package/dist/screen-generation/index.js +33 -0
  113. package/dist/screen-generation/index.js.map +1 -0
  114. package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
  115. package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
  116. package/dist/screen-generation/resolver/component-resolver.js +295 -0
  117. package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
  118. package/dist/screen-generation/resolver/index.d.ts +10 -0
  119. package/dist/screen-generation/resolver/index.d.ts.map +1 -0
  120. package/dist/screen-generation/resolver/index.js +46 -0
  121. package/dist/screen-generation/resolver/index.js.map +1 -0
  122. package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
  123. package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
  124. package/dist/screen-generation/resolver/layout-resolver.js +193 -0
  125. package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
  126. package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
  127. package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
  128. package/dist/screen-generation/resolver/screen-resolver.js +373 -0
  129. package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
  130. package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
  131. package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
  132. package/dist/screen-generation/resolver/token-resolver.js +260 -0
  133. package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
  134. package/dist/screen-generation/types.d.ts +116 -0
  135. package/dist/screen-generation/types.d.ts.map +1 -0
  136. package/dist/screen-generation/types.js +33 -0
  137. package/dist/screen-generation/types.js.map +1 -0
  138. package/dist/screen-generation/validators.d.ts +286 -0
  139. package/dist/screen-generation/validators.d.ts.map +1 -0
  140. package/dist/screen-generation/validators.js +323 -0
  141. package/dist/screen-generation/validators.js.map +1 -0
  142. package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
  143. package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
  144. package/dist/screen-templates/__tests__/registry.test.js +247 -0
  145. package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
  146. package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
  147. package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
  148. package/dist/screen-templates/__tests__/templates.test.js +179 -0
  149. package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
  150. package/dist/screen-templates/index.d.ts +39 -0
  151. package/dist/screen-templates/index.d.ts.map +1 -0
  152. package/dist/screen-templates/index.js +79 -0
  153. package/dist/screen-templates/index.js.map +1 -0
  154. package/dist/screen-templates/registry.d.ts +177 -0
  155. package/dist/screen-templates/registry.d.ts.map +1 -0
  156. package/dist/screen-templates/registry.js +274 -0
  157. package/dist/screen-templates/registry.js.map +1 -0
  158. package/dist/screen-templates/templates/account/index.d.ts +6 -0
  159. package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
  160. package/dist/screen-templates/templates/account/index.js +6 -0
  161. package/dist/screen-templates/templates/account/index.js.map +1 -0
  162. package/dist/screen-templates/templates/account/profile.d.ts +23 -0
  163. package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
  164. package/dist/screen-templates/templates/account/profile.js +249 -0
  165. package/dist/screen-templates/templates/account/profile.js.map +1 -0
  166. package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
  167. package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
  168. package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
  169. package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
  170. package/dist/screen-templates/templates/auth/index.d.ts +9 -0
  171. package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
  172. package/dist/screen-templates/templates/auth/index.js +9 -0
  173. package/dist/screen-templates/templates/auth/index.js.map +1 -0
  174. package/dist/screen-templates/templates/auth/login.d.ts +24 -0
  175. package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
  176. package/dist/screen-templates/templates/auth/login.js +254 -0
  177. package/dist/screen-templates/templates/auth/login.js.map +1 -0
  178. package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
  179. package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
  180. package/dist/screen-templates/templates/auth/signup.js +315 -0
  181. package/dist/screen-templates/templates/auth/signup.js.map +1 -0
  182. package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
  183. package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
  184. package/dist/screen-templates/templates/auth/verification.js +239 -0
  185. package/dist/screen-templates/templates/auth/verification.js.map +1 -0
  186. package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
  187. package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
  188. package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
  189. package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
  190. package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
  191. package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
  192. package/dist/screen-templates/templates/feedback/empty.js +90 -0
  193. package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
  194. package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
  195. package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
  196. package/dist/screen-templates/templates/feedback/error.js +99 -0
  197. package/dist/screen-templates/templates/feedback/error.js.map +1 -0
  198. package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
  199. package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
  200. package/dist/screen-templates/templates/feedback/index.js +10 -0
  201. package/dist/screen-templates/templates/feedback/index.js.map +1 -0
  202. package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
  203. package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
  204. package/dist/screen-templates/templates/feedback/loading.js +77 -0
  205. package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
  206. package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
  207. package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
  208. package/dist/screen-templates/templates/feedback/success.js +99 -0
  209. package/dist/screen-templates/templates/feedback/success.js.map +1 -0
  210. package/dist/screen-templates/templates/home/index.d.ts +6 -0
  211. package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
  212. package/dist/screen-templates/templates/home/index.js +6 -0
  213. package/dist/screen-templates/templates/home/index.js.map +1 -0
  214. package/dist/screen-templates/templates/home/landing.d.ts +24 -0
  215. package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
  216. package/dist/screen-templates/templates/home/landing.js +197 -0
  217. package/dist/screen-templates/templates/home/landing.js.map +1 -0
  218. package/dist/screen-templates/templates/settings/index.d.ts +6 -0
  219. package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
  220. package/dist/screen-templates/templates/settings/index.js +6 -0
  221. package/dist/screen-templates/templates/settings/index.js.map +1 -0
  222. package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
  223. package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
  224. package/dist/screen-templates/templates/settings/preferences.js +265 -0
  225. package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
  226. package/dist/screen-templates/types.d.ts +229 -0
  227. package/dist/screen-templates/types.d.ts.map +1 -0
  228. package/dist/screen-templates/types.js +7 -0
  229. package/dist/screen-templates/types.js.map +1 -0
  230. package/dist/theme-v2.d.ts +228 -0
  231. package/dist/theme-v2.d.ts.map +1 -0
  232. package/dist/theme-v2.js +158 -0
  233. package/dist/theme-v2.js.map +1 -0
  234. package/dist/theme.d.ts +60 -0
  235. package/dist/theme.d.ts.map +1 -0
  236. package/dist/theme.js +76 -0
  237. package/dist/theme.js.map +1 -0
  238. package/dist/token-resolver.d.ts +69 -0
  239. package/dist/token-resolver.d.ts.map +1 -0
  240. package/dist/token-resolver.js +122 -0
  241. package/dist/token-resolver.js.map +1 -0
  242. package/dist/token-validation.d.ts +432 -0
  243. package/dist/token-validation.d.ts.map +1 -0
  244. package/dist/token-validation.js +140 -0
  245. package/dist/token-validation.js.map +1 -0
  246. package/dist/tokens.d.ts +158 -0
  247. package/dist/tokens.d.ts.map +1 -0
  248. package/dist/tokens.js +10 -0
  249. package/dist/tokens.js.map +1 -0
  250. package/dist/types.d.ts +77 -0
  251. package/dist/types.d.ts.map +1 -0
  252. package/dist/types.js +7 -0
  253. package/dist/types.js.map +1 -0
  254. 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