getlotui 0.1.4 → 0.1.5

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 (76) hide show
  1. package/apps/getlotui-documentation-website/app/about/page.tsx +9 -4
  2. package/apps/getlotui-documentation-website/app/docs/components/aspect-ratio/page.tsx +376 -0
  3. package/apps/getlotui-documentation-website/app/docs/components/breadcrumb/page.tsx +458 -0
  4. package/apps/getlotui-documentation-website/app/docs/components/button-group/page.tsx +362 -0
  5. package/apps/getlotui-documentation-website/app/docs/components/calendar/page.tsx +340 -0
  6. package/apps/getlotui-documentation-website/app/docs/components/carousel/page.tsx +357 -0
  7. package/apps/getlotui-documentation-website/app/docs/components/page.tsx +32 -159
  8. package/apps/getlotui-documentation-website/app/docs/layout.tsx +29 -1
  9. package/apps/getlotui-documentation-website/app/layout.tsx +4 -1
  10. package/apps/getlotui-documentation-website/app/page.tsx +7 -2
  11. package/apps/getlotui-documentation-website/components/docs-sidebar.tsx +5 -2
  12. package/apps/getlotui-documentation-website/components/site-header.tsx +1 -1
  13. package/apps/getlotui-documentation-website/components/ui/aspect-ratio.tsx +30 -7
  14. package/apps/getlotui-documentation-website/components/ui/button-group.tsx +53 -74
  15. package/apps/getlotui-documentation-website/config/docs.ts +24 -0
  16. package/apps/getlotui-documentation-website/package.json +1 -2
  17. package/package.json +1 -1
  18. package/packages/cli/dist/commands/add.js +75 -1
  19. package/packages/cli/dist/templates/expo/AspectRatio.tsx +38 -0
  20. package/packages/cli/dist/templates/expo/Breadcrumb.tsx +135 -0
  21. package/packages/cli/dist/templates/expo/ButtonGroup.tsx +39 -0
  22. package/packages/cli/dist/templates/expo/Calendar.tsx +209 -0
  23. package/packages/cli/dist/templates/expo/Carousel.tsx +152 -0
  24. package/packages/cli/dist/templates/flutter/AspectRatio.dart +41 -0
  25. package/packages/cli/dist/templates/flutter/Breadcrumb.dart +103 -0
  26. package/packages/cli/dist/templates/flutter/ButtonGroup.dart +25 -0
  27. package/packages/cli/dist/templates/flutter/Calendar.dart +191 -0
  28. package/packages/cli/dist/templates/flutter/Carousel.dart +137 -0
  29. package/packages/cli/dist/templates/web/AspectRatio.tsx +34 -0
  30. package/packages/cli/dist/templates/web/Breadcrumb.tsx +109 -0
  31. package/packages/cli/dist/templates/web/ButtonGroup.tsx +62 -0
  32. package/packages/cli/dist/templates/web/Calendar.tsx +213 -0
  33. package/packages/cli/dist/templates/web/Carousel.tsx +241 -0
  34. package/packages/cli/dist/templates/web/Dialog.tsx +143 -0
  35. package/packages/cli/dist/utils/dependencies.d.ts +8 -0
  36. package/packages/cli/dist/utils/dependencies.js +33 -0
  37. package/packages/cli/package-lock.json +2 -2
  38. package/packages/cli/package.json +1 -1
  39. package/packages/cli/src/commands/add.ts +77 -11
  40. package/packages/cli/src/templates/expo/AspectRatio.tsx +38 -0
  41. package/packages/cli/src/templates/expo/Breadcrumb.tsx +135 -0
  42. package/packages/cli/src/templates/expo/ButtonGroup.tsx +39 -0
  43. package/packages/cli/src/templates/expo/Calendar.tsx +209 -0
  44. package/packages/cli/src/templates/expo/Carousel.tsx +152 -0
  45. package/packages/cli/src/templates/flutter/AspectRatio.dart +41 -0
  46. package/packages/cli/src/templates/flutter/Breadcrumb.dart +103 -0
  47. package/packages/cli/src/templates/flutter/ButtonGroup.dart +25 -0
  48. package/packages/cli/src/templates/flutter/Calendar.dart +191 -0
  49. package/packages/cli/src/templates/flutter/Carousel.dart +137 -0
  50. package/packages/cli/src/templates/web/AspectRatio.tsx +34 -0
  51. package/packages/cli/src/templates/web/Breadcrumb.tsx +109 -0
  52. package/packages/cli/src/templates/web/ButtonGroup.tsx +62 -0
  53. package/packages/cli/src/templates/web/Calendar.tsx +213 -0
  54. package/packages/cli/src/templates/web/Carousel.tsx +241 -0
  55. package/packages/cli/src/templates/web/Dialog.tsx +143 -0
  56. package/packages/cli/src/utils/dependencies.ts +30 -0
  57. package/packages/core/components/aspect-ratio.json +22 -0
  58. package/packages/core/components/breadcrumb.json +22 -0
  59. package/packages/core/components/button-group.json +18 -0
  60. package/packages/core/components/calendar.json +30 -0
  61. package/packages/core/components/carousel.json +21 -0
  62. package/packages/core/index.ts +14 -0
  63. package/packages/expo/src/components/AspectRatio.tsx +38 -0
  64. package/packages/expo/src/components/Breadcrumb.tsx +135 -0
  65. package/packages/expo/src/components/Button.tsx +43 -13
  66. package/packages/expo/src/components/ButtonGroup.tsx +39 -0
  67. package/packages/expo/src/components/Calendar.tsx +209 -0
  68. package/packages/expo/src/components/Carousel.tsx +152 -0
  69. package/packages/expo/src/index.ts +5 -0
  70. package/packages/flutter/lib/getlotui_flutter.dart +5 -0
  71. package/packages/flutter/lib/src/components/aspect_ratio.dart +41 -0
  72. package/packages/flutter/lib/src/components/breadcrumb.dart +103 -0
  73. package/packages/flutter/lib/src/components/button.dart +12 -13
  74. package/packages/flutter/lib/src/components/button_group.dart +25 -0
  75. package/packages/flutter/lib/src/components/calendar.dart +191 -0
  76. package/packages/flutter/lib/src/components/carousel.dart +137 -0
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import * as React from "react";
3
4
  import { motion } from "framer-motion";
