@maccesar/titools 2.2.12 → 2.3.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 (98) hide show
  1. package/README.md +255 -713
  2. package/bin/titools.js +1 -1
  3. package/lib/commands/update.js +5 -6
  4. package/lib/config.js +1 -0
  5. package/lib/downloader.js +10 -0
  6. package/package.json +1 -1
  7. package/skills/alloy-guides/SKILL.md +46 -48
  8. package/skills/alloy-guides/references/CONTROLLERS.md +4 -6
  9. package/skills/alloy-guides/references/MODELS.md +340 -184
  10. package/skills/alloy-guides/references/VIEWS_DYNAMIC.md +3 -4
  11. package/skills/alloy-guides/references/VIEWS_STYLES.md +44 -46
  12. package/skills/alloy-guides/references/VIEWS_WITHOUT_CONTROLLERS.md +4 -5
  13. package/skills/alloy-guides/references/VIEWS_XML.md +51 -17
  14. package/skills/alloy-guides/references/WIDGETS.md +1 -1
  15. package/skills/alloy-howtos/SKILL.md +12 -13
  16. package/skills/alloy-howtos/references/cli_reference.md +40 -41
  17. package/skills/alloy-howtos/references/samples.md +3 -4
  18. package/skills/purgetss/SKILL.md +369 -356
  19. package/skills/purgetss/references/EXAMPLES.md +24 -25
  20. package/skills/purgetss/references/animation-advanced.md +555 -0
  21. package/skills/purgetss/references/animation-system.md +395 -995
  22. package/skills/purgetss/references/apply-directive.md +111 -141
  23. package/skills/purgetss/references/arbitrary-values.md +206 -480
  24. package/skills/purgetss/references/class-categories.md +277 -0
  25. package/skills/purgetss/references/class-index.md +1 -420
  26. package/skills/purgetss/references/cli-commands.md +446 -556
  27. package/skills/purgetss/references/configurable-properties.md +163 -599
  28. package/skills/purgetss/references/custom-rules.md +33 -76
  29. package/skills/purgetss/references/customization-deep-dive.md +319 -518
  30. package/skills/purgetss/references/dynamic-component-creation.md +33 -37
  31. package/skills/purgetss/references/grid-layout.md +42 -371
  32. package/skills/purgetss/references/icon-fonts.md +82 -475
  33. package/skills/purgetss/references/installation-setup.md +159 -331
  34. package/skills/purgetss/references/migration-guide.md +54 -109
  35. package/skills/purgetss/references/opacity-modifier.md +25 -222
  36. package/skills/purgetss/references/performance-tips.md +2 -2
  37. package/skills/purgetss/references/platform-modifiers.md +21 -407
  38. package/skills/purgetss/references/tikit-components.md +237 -104
  39. package/skills/purgetss/references/titanium-resets.md +20 -21
  40. package/skills/purgetss/references/ui-ux-design.md +171 -1702
  41. package/skills/ti-api/SKILL.md +109 -0
  42. package/skills/ti-api/references/api-android.md +675 -0
  43. package/skills/ti-api/references/api-app-platform.md +636 -0
  44. package/skills/ti-api/references/api-core.md +764 -0
  45. package/skills/ti-api/references/api-data-network.md +641 -0
  46. package/skills/ti-api/references/api-media.md +655 -0
  47. package/skills/ti-api/references/api-modules-ble-bluetooth.md +657 -0
  48. package/skills/ti-api/references/api-modules-coremotion-urlsession.md +411 -0
  49. package/skills/ti-api/references/api-modules-map.md +632 -0
  50. package/skills/ti-api/references/api-modules-nfc.md +725 -0
  51. package/skills/ti-api/references/api-modules-social-misc.md +526 -0
  52. package/skills/ti-api/references/api-services.md +700 -0
  53. package/skills/ti-api/references/api-ui-android.md +499 -0
  54. package/skills/ti-api/references/api-ui-extras.md +702 -0
  55. package/skills/ti-api/references/api-ui-ios-animator.md +378 -0
  56. package/skills/ti-api/references/api-ui-ios.md +756 -0
  57. package/skills/ti-api/references/api-ui-lists.md +581 -0
  58. package/skills/ti-api/references/api-ui-text-input.md +607 -0
  59. package/skills/ti-api/references/api-ui-views.md +572 -0
  60. package/skills/ti-api/references/api-ui-windows-navigation.md +676 -0
  61. package/skills/ti-api/references/api-xml-global.md +743 -0
  62. package/skills/ti-expert/SKILL.md +46 -45
  63. package/skills/ti-expert/references/adaptive-layouts.md +414 -0
  64. package/skills/ti-expert/references/alloy-builtins.md +16 -20
  65. package/skills/ti-expert/references/alloy-structure.md +40 -42
  66. package/skills/ti-expert/references/anti-patterns.md +34 -0
  67. package/skills/ti-expert/references/code-conventions.md +5 -3
  68. package/skills/ti-expert/references/error-handling.md +14 -7
  69. package/skills/ti-expert/references/examples.md +4 -2
  70. package/skills/ti-expert/references/performance-optimization.md +26 -24
  71. package/skills/ti-expert/references/security-device.md +17 -14
  72. package/skills/ti-expert/references/security-fundamentals.md +60 -101
  73. package/skills/ti-expert/references/state-management.md +15 -14
  74. package/skills/ti-expert/references/testing-e2e-ci.md +30 -21
  75. package/skills/ti-expert/references/theming.md +12 -20
  76. package/skills/ti-guides/SKILL.md +13 -17
  77. package/skills/ti-guides/references/advanced-data-and-images.md +30 -10
  78. package/skills/ti-guides/references/application-frameworks.md +3 -3
  79. package/skills/ti-guides/references/coding-best-practices.md +31 -2
  80. package/skills/ti-guides/references/commonjs-advanced.md +46 -4
  81. package/skills/ti-guides/references/hello-world.md +9 -13
  82. package/skills/ti-guides/references/hyperloop-native-access.md +4 -1
  83. package/skills/ti-guides/references/javascript-primer.md +13 -5
  84. package/skills/ti-guides/references/resources.md +0 -2
  85. package/skills/ti-guides/references/style-and-conventions.md +1 -0
  86. package/skills/ti-guides/references/tiapp-config.md +0 -32
  87. package/skills/ti-howtos/SKILL.md +43 -45
  88. package/skills/ti-howtos/references/buffer-codec-streams.md +25 -3
  89. package/skills/ti-howtos/references/debugging-profiling.md +14 -25
  90. package/skills/ti-howtos/references/google-maps-v2.md +3 -3
  91. package/skills/ti-howtos/references/ios-map-kit.md +8 -1
  92. package/skills/ti-howtos/references/notification-services.md +0 -1
  93. package/skills/ti-howtos/references/webpack-build-pipeline.md +3 -0
  94. package/skills/ti-ui/SKILL.md +47 -49
  95. package/skills/ti-ui/references/application-structures.md +3 -2
  96. package/skills/ti-ui/references/orientation.md +17 -9
  97. package/skills/ti-ui/references/platform-ui-ios.md +63 -0
  98. package/skills/ti-ui/references/scrolling-views.md +39 -0
