@kubex/zinc 1.0.25 → 1.0.99

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 (199) hide show
  1. package/.claude/project.md +556 -0
  2. package/.github/workflows/js_build_and_deploy.yaml +9 -10
  3. package/dist/custom-elements.json +13575 -8856
  4. package/dist/vscode.html-custom-data.json +583 -48
  5. package/dist/web-types.json +1441 -181
  6. package/dist/zn.d.ts +1645 -660
  7. package/dist/zn.min.css +1 -1
  8. package/dist/zn.min.js +1412 -893
  9. package/docs/_utilities/code-previews.cjs +10 -1
  10. package/docs/assets/scripts/docs.js +42 -18
  11. package/docs/data/data-table.json +229 -66
  12. package/docs/data/empty.json +6 -0
  13. package/docs/data/products-table.json +41 -193
  14. package/docs/pages/components/action-bar.md +121 -6
  15. package/docs/pages/components/alert.md +118 -15
  16. package/docs/pages/components/animated-button.md +299 -0
  17. package/docs/pages/components/audio-select.md +534 -0
  18. package/docs/pages/components/bulk-actions.md +79 -5
  19. package/docs/pages/components/button-group.md +235 -27
  20. package/docs/pages/components/button.md +139 -1
  21. package/docs/pages/components/chart.md +365 -9
  22. package/docs/pages/components/checkbox.md +387 -58
  23. package/docs/pages/components/chip.md +253 -33
  24. package/docs/pages/components/collapsible.md +393 -46
  25. package/docs/pages/components/cols.md +152 -30
  26. package/docs/pages/components/confirm.md +182 -16
  27. package/docs/pages/components/copy-button.md +169 -6
  28. package/docs/pages/components/data-select.md +194 -15
  29. package/docs/pages/components/data-table-filter.md +96 -5
  30. package/docs/pages/components/data-table-search.md +451 -0
  31. package/docs/pages/components/data-table-sort.md +66 -5
  32. package/docs/pages/components/data-table.md +727 -66
  33. package/docs/pages/components/datepicker.md +402 -7
  34. package/docs/pages/components/defined-label.md +120 -5
  35. package/docs/pages/components/dialog.md +339 -59
  36. package/docs/pages/components/dropdown.md +366 -11
  37. package/docs/pages/components/editor.md +604 -7
  38. package/docs/pages/components/empty-state.md +315 -16
  39. package/docs/pages/components/expanding-action.md +212 -28
  40. package/docs/pages/components/file.md +421 -12
  41. package/docs/pages/components/filter-container.md +158 -5
  42. package/docs/pages/components/filter-wrapper.md +167 -6
  43. package/docs/pages/components/form-group.md +383 -6
  44. package/docs/pages/components/hover-container.md +237 -6
  45. package/docs/pages/components/icon-picker.md +121 -0
  46. package/docs/pages/components/icon.md +454 -48
  47. package/docs/pages/components/inline-edit.md +787 -19
  48. package/docs/pages/components/input-group.md +207 -13
  49. package/docs/pages/components/input.md +194 -0
  50. package/docs/pages/components/item.md +18 -0
  51. package/docs/pages/components/key-container.md +115 -0
  52. package/docs/pages/components/key.md +101 -0
  53. package/docs/pages/components/menu.md +512 -6
  54. package/docs/pages/components/note.md +239 -36
  55. package/docs/pages/components/opt-group.md +107 -0
  56. package/docs/pages/components/pagination.md +332 -6
  57. package/docs/pages/components/pane.md +222 -6
  58. package/docs/pages/components/panel.md +213 -26
  59. package/docs/pages/components/popup.md +1354 -6
  60. package/docs/pages/components/priority-list.md +233 -0
  61. package/docs/pages/components/progress-bar.md +387 -6
  62. package/docs/pages/components/radio-group.md +242 -5
  63. package/docs/pages/components/radio.md +474 -6
  64. package/docs/pages/components/rating.md +331 -7
  65. package/docs/pages/components/reveal.md +524 -6
  66. package/docs/pages/components/scroll-container.md +552 -6
  67. package/docs/pages/components/select.md +762 -160
  68. package/docs/pages/components/skeleton.md +473 -30
  69. package/docs/pages/components/slideout.md +261 -5
  70. package/docs/pages/components/sp.md +99 -41
  71. package/docs/pages/components/split-button.md +347 -9
  72. package/docs/pages/components/split-pane.md +445 -6
  73. package/docs/pages/components/stat.md +549 -9
  74. package/docs/pages/components/status-indicator.md +230 -1
  75. package/docs/pages/components/stepper.md +563 -6
  76. package/docs/pages/components/tabs.md +439 -13
  77. package/docs/pages/components/textarea.md +415 -17
  78. package/docs/pages/components/tile.md +385 -26
  79. package/docs/pages/components/toggle.md +424 -6
  80. package/docs/pages/components/tooltip.md +367 -0
  81. package/docs/pages/components/translation-group.md +210 -0
  82. package/docs/pages/components/translations.md +319 -19
  83. package/docs/pages/components/vertical-stepper.md +401 -8
  84. package/docs/pages/components/well.md +300 -3
  85. package/docs/pages/getting-started/form-controls.md +162 -0
  86. package/docs/pages/index.md +116 -15
  87. package/package.json +5 -6
  88. package/scss/_global-spacing.scss +4 -0
  89. package/scss/_root.scss +2 -2
  90. package/scss/boot.scss +19 -0
  91. package/scss/shared/layout.scss +5 -0
  92. package/scss/themes/_light.scss +3 -3
  93. package/src/components/alert/alert.scss +1 -0
  94. package/src/components/animated-button/README.md +306 -0
  95. package/src/components/animated-button/animated-button.component.ts +229 -0
  96. package/src/components/animated-button/animated-button.scss +228 -0
  97. package/src/components/animated-button/animated-button.test.ts +143 -0
  98. package/src/components/animated-button/index.ts +12 -0
  99. package/src/components/button/button.component.ts +5 -0
  100. package/src/components/button-group/button-group.component.ts +25 -13
  101. package/src/components/button-group/button-group.scss +6 -0
  102. package/src/components/checkbox/checkbox.component.ts +4 -0
  103. package/src/components/checkbox/checkbox.scss +7 -4
  104. package/src/components/checkbox-group/checkbox-group.scss +7 -0
  105. package/src/components/chip/chip.component.ts +7 -2
  106. package/src/components/chip/chip.scss +16 -2
  107. package/src/components/collapsible/collapsible.component.ts +27 -20
  108. package/src/components/cols/cols.component.ts +14 -2
  109. package/src/components/cols/cols.scss +6 -12
  110. package/src/components/confirm/confirm.component.ts +7 -0
  111. package/src/components/copy-button/copy-button.component.ts +12 -11
  112. package/src/components/data-select/data-select.component.ts +215 -44
  113. package/src/components/data-select/data-select.scss +66 -6
  114. package/src/components/data-select/providers/currency-data-provider.ts +20 -6
  115. package/src/components/data-select/providers/provider.ts +1 -0
  116. package/src/components/data-select/providers/us-state-data-provider.ts +68 -0
  117. package/src/components/data-table/data-table.component.ts +81 -22
  118. package/src/components/data-table-search/data-table-search.component.ts +184 -0
  119. package/src/components/data-table-search/data-table-search.scss +17 -0
  120. package/src/components/data-table-search/data-table-search.test.ts +11 -0
  121. package/src/components/data-table-search/index.ts +12 -0
  122. package/src/components/datepicker/datepicker.component.ts +347 -13
  123. package/src/components/dialog/dialog.component.ts +1 -1
  124. package/src/components/empty-state/empty-state.scss +6 -1
  125. package/src/components/header/header.scss +3 -3
  126. package/src/components/icon/icon.component.ts +23 -1
  127. package/src/components/icon/icon.scss +23 -0
  128. package/src/components/icon-picker/brand-icons.ts +24 -0
  129. package/src/components/icon-picker/icon-picker.component.ts +407 -0
  130. package/src/components/icon-picker/icon-picker.scss +205 -0
  131. package/src/components/icon-picker/index.ts +12 -0
  132. package/src/components/icon-picker/line-icons.ts +612 -0
  133. package/src/components/icon-picker/material-icons.ts +14543 -0
  134. package/src/components/inline-edit/inline-edit.component.ts +190 -46
  135. package/src/components/inline-edit/inline-edit.scss +29 -0
  136. package/src/components/inline-edit/inline-edit.test.ts +314 -1
  137. package/src/components/input/input.component.ts +324 -5
  138. package/src/components/input/input.scss +87 -0
  139. package/src/components/input-group/input-group.component.ts +28 -7
  140. package/src/components/input-group/input-group.scss +48 -10
  141. package/src/components/item/item.component.ts +24 -3
  142. package/src/components/item/item.scss +18 -0
  143. package/src/components/key/index.ts +12 -0
  144. package/src/components/key/key.component.ts +47 -0
  145. package/src/components/key/key.scss +38 -0
  146. package/src/components/key-container/index.ts +12 -0
  147. package/src/components/key-container/key-container.component.ts +142 -0
  148. package/src/components/key-container/key-container.scss +33 -0
  149. package/src/components/menu-item/menu-item.component.ts +20 -0
  150. package/src/components/menu-item/menu-item.scss +69 -2
  151. package/src/components/navbar/navbar.component.ts +103 -11
  152. package/src/components/navbar/navbar.scss +6 -1
  153. package/src/components/opt-group/index.ts +12 -0
  154. package/src/components/opt-group/opt-group.component.ts +74 -0
  155. package/src/components/opt-group/opt-group.scss +37 -0
  156. package/src/components/opt-group/opt-group.test.ts +27 -0
  157. package/src/components/option/option.component.ts +1 -16
  158. package/src/components/option/option.scss +4 -0
  159. package/src/components/panel/panel.component.ts +10 -8
  160. package/src/components/panel/panel.scss +20 -0
  161. package/src/components/priority-list/index.ts +12 -0
  162. package/src/components/priority-list/priority-list.component.ts +611 -0
  163. package/src/components/priority-list/priority-list.scss +185 -0
  164. package/src/components/priority-list/priority-list.test.ts +139 -0
  165. package/src/components/progress-bar/progress-bar.component.ts +22 -16
  166. package/src/components/radio/radio.scss +10 -3
  167. package/src/components/select/select.component.ts +812 -72
  168. package/src/components/select/select.scss +108 -2
  169. package/src/components/select/select.test.ts +147 -2
  170. package/src/components/settings-container/settings-container.component.ts +44 -19
  171. package/src/components/settings-container/settings-container.scss +1 -1
  172. package/src/components/skeleton/skeleton.component.ts +6 -1
  173. package/src/components/slideout/slideout.scss +8 -3
  174. package/src/components/sp/sp.component.ts +3 -1
  175. package/src/components/sp/sp.scss +19 -0
  176. package/src/components/stepper/stepper.component.ts +16 -10
  177. package/src/components/textarea/textarea.scss +0 -4
  178. package/src/components/tile/tile.component.ts +12 -3
  179. package/src/components/tile/tile.scss +1 -1
  180. package/src/components/timer/timer.component.ts +15 -2
  181. package/src/components/toggle/toggle.component.ts +29 -26
  182. package/src/components/toggle/toggle.scss +13 -1
  183. package/src/components/translation-group/index.ts +12 -0
  184. package/src/components/translation-group/translation-group.component.ts +207 -0
  185. package/src/components/translation-group/translation-group.scss +8 -0
  186. package/src/components/translations/translations.component.ts +90 -44
  187. package/src/components/translations/translations.scss +4 -0
  188. package/src/components/vertical-stepper/vertical-stepper.component.ts +14 -9
  189. package/src/events/events.ts +12 -7
  190. package/src/events/zn-language-change.ts +7 -0
  191. package/src/events/zn-purchase.ts +11 -0
  192. package/src/events/zn-redirect.ts +7 -0
  193. package/src/events/zn-reorder.ts +7 -0
  194. package/src/events/zn-search-change.ts +11 -0
  195. package/src/events/zn-submit.ts +1 -1
  196. package/src/form-control.scss +4 -0
  197. package/src/internal/form-navigation.ts +510 -0
  198. package/src/internal/form.ts +6 -0
  199. package/src/zinc.ts +91 -83
