@sylix/coworker 2.0.11 → 2.0.12

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 (169) hide show
  1. package/dist/commands/slash/config.d.ts.map +1 -1
  2. package/dist/commands/slash/config.js +22 -4
  3. package/dist/commands/slash/config.js.map +1 -1
  4. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  5. package/dist/core/CoWorkerAgent.js +6 -3
  6. package/dist/core/CoWorkerAgent.js.map +1 -1
  7. package/dist/skills/defaults/accessibility/screen-reader-testing.md +545 -0
  8. package/dist/skills/defaults/accessibility/wcag-audit-patterns.md +555 -0
  9. package/dist/skills/defaults/ai-ml/rag.md +276 -0
  10. package/dist/skills/defaults/backend-development/api-design-principles.md +528 -0
  11. package/dist/skills/defaults/backend-development/api-design.md +285 -0
  12. package/dist/skills/defaults/backend-development/architecture-patterns.md +494 -0
  13. package/dist/skills/defaults/backend-development/async-python.md +237 -0
  14. package/dist/skills/defaults/backend-development/auth-implementation-patterns.md +638 -0
  15. package/dist/skills/defaults/backend-development/bazel-build-optimization.md +387 -0
  16. package/dist/skills/defaults/backend-development/billing-automation/SKILL.md +566 -0
  17. package/dist/skills/defaults/backend-development/code-review-excellence.md +538 -0
  18. package/dist/skills/defaults/backend-development/cqrs-implementation.md +554 -0
  19. package/dist/skills/defaults/backend-development/database-design.md +305 -0
  20. package/dist/skills/defaults/backend-development/debugging-strategies.md +536 -0
  21. package/dist/skills/defaults/backend-development/e2e-testing-patterns.md +544 -0
  22. package/dist/skills/defaults/backend-development/error-handling-patterns.md +641 -0
  23. package/dist/skills/defaults/backend-development/fastapi-templates.md +559 -0
  24. package/dist/skills/defaults/backend-development/fastapi.md +309 -0
  25. package/dist/skills/defaults/backend-development/git-advanced-workflows.md +405 -0
  26. package/dist/skills/defaults/backend-development/microservices-patterns.md +595 -0
  27. package/dist/skills/defaults/backend-development/microservices.md +284 -0
  28. package/dist/skills/defaults/backend-development/monorepo-management.md +623 -0
  29. package/dist/skills/defaults/backend-development/nodejs-backend-patterns.md +1048 -0
  30. package/dist/skills/defaults/backend-development/nx-workspace-patterns.md +457 -0
  31. package/dist/skills/defaults/backend-development/paypal-integration/SKILL.md +478 -0
  32. package/dist/skills/defaults/backend-development/pci-compliance/SKILL.md +480 -0
  33. package/dist/skills/defaults/backend-development/python-anti-patterns.md +349 -0
  34. package/dist/skills/defaults/backend-development/python-background-jobs.md +364 -0
  35. package/dist/skills/defaults/backend-development/python-code-style.md +360 -0
  36. package/dist/skills/defaults/backend-development/python-configuration.md +368 -0
  37. package/dist/skills/defaults/backend-development/python-design-patterns.md +296 -0
  38. package/dist/skills/defaults/backend-development/python-error-handling.md +323 -0
  39. package/dist/skills/defaults/backend-development/python-packaging.md +887 -0
  40. package/dist/skills/defaults/backend-development/python-performance-optimization.md +874 -0
  41. package/dist/skills/defaults/backend-development/python-project-structure.md +252 -0
  42. package/dist/skills/defaults/backend-development/python-resilience.md +376 -0
  43. package/dist/skills/defaults/backend-development/python-resource-management.md +421 -0
  44. package/dist/skills/defaults/backend-development/python-type-safety.md +428 -0
  45. package/dist/skills/defaults/backend-development/sql-optimization-patterns.md +509 -0
  46. package/dist/skills/defaults/backend-development/stripe-integration/SKILL.md +522 -0
  47. package/dist/skills/defaults/backend-development/turborepo-caching.md +376 -0
  48. package/dist/skills/defaults/blockchain/defi-protocol-templates.md +430 -0
  49. package/dist/skills/defaults/blockchain/nft-standards.md +364 -0
  50. package/dist/skills/defaults/blockchain/solidity-security.md +514 -0
  51. package/dist/skills/defaults/blockchain/web3-testing.md +360 -0
  52. package/dist/skills/defaults/business/competitive-landscape/SKILL.md +527 -0
  53. package/dist/skills/defaults/business/market-sizing-analysis/SKILL.md +451 -0
  54. package/dist/skills/defaults/business/startup-financial-modeling/SKILL.md +494 -0
  55. package/dist/skills/defaults/business/startup-metrics-framework/SKILL.md +564 -0
  56. package/dist/skills/defaults/business/team-composition-analysis.md +437 -0
  57. package/dist/skills/defaults/compliance/employment-contract-templates/SKILL.md +527 -0
  58. package/dist/skills/defaults/compliance/gdpr-data-handling/SKILL.md +630 -0
  59. package/dist/skills/defaults/data-engineering/airflow-dag-patterns.md +436 -0
  60. package/dist/skills/defaults/data-engineering/airflow.md +519 -0
  61. package/dist/skills/defaults/data-engineering/data-quality.md +583 -0
  62. package/dist/skills/defaults/data-engineering/dbt-transformation-patterns.md +482 -0
  63. package/dist/skills/defaults/data-engineering/dbt.md +556 -0
  64. package/dist/skills/defaults/data-engineering/ml-pipeline-workflow/SKILL.md +247 -0
  65. package/dist/skills/defaults/data-engineering/spark-optimization.md +348 -0
  66. package/dist/skills/defaults/data-engineering/spark.md +411 -0
  67. package/dist/skills/defaults/database/postgresql.md +202 -0
  68. package/dist/skills/defaults/debugging/systematic-debugging.md +249 -0
  69. package/dist/skills/defaults/devops/architecture-decision-records.md +448 -0
  70. package/dist/skills/defaults/devops/changelog-automation.md +580 -0
  71. package/dist/skills/defaults/devops/cicd.md +314 -0
  72. package/dist/skills/defaults/devops/cloud.md +263 -0
  73. package/dist/skills/defaults/devops/code-review-excellence.md +299 -0
  74. package/dist/skills/defaults/devops/cost-optimization.md +295 -0
  75. package/dist/skills/defaults/devops/deployment-pipeline-design.md +356 -0
  76. package/dist/skills/defaults/devops/docker.md +281 -0
  77. package/dist/skills/defaults/devops/git-workflows.md +205 -0
  78. package/dist/skills/defaults/devops/github-actions.md +311 -0
  79. package/dist/skills/defaults/devops/gitlab-ci-patterns.md +266 -0
  80. package/dist/skills/defaults/devops/hybrid-cloud-networking.md +241 -0
  81. package/dist/skills/defaults/devops/istio-traffic-management.md +327 -0
  82. package/dist/skills/defaults/devops/kubernetes.md +339 -0
  83. package/dist/skills/defaults/devops/linkerd-patterns.md +311 -0
  84. package/dist/skills/defaults/devops/multi-cloud-architecture.md +181 -0
  85. package/dist/skills/defaults/devops/observability.md +243 -0
  86. package/dist/skills/defaults/devops/openapi-spec-generation.md +1024 -0
  87. package/dist/skills/defaults/devops/postmortem-writing.md +396 -0
  88. package/dist/skills/defaults/devops/prometheus-configuration.md +265 -0
  89. package/dist/skills/defaults/devops/secrets-management.md +341 -0
  90. package/dist/skills/defaults/devops/service-mesh-observability.md +385 -0
  91. package/dist/skills/defaults/devops/terraform-module-library.md +244 -0
  92. package/dist/skills/defaults/finance/backtesting-frameworks/SKILL.md +663 -0
  93. package/dist/skills/defaults/finance/risk-metrics-calculation/SKILL.md +557 -0
  94. package/dist/skills/defaults/frontend/accessibility-compliance.md +420 -0
  95. package/dist/skills/defaults/frontend/design-system-patterns.md +337 -0
  96. package/dist/skills/defaults/frontend/interaction-design.md +327 -0
  97. package/dist/skills/defaults/frontend/javascript.md +311 -0
  98. package/dist/skills/defaults/frontend/modern-javascript-patterns.md +927 -0
  99. package/dist/skills/defaults/frontend/react-native-design.md +440 -0
  100. package/dist/skills/defaults/frontend/react.md +345 -0
  101. package/dist/skills/defaults/frontend/responsive-design.md +472 -0
  102. package/dist/skills/defaults/frontend/tailwind-design-system.md +337 -0
  103. package/dist/skills/defaults/frontend/typescript-advanced-types.md +724 -0
  104. package/dist/skills/defaults/frontend/typescript.md +334 -0
  105. package/dist/skills/defaults/frontend/visual-design-foundations.md +326 -0
  106. package/dist/skills/defaults/frontend/web-component-design.md +279 -0
  107. package/dist/skills/defaults/game-development/godot-gdscript-patterns.md +188 -0
  108. package/dist/skills/defaults/game-development/unity-ecs-patterns.md +594 -0
  109. package/dist/skills/defaults/kubernetes/gitops-workflow.md +285 -0
  110. package/dist/skills/defaults/kubernetes/gitops.md +280 -0
  111. package/dist/skills/defaults/kubernetes/helm-chart-scaffolding.md +553 -0
  112. package/dist/skills/defaults/kubernetes/helm.md +343 -0
  113. package/dist/skills/defaults/kubernetes/k8s-manifest-generator.md +501 -0
  114. package/dist/skills/defaults/kubernetes/k8s-security-policies.md +342 -0
  115. package/dist/skills/defaults/kubernetes/manifests.md +330 -0
  116. package/dist/skills/defaults/kubernetes/security.md +337 -0
  117. package/dist/skills/defaults/llm-application/embedding-strategies.md +608 -0
  118. package/dist/skills/defaults/llm-application/hybrid-search-implementation.md +570 -0
  119. package/dist/skills/defaults/llm-application/hybrid-search.md +570 -0
  120. package/dist/skills/defaults/llm-application/langchain-architecture.md +666 -0
  121. package/dist/skills/defaults/llm-application/langchain.md +259 -0
  122. package/dist/skills/defaults/llm-application/llm-evaluation.md +695 -0
  123. package/dist/skills/defaults/llm-application/prompt-engineering-patterns.md +449 -0
  124. package/dist/skills/defaults/llm-application/prompt-engineering.md +219 -0
  125. package/dist/skills/defaults/llm-application/rag-implementation.md +434 -0
  126. package/dist/skills/defaults/llm-application/similarity-search-patterns.md +560 -0
  127. package/dist/skills/defaults/llm-application/similarity-search.md +560 -0
  128. package/dist/skills/defaults/llm-application/vector-index-tuning.md +523 -0
  129. package/dist/skills/defaults/mobile/mobile-android-design.md +440 -0
  130. package/dist/skills/defaults/mobile/mobile-ios-design.md +266 -0
  131. package/dist/skills/defaults/monitoring/distributed-tracing.md +436 -0
  132. package/dist/skills/defaults/monitoring/grafana-dashboards.md +370 -0
  133. package/dist/skills/defaults/monitoring/prometheus-configuration.md +379 -0
  134. package/dist/skills/defaults/monitoring/slo-implementation.md +323 -0
  135. package/dist/skills/defaults/refactoring/code-refactoring.md +349 -0
  136. package/dist/skills/defaults/security/anti-reversing-techniques/SKILL.md +559 -0
  137. package/dist/skills/defaults/security/auditor.md +168 -0
  138. package/dist/skills/defaults/security/binary-analysis-patterns/SKILL.md +438 -0
  139. package/dist/skills/defaults/security/memory-forensics/SKILL.md +483 -0
  140. package/dist/skills/defaults/security/mtls-configuration.md +349 -0
  141. package/dist/skills/defaults/security/protocol-reverse-engineering/SKILL.md +520 -0
  142. package/dist/skills/defaults/security/sast-configuration.md +182 -0
  143. package/dist/skills/defaults/security/security.md +313 -0
  144. package/dist/skills/defaults/security/stride-analysis.md +273 -0
  145. package/dist/skills/defaults/security/threat-mitigation-mapping.md +290 -0
  146. package/dist/skills/defaults/systems/bash-defensive-patterns/SKILL.md +539 -0
  147. package/dist/skills/defaults/systems/bats-testing-patterns/SKILL.md +631 -0
  148. package/dist/skills/defaults/systems/go-concurrency-patterns.md +657 -0
  149. package/dist/skills/defaults/systems/memory-safety-patterns.md +605 -0
  150. package/dist/skills/defaults/systems/rust-async-patterns.md +519 -0
  151. package/dist/skills/defaults/systems/shellcheck-configuration/SKILL.md +456 -0
  152. package/dist/skills/defaults/team-collaboration/multi-reviewer-patterns.md +126 -0
  153. package/dist/skills/defaults/team-collaboration/parallel-feature-development.md +151 -0
  154. package/dist/skills/defaults/testing/javascript-testing-patterns.md +1021 -0
  155. package/dist/skills/defaults/testing/python-testing-patterns.md +351 -0
  156. package/dist/skills/defaults/testing/testing.md +332 -0
  157. package/dist/skills/defaults/workflows/context-driven-development.md +384 -0
  158. package/dist/skills/defaults/workflows/track-management.md +592 -0
  159. package/dist/skills/defaults/workflows/workflow-patterns.md +622 -0
  160. package/dist/skills/index.d.ts +11 -0
  161. package/dist/skills/index.d.ts.map +1 -0
  162. package/dist/skills/index.js +129 -0
  163. package/dist/skills/index.js.map +1 -0
  164. package/dist/utils/character.js +4 -4
  165. package/dist/utils/character.js.map +1 -1
  166. package/dist/utils/inputbar.d.ts.map +1 -1
  167. package/dist/utils/inputbar.js +7 -0
  168. package/dist/utils/inputbar.js.map +1 -1
  169. package/package.json +1 -1
