+ {order.items?.length || 0} items +
+{formatPrice(order.total)}
+{user.email}
+ ++ {item.description} +
++ {locale === "ru" + ? "Наши последние статьи и новости" + : "Our latest articles and news"} +
++ {locale === "ru" ? "Статьи скоро появятся" : "Posts coming soon"} +
++ {post.excerpt} +
+ )} ++ {formatDate(post.published_at || post.created_at, locale)} +
+{t("cart.emptyMessage")}
+ ++ {item.product.brand.name} +
+ )} ++ {formatPrice(price * item.quantity)} +
+ {item.quantity > 1 && ( ++ {formatPrice(price)} each +
+ )} +{category.description}
+ )} ++ {t("catalog.showingResults", { count: productsData.count || 0 })} +
++ {t("common.noResults")} +
+ ++ {t("catalog.showingResults", { count: productsData.count || 0 })} +
+{t("cart.emptyMessage")}
+ ++ {t("checkout.orderNumber")}: {orderNumber} +
++ {t("checkout.orderConfirmation")} +
++ {t("footer.about.description")} +
+{t("errors.404.message")}
++ {t("home.hero.subtitle")} +
++ {feature.description} +
++ {t("home.categories.subtitle")} +
++ {category.products_count}{" "} + {locale === "ru" ? "товаров" : "products"} +
+ )} ++ {t("home.featured.subtitle")} +
++ -{promotion.discount_percentage}% +
+ )} + {promotion.description && ( ++ {promotion.description} +
+ )} ++ {t("home.newArrivals.subtitle")} +
++ {t("footer.newsletter.description")} +
+ +{product.short_description}
+ )} + +{t("product.noReviews")}
+ ) : ( ++ {t("product.reviewsCount", { count: product.reviews_count })} +
+ )} ++ {t("account.wishlist.emptyMessage")} +
+ ++ {items.length} {items.length === 1 ? "item" : "items"} +
+{t("cart.empty")}
++ {t("cart.emptyMessage")} +
++ {formatPrice(price * item.quantity)} +
++ {t("common.shipping")} & {t("common.tax")} calculated at checkout +
++ {user?.first_name} {user?.last_name} +
++ {user?.email} +
++ {product.category.name} +
+ )} + + {/* Name */} +{subtitle}
} ++ {body} +
+ ) +} + +export { + useFormField, + Form, + FormItem, + FormLabel, + FormControl, + FormDescription, + FormMessage, + FormField, +} diff --git a/storefront/src/components/ui/input.tsx b/storefront/src/components/ui/input.tsx new file mode 100644 index 00000000..89169058 --- /dev/null +++ b/storefront/src/components/ui/input.tsx @@ -0,0 +1,21 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Input({ className, type, ...props }: React.ComponentProps<"input">) { + return ( + + ) +} + +export { Input } diff --git a/storefront/src/components/ui/label.tsx b/storefront/src/components/ui/label.tsx new file mode 100644 index 00000000..fb5fbc3e --- /dev/null +++ b/storefront/src/components/ui/label.tsx @@ -0,0 +1,24 @@ +"use client" + +import * as React from "react" +import * as LabelPrimitive from "@radix-ui/react-label" + +import { cn } from "@/lib/utils" + +function Label({ + className, + ...props +}: React.ComponentProps