4
5
  import {
5
6
  Sparkles,
@@ -38,6 +39,10 @@ const item = {
38
39
  };
39
40
 
40
41
  export default function AboutPage() {
42
+ React.useEffect(() => {
43
+ document.title = "About Us | GetLotUI";
44
+ }, []);
45
+
41
46
  return (
42
47
  <div className="flex min-h-screen flex-col">
43
48
  <SiteHeader />
@@ -543,8 +548,8 @@ export default function AboutPage() {
543
548
  step.status === "Completed"
544
549
  ? "bg-emerald-500/10 text-emerald-500"
545
550
  : step.status === "In Progress"
546
- ? "bg-primary/10 text-primary"
547
- : "bg-muted/50 text-muted-foreground"
551
+ ? "bg-primary/10 text-primary"
552
+ : "bg-muted/50 text-muted-foreground"
548
553
  }`}
549
554
  >
550
555
  <step.icon className="h-6 w-6" />
@@ -561,8 +566,8 @@ export default function AboutPage() {
561
566
  step.status === "Completed"
562
567
  ? "bg-emerald-500/10 text-emerald-500"
563
568
  : step.status === "In Progress"
564
- ? "bg-primary/10 text-primary"
565
- : "bg-muted/10 text-muted-foreground"
569
+ ? "bg-primary/10 text-primary"
570
+ : "bg-muted/10 text-muted-foreground"
566
571
  }`}
567
572
  >
568
573
  {step.status}
@@ -0,0 +1,376 @@
1
+ "use client";
2
+
3
+ import { AspectRatio } from "@/components/ui/aspect-ratio";
4
+ import { ComponentPreview } from "@/components/component-preview";
5
+ import { InstallationCommand } from "@/components/installation-command";
6
+ import { useFramework } from "@/context/framework-context";
7
+ import { motion } from "framer-motion";
8
+ import Image from "next/image";
9
+
10
+ export default function AspectRatioPage() {
11
+ const { framework } = useFramework();
12
+
13
+ const usageCode = `import { AspectRatio, Image } from '@crossui/expo'
14
+
15
+ export default function MyComponent() {
16
+ return (
17
+ <AspectRatio ratio={16 / 9}>
18
+ <Image
19
+ source={{ uri: 'https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80' }}
20
+ style={{ width: '100%', height: '100%' }}
21
+ />
22
+ </AspectRatio>
23
+ )
24
+ }`;
25
+
26
+ const flutterUsage = `CrossUIAspectRatio(
27
+ ratio: 16 / 9,
28
+ child: Image.network(
29
+ 'https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80',
30
+ fit: BoxFit.cover,
31
+ ),
32
+ )`;
33
+
34
+ const webUsage = `<AspectRatio ratio={16 / 9} className="bg-muted">
35
+ <Image
36
+ src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
37
+ alt="Photo by Drew Beamer"
38
+ fill
39
+ className="rounded-md object-cover"
40
+ />
41
+ </AspectRatio>`;
42
+
43
+ const getUsageContent = () => {
44
+ switch (framework) {
45
+ case "flutter":
46
+ return { code: flutterUsage, lang: "dart", title: "example.dart" };
47
+ case "web":
48
+ return { code: webUsage, lang: "tsx", title: "example.tsx" };
49
+ case "expo":
50
+ default:
51
+ return { code: usageCode, lang: "tsx", title: "Example.tsx" };
52
+ }
53
+ };
54
+
55
+ const usage = getUsageContent();
56
+
57
+ const variantsCode = `<div className="w-[450px]">
58
+ <AspectRatio variant="landscape">
59
+ <Image
60
+ src="https://images.unsplash.com/photo-1576075796033-848c2a5f3696?w=800&dpr=2&q=80"
61
+ alt="Landscape"
62
+ fill
63
+ className="rounded-md object-cover"
64
+ />
65
+ </AspectRatio>
66
+ </div>`;
67
+
68
+ const squareCode = `<div className="w-[200px]">
69
+ <AspectRatio variant="square">
70
+ <Image
71
+ src="https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=800&q=80"
72
+ alt="Square"
73
+ fill
74
+ className="rounded-md object-cover"
75
+ />
76
+ </AspectRatio>
77
+ </div>`;
78
+
79
+ const portraitCode = `<div className="w-[200px]">
80
+ <AspectRatio variant="portrait">
81
+ <Image
82
+ src="https://images.unsplash.com/photo-1543610892-0b1f7e6d8ac1?w=800&q=80"
83
+ alt="Portrait"
84
+ fill
85
+ className="rounded-md object-cover"
86
+ />
87
+ </AspectRatio>
88
+ </div>`;
89
+
90
+ const wideCode = `<div className="w-[450px]">
91
+ <AspectRatio variant="wide">
92
+ <Image
93
+ src="https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&q=80"
94
+ alt="Wide"
95
+ fill
96
+ className="rounded-md object-cover"
97
+ />
98
+ </AspectRatio>
99
+ </div>`;
100
+
101
+ return (
102
+ <div className="space-y-12 pb-12">
103
+ {/* Header */}
104
+ <motion.div
105
+ initial={{ opacity: 0, y: 20 }}
106
+ animate={{ opacity: 1, y: 0 }}
107
+ transition={{ duration: 0.4 }}
108
+ className="space-y-4"
109
+ >
110
+ <div className="space-y-2">
111
+ <h1
112
+ id="aspect-ratio"
113
+ className="scroll-m-20 text-5xl font-bold tracking-tight"
114
+ >
115
+ Aspect Ratio
116
+ </h1>
117
+ <p className="text-xl text-muted-foreground leading-relaxed max-w-3xl">
118
+ Displays content within a desired ratio.
119
+ </p>
120
+ </div>
121
+
122
+ <div className="flex items-center gap-3 pt-3 border-t border-border/50">
123
+ <span className="text-sm font-medium text-foreground">
124
+ Framework:
125
+ </span>
126
+ <span className="inline-flex items-center rounded-md bg-primary/10 px-3 py-1 text-xs font-mono font-semibold text-primary ring-1 ring-inset ring-primary/20 capitalize">
127
+ {framework}
128
+ </span>
129
+ </div>
130
+ </motion.div>
131
+
132
+ {/* Installation */}
133
+ <motion.div
134
+ initial={{ opacity: 0, y: 20 }}
135
+ animate={{ opacity: 1, y: 0 }}
136
+ transition={{ duration: 0.4, delay: 0.1 }}
137
+ className="space-y-4"
138
+ >
139
+ <h2
140
+ id="installation"
141
+ className="scroll-m-20 border-b border-border/50 pb-3 text-3xl font-semibold tracking-tight"
142
+ >
143
+ Installation
144
+ </h2>
145
+ <InstallationCommand
146
+ code={
147
+ framework === "flutter"
148
+ ? "crossui add aspect-ratio"
149
+ : "npx crossui add aspect-ratio"
150
+ }
151
+ />
152
+ </motion.div>
153
+
154
+ {/* Usage */}
155
+ <motion.div
156
+ initial={{ opacity: 0, y: 20 }}
157
+ animate={{ opacity: 1, y: 0 }}
158
+ transition={{ duration: 0.4, delay: 0.2 }}
159
+ className="space-y-4"
160
+ >
161
+ <h2
162
+ id="usage"
163
+ className="scroll-m-20 border-b border-border/50 pb-3 text-3xl font-semibold tracking-tight"
164
+ >
165
+ Usage
166
+ </h2>
167
+ <InstallationCommand
168
+ code={usage.code}
169
+ title={usage.title}
170
+ language={usage.lang}
171
+ />
172
+ </motion.div>
173
+
174
+ {/* Examples */}
175
+ <motion.div
176
+ initial={{ opacity: 0, y: 20 }}
177
+ animate={{ opacity: 1, y: 0 }}
178
+ transition={{ duration: 0.4, delay: 0.3 }}
179
+ className="space-y-8"
180
+ >
181
+ <h2
182
+ id="examples"
183
+ className="scroll-m-20 border-b border-border/50 pb-3 text-3xl font-semibold tracking-tight"
184
+ >
185
+ Examples
186
+ </h2>
187
+
188
+ {/* Variants */}
189
+ <div className="space-y-4">
190
+ <div className="space-y-2">
191
+ <h3
192
+ id="variants"
193
+ className="scroll-m-20 text-2xl font-semibold tracking-tight"
194
+ >
195
+ Variants
196
+ </h3>
197
+ <p className="text-base text-muted-foreground leading-relaxed">
198
+ Use the{" "}
199
+ <code className="relative rounded bg-muted px-2 py-0.5 font-mono text-sm">
200
+ variant
201
+ </code>{" "}
202
+ prop to verify different aspect ratios.
203
+ </p>
204
+ </div>
205
+ <ComponentPreview name="aspect-ratio-demo" code={variantsCode}>
206
+ <div className="w-[300px] overflow-hidden rounded-md border border-border bg-muted">
207
+ <AspectRatio variant="landscape">
208
+ <Image
209
+ src="https://images.unsplash.com/photo-1588345921523-c2dcdb7f1dcd?w=800&dpr=2&q=80"
210
+ alt="Photo by Drew Beamer"
211
+ fill
212
+ className="h-full w-full object-cover"
213
+ />
214
+ </AspectRatio>
215
+ </div>
216
+ </ComponentPreview>
217
+ </div>
218
+
219
+ {/* Square */}
220
+ <div className="space-y-4">
221
+ <div className="space-y-2">
222
+ <h3 className="scroll-m-20 text-2xl font-semibold tracking-tight">
223
+ Square
224
+ </h3>
225
+ <p className="text-base text-muted-foreground leading-relaxed">
226
+ Use the{" "}
227
+ <code className="relative rounded bg-muted px-2 py-0.5 font-mono text-sm">
228
+ square
229
+ </code>{" "}
230
+ variant for 1:1 ratio.
231
+ </p>
232
+ </div>
233
+ <ComponentPreview name="aspect-ratio-square" code={squareCode}>
234
+ <div className="w-[200px] overflow-hidden rounded-md border border-border bg-muted">
235
+ <AspectRatio variant="square">
236
+ <Image
237
+ src="https://images.unsplash.com/photo-1514888286974-6c03e2ca1dba?w=800&q=80"
238
+ alt="Square"
239
+ fill
240
+ className="h-full w-full object-cover"
241
+ />
242
+ </AspectRatio>
243
+ </div>
244
+ </ComponentPreview>
245
+ </div>
246
+
247
+ {/* Portrait */}
248
+ <div className="space-y-4">
249
+ <div className="space-y-2">
250
+ <h3 className="scroll-m-20 text-2xl font-semibold tracking-tight">
251
+ Portrait
252
+ </h3>
253
+ <p className="text-base text-muted-foreground leading-relaxed">
254
+ Use the{" "}
255
+ <code className="relative rounded bg-muted px-2 py-0.5 font-mono text-sm">
256
+ portrait
257
+ </code>{" "}
258
+ variant for 3:4 ratio.
259
+ </p>
260
+ </div>
261
+ <ComponentPreview name="aspect-ratio-portrait" code={portraitCode}>
262
+ <div className="w-[200px] overflow-hidden rounded-md border border-border bg-muted">
263
+ <AspectRatio variant="portrait">
264
+ <Image
265
+ src="https://images.unsplash.com/photo-1543610892-0b1f7e6d8ac1?w=800&q=80"
266
+ alt="Portrait"
267
+ fill
268
+ className="h-full w-full object-cover"
269
+ />
270
+ </AspectRatio>
271
+ </div>
272
+ </ComponentPreview>
273
+ </div>
274
+
275
+ {/* Wide */}
276
+ <div className="space-y-4">
277
+ <div className="space-y-2">
278
+ <h3 className="scroll-m-20 text-2xl font-semibold tracking-tight">
279
+ Wide
280
+ </h3>
281
+ <p className="text-base text-muted-foreground leading-relaxed">
282
+ Use the{" "}
283
+ <code className="relative rounded bg-muted px-2 py-0.5 font-mono text-sm">
284
+ wide
285
+ </code>{" "}
286
+ variant for 21:9 ratio.
287
+ </p>
288
+ </div>
289
+ <ComponentPreview name="aspect-ratio-wide" code={wideCode}>
290
+ <div className="w-[450px] overflow-hidden rounded-md border border-border bg-muted">
291
+ <AspectRatio variant="wide">
292
+ <Image
293
+ src="https://images.unsplash.com/photo-1469474968028-56623f02e42e?w=800&q=80"
294
+ alt="Wide"
295
+ fill
296
+ className="h-full w-full object-cover"
297
+ />
298
+ </AspectRatio>
299
+ </div>
300
+ </ComponentPreview>
301
+ </div>
302
+ </motion.div>
303
+
304
+ {/* API Reference */}
305
+ <motion.div
306
+ initial={{ opacity: 0, y: 20 }}
307
+ animate={{ opacity: 1, y: 0 }}
308
+ transition={{ duration: 0.4, delay: 0.4 }}
309
+ className="space-y-4"
310
+ >
311
+ <h2
312
+ id="api-reference"
313
+ className="scroll-m-20 border-b border-border/50 pb-3 text-3xl font-semibold tracking-tight"
314
+ >
315
+ API Reference
316
+ </h2>
317
+ <div className="rounded-lg border border-border overflow-hidden">
318
+ <div className="overflow-x-auto">
319
+ <table className="w-full text-sm">
320
+ <thead className="bg-muted/50">
321
+ <tr className="border-b border-border">
322
+ <th className="text-left py-3.5 px-4 font-semibold">Prop</th>
323
+ <th className="text-left py-3.5 px-4 font-semibold">Type</th>
324
+ <th className="text-left py-3.5 px-4 font-semibold">
325
+ Default
326
+ </th>
327
+ <th className="text-left py-3.5 px-4 font-semibold">
328
+ Description
329
+ </th>
330
+ </tr>
331
+ </thead>
332
+ <tbody>
333
+ <tr className="border-b border-border hover:bg-muted/30 transition-colors">
334
+ <td className="py-3.5 px-4 font-mono text-xs font-medium">
335
+ ratio
336
+ </td>
337
+ <td className="py-3.5 px-4">
338
+ <code className="text-xs font-mono bg-muted px-2 py-1 rounded">
339
+ number
340
+ </code>
341
+ </td>
342
+ <td className="py-3.5 px-4">
343
+ <code className="text-xs font-mono bg-muted px-2 py-1 rounded">
344
+ 16/9
345
+ </code>
346
+ </td>
347
+ <td className="py-3.5 px-4 text-muted-foreground">
348
+ The aspect ratio to use
349
+ </td>
350
+ </tr>
351
+ <tr className="border-b border-border hover:bg-muted/30 transition-colors">
352
+ <td className="py-3.5 px-4 font-mono text-xs font-medium">
353
+ variant
354
+ </td>
355
+ <td className="py-3.5 px-4">
356
+ <code className="text-xs font-mono bg-muted px-2 py-1 rounded">
357
+ 'square' | 'landscape' | 'portrait' | 'wide' | 'ultrawide'
358
+ </code>
359
+ </td>
360
+ <td className="py-3.5 px-4">
361
+ <code className="text-xs font-mono bg-muted px-2 py-1 rounded">
362
+ 'landscape'
363
+ </code>
364
+ </td>
365
+ <td className="py-3.5 px-4 text-muted-foreground">
366
+ Predefined aspect ratio variants
367
+ </td>
368
+ </tr>
369
+ </tbody>
370
+ </table>
371
+ </div>
372
+ </div>
373
+ </motion.div>
374
+ </div>
375
+ );
376
+ }