@@ -18,9 +18,8 @@ You can use the following values and operators in your TSS file:
18
18
  * Bitwise operators: `>>`, `<<`, `>>>`, `&`, `|`, `^` (since Alloy 1.3.0)
19
19
  * Single (`//comment`) and multiline comments (`/* comment */`)
20
20
 
21
- ::: warning ⚠️ Warning
22
- Alloy does not support the CSS concept of child or descendent selectors.
23
- :::
21
+ > **⚠️ ⚠️ Warning**
22
+ > Alloy does not support the CSS concept of child or descendent selectors.
24
23
 
25
24
  **app/styles/index.tss**
26
25
 
@@ -120,39 +119,38 @@ Style priority (lowest to highest): Global Style File → Global Style File in T
120
119
 
121
120
  ## Platform-Specific Styles
122
121
 
123
- :::danger CRITICAL: Platform-Specific Properties Require Modifiers
124
- **Using `Ti.UI.iOS.*` or `Ti.UI.Android.*` properties in TSS WITHOUT platform modifiers will:**
125
-
126
- 1. **Add iOS code to Android builds** → compilation failures
127
- 2. **Add Android code to iOS builds** → compilation failures
128
-
129
- **Example of the damage:**
130
- ```tss
131
- // ❌ WRONG - Adds Ti.UI.iOS to Android project
132
- "#mainWindow": {
133
- statusBarStyle: Ti.UI.iOS.StatusBar.LIGHT_CONTENT // FAILS on Android!
134
- }
135
- ```
136
-
137
- **CORRECT - Always use platform modifiers:**
138
- ```tss
139
- // ✅ CORRECT - Only adds to iOS
140
- "#mainWindow[platform=ios]": {
141
- statusBarStyle: Ti.UI.iOS.StatusBar.LIGHT_CONTENT
142
- }
143
-
144
- // ✅ CORRECT - Only adds to Android
145
- "#mainWindow[platform=android]": {
146
- actionBar: {
147
- displayHomeAsUp: true
148
- }
149
- }
150
- ```
151
-
152
- **Common platform-specific properties that REQUIRE `[platform=...]` modifiers:**
153
- - iOS: `statusBarStyle`, `modalStyle`, `modalTransitionStyle`, any `Ti.UI.iOS.*`
154
- - Android: `actionBar` config, any `Ti.Android.*` constant
155
- :::
122
+ > **🚨 CRITICAL: Platform-Specific Properties Require Modifiers**
123
+ > **Using `Ti.UI.iOS.*` or `Ti.UI.Android.*` properties in TSS WITHOUT platform modifiers will:**
124
+ >
125
+ > 1. **Add iOS code to Android builds** → compilation failures
126
+ > 2. **Add Android code to iOS builds** → compilation failures
127
+ >
128
+ > **Example of the damage:**
129
+ > ```tss
130
+ > // ❌ WRONG - Adds Ti.UI.iOS to Android project
131
+ > "#mainWindow": {
132
+ > statusBarStyle: Ti.UI.iOS.StatusBar.LIGHT_CONTENT // FAILS on Android!
133
+ > }
134
+ > ```
135
+ >
136
+ > **CORRECT - Always use platform modifiers:**
137
+ > ```tss
138
+ > // ✅ CORRECT - Only adds to iOS
139
+ > "#mainWindow[platform=ios]": {
140
+ > statusBarStyle: Ti.UI.iOS.StatusBar.LIGHT_CONTENT
141
+ > }
142
+ >
143
+ > // ✅ CORRECT - Only adds to Android
144
+ > "#mainWindow[platform=android]": {
145
+ > actionBar: {
146
+ > displayHomeAsUp: true
147
+ > }
148
+ > }
149
+ > ```
150
+ >
151
+ > **Common platform-specific properties that REQUIRE `[platform=...]` modifiers:**
152
+ > - iOS: `statusBarStyle`, `modalStyle`, `modalTransitionStyle`, any `Ti.UI.iOS.*`
153
+ > - Android: `actionBar` config, any `Ti.Android.*` constant
156
154
 