@@ -1,51 +1,410 @@
1
1
  ---
2
2
  meta:
3
- title: List Tile
4
- description:
3
+ title: Tile
4
+ description: Tiles are flexible list items for displaying structured content with images, captions, descriptions, properties, and actions in a horizontal layout.
5
5
  layout: component
6
6
  ---
7
7
 
8
+ Tiles are versatile components designed for building lists of structured content. They provide a consistent, responsive layout for displaying items with associated metadata, images, properties, and actions. Tiles can be clickable links or static containers, making them ideal for user lists, product catalogs, file browsers, and more.
9
+
10
+ ```html:preview
11
+ <zn-sp divide no-gap>
12
+ <zn-tile caption="Leslie Alexander" description="leslie.alexander@example.com" href="https://google.com">
13
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
14
+ <zn-tile-property slot="properties" caption="Co-Founder / CEO">Last seen 2h ago</zn-tile-property>
15
+ </zn-tile>
16
+
17
+ <zn-tile caption="Michael Foster" description="michael.foster@example.com" href="https://google.com">
18
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=51" round></zn-icon>
19
+ <zn-tile-property slot="properties" caption="Engineering Lead">Active now</zn-tile-property>
20
+ <div slot="actions"><zn-button size="small">Contact</zn-button></div>
21
+ </zn-tile>
22
+
23
+ <zn-tile caption="Emma Davis" description="emma.davis@example.com">
24
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=47" round></zn-icon>
25
+ <zn-tile-property slot="properties" caption="Product Manager">Last seen 1d ago</zn-tile-property>
26
+ </zn-tile>
27
+ </zn-sp>
28
+ ```
29
+
30
+ ## Examples
31
+
32
+ ### Basic Tile
33
+
34
+ A basic tile displays a caption and description. Tiles automatically apply padding when they contain structured content.
35
+
36
+ ```html:preview
37
+ <zn-tile caption="Basic Tile" description="A simple tile with just caption and description"></zn-tile>
38
+ ```
39
+
40
+ ### Tile with Image
41
+
42
+ Use the `image` slot to add an image or icon to the left side of the tile. This is commonly used for avatars, logos, or file icons.
43
+
8
44
  ```html:preview
9
- <zn-tile caption="Leslie Alexander" description="Leslie.alexander@example.com" href="https://google.com">
10
- <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
11
- <zn-tile-property slot="properties" caption="Co-Founder / CEO Relations">Last seen 2h ago</zn-tile-property>
45
+ <zn-tile caption="John Smith" description="Senior Developer">
46
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=12" round></zn-icon>
12
47
  </zn-tile>
48
+ ```
49
+
50
+ ### Clickable Tiles
51
+
52
+ Add the `href` attribute to make a tile clickable. The tile will render as an anchor tag and display hover effects.
53
+
54
+ ```html:preview
55
+ <zn-sp divide no-gap>
56
+ <zn-tile caption="Dashboard" description="View your analytics dashboard" href="/dashboard">
57
+ <zn-icon slot="image" size="32" src="dashboard" round></zn-icon>
58
+ </zn-tile>
59
+
60
+ <zn-tile caption="Settings" description="Configure your preferences" href="/settings">
61
+ <zn-icon slot="image" size="32" src="settings" round></zn-icon>
62
+ </zn-tile>
63
+
64
+ <zn-tile caption="Profile" description="Manage your account" href="/profile">
65
+ <zn-icon slot="image" size="32" src="person" round></zn-icon>
66
+ </zn-tile>
67
+ </zn-sp>
68
+ ```
69
+
70
+ ### Tiles with Properties
71
+
72
+ Use the `properties` slot to display metadata on the right side of the tile. The `zn-tile-property` component provides consistent styling for property labels and values.
13
73
 
