@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,593 @@
1
+ /**
2
+ * @tekton-ui/core - Advanced Section Pattern Token Definitions
3
+ * HIGH Priority Advanced Layout Patterns for SPEC-LAYOUT-005
4
+ *
5
+ * Implements 4 advanced section patterns:
6
+ * 1. section.masonry - Pinterest-style waterfall grid
7
+ * 2. section.sticky-header - Header that sticks to viewport top
8
+ * 3. section.sticky-footer - Footer that sticks to viewport bottom
9
+ * 4. section.collapsible-sidebar - Sidebar with expand/collapse toggle
10
+ *
11
+ * [SPEC-LAYOUT-005] [PHASE-1]
12
+ */
13
+ // ============================================================================
14
+ // Masonry Pattern Token
15
+ // ============================================================================
16
+ /**
17
+ * Pinterest-style waterfall grid layout using CSS columns
18
+ *
19
+ * Uses CSS multi-column layout for broad browser support (IE10+).
20
+ * Items flow vertically within columns, creating the classic masonry effect.
21
+ *
22
+ * Responsive behavior:
23
+ * - default (mobile): 2 columns
24
+ * - sm: 2 columns
25
+ * - md: 3 columns
26
+ * - lg: 4 columns
27
+ * - xl: 5 columns
28
+ * - 2xl: 6 columns
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * // React usage
33
+ * <div style={{ ...getMasonryStyles(breakpoint) }}>
34
+ * {items.map(item => (
35
+ * <div key={item.id} style={{ breakInside: 'avoid' }}>
36
+ * {item.content}
37
+ * </div>
38
+ * ))}
39
+ * </div>
40
+ * ```
41
+ */
42
+ export const SECTION_MASONRY = {
43
+ id: 'section.masonry',
44
+ type: 'masonry',
45
+ description: 'Pinterest-style waterfall grid using CSS columns for broad browser support',
46
+ css: {
47
+ display: 'grid', // Fallback for CSS columns
48
+ columnCount: '4',
49
+ columnGap: 'atomic.spacing.4',
50
+ breakInside: 'avoid',
51
+ columnFill: 'balance',
52
+ },
53
+ responsive: {
54
+ default: {
55
+ display: 'grid',
56
+ columnCount: '2',
57
+ columnGap: 'atomic.spacing.2',
58
+ breakInside: 'avoid',
59
+ columnFill: 'auto',
60
+ },
61
+ sm: {
62
+ columnCount: '2',
63
+ columnGap: 'atomic.spacing.3',
64
+ },
65
+ md: {
66
+ columnCount: '3',
67
+ columnGap: 'atomic.spacing.4',
68
+ },
69
+ lg: {
70
+ columnCount: '4',
71
+ columnGap: 'atomic.spacing.4',
72
+ },
73
+ xl: {
74
+ columnCount: '5',
75
+ columnGap: 'atomic.spacing.5',
76
+ },
77
+ '2xl': {
78
+ columnCount: '6',
79
+ columnGap: 'atomic.spacing.6',
80
+ },
81
+ },
82
+ tokenBindings: {
83
+ gap: 'atomic.spacing.4',
84
+ columnGap: 'atomic.spacing.4',
85
+ itemBackground: 'semantic.background.surface',
86
+ itemBorderRadius: 'atomic.radius.md',
87
+ itemShadow: 'atomic.shadow.sm',
88
+ columns: 'responsive',
89
+ },
90
+ };
91
+ // ============================================================================
92
+ // Sticky Header Pattern Token
93
+ // ============================================================================
94
+ /**
95
+ * Header that sticks to the viewport top during scroll
96
+ *
97
+ * Uses CSS `position: sticky` for native scroll-aware behavior.
98
+ * Includes shadow and z-index for proper layering when stuck.
99
+ *
100
+ * Features:
101
+ * - Sticks to top of viewport (top: 0)
102
+ * - High z-index (100) to stay above content
103
+ * - Optional shadow when stuck for visual separation
104
+ * - Full-width with transparent background option
105
+ *
106
+ * Responsive behavior:
107
+ * - Consistent sticky behavior across all breakpoints
108
+ * - Padding adjusts for different screen sizes
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // React usage with intersection observer for stuck state
113
+ * const [isStuck, setIsStuck] = useState(false);
114
+ *
115
+ * <header style={{
116
+ * position: 'sticky',
117
+ * top: 0,
118
+ * zIndex: 100,
119
+ * boxShadow: isStuck ? 'var(--shadow-md)' : 'none'
120
+ * }}>
121
+ * {children}
122
+ * </header>
123
+ * ```
124
+ */
125
+ export const SECTION_STICKY_HEADER = {
126
+ id: 'section.sticky-header',
127
+ type: 'sticky',
128
+ description: 'Header that sticks to viewport top during scroll with shadow when stuck',
129
+ css: {
130
+ display: 'flex',
131
+ flexDirection: 'row',
132
+ alignItems: 'center',
133
+ justifyContent: 'space-between',
134
+ position: 'sticky',
135
+ top: 'atomic.spacing.0',
136
+ zIndex: 100,
137
+ padding: 'atomic.spacing.4',
138
+ backgroundColor: 'semantic.background.surface',
139
+ boxShadow: 'atomic.shadow.none',
140
+ },
141
+ responsive: {
142
+ default: {
143
+ display: 'flex',
144
+ flexDirection: 'row',
145
+ alignItems: 'center',
146
+ justifyContent: 'space-between',
147
+ position: 'sticky',
148
+ top: 'atomic.spacing.0',
149
+ zIndex: 100,
150
+ padding: 'atomic.spacing.3',
151
+ backgroundColor: 'semantic.background.surface',
152
+ },
153
+ sm: {
154
+ padding: 'atomic.spacing.3',
155
+ },
156
+ md: {
157
+ padding: 'atomic.spacing.4',
158
+ },
159
+ lg: {
160
+ padding: 'atomic.spacing.4',
161
+ },
162
+ xl: {
163
+ padding: 'atomic.spacing.5',
164
+ },
165
+ '2xl': {
166
+ padding: 'atomic.spacing.6',
167
+ },
168
+ },
169
+ states: {
170
+ default: {
171
+ boxShadow: 'atomic.shadow.none',
172
+ },
173
+ stuck: {
174
+ boxShadow: 'atomic.shadow.md',
175
+ backgroundColor: 'semantic.background.surface',
176
+ },
177
+ },
178
+ tokenBindings: {
179
+ position: 'sticky',
180
+ top: 'atomic.spacing.0',
181
+ zIndex: '100',
182
+ padding: 'atomic.spacing.4',
183
+ background: 'semantic.background.surface',
184
+ shadowDefault: 'atomic.shadow.none',
185
+ shadowStuck: 'atomic.shadow.md',
186
+ borderBottom: 'semantic.border.default',
187
+ },
188
+ };
189
+ // ============================================================================
190
+ // Sticky Footer Pattern Token
191
+ // ============================================================================
192
+ /**
193
+ * Footer that sticks to the viewport bottom during scroll
194
+ *
195
+ * Uses CSS `position: sticky` with `bottom: 0` for bottom-stuck behavior.
196
+ * Ideal for action bars, navigation bars, or persistent CTAs.
197
+ *
198
+ * Features:
199
+ * - Sticks to bottom of viewport (bottom: 0)
200
+ * - High z-index (100) to stay above content
201
+ * - Top shadow for visual separation from content
202
+ * - Safe area padding support for mobile devices
203
+ *
204
+ * Responsive behavior:
205
+ * - Consistent sticky behavior across all breakpoints
206
+ * - Padding adjusts for different screen sizes
207
+ * - Mobile: considers safe area for home indicator
208
+ *
209
+ * @example
210
+ * ```tsx
211
+ * // React usage for action bar
212
+ * <footer style={{
213
+ * position: 'sticky',
214
+ * bottom: 0,
215
+ * zIndex: 100,
216
+ * paddingBottom: 'env(safe-area-inset-bottom)'
217
+ * }}>
218
+ * <Button>Save</Button>
219
+ * <Button>Cancel</Button>
220
+ * </footer>
221
+ * ```
222
+ */
223
+ export const SECTION_STICKY_FOOTER = {
224
+ id: 'section.sticky-footer',
225
+ type: 'sticky',
226
+ description: 'Footer that sticks to viewport bottom with top shadow',
227
+ css: {
228
+ display: 'flex',
229
+ flexDirection: 'row',
230
+ alignItems: 'center',
231
+ justifyContent: 'center',
232
+ gap: 'atomic.spacing.4',
233
+ position: 'sticky',
234
+ bottom: 'atomic.spacing.0',
235
+ zIndex: 100,
236
+ padding: 'atomic.spacing.4',
237
+ backgroundColor: 'semantic.background.surface',
238
+ boxShadow: 'atomic.shadow.lg',
239
+ },
240
+ responsive: {
241
+ default: {
242
+ display: 'flex',
243
+ flexDirection: 'row',
244
+ alignItems: 'center',
245
+ justifyContent: 'center',
246
+ gap: 'atomic.spacing.2',
247
+ position: 'sticky',
248
+ bottom: 'atomic.spacing.0',
249
+ zIndex: 100,
250
+ padding: 'atomic.spacing.3',
251
+ backgroundColor: 'semantic.background.surface',
252
+ boxShadow: 'atomic.shadow.md',
253
+ },
254
+ sm: {
255
+ padding: 'atomic.spacing.3',
256
+ gap: 'atomic.spacing.3',
257
+ },
258
+ md: {
259
+ padding: 'atomic.spacing.4',
260
+ gap: 'atomic.spacing.4',
261
+ boxShadow: 'atomic.shadow.lg',
262
+ },
263
+ lg: {
264
+ padding: 'atomic.spacing.4',
265
+ },
266
+ xl: {
267
+ padding: 'atomic.spacing.5',
268
+ },
269
+ '2xl': {
270
+ padding: 'atomic.spacing.6',
271
+ },
272
+ },
273
+ states: {
274
+ default: {
275
+ boxShadow: 'atomic.shadow.lg',
276
+ },
277
+ stuck: {
278
+ boxShadow: 'atomic.shadow.xl',
279
+ },
280
+ },
281
+ tokenBindings: {
282
+ position: 'sticky',
283
+ bottom: 'atomic.spacing.0',
284
+ zIndex: '100',
285
+ padding: 'atomic.spacing.4',
286
+ gap: 'atomic.spacing.4',
287
+ background: 'semantic.background.surface',
288
+ shadowDefault: 'atomic.shadow.lg',
289
+ borderTop: 'semantic.border.default',
290
+ safeAreaBottom: 'atomic.spacing.0', // Override with env(safe-area-inset-bottom) on mobile
291
+ },
292
+ };
293
+ // ============================================================================
294
+ // Collapsible Sidebar Pattern Token
295
+ // ============================================================================
296
+ /**
297
+ * Sidebar with expand/collapse toggle capability
298
+ *
299
+ * Provides a collapsible navigation sidebar with smooth CSS transitions.
300
+ * Supports both icon-only collapsed state and full-width expanded state.
301
+ *
302
+ * Features:
303
+ * - Expanded width: 256px (atomic.spacing.64)
304
+ * - Collapsed width: 64px (atomic.spacing.16)
305
+ * - Smooth 200ms transition animation
306
+ * - Icon-only mode when collapsed
307
+ * - Full content when expanded
308
+ *
309
+ * Responsive behavior:
310
+ * - default/sm: Hidden by default (overlay mode recommended)
311
+ * - md: Collapsed by default
312
+ * - lg+: Expanded by default
313
+ *
314
+ * @example
315
+ * ```tsx
316
+ * // React usage with state management
317
+ * const [isCollapsed, setIsCollapsed] = useState(false);
318
+ *
319
+ * <aside style={{
320
+ * width: isCollapsed ? '64px' : '256px',
321
+ * transition: 'width 200ms ease-in-out',
322
+ * overflow: 'hidden'
323
+ * }}>
324
+ * <button onClick={() => setIsCollapsed(!isCollapsed)}>
325
+ * {isCollapsed ? <ChevronRight /> : <ChevronLeft />}
326
+ * </button>
327
+ * <nav>
328
+ * {menuItems.map(item => (
329
+ * <MenuItem
330
+ * key={item.id}
331
+ * icon={item.icon}
332
+ * label={isCollapsed ? '' : item.label}
333
+ * />
334
+ * ))}
335
+ * </nav>
336
+ * </aside>
337
+ * ```
338
+ */
339
+ export const SECTION_COLLAPSIBLE_SIDEBAR = {
340
+ id: 'section.collapsible-sidebar',
341
+ type: 'collapsible',
342
+ description: 'Sidebar with expand/collapse toggle capability and smooth transitions',
343
+ css: {
344
+ display: 'flex',
345
+ flexDirection: 'column',
346
+ width: 'atomic.spacing.64', // 256px expanded
347
+ minWidth: 'atomic.spacing.16', // 64px collapsed
348
+ transition: 'width 200ms ease-in-out',
349
+ overflow: 'hidden',
350
+ willChange: 'width',
351
+ padding: 'atomic.spacing.4',
352
+ },
353
+ responsive: {
354
+ default: {
355
+ display: 'flex',
356
+ flexDirection: 'column',
357
+ width: 'atomic.spacing.0', // Hidden on mobile (use overlay)
358
+ minWidth: 'atomic.spacing.0',
359
+ transition: 'width 200ms ease-in-out, transform 200ms ease-in-out',
360
+ overflow: 'hidden',
361
+ padding: 'atomic.spacing.0',
362
+ },
363
+ sm: {
364
+ width: 'atomic.spacing.0', // Hidden on small screens
365
+ padding: 'atomic.spacing.0',
366
+ },
367
+ md: {
368
+ width: 'atomic.spacing.16', // 64px collapsed on tablet
369
+ minWidth: 'atomic.spacing.16',
370
+ padding: 'atomic.spacing.2',
371
+ },
372
+ lg: {
373
+ width: 'atomic.spacing.64', // 256px expanded on desktop
374
+ minWidth: 'atomic.spacing.16',
375
+ padding: 'atomic.spacing.4',
376
+ },
377
+ xl: {
378
+ width: 'atomic.spacing.64',
379
+ padding: 'atomic.spacing.4',
380
+ },
381
+ '2xl': {
382
+ width: 'atomic.spacing.80', // 320px expanded on large screens
383
+ padding: 'atomic.spacing.5',
384
+ },
385
+ },
386
+ states: {
387
+ default: {
388
+ width: 'atomic.spacing.64',
389
+ overflow: 'hidden',
390
+ },
391
+ collapsed: {
392
+ width: 'atomic.spacing.16',
393
+ minWidth: 'atomic.spacing.16',
394
+ overflow: 'hidden',
395
+ },
396
+ },
397
+ tokenBindings: {
398
+ expandedWidth: 'atomic.spacing.64', // 256px
399
+ collapsedWidth: 'atomic.spacing.16', // 64px
400
+ transitionDuration: '200ms',
401
+ transitionEasing: 'ease-in-out',
402
+ padding: 'atomic.spacing.4',
403
+ background: 'semantic.background.surface',
404
+ borderRight: 'semantic.border.default',
405
+ iconSize: 'atomic.spacing.6', // 24px icons
406
+ itemGap: 'atomic.spacing.2',
407
+ itemPadding: 'atomic.spacing.3',
408
+ itemBorderRadius: 'atomic.radius.md',
409
+ itemHoverBackground: 'semantic.background.muted',
410
+ itemActiveBackground: 'semantic.foreground.accent',
411
+ },
412
+ };
413
+ // ============================================================================
414
+ // Internal Token Map
415
+ // ============================================================================
416
+ /**
417
+ * Internal map for quick advanced section pattern token lookups by ID
418
+ * Used by getAdvancedSectionPatternToken() for O(1) access
419
+ */
420
+ const ADVANCED_SECTION_PATTERN_TOKENS_MAP = {
421
+ 'section.masonry': SECTION_MASONRY,
422
+ 'section.sticky-header': SECTION_STICKY_HEADER,
423
+ 'section.sticky-footer': SECTION_STICKY_FOOTER,
424
+ 'section.collapsible-sidebar': SECTION_COLLAPSIBLE_SIDEBAR,
425
+ };
426
+ // ============================================================================
427
+ // Utility Functions
428
+ // ============================================================================
429
+ /**
430
+ * Get an advanced section pattern token by its ID
431
+ *
432
+ * @param patternId - Advanced section pattern token ID (e.g., "section.masonry")
433
+ * @returns AdvancedSectionPatternToken if found, undefined otherwise
434
+ *
435
+ * @example
436
+ * ```typescript
437
+ * const masonry = getAdvancedSectionPatternToken('section.masonry');
438
+ * if (masonry) {
439
+ * console.log(masonry.description);
440
+ * // "Pinterest-style waterfall grid using CSS columns for broad browser support"
441
+ * }
442
+ * ```
443
+ */
444
+ export function getAdvancedSectionPatternToken(patternId) {
445
+ return ADVANCED_SECTION_PATTERN_TOKENS_MAP[patternId];
446
+ }
447
+ /**
448
+ * Get all available advanced section pattern tokens
449
+ *
450
+ * @returns Array of all AdvancedSectionPatternTokens
451
+ *
452
+ * @example
453
+ * ```typescript
454
+ * const allAdvanced = getAllAdvancedSectionPatternTokens();
455
+ * console.log(`Available advanced sections: ${allAdvanced.length}`);
456
+ * // "Available advanced sections: 4"
457
+ *
458
+ * allAdvanced.forEach(token => {
459
+ * console.log(`${token.id}: ${token.type}`);
460
+ * });
461
+ * ```
462
+ */
463
+ export function getAllAdvancedSectionPatternTokens() {
464
+ return Object.values(ADVANCED_SECTION_PATTERN_TOKENS_MAP);
465
+ }
466
+ /**
467
+ * Get advanced section pattern tokens filtered by type
468
+ *
469
+ * @param type - Section type ('masonry', 'sticky', or 'collapsible')
470
+ * @returns Array of AdvancedSectionPatternTokens with the specified type
471
+ *
472
+ * @example
473
+ * ```typescript
474
+ * const stickyTokens = getAdvancedSectionsByType('sticky');
475
+ * console.log(`Sticky sections: ${stickyTokens.length}`);
476
+ * // "Sticky sections: 2" (header and footer)
477
+ * ```
478
+ */
479
+ export function getAdvancedSectionsByType(type) {
480
+ return getAllAdvancedSectionPatternTokens().filter(section => section.type === type);
481
+ }
482
+ /**
483
+ * Get CSS properties for an advanced section pattern at a specific breakpoint
484
+ *
485
+ * @param patternId - Advanced section pattern token ID
486
+ * @param breakpoint - Breakpoint key ('default', 'sm', 'md', 'lg', 'xl', '2xl')
487
+ * @returns CSS properties for the specified breakpoint, or undefined if not found
488
+ *
489
+ * @example
490
+ * ```typescript
491
+ * const masonryMd = getAdvancedSectionCSS('section.masonry', 'md');
492
+ * if (masonryMd) {
493
+ * console.log(`Columns at md: ${masonryMd.columnCount}`);
494
+ * // "Columns at md: 3"
495
+ * }
496
+ * ```
497
+ */
498
+ export function getAdvancedSectionCSS(patternId, breakpoint = 'default') {
499
+ const pattern = getAdvancedSectionPatternToken(patternId);
500
+ if (!pattern) {
501
+ return undefined;
502
+ }
503
+ if (breakpoint === 'default') {
504
+ return pattern.responsive.default;
505
+ }
506
+ // Merge default with breakpoint-specific overrides
507
+ const defaultCSS = pattern.responsive.default;
508
+ const breakpointCSS = pattern.responsive[breakpoint];
509
+ if (!breakpointCSS) {
510
+ return defaultCSS;
511
+ }
512
+ return {
513
+ ...defaultCSS,
514
+ ...breakpointCSS,
515
+ };
516
+ }
517
+ /**
518
+ * Get state-specific CSS for collapsible or sticky patterns
519
+ *
520
+ * @param patternId - Advanced section pattern token ID
521
+ * @param state - State name ('default', 'collapsed', 'stuck')
522
+ * @returns CSS properties for the specified state, or undefined if not found
523
+ *
524
+ * @example
525
+ * ```typescript
526
+ * const collapsedCSS = getAdvancedSectionStateCSS('section.collapsible-sidebar', 'collapsed');
527
+ * if (collapsedCSS) {
528
+ * console.log(`Collapsed width: ${collapsedCSS.width}`);
529
+ * // "Collapsed width: atomic.spacing.16"
530
+ * }
531
+ *
532
+ * const stuckCSS = getAdvancedSectionStateCSS('section.sticky-header', 'stuck');
533
+ * if (stuckCSS) {
534
+ * console.log(`Shadow when stuck: ${stuckCSS.boxShadow}`);
535
+ * // "Shadow when stuck: atomic.shadow.md"
536
+ * }
537
+ * ```
538
+ */
539
+ export function getAdvancedSectionStateCSS(patternId, state) {
540
+ const pattern = getAdvancedSectionPatternToken(patternId);
541
+ if (!pattern?.states) {
542
+ return undefined;
543
+ }
544
+ return pattern.states[state];
545
+ }
546
+ /**
547
+ * Check if a pattern ID is an advanced section pattern
548
+ *
549
+ * @param patternId - Pattern ID to check
550
+ * @returns true if the pattern is an advanced section pattern
551
+ *
552
+ * @example
553
+ * ```typescript
554
+ * isAdvancedSectionPattern('section.masonry'); // true
555
+ * isAdvancedSectionPattern('section.grid-3'); // false
556
+ * ```
557
+ */
558
+ export function isAdvancedSectionPattern(patternId) {
559
+ return patternId in ADVANCED_SECTION_PATTERN_TOKENS_MAP;
560
+ }
561
+ /**
562
+ * Get all advanced section pattern IDs
563
+ *
564
+ * @returns Array of all advanced section pattern IDs
565
+ *
566
+ * @example
567
+ * ```typescript
568
+ * const ids = getAdvancedSectionPatternIds();
569
+ * // ['section.masonry', 'section.sticky-header', 'section.sticky-footer', 'section.collapsible-sidebar']
570
+ * ```
571
+ */
572
+ export function getAdvancedSectionPatternIds() {
573
+ return Object.keys(ADVANCED_SECTION_PATTERN_TOKENS_MAP);
574
+ }
575
+ /**
576
+ * Combine base section patterns with advanced section patterns
577
+ * Useful for getting a complete list of all available section patterns
578
+ *
579
+ * @param baseSections - Array of base SectionPatternTokens from sections.ts
580
+ * @returns Combined array of all section pattern tokens
581
+ *
582
+ * @example
583
+ * ```typescript
584
+ * import { getAllSectionPatternTokens } from './sections.js';
585
+ *
586
+ * const allSections = combineWithBaseSections(getAllSectionPatternTokens());
587
+ * console.log(`Total sections: ${allSections.length}`);
588
+ * ```
589
+ */
590
+ export function combineWithBaseSections(baseSections) {
591
+ return [...baseSections, ...getAllAdvancedSectionPatternTokens()];
592
+ }
593
+ //# sourceMappingURL=sections-advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-advanced.js","sourceRoot":"","sources":["../../src/layout-tokens/sections-advanced.ts"],"names":[],"mappings":"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"}