157
155
  As with views, separate styles may be defined based on the platform and device size.
158
156
 
@@ -331,16 +329,16 @@ Themes provide a way to overwrite or modify files for a specific brand of your a
331
329
 
332
330
  To create a theme, create a folder called `themes` in your Alloy `app` directory. In the `themes` folder, create a folder for your theme.
333
331
 
334
- | Folder or Filename | Merges or Overwrites | Supported Since |
335
- | ------------------ | -------------------------------- | ----------------------- |
336
- | config.json | merges | Alloy 1.4.0 |
337
- | i18n | merges folders and files | Alloy 1.4.0 |
338
- | assets | merges folders, overwrites files | Alloy 1.4.0 |
339
- | lib | merges folders, overwrites files | Alloy 1.7.6 / CLI 5.0.0 |
340
- | platform | merges folders, overwrites files | Alloy 1.7.6 / CLI 5.0.0 |
341
- | styles | merges folders and files | Alloy 1.4.0 |
342
- | widgets/\*/assets | merges folders, overwrites files | Alloy 1.4.0 |
343
- | widgets/\*/styles | merges folders and files | Alloy 1.4.0 |
332
+ | Folder or Filename | Supported Since | Merges or Overwrites |
333
+ | ------------------ | ----------------------- | -------------------------------- |
334
+ | config.json | Alloy 1.4.0 | merges |
335
+ | i18n | Alloy 1.7.6 / CLI 5.0.0 | merges folders and files |
336
+ | assets | | merges folders, overwrites files |
337
+ | lib | Alloy 1.7.6 / CLI 5.0.0 | merges folders, overwrites files |
338
+ | platform | Alloy 1.7.6 / CLI 5.0.0 | merges folders, overwrites files |
339
+ | styles | | merges folders and files |
340
+ | widgets/\*/assets | Alloy 1.4.0 | merges folders, overwrites files |
341
+ | widgets/\*/styles | Alloy 1.4.0 | merges folders and files |
344
342
 