14
- <zn-tile caption="Leslie Alexander" description="Leslie.alexander@example.com" href="https://google.com">
15
- <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
16
- <div slot="actions"><zn-button href="#">Action</zn-button></div>
74
+ ```html:preview
75
+ <zn-sp divide no-gap>
76
+ <zn-tile caption="Project Alpha" description="Active development project">
77
+ <zn-icon slot="image" size="32" src="folder" color="primary"></zn-icon>
78
+ <zn-tile-property slot="properties" caption="Status">In Progress</zn-tile-property>
79
+ </zn-tile>
80
+
81
+ <zn-tile caption="Project Beta" description="Testing phase">
82
+ <zn-icon slot="image" size="32" src="folder" color="success"></zn-icon>
83
+ <zn-tile-property slot="properties" caption="Status">Completed</zn-tile-property>
84
+ </zn-tile>
85
+ </zn-sp>
86
+ ```
87
+
88
+ ### Multiple Properties
89
+
90
+ Add multiple `zn-tile-property` components to display several pieces of metadata in a horizontal layout.
91
+
92
+ ```html:preview
93
+ <zn-tile caption="Annual Report 2024.pdf" description="1.2 MB • PDF Document">
94
+ <zn-icon slot="image" size="32" src="description" color="error"></zn-icon>
95
+ <zn-tile-property slot="properties" caption="Modified">2 hours ago</zn-tile-property>
96
+ <zn-tile-property slot="properties" caption="Owner">John Smith</zn-tile-property>
97
+ <zn-tile-property slot="properties" caption="Shared">5 people</zn-tile-property>
17
98
  </zn-tile>
18
99
  ```