@@ -0,0 +1,472 @@
1
+ ---
2
+ name: responsive-design
3
+ description: Implement modern responsive layouts using container queries, fluid typography, CSS Grid, and mobile-first breakpoint strategies. Use when building adaptive interfaces, implementing fluid layouts, or creating component-level responsive behavior.
4
+ ---
5
+
6
+ # Responsive Design
7
+
8
+ Master modern responsive design techniques to create interfaces that adapt seamlessly across all screen sizes and device contexts.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Implementing mobile-first responsive layouts
13
+ - Using container queries for component-based responsiveness
14
+ - Creating fluid typography and spacing scales
15
+ - Building complex layouts with CSS Grid and Flexbox
16
+ - Designing breakpoint strategies for design systems
17
+ - Implementing responsive images and media
18
+ - Creating adaptive navigation patterns
19
+ - Building responsive tables and data displays
20
+
21
+ ## Core Capabilities
22
+
23
+ ### 1. Container Queries
24
+
25
+ - Component-level responsiveness independent of viewport
26
+ - Container query units (cqi, cqw, cqh)
27
+ - Style queries for conditional styling
28
+ - Fallbacks for browser support
29
+
30
+ ### 2. Fluid Typography & Spacing
31
+
32
+ - CSS clamp() for fluid scaling
33
+ - Viewport-relative units (vw, vh, dvh)
34
+ - Fluid type scales with min/max bounds
35
+ - Responsive spacing systems
36
+
37
+ ### 3. Layout Patterns
38
+
39
+ - CSS Grid for 2D layouts
40
+ - Flexbox for 1D distribution
41
+ - Intrinsic layouts (content-based sizing)
42
+ - Subgrid for nested grid alignment
43
+
44
+ ### 4. Breakpoint Strategy
45
+
46
+ - Mobile-first media queries
47
+ - Content-based breakpoints
48
+ - Design token integration
49
+ - Feature queries (@supports)
50
+
51
+ ## Quick Reference
52
+
53
+ ### Modern Breakpoint Scale
54
+
55
+ ```css
56
+ /* Mobile-first breakpoints */
57
+ /* Base: Mobile (< 640px) */
58
+ @media (min-width: 640px) {
59
+ /* sm: Landscape phones, small tablets */
60
+ }
61
+ @media (min-width: 768px) {
62
+ /* md: Tablets */
63
+ }
64
+ @media (min-width: 1024px) {
65
+ /* lg: Laptops, small desktops */
66
+ }
67
+ @media (min-width: 1280px) {
68
+ /* xl: Desktops */
69
+ }
70
+ @media (min-width: 1536px) {
71
+ /* 2xl: Large desktops */
72
+ }
73
+
74
+ /* Tailwind CSS equivalent */
75
+ /* sm: @media (min-width: 640px) */
76
+ /* md: @media (min-width: 768px) */
77
+ /* lg: @media (min-width: 1024px) */
78
+ /* xl: @media (min-width: 1280px) */
79
+ /* 2xl: @media (min-width: 1536px) */
80
+ ```
81
+
82
+ ## Key Patterns
83
+
84
+ ### Pattern 1: Container Queries
85
+
86
+ ```css
87
+ /* Define a containment context */
88
+ .card-container {
89
+ container-type: inline-size;
90
+ container-name: card;
91
+ }
92
+
93
+ /* Query the container, not the viewport */
94
+ @container card (min-width: 400px) {
95
+ .card {
96
+ display: grid;
97
+ grid-template-columns: 200px 1fr;
98
+ gap: 1rem;
99
+ }
100
+
101
+ .card-image {
102
+ aspect-ratio: 1;
103
+ }
104
+ }
105
+
106
+ @container card (min-width: 600px) {
107
+ .card {
108
+ grid-template-columns: 250px 1fr;
109
+ }
110
+
111
+ .card-title {
112
+ font-size: 1.5rem;
113
+ }
114
+ }
115
+
116
+ /* Container query units */
117
+ .card-title {
118
+ /* 5% of container width, clamped between 1rem and 2rem */
119
+ font-size: clamp(1rem, 5cqi, 2rem);
120
+ }
121
+ ```
122
+
123
+ ```tsx
124
+ // React component with container queries
125
+ function ResponsiveCard({ title, image, description }) {
126
+ return (
127
+ <div className="@container">
128
+ <article className="flex flex-col @md:flex-row @md:gap-4">
129
+ <img
130
+ src={image}
131
+ alt=""
132
+ className="w-full @md:w-48 @lg:w-64 aspect-video @md:aspect-square object-cover"
133
+ />
134
+ <div className="p-4 @md:p-0">
135
+ <h2 className="text-lg @md:text-xl @lg:text-2xl font-semibold">
136
+ {title}
137
+ </h2>
138
+ <p className="mt-2 text-muted-foreground @md:line-clamp-3">
139
+ {description}
140
+ </p>
141
+ </div>
142
+ </article>
143
+ </div>
144
+ );
145
+ }
146
+ ```
147
+
148
+ ### Pattern 2: Fluid Typography
149
+
150
+ ```css
151
+ /* Fluid type scale using clamp() */
152
+ :root {
153
+ /* Min size, preferred (fluid), max size */
154
+ --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
155
+ --text-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
156
+ --text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
157
+ --text-lg: clamp(1.125rem, 1rem + 0.625vw, 1.25rem);
158
+ --text-xl: clamp(1.25rem, 1rem + 1.25vw, 1.5rem);
159
+ --text-2xl: clamp(1.5rem, 1.25rem + 1.25vw, 2rem);
160
+ --text-3xl: clamp(1.875rem, 1.5rem + 1.875vw, 2.5rem);
161
+ --text-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3.5rem);
162
+ }
163
+
164
+ /* Usage */
165
+ h1 {
166
+ font-size: var(--text-4xl);
167
+ }
168
+ h2 {
169
+ font-size: var(--text-3xl);
170
+ }
171
+ h3 {
172
+ font-size: var(--text-2xl);
173
+ }
174
+ p {
175
+ font-size: var(--text-base);
176
+ }
177
+
178
+ /* Fluid spacing scale */
179
+ :root {
180
+ --space-xs: clamp(0.25rem, 0.2rem + 0.25vw, 0.5rem);
181
+ --space-sm: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
182
+ --space-md: clamp(1rem, 0.8rem + 1vw, 1.5rem);
183
+ --space-lg: clamp(1.5rem, 1.2rem + 1.5vw, 2.5rem);
184
+ --space-xl: clamp(2rem, 1.5rem + 2.5vw, 4rem);
185
+ }
186
+ ```
187
+
188
+ ### Pattern 3: CSS Grid Responsive Layout
189
+
190
+ ```css
191
+ /* Auto-fit grid - items wrap automatically */
192
+ .grid-auto {
193
+ display: grid;
194
+ grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr));
195
+ gap: 1.5rem;
196
+ }
197
+
198
+ /* Auto-fill grid - maintains empty columns */
199
+ .grid-auto-fill {
200
+ display: grid;
201
+ grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
202
+ gap: 1rem;
203
+ }
204
+
205
+ /* Responsive grid with named areas */
206
+ .page-layout {
207
+ display: grid;
208
+ grid-template-areas:
209
+ "header"
210
+ "main"
211
+ "sidebar"
212
+ "footer";
213
+ gap: 1rem;
214
+ }
215
+
216
+ @media (min-width: 768px) {
217
+ .page-layout {
218
+ grid-template-columns: 1fr 300px;
219
+ grid-template-areas:
220
+ "header header"
221
+ "main sidebar"
222
+ "footer footer";
223
+ }
224
+ }
225
+
226
+ @media (min-width: 1024px) {
227
+ .page-layout {
228
+ grid-template-columns: 250px 1fr 300px;
229
+ grid-template-areas:
230
+ "header header header"
231
+ "nav main sidebar"
232
+ "footer footer footer";
233
+ }
234
+ }
235
+
236
+ .header {
237
+ grid-area: header;
238
+ }
239
+ .main {
240
+ grid-area: main;
241
+ }
242
+ .sidebar {
243
+ grid-area: sidebar;
244
+ }
245
+ .footer {
246
+ grid-area: footer;
247
+ }
248
+ ```
249
+
250
+ ### Pattern 4: Responsive Navigation
251
+
252
+ ```tsx
253
+ function ResponsiveNav({ items }) {
254
+ const [isOpen, setIsOpen] = useState(false);
255
+
256
+ return (
257
+ <nav className="relative">
258
+ {/* Mobile menu button */}
259
+ <button
260
+ className="lg:hidden p-2"
261
+ onClick={() => setIsOpen(!isOpen)}
262
+ aria-expanded={isOpen}
263
+ aria-controls="nav-menu"
264
+ >
265
+ <span className="sr-only">Toggle navigation</span>
266
+ {isOpen ? <X /> : <Menu />}
267
+ </button>
268
+
269
+ {/* Navigation links */}
270
+ <ul
271
+ id="nav-menu"
272
+ className={cn(
273
+ // Base: hidden on mobile
274
+ "absolute top-full left-0 right-0 bg-background border-b",
275
+ "flex flex-col",
276
+ // Mobile: slide down
277
+ isOpen ? "flex" : "hidden",
278
+ // Desktop: always visible, horizontal
279
+ "lg:static lg:flex lg:flex-row lg:border-0 lg:bg-transparent",
280
+ )}
281
+ >
282
+ {items.map((item) => (
283
+ <li key={item.href}>
284
+ <a
285
+ href={item.href}
286
+ className={cn(
287
+ "block px-4 py-3",
288
+ "lg:px-3 lg:py-2",
289
+ "hover:bg-muted lg:hover:bg-transparent lg:hover:text-primary",
290
+ )}
291
+ >
292
+ {item.label}
293
+ </a>
294
+ </li>
295
+ ))}
296
+ </ul>
297
+ </nav>
298
+ );
299
+ }
300
+ ```
301
+
302
+ ### Pattern 5: Responsive Images
303
+
304
+ ```tsx
305
+ // Responsive image with art direction
306
+ function ResponsiveHero() {
307
+ return (
308
+ <picture>
309
+ {/* Art direction: different crops for different screens */}
310
+ <source
311
+ media="(min-width: 1024px)"
312
+ srcSet="/hero-wide.webp"
313
+ type="image/webp"
314
+ />
315
+ <source
316
+ media="(min-width: 768px)"
317
+ srcSet="/hero-medium.webp"
318
+ type="image/webp"
319
+ />
320
+ <source srcSet="/hero-mobile.webp" type="image/webp" />
321
+
322
+ {/* Fallback */}
323
+ <img
324
+ src="/hero-mobile.jpg"
325
+ alt="Hero image description"
326
+ className="w-full h-auto"
327
+ loading="eager"
328
+ fetchpriority="high"
329
+ />
330
+ </picture>
331
+ );
332
+ }
333
+
334
+ // Responsive image with srcset for resolution switching
335
+ function ProductImage({ product }) {
336
+ return (
337
+ <img
338
+ src={product.image}
339
+ srcSet={`
340
+ ${product.image}?w=400 400w,
341
+ ${product.image}?w=800 800w,
342
+ ${product.image}?w=1200 1200w
343
+ `}
344
+ sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"
345
+ alt={product.name}
346
+ className="w-full h-auto object-cover"
347
+ loading="lazy"
348
+ />
349
+ );
350
+ }
351
+ ```
352
+
353
+ ### Pattern 6: Responsive Tables
354
+
355
+ ```tsx
356
+ // Responsive table with horizontal scroll
357
+ function ResponsiveTable({ data, columns }) {
358
+ return (
359
+ <div className="w-full overflow-x-auto">
360
+ <table className="w-full min-w-[600px]">
361
+ <thead>
362
+ <tr>
363
+ {columns.map((col) => (
364
+ <th key={col.key} className="text-left p-3">
365
+ {col.label}
366
+ </th>
367
+ ))}
368
+ </tr>
369
+ </thead>
370
+ <tbody>
371
+ {data.map((row, i) => (
372
+ <tr key={i} className="border-t">
373
+ {columns.map((col) => (
374
+ <td key={col.key} className="p-3">
375
+ {row[col.key]}
376
+ </td>
377
+ ))}
378
+ </tr>
379
+ ))}
380
+ </tbody>
381
+ </table>
382
+ </div>
383
+ );
384
+ }
385
+
386
+ // Card-based table for mobile
387
+ function ResponsiveDataTable({ data, columns }) {
388
+ return (
389
+ <>
390
+ {/* Desktop table */}
391
+ <table className="hidden md:table w-full">
392
+ {/* ... standard table */}
393
+ </table>
394
+
395
+ {/* Mobile cards */}
396
+ <div className="md:hidden space-y-4">
397
+ {data.map((row, i) => (
398
+ <div key={i} className="border rounded-lg p-4 space-y-2">
399
+ {columns.map((col) => (
400
+ <div key={col.key} className="flex justify-between">
401
+ <span className="font-medium text-muted-foreground">
402
+ {col.label}
403
+ </span>
404
+ <span>{row[col.key]}</span>
405
+ </div>
406
+ ))}
407
+ </div>
408
+ ))}
409
+ </div>
410
+ </>
411
+ );
412
+ }
413
+ ```
414
+
415
+ ## Viewport Units
416
+
417
+ ```css
418
+ /* Standard viewport units */
419
+ .full-height {
420
+ height: 100vh; /* May cause issues on mobile */
421
+ }
422
+
423
+ /* Dynamic viewport units (recommended for mobile) */
424
+ .full-height-dynamic {
425
+ height: 100dvh; /* Accounts for mobile browser UI */
426
+ }
427
+
428
+ /* Small viewport (minimum) */
429
+ .min-full-height {
430
+ min-height: 100svh;
431
+ }
432
+
433
+ /* Large viewport (maximum) */
434
+ .max-full-height {
435
+ max-height: 100lvh;
436
+ }
437
+
438
+ /* Viewport-relative font sizing */
439
+ .hero-title {
440
+ /* 5vw with min/max bounds */
441
+ font-size: clamp(2rem, 5vw, 4rem);
442
+ }
443
+ ```
444
+
445
+ ## Best Practices
446
+
447
+ 1. **Mobile-First**: Start with mobile styles, enhance for larger screens
448
+ 2. **Content Breakpoints**: Set breakpoints based on content, not devices
449
+ 3. **Fluid Over Fixed**: Use fluid values for typography and spacing
450
+ 4. **Container Queries**: Use for component-level responsiveness
451
+ 5. **Test Real Devices**: Simulators don't catch all issues
452
+ 6. **Performance**: Optimize images, lazy load off-screen content
453
+ 7. **Touch Targets**: Maintain 44x44px minimum on mobile
454
+ 8. **Logical Properties**: Use inline/block for internationalization
455
+
456
+ ## Common Issues
457
+
458
+ - **Horizontal Overflow**: Content breaking out of viewport
459
+ - **Fixed Widths**: Using px instead of relative units
460
+ - **Viewport Height**: 100vh issues on mobile browsers
461
+ - **Font Size**: Text too small on mobile
462
+ - **Touch Targets**: Buttons too small to tap accurately
463
+ - **Aspect Ratio**: Images squishing or stretching
464
+ - **Z-Index Stacking**: Overlays breaking on different screens
465
+
466
+ ## Resources
467
+
468
+ - [CSS Container Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_container_queries)
469
+ - [Utopia Fluid Type Calculator](https://utopia.fyi/type/calculator/)
470
+ - [Every Layout](https://every-layout.dev/)
471
+ - [Responsive Images Guide](https://web.dev/responsive-images/)
472
+ - [CSS Grid Garden](https://cssgridgarden.com/)