345
343
  To use a theme, add it to your `config.json`:
346
344
 
@@ -45,11 +45,10 @@ Then, the controller can use `$.button1`, `$.button2` and `$.button3` to access
45
45
  3. Use the `getView()` method to retrieve the view.
46
46
  4. Use the `add()` method to add the view to a parent component.
47
47
 
48
- ::: warning ⚠️ Warning
49
- Unlike other style dictionaries in Alloy, when using the `updateViews()` method, you can only apply styles using IDs. Class and view component styles do not work with this method.
50
-
51
- Using the `Require` or `Widget` elements to include external views in the controller-less view does not work with this procedure — you can include the external views, but the styles cannot be updated with the `updateViews` method.
52
- :::
48
+ > **⚠️ ⚠️ Warning**
49
+ > Unlike other style dictionaries in Alloy, when using the `updateViews()` method, you can only apply styles using IDs. Class and view component styles do not work with this method.
50
+ >
51
+ > Using the `Require` or `Widget` elements to include external views in the controller-less view does not work with this procedure — you can include the external views, but the styles cannot be updated with the `updateViews` method.
53
52
 
54
53
  For example:
55
54
 
@@ -24,18 +24,18 @@ If the top-level UI component does not have an ID defined, it can be referenced
24
24
 
25
25
  The following table lists the attributes for the UI components:
26
26
 
27
- | Attribute | Description |
28
- | -------------- | -------------------------------------------------------------------------------------------------- |
27
+ | Attribute | Description |
28
+ | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
29
29
  | `id` | Identifies UI elements in the controller (prefixed with `$.`) and style sheet (prefixed with `#`). IDs should be unique per view but are not global, so multiple views can have components with the same ID. |
30
- | `class` | Applies additional styles (prefixed with `.` in the TSS file). Overwrites the element style but not the id style. |
31
- | `autoStyle` | Enables the autostyle feature for dynamic styling. |
32
- | `formFactor` | Acts as a compiler directive for size-specific view components (`handheld` or `tablet`). |
33
- | `if` | Use a custom query to apply additional styles to the element. |
34
- | `module` | Requires in a CommonJS module. |
35
- | `ns` | Overrides the default `Titanium.UI` namespace. |
36
- | `platform` | Switches the namespace based on the platform. |
37
- | `<properties>` | Assigns values to UI object properties. |
38
- | `<events>` | Assigns callbacks to UI object events. |
30
+ | `class` | Applies additional styles (prefixed with `.` in the TSS file). Overwrites the element style but not the id style. |
31
+ | `autoStyle` | Enables the autostyle feature for dynamic styling. |
32
+ | `formFactor` | Acts as a compiler directive for size-specific view components (`handheld` or `tablet`). |
33
+ | `if` | Use a custom query to apply additional styles to the element. |
34
+ | `module` | Requires in a CommonJS module. |
35
+ | `ns` | Overrides the default `Titanium.UI` namespace. |
36
+ | `platform` | Switches the namespace based on the platform. |
37
+ | `<properties>` | Assigns values to UI object properties. |
38
+ | `<events>` | Assigns callbacks to UI object events. |
39
39
 
40
40
  The following table lists the special XML elements besides the Titanium UI components:
41
41
 
@@ -55,9 +55,10 @@ The following table lists the special XML elements besides the Titanium UI compo
55
55
  * `Ti.UI.NavigationWindow` or `<NavigationWindow>`
56
56
  * `Ti.UI.iOS.SplitWindow` or `<SplitWindow>`
57
57
 
58
- ::: warning
59
- With the release of CLI 7.1.0, you can use platform as a prefix in the XML. For example: `<Label ios:text="Hello iOS!" android:text="Hello Android!" />`
60
- :::
58
+ Other views do not have any format restrictions.
59
+
60
+ > **⚠️ WARNING**
61
+ > With the release of CLI 7.1.0, you can use platform as a prefix in the XML. For example: `<Label ios:text="Hello iOS!" android:text="Hello Android!" />`
61
62
 
62
63
  ## Collection Element
63
64
 