19
100
 
20
- ## Examples
101
+ ### Tiles with Actions
21
102
 
22
- ### List
103
+ Use the `actions` slot to add buttons or other interactive elements to the right side of the tile.
23
104
 
24
105
  ```html:preview
25
106
  <zn-sp divide no-gap>
26
- <zn-tile caption="Leslie Alexander" description="Leslie.alexander@example.com" href="https://google.com">
27
- <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
28
- <zn-tile-property slot="properties" caption="Co-Founder / CEO">
29
- Last seen 2h ago
30
- </zn-tile-property>
107
+ <zn-tile caption="Database Backup" description="Last backup: 2 hours ago">
108
+ <zn-icon slot="image" size="32" src="storage" color="info"></zn-icon>
109
+ <div slot="actions">
110
+ <zn-button size="small" color="primary">Run Now</zn-button>
111
+ </div>
31
112
  </zn-tile>
32
- <zn-tile caption="Leslie Alexander" description="Leslie.alexander@example.com" href="https://google.com">
33
- <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
34
- <zn-tile-property slot="properties" caption="Co-Founder / CEO">
35
- Last seen 2h ago
36
- </zn-tile-property>
113
+
114
+ <zn-tile caption="Email Notification" description="Receive daily summaries">
115
+ <zn-icon slot="image" size="32" src="mail" color="secondary"></zn-icon>
116
+ <div slot="actions">
117
+ <zn-button size="small" color="transparent" icon="edit" square></zn-button>
118
+ <zn-button size="small" color="transparent" icon="delete" square></zn-button>
119
+ </div>
120
+ </zn-tile>
121
+ </zn-sp>
122
+ ```
123
+
124
+ ### Properties with Actions
125
+
126
+ Combine both properties and actions for comprehensive tile layouts.
127
+
128
+ ```html:preview
129
+ <zn-sp divide no-gap>
130
+ <zn-tile caption="Sarah Johnson" description="sarah.johnson@example.com" href="mailto:sarah.johnson@example.com">
131
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=45" round></zn-icon>
132
+ <zn-tile-property slot="properties" caption="Department">Marketing</zn-tile-property>
133
+ <zn-tile-property slot="properties" caption="Role">Manager</zn-tile-property>
134
+ <div slot="actions">
135
+ <zn-button size="small">Message</zn-button>
136
+ </div>
137
+ </zn-tile>
138
+
139
+ <zn-tile caption="David Chen" description="david.chen@example.com" href="mailto:david.chen@example.com">
140
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=33" round></zn-icon>
141
+ <zn-tile-property slot="properties" caption="Department">Engineering</zn-tile-property>
142
+ <zn-tile-property slot="properties" caption="Role">Senior Dev</zn-tile-property>
143
+ <div slot="actions">
144
+ <zn-button size="small">Message</zn-button>
145
+ </div>
37
146
  </zn-tile>
38
- <zn-tile caption="Leslie Alexander" description="Leslie.alexander@example.com" href="https://google.com">
147
+ </zn-sp>
148
+ ```
149
+
150
+ ### User List
151
+
152
+ A complete example showing a team member list with avatars, roles, and status information.
153
+
154
+ ```html:preview
155
+ <zn-sp divide no-gap>
156
+ <zn-tile caption="Leslie Alexander" description="leslie.alexander@example.com" href="/users/leslie">
39
157
  <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=70" round></zn-icon>
40
- <zn-tile-property slot="properties" caption="Co-Founder / CEO">
41
- Last seen 2h ago
42
- </zn-tile-property>
158
+ <zn-tile-property slot="properties" caption="Co-Founder / CEO">Last seen 2h ago</zn-tile-property>
159
+ </zn-tile>
160
+
161
+ <zn-tile caption="Michael Foster" description="michael.foster@example.com" href="/users/michael">
162
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=51" round></zn-icon>
163
+ <zn-tile-property slot="properties" caption="Engineering Lead">Active now</zn-tile-property>
164
+ </zn-tile>
165
+
166
+ <zn-tile caption="Emma Davis" description="emma.davis@example.com" href="/users/emma">
167
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=47" round></zn-icon>
168
+ <zn-tile-property slot="properties" caption="Product Manager">Last seen 1d ago</zn-tile-property>
169
+ </zn-tile>
170
+
171
+ <zn-tile caption="James Wilson" description="james.wilson@example.com" href="/users/james">
172
+ <zn-icon slot="image" size="40" src="https://i.pravatar.cc/60?img=15" round></zn-icon>
173
+ <zn-tile-property slot="properties" caption="Design Lead">Last seen 3h ago</zn-tile-property>
174
+ </zn-tile>
175
+ </zn-sp>
176
+ ```
177
+
178
+ ### File Browser
179
+
180
+ Example showing how to use tiles for a file browser interface.
181
+
182
+ ```html:preview
183
+ <zn-sp divide no-gap>
184
+ <zn-tile caption="Documents" description="24 files" href="/files/documents">
185
+ <zn-icon slot="image" size="36" src="folder" color="primary"></zn-icon>
186
+ <zn-tile-property slot="properties" caption="Modified">Today</zn-tile-property>
187
+ </zn-tile>
188
+
189
+ <zn-tile caption="Images" description="156 files" href="/files/images">
190
+ <zn-icon slot="image" size="36" src="folder" color="warning"></zn-icon>
191
+ <zn-tile-property slot="properties" caption="Modified">Yesterday</zn-tile-property>
192
+ </zn-tile>
193
+
194
+ <zn-tile caption="Presentation.pptx" description="4.2 MB • PowerPoint">
195
+ <zn-icon slot="image" size="36" src="description" color="error"></zn-icon>
196
+ <zn-tile-property slot="properties" caption="Modified">2 days ago</zn-tile-property>
197
+ <div slot="actions">
198
+ <zn-button size="small" color="transparent" icon="download" square></zn-button>
199
+ <zn-button size="small" color="transparent" icon="more_vert" square></zn-button>
200
+ </div>
201
+ </zn-tile>
202
+
203
+ <zn-tile caption="Budget-2024.xlsx" description="1.8 MB • Excel">
204
+ <zn-icon slot="image" size="36" src="description" color="success"></zn-icon>
205
+ <zn-tile-property slot="properties" caption="Modified">Last week</zn-tile-property>
206
+ <div slot="actions">
207
+ <zn-button size="small" color="transparent" icon="download" square></zn-button>
208
+ <zn-button size="small" color="transparent" icon="more_vert" square></zn-button>
209
+ </div>
43
210
  </zn-tile>
44
211
  </zn-sp>
45
212
  ```