@@ -228,9 +229,33 @@ Within a view in the regular Alloy project space (`app/views`), use the `<Widget
228
229
 
229
230
  **To import a widget:**
230
231
 
231
- 1. Copy the widget to the `app/widgets` folder.
232
- 2. Add the `<Widget>` tag in the XML and specify its `src` attribute as the folder name of the widget. Use the `name` attribute to import a specific view-controller instead of the default `widget.xml`/`widget.js`.
233
- 3. Update the `dependencies` object in the `config.json` file.
232
+ 1. Copy the widget to the `app/widgets` folder. The widget must be contained within its own folder.
233
+ 2. Add the `<Widget>` tag in the XML and specify its `src` attribute as the folder name of the widget.
234
+ 3. Update the `dependencies` object in the `config.json` file by adding a key/value pair with the name of the widget as the key and the version number as the value.
235
+
236
+ You can optionally add the `id` and `name` attributes to the `Widget` element:
237
+ - The `id` attribute allows you to reference the widget in the controller code.
238
+ - The `name` attribute allows you to import a specific view-controller in the widget rather than the default one (`widget.xml`/`widget.js`). Specify the name of the view-controller minus the extension.
239
+
240
+ For example, to import the `mywidget` widget, copy it to `app/widgets`:
241
+
242
+ ```
243
+ app
244
+ ├── config.json
245
+ ├── controllers
246
+ │ └── index.js
247
+ ├── views
248
+ │ └── index.xml
249
+ └── widgets
250
+ └── mywidget
251
+ ├── controllers
252
+ │ ├── foo.js
253
+ │ └── widget.js
254
+ ├── views
255
+ │ ├── foo.xml
256
+ │ └── widget.xml
257
+ └── widget.json
258
+ ```
234
259
 
235
260
  **app/views/index.xml**
236
261
 
@@ -249,6 +274,15 @@ $.index.open();
249
274
  $.foo.myMethod();
250
275
  ```
251
276
 
277
+ Update the `dependencies` object in `config.json`:
278
+
279
+ ```
280
+ ...
281
+ "dependencies": {
282
+ "mywidget":"1.0"
283
+ }
284
+ ```
285
+
252
286
  ### Passing Arguments
253
287
 
254
288
  You can add any custom attributes to the markup to initialize a widget or controller.
@@ -141,7 +141,7 @@ Specifying the `id` attribute in the XML markup components will make it easier t
141
141
  Ti.API.info("button state: " + $.foo.button.enabled);