46
213
 
47
- ### Second Example
214
+ ### Inline Layout
215
+
216
+ Use the `inline` attribute to display the caption and description on the same line, separated by a small gap.
217
+
218
+ ```html:preview
219
+ <zn-sp divide no-gap>
220
+ <zn-tile caption="Status:" description="Active" inline>
221
+ <zn-icon slot="image" size="32" src="check_circle" color="success"></zn-icon>
222
+ </zn-tile>
223
+
224
+ <zn-tile caption="Last Login:" description="2024-01-23 10:30 AM" inline>
225
+ <zn-icon slot="image" size="32" src="schedule" color="info"></zn-icon>
226
+ </zn-tile>
227
+
228
+ <zn-tile caption="Location:" description="San Francisco, CA" inline>
229
+ <zn-icon slot="image" size="32" src="location_on" color="error"></zn-icon>
230
+ </zn-tile>
231
+ </zn-sp>
232
+ ```
233
+
234
+ ### Flush Tiles
235
+
236
+ The `flush` attribute removes all padding from the tile, while `flush-x` and `flush-y` remove horizontal and vertical padding respectively.
237
+
238
+ ```html:preview
239
+ <zn-sp divide no-gap>
240
+ <zn-tile caption="Flush Tile" description="No padding at all" flush>
241
+ <zn-icon slot="image" size="32" src="info"></zn-icon>
242
+ </zn-tile>
243
+
244
+ <zn-tile caption="Flush X Tile" description="No horizontal padding" flush-x>
245
+ <zn-icon slot="image" size="32" src="info"></zn-icon>
246
+ </zn-tile>
247
+
248
+ <zn-tile caption="Flush Y Tile" description="No vertical padding" flush-y>
249
+ <zn-icon slot="image" size="32" src="info"></zn-icon>
250
+ </zn-tile>
251
+ </zn-sp>
252
+ ```
253
+
254
+ ### Product Catalog
255
+
256
+ Example showing tiles used for a product catalog with images and pricing.
257
+
258
+ ```html:preview
259
+ <zn-sp divide no-gap>
260
+ <zn-tile caption="Wireless Headphones" description="Premium noise-canceling headphones" href="/products/headphones">
261
+ <zn-icon slot="image" size="48" src="headphones" color="primary"></zn-icon>
262
+ <zn-tile-property slot="properties" caption="Price">$299</zn-tile-property>
263
+ <zn-tile-property slot="properties" caption="Stock">In Stock</zn-tile-property>
264
+ <div slot="actions">
265
+ <zn-button size="small" color="primary">Add to Cart</zn-button>
266
+ </div>
267
+ </zn-tile>
268
+
269
+ <zn-tile caption="Smart Watch" description="Fitness tracking and notifications" href="/products/watch">
270
+ <zn-icon slot="image" size="48" src="watch" color="info"></zn-icon>
271
+ <zn-tile-property slot="properties" caption="Price">$399</zn-tile-property>
272
+ <zn-tile-property slot="properties" caption="Stock">Low Stock</zn-tile-property>
273
+ <div slot="actions">
274
+ <zn-button size="small" color="primary">Add to Cart</zn-button>
275
+ </div>
276
+ </zn-tile>
277
+
278
+ <zn-tile caption="Laptop Stand" description="Ergonomic aluminum design" href="/products/stand">
279
+ <zn-icon slot="image" size="48" src="computer" color="secondary"></zn-icon>
280
+ <zn-tile-property slot="properties" caption="Price">$79</zn-tile-property>
281
+ <zn-tile-property slot="properties" caption="Stock">In Stock</zn-tile-property>
282
+ <div slot="actions">
283
+ <zn-button size="small" color="primary">Add to Cart</zn-button>
284
+ </div>
285
+ </zn-tile>
286
+ </zn-sp>
287
+ ```
288
+
289
+ ### Custom Slot Content
290
+
291
+ Use the default slot for completely custom tile content when you don't need the structured layout.
292
+
293
+ ```html:preview
294
+ <zn-tile>
295
+ <div style="padding: 20px; display: flex; justify-content: space-between; align-items: center; width: 100%;">
296
+ <div>
297
+ <h3 style="margin: 0 0 5px 0;">Custom Content</h3>
298
+ <p style="margin: 0; color: rgb(var(--zn-text-color));">You can put anything in the default slot</p>
299
+ </div>
300
+ <zn-chip type="success">Active</zn-chip>
301
+ </div>
302
+ </zn-tile>
303
+ ```
304
+
305
+ ### Data URI Links
306
+
307
+ Use the `data-uri` attribute instead of `href` for internal navigation or custom click handling. Combine with `data-target` and `gaid` for tracking and analytics.
308
+
309
+ ```html:preview
310
+ <zn-sp divide no-gap>
311
+ <zn-tile
312
+ caption="Navigate to Dashboard"
313
+ description="Uses data-uri for custom routing"
314
+ data-uri="/dashboard"
315
+ data-target="main-content"
316
+ gaid="tile-dashboard-click">
317
+ <zn-icon slot="image" size="32" src="dashboard"></zn-icon>
318
+ </zn-tile>
319
+
320
+ <zn-tile
321
+ caption="View Reports"
322
+ description="Custom navigation handling"
323
+ data-uri="/reports"
324
+ gaid="tile-reports-click">
325
+ <zn-icon slot="image" size="32" src="assessment"></zn-icon>
326
+ </zn-tile>
327
+ </zn-sp>
328
+ ```
329
+
330
+ ## Usage Notes
331
+
332
+ ### Responsive Behavior
333
+
334
+ Tiles are responsive and adapt to different screen sizes. On smaller screens (below `md` breakpoint):
335
+ - Properties in the `properties` slot are hidden automatically
336
+ - The tile maintains its core caption, description, and actions
337
+ - This ensures tiles remain functional on mobile devices
338
+
339
+ ### Layout Structure
340
+
341
+ When using structured content (caption, description, properties, or actions), the tile automatically:
342
+ - Applies padding (`var(--zn-spacing-large)`)
343
+ - Creates a horizontal layout with left and right sections
344
+ - The left section contains the image and content (max-width: 400px on desktop, 320px on tablet)
345
+ - The right section contains properties and actions (50% width, grows to fill space)
346
+
347
+ ### Hover Effects
348
+
349
+ When a tile has an `href` or `data-uri` attribute:
350
+ - The cursor changes to pointer
351
+ - On hover, the background changes to `var(--zn-color-neutral-100)`
352
+ - The entire tile area becomes clickable
353
+
354
+ ### Slot Behavior
355
+
356
+ The tile uses different rendering logic based on slot usage:
357
+ - If only the default slot is used, it renders the slot content directly
358
+ - If any named slots (caption, description, properties, actions, image) are used, it switches to structured layout mode
359
+ - The caption can be provided via attribute or via the `caption` slot
360
+
361
+ ### Content Overflow
362
+
363
+ Text content in tiles uses ellipsis overflow handling:
364
+ - Captions and descriptions are truncated with ellipsis if too long
365
+ - Properties have a max-width of 150px and use ellipsis overflow
366
+ - The properties container has horizontal scrolling on overflow
367
+
368
+ ## Tile Property Component
369
+
370
+ The `zn-tile-property` component is designed to work within the `properties` slot of tiles. It provides consistent formatting for metadata.
371
+
372
+ ### Properties
373
+
374
+ - `caption` - The label for the property (e.g., "Status", "Modified", "Owner")
375
+ - `description` - Optional description text (can also use default slot)
376
+ - `icon` - Optional icon to display next to the property
377
+
378
+ ### Example
379
+
380
+ ```html:preview
381
+ <zn-tile caption="Project Status" description="Current project information">
382
+ <zn-icon slot="image" size="32" src="folder"></zn-icon>
383
+ <zn-tile-property slot="properties" caption="Status" icon="check_circle">Active</zn-tile-property>
384
+ <zn-tile-property slot="properties" caption="Priority" icon="flag">High</zn-tile-property>
385
+ <zn-tile-property slot="properties" caption="Due Date">Jan 30, 2024</zn-tile-property>
386
+ </zn-tile>
387
+ ```
388
+
389
+ ## CSS Parts
390
+
391
+ The following CSS parts are available for styling:
392
+
393
+ - `caption` - The tile caption text
394
+ - `description` - The tile description text
395
+ - `image` - The image slot container
396
+ - `properties` - The properties slot container
397
+ - `actions` - The actions slot container
48
398
 
49
- TODO
399
+ ## CSS Custom Properties
50
400
 
401
+ Tiles use the following CSS custom properties from the Zinc design system:
51
402
 
403
+ - `--zn-spacing-large` - Padding around tile content
404
+ - `--zn-spacing-medium` - Gap between image and content
405
+ - `--zn-spacing-small` - Gap between action buttons
406
+ - `--zn-spacing-2x-small` - Margin above description text
407
+ - `--zn-color-neutral-100` - Hover background color
408
+ - `--zn-text-heading` - Caption text color
409
+ - `--zn-text-color` - Description text color
410
+ - `--zn-font-size-medium` - Description font size