142
142
  ```
143
143
 
144
- For widgets that have multiple view-controllers, to include a widget's view-controller in another widget's view, use the `Widget` tag and assign the `name` attribute with the name of the view-controller minus the file extension. Since Alloy 1.5.0, if you omit the `src` attribute, Alloy assumes you are referencing the current widget.
144
+ For widgets that have multiple view-controllers, to include a widget's view-controller in another widget's view, use the `Widget` tag and assign the `name` attribute with the name of the view-controller minus the file extension. Since Alloy 1.5.0, if you omit the `src` attribute, Alloy assumes you are referencing the current widget. For Alloy 1.4.x and prior, you need to assign the `src` attribute to the widget's name.
145
145
 
146
146
  **app/widgets/foo/views/widget.xml**
147
147
 
@@ -11,19 +11,18 @@ Practical guide for Alloy MVC projects in the Titanium SDK.
11
11
 
12
12
  ## Project detection
13
13
 
14
- :::info Auto-detects Alloy projects
15
- This skill checks for Alloy projects when invoked and provides CLI and configuration guidance.
16
-
17
- Detection is automatic. No manual command is needed.
18
-
19
- Alloy project indicators:
20
- - `app/` folder with Alloy structure
21
- - `alloy.jmk` or `config.json` files
22
-
23
- Behavior based on detection:
24
- - Alloy detected -> Provide Alloy CLI command guidance, configuration file help, Alloy-specific troubleshooting
25
- - Not detected -> Explain this skill is for Alloy projects only and suggest Alloy guides if the user wants to migrate
26
- :::
14
+ > **️ℹ️ Auto-detects Alloy projects**
15
+ > This skill checks for Alloy projects when invoked and provides CLI and configuration guidance.
16
+ >
17
+ > Detection is automatic. No manual command is needed.
18
+ >
19
+ > Alloy project indicators:
20
+ > - `app/` folder with Alloy structure
21
+ > - `alloy.jmk` or `config.json` files
22
+ >
23
+ > Behavior based on detection:
24
+ > - Alloy detected -> Provide Alloy CLI command guidance, configuration file help, Alloy-specific troubleshooting
25
+ > - Not detected -> Explain this skill is for Alloy projects only and suggest Alloy guides if the user wants to migrate
27
26
 
28
27
  ## Quick reference
29
28
 
@@ -125,47 +125,46 @@ Compiler options reference the `event.alloyConfig` object in [Build Configuratio
125
125
 
126
126
  Use `titanium build` command to run Alloy projects. See [Titanium Command-Line Interface Reference](https://titaniumsdk.com/guide/Titanium_SDK/Titanium_SDK_Guide/Titanium_Command-Line_Interface_Reference/).
127
127
 
128
- :::tip Common ti build pitfalls
129
-
130
- Using `-C` flag without UDID:
131
- ```bash
132
- # Prompts for simulator selection interactively
133
- ti build -p ios -T simulator -C
134
- ```
135
-
136
- Correct approach for simulator:
137
- ```bash
138
- # Runs on default simulator
139
- ti build -p ios -T simulator
140
- ```
141
-
142
- Using `--no-prompt` incorrectly:
143
- ```bash
144
- # Still may prompt for device selection if not specific
145
- ti build -p ios --no-prompt
146
- ```
147
-
148
- Always specify target:
149
- ```bash
150
- # Clear target specification
151
- ti build -p ios -T simulator --no-prompt
152
- ```
153
-
154
- **Common patterns:**
155
- ```bash
156
- # iOS Simulator (most common during development)
157
- ti build -p ios -T simulator
158
-
159
- # iOS Device (requires UDID)
160
- ti build -p ios -T device -V <udid>
161
-
162
- # Android Emulator
163
- ti build -p android -T emulator
164
-
165
- # Build only (don't run)
166
- ti build -p ios -T simulator --build-only
167
- ```
168
- :::
128
+ > **💡 Common ti build pitfalls**
129
+ >
130
+ > Using `-C` flag without UDID:
131
+ > ```bash
132
+ > # Prompts for simulator selection interactively
133
+ > ti build -p ios -T simulator -C
134
+ > ```
135
+ >
136
+ > Correct approach for simulator:
137
+ > ```bash
138
+ > # Runs on default simulator
139
+ > ti build -p ios -T simulator
140
+ > ```
141
+ >
142
+ > Using `--no-prompt` incorrectly:
143
+ > ```bash
144
+ > # Still may prompt for device selection if not specific
145
+ > ti build -p ios --no-prompt
146
+ > ```
147
+ >
148
+ > Always specify target:
149
+ > ```bash
150
+ > # Clear target specification
151
+ > ti build -p ios -T simulator --no-prompt
152
+ > ```
153
+ >
154
+ > **Common patterns:**
155
+ > ```bash
156
+ > # iOS Simulator (most common during development)
157
+ > ti build -p ios -T simulator
158
+ >
159
+ > # iOS Device (requires UDID)
160
+ > ti build -p ios -T device -V <udid>
161
+ >
162
+ > # Android Emulator
163
+ > ti build -p android -T emulator
164
+ >
165
+ > # Build only (don't run)
166
+ > ti build -p ios -T simulator --build-only
167
+ > ```
169
168
 
170
169
  ### i18n-extract
171
170
 
@@ -56,9 +56,8 @@ if (!ENV_PROD) {
56
56
 
57
57
  Alloy separates business logic (controllers) from UI definition (XML/TSS). A common challenge is showing or hiding content based on app state (for example, login status).
58
58
 
59
- :::tip TSS defaults
60
- The samples below assume some additional TSS: views and windows use a vertical layout, and the `View` tag has a default height and width of `Ti.UI.SIZE`.
61
- :::
59
+ > **💡 TSS defaults**
60
+ > The samples below assume some additional TSS: views and windows use a vertical layout, and the `View` tag has a default height and width of `Ti.UI.SIZE`.
62
61
 
63
62
  ### Problems with traditional approaches
64
63
 
@@ -154,4 +153,4 @@ Define custom methods in models and render based on those methods:
154
153
  </Alloy>
155
154
  ```
156
155
 
157
- See [Custom Query Styles](/guide/Alloy_Framework/Alloy_Guide/Alloy_Views/Alloy_Styles_and_Themes/#custom-query-styles) for more details.
156
+ See `VIEWS_STYLES.md` in the `alloy-guides` skill (Custom Query Styles section) for more details.