diff --git a/apps/api/.example.env b/apps/api/.example.env index c9134058..721499c0 100644 --- a/apps/api/.example.env +++ b/apps/api/.example.env @@ -31,3 +31,7 @@ POLAR_ACCESS_TOKEN="" POLAR_WEBHOOK_SECRET="" POLAR_PRO_PRODUCT_ID="" POLAR_PRO_ANNUAL_PRODUCT_ID="" + +CF_AI_GATEWAY_TOKEN="" +CLOUDFLARE_ACCOUNT_ID="" +CLOUDFLARE_AI_GATEWAY_ID="" diff --git a/apps/api/drizzle/0014_omniscient_rumiko_fujikawa.sql b/apps/api/drizzle/0014_omniscient_rumiko_fujikawa.sql new file mode 100644 index 00000000..11a5d2e3 --- /dev/null +++ b/apps/api/drizzle/0014_omniscient_rumiko_fujikawa.sql @@ -0,0 +1,17 @@ +CREATE TABLE `revlogs` ( + `id` text PRIMARY KEY NOT NULL, + `user_id` text NOT NULL, + `difficulty` real DEFAULT 0, + `due` text NOT NULL, + `due_timestamp_ms` integer NOT NULL, + `review` text NOT NULL, + `review_timestamp_ms` integer NOT NULL, + `learning_steps` integer DEFAULT 0, + `scheduled_days` integer DEFAULT 0, + `stability` real DEFAULT 0, + `state` integer DEFAULT 0, + `direction` text DEFAULT 'forward' NOT NULL, + `source` text DEFAULT 'review' NOT NULL, + `created_at` integer DEFAULT (unixepoch()) NOT NULL, + FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON UPDATE no action ON DELETE no action +); diff --git a/apps/api/drizzle/meta/0014_snapshot.json b/apps/api/drizzle/meta/0014_snapshot.json new file mode 100644 index 00000000..7c30d8ed --- /dev/null +++ b/apps/api/drizzle/meta/0014_snapshot.json @@ -0,0 +1,663 @@ +{ + "version": "6", + "dialect": "sqlite", + "id": "dd5e0668-539a-4249-8e73-28ed6e1bef08", + "prevId": "d7a1c3d8-3748-4fa9-a8e4-5af0ce248937", + "tables": { + "accounts": { + "name": "accounts", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "account_id": { + "name": "account_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "provider_id": { + "name": "provider_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "refresh_token": { + "name": "refresh_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "id_token": { + "name": "id_token", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "access_token_expires_at": { + "name": "access_token_expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "refresh_token_expires_at": { + "name": "refresh_token_expires_at", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "scope": { + "name": "scope", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "password": { + "name": "password", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "accounts_userId_idx": { + "name": "accounts_userId_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "accounts_user_id_users_id_fk": { + "name": "accounts_user_id_users_id_fk", + "tableFrom": "accounts", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "sessions": { + "name": "sessions", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "token": { + "name": "token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "ip_address": { + "name": "ip_address", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_agent": { + "name": "user_agent", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "impersonated_by": { + "name": "impersonated_by", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "sessions_token_unique": { + "name": "sessions_token_unique", + "columns": [ + "token" + ], + "isUnique": true + }, + "sessions_userId_idx": { + "name": "sessions_userId_idx", + "columns": [ + "user_id" + ], + "isUnique": false + } + }, + "foreignKeys": { + "sessions_user_id_users_id_fk": { + "name": "sessions_user_id_users_id_fk", + "tableFrom": "sessions", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "cascade", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "users": { + "name": "users", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "name": { + "name": "name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email": { + "name": "email", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "email_verified": { + "name": "email_verified", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": false + }, + "image": { + "name": "image", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + }, + "role": { + "name": "role", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "banned": { + "name": "banned", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": false + }, + "ban_reason": { + "name": "ban_reason", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "ban_expires": { + "name": "ban_expires", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "plan": { + "name": "plan", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "subscriptionStatus": { + "name": "subscriptionStatus", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + } + }, + "indexes": { + "users_email_unique": { + "name": "users_email_unique", + "columns": [ + "email" + ], + "isUnique": true + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "verifications": { + "name": "verifications", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "identifier": { + "name": "identifier", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "value": { + "name": "value", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "expires_at": { + "name": "expires_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + }, + "updated_at": { + "name": "updated_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(cast(unixepoch('subsecond') * 1000 as integer))" + } + }, + "indexes": { + "verifications_identifier_idx": { + "name": "verifications_identifier_idx", + "columns": [ + "identifier" + ], + "isUnique": false + } + }, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "databases": { + "name": "databases", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "db_name": { + "name": "db_name", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "hostname": { + "name": "hostname", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "db_id": { + "name": "db_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "access_token": { + "name": "access_token", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + } + }, + "indexes": { + "databases_user_id_unique": { + "name": "databases_user_id_unique", + "columns": [ + "user_id" + ], + "isUnique": true + } + }, + "foreignKeys": { + "databases_user_id_users_id_fk": { + "name": "databases_user_id_users_id_fk", + "tableFrom": "databases", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "migrations": { + "name": "migrations", + "columns": { + "version": { + "name": "version", + "type": "integer", + "primaryKey": true, + "notNull": true, + "autoincrement": true + }, + "description": { + "name": "description", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "sql_script": { + "name": "sql_script", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": {}, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + }, + "revlogs": { + "name": "revlogs", + "columns": { + "id": { + "name": "id", + "type": "text", + "primaryKey": true, + "notNull": true, + "autoincrement": false + }, + "user_id": { + "name": "user_id", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "difficulty": { + "name": "difficulty", + "type": "real", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "due": { + "name": "due", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "due_timestamp_ms": { + "name": "due_timestamp_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "review": { + "name": "review", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "review_timestamp_ms": { + "name": "review_timestamp_ms", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "learning_steps": { + "name": "learning_steps", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "scheduled_days": { + "name": "scheduled_days", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "stability": { + "name": "stability", + "type": "real", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "state": { + "name": "state", + "type": "integer", + "primaryKey": false, + "notNull": false, + "autoincrement": false, + "default": 0 + }, + "direction": { + "name": "direction", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'forward'" + }, + "source": { + "name": "source", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "'review'" + }, + "created_at": { + "name": "created_at", + "type": "integer", + "primaryKey": false, + "notNull": true, + "autoincrement": false, + "default": "(unixepoch())" + } + }, + "indexes": {}, + "foreignKeys": { + "revlogs_user_id_users_id_fk": { + "name": "revlogs_user_id_users_id_fk", + "tableFrom": "revlogs", + "tableTo": "users", + "columnsFrom": [ + "user_id" + ], + "columnsTo": [ + "id" + ], + "onDelete": "no action", + "onUpdate": "no action" + } + }, + "compositePrimaryKeys": {}, + "uniqueConstraints": {}, + "checkConstraints": {} + } + }, + "views": {}, + "enums": {}, + "_meta": { + "schemas": {}, + "tables": {}, + "columns": {} + }, + "internal": { + "indexes": {} + } +} \ No newline at end of file diff --git a/apps/api/drizzle/meta/_journal.json b/apps/api/drizzle/meta/_journal.json index 08079b3d..b2a0f51b 100644 --- a/apps/api/drizzle/meta/_journal.json +++ b/apps/api/drizzle/meta/_journal.json @@ -99,6 +99,13 @@ "when": 1772182472786, "tag": "0013_damp_scarecrow", "breakpoints": true + }, + { + "idx": 14, + "version": "6", + "when": 1774665611927, + "tag": "0014_omniscient_rumiko_fujikawa", + "breakpoints": true } ] } \ No newline at end of file diff --git a/apps/api/package.json b/apps/api/package.json index 5c1be7fd..f4c495da 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -19,26 +19,29 @@ }, "dependencies": { "@better-auth/expo": "1.4.19", + "@cloudflare/tanstack-ai": "^0.1.5", "@elysiajs/cors": "^1.4.0", "@libsql/client": "^0.10.0", "@polar-sh/better-auth": "^1.8.1", "@polar-sh/sdk": "^0.42.1", "@sentry/bun": "^10.32.1", + "@tanstack/ai": "^0.6.1", "@tursodatabase/api": "^1.9.0", "@upstash/redis": "^1.36.0", "better-auth": "1.4.19", "dotenv": "^16.4.5", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3", - "elysia": "^1.4.19", + "elysia": "1.4.27", "jose": "^6.1.3", "nanoid": "^5.0.7", "pino": "^9.6.0", "resend": "^4.6.0", "tsx": "^4.7.1", - "zod": "4.0.17" + "zod": "4.3.6" }, "devDependencies": { + "@bahar/drizzle-user-db-schemas": "workspace:*", "@bahar/typescript-config": "workspace:*", "bun-types": "^1.3.5", "drizzle-kit": "0.31.9", diff --git a/apps/api/src/auth.ts b/apps/api/src/auth.ts index eeb8bc0d..162dfd07 100644 --- a/apps/api/src/auth.ts +++ b/apps/api/src/auth.ts @@ -6,6 +6,7 @@ import { usage, webhooks, } from "@polar-sh/better-auth"; +// @ts-ignore - resolves under Node moduleResolution but not Bundler (web app imports App type from this file) import type { WebhookSubscriptionUpdatedPayload } from "@polar-sh/sdk/dist/commonjs/models/components/webhooksubscriptionupdatedpayload"; import { betterAuth } from "better-auth"; import { drizzleAdapter } from "better-auth/adapters/drizzle"; @@ -308,7 +309,7 @@ export const auth = betterAuth({ }), polar({ client: polarClient, - createCustomerOnSignUp: true, + createCustomerOnSignUp: config.NODE_ENV === "production", use: [ checkout({ products: [ diff --git a/apps/api/src/db/schema/revlogs.ts b/apps/api/src/db/schema/revlogs.ts new file mode 100644 index 00000000..a5290e1c --- /dev/null +++ b/apps/api/src/db/schema/revlogs.ts @@ -0,0 +1,48 @@ +import { FLASHCARD_DIRECTIONS } from "@bahar/drizzle-user-db-schemas"; +import { sql } from "drizzle-orm"; +import { integer, real, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { createInsertSchema, createSelectSchema } from "drizzle-zod"; +import { users } from "./auth"; + +/** + * The source of the revlog. Review refers to a manual + * review by the user. Clear backlog refers to a bulk reset + * with the clear backlog button. + * + * Typically we want to exclude the latter from most + * statistics. + */ +export const REVLOG_SOURCES = ["review", "clear_backlog"] as const; + +export const revlogs = sqliteTable("revlogs", { + id: text("id").primaryKey().notNull(), + user_id: text("user_id") + .notNull() + .references(() => users.id), + + difficulty: real("difficulty").default(0), + due: text("due").notNull(), + due_timestamp_ms: integer("due_timestamp_ms").notNull(), + review: text("review").notNull(), + review_timestamp_ms: integer("review_timestamp_ms").notNull(), + learning_steps: integer("learning_steps").default(0), + scheduled_days: integer("scheduled_days").default(0), + stability: real("stability").default(0), + state: integer("state").default(0), + + direction: text("direction", { enum: FLASHCARD_DIRECTIONS }) + .notNull() + .default("forward"), + + source: text("source", { enum: REVLOG_SOURCES }).notNull().default("review"), + + created_at: integer("created_at", { mode: "timestamp" }) + .notNull() + .default(sql`(unixepoch())`), +}); + +export type Revlogs = typeof revlogs.$inferSelect; +export type InsertRevlogs = typeof revlogs.$inferInsert; + +export const InsertRevlogsSchema = createInsertSchema(revlogs); +export const SelectRevlogsSchema = createSelectSchema(revlogs); diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 34da8e54..c896e208 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -12,8 +12,10 @@ Sentry.init({ import { cors } from "@elysiajs/cors"; import { Elysia } from "elysia"; import { betterAuthGuard, httpLogger } from "./middleware"; +import { aiRouter } from "./routers/ai"; import { databasesRouter } from "./routers/databases"; import { migrationsRouter } from "./routers/migrations"; +import { statsRouter } from "./routers/stats"; import { getAllowedDomains } from "./utils"; import { config } from "./utils/config"; import { logger, traceContext } from "./utils/logger"; @@ -53,6 +55,8 @@ const app = new Elysia() .get("/health", () => "OK") .use(migrationsRouter) .use(databasesRouter) + .use(aiRouter) + .use(statsRouter) .onError(({ error, code }) => { Sentry.captureException(error); diff --git a/apps/api/src/middleware.ts b/apps/api/src/middleware.ts index 4a9f0dff..c4fbe128 100644 --- a/apps/api/src/middleware.ts +++ b/apps/api/src/middleware.ts @@ -1,10 +1,31 @@ import * as Sentry from "@sentry/bun"; import Elysia from "elysia"; -import { auth } from "./auth"; +import { auth, type User } from "./auth"; +import { redisClient } from "./clients/redis"; import { getTraceContext } from "./utils/logger"; export { httpLogger } from "./middleware/http-logger"; +export type RateLimiterOpts = { + prefix: string; + maxReqs: number; + windowSecs: number; +}; + +type NonNullablePlan = NonNullable | "free"; + +/** + * Subscription plan levels as a hierarchy so that + * newer plans have access to lower plans. + */ +const PLAN_LEVELS = { + free: 0, + pro: 1, + // the `satisfies` here ensures that if we add new plans, + // then this will throw a type error until we've added + // it to the map here. This is why we don't use an enum here +} as const satisfies Record; + export const betterAuthGuard = new Elysia({ name: "better-auth" }) .mount(auth.handler) .macro({ @@ -31,4 +52,52 @@ export const betterAuthGuard = new Elysia({ name: "better-auth" }) }; }, }), + planGuard: (plan: User["plan"]) => ({ + async resolve(opts) { + // `user` becomes available in context from the auth macro + const { user, status } = opts as typeof opts & { user: User }; + + // allow any user to access free tier, + // no plan means free tier + if (!plan) return; + + const userPlanLevel = PLAN_LEVELS[user.plan ?? "free"]; + const requiredPlanLevel = PLAN_LEVELS[plan]; + + if ( + userPlanLevel >= requiredPlanLevel && + user.subscriptionStatus === "active" + ) { + return; + } + + return status(403, { + message: `${plan} plan required.`, + }); + }, + }), + userRateLimit: (limits: RateLimiterOpts | RateLimiterOpts[]) => ({ + async resolve(opts) { + const { status, user } = opts as typeof opts & { user: User }; + const limitsArray = Array.isArray(limits) ? limits : [limits]; + + for (const { prefix, maxReqs, windowSecs } of limitsArray) { + const key = `${prefix}:${user.id}`; + const count = (await redisClient.get(key)) as number; + + if (!count) { + await redisClient.set(key, 1, { ex: windowSecs }); + continue; + } + + if (count >= maxReqs) { + return status(429, { message: "Rate limit exceeded" }); + } + + await redisClient.incr(key); + } + + return; + }, + }), }); diff --git a/apps/api/src/middleware/http-logger.ts b/apps/api/src/middleware/http-logger.ts index 6c6449ed..60da35dd 100644 --- a/apps/api/src/middleware/http-logger.ts +++ b/apps/api/src/middleware/http-logger.ts @@ -28,7 +28,7 @@ export const httpLogger = new Elysia({ name: "http-logger" }) if (request.method === "OPTIONS" || requestPath === "/health") return; const duration = Date.now() - requestStartTime; - const status = response?.status ?? 200; + const status = (response as { status?: number })?.status ?? 200; const level = status >= 500 ? "error" : "info"; logger[level]( diff --git a/apps/api/src/routers/ai.ts b/apps/api/src/routers/ai.ts new file mode 100644 index 00000000..6fdda637 --- /dev/null +++ b/apps/api/src/routers/ai.ts @@ -0,0 +1,190 @@ +import { + ExampleSchema, + InsertDictionaryEntrySchema, + IsmMorphologySchema, + RootLettersSchema, + VerbMorphologySchema, + type WordType, +} from "@bahar/drizzle-user-db-schemas"; +import { + type AiGatewayAdapterConfig, + createOpenAiChat, +} from "@cloudflare/tanstack-ai"; +import { chat } from "@tanstack/ai"; +import Elysia from "elysia"; +import { z } from "zod"; +import { betterAuthGuard, type RateLimiterOpts } from "../middleware"; +import { config } from "../utils/config"; + +const aiGatewayConfig: AiGatewayAdapterConfig = { + accountId: config.CLOUDFLARE_ACCOUNT_ID, + gatewayId: config.CLOUDFLARE_AI_GATEWAY_ID, + cfApiKey: config.CF_AI_GATEWAY_TOKEN, +}; + +const aiAdapter = createOpenAiChat("gpt-4o", { + ...aiGatewayConfig, +}); + +const aiAdapterNoCache = createOpenAiChat("gpt-4o", { + ...aiGatewayConfig, + skipCache: true, +}); + +const baseFields = { + definition: z + .string() + .optional() + .describe( + "Arabic-only dictionary definition in the style of المعجم الوسيط — a synonym or brief explanation in Arabic. No English words, translations, or parenthetical notes." + ), + root: RootLettersSchema.optional().describe( + 'The base trilateral or quadrilateral root (الجذر), not augmented letters. e.g. استغفر → ["غ", "ف", "ر"], تعلّم → ["ع", "ل", "م"].' + ), +}; + +const ExampleOutputSchema = ExampleSchema.omit({ context: true }); + +const IsmOutputSchema = z.object({ + ...baseFields, + morphology: IsmMorphologySchema.optional(), +}); + +const VerbOutputSchema = z.object({ + ...baseFields, + morphology: VerbMorphologySchema.optional(), +}); + +const SimpleOutputSchema = z.object({ + ...baseFields, +}); + +/** + * Separate function to return the full schema for a specific entry type. + * + * This is so that we can pass a smaller schema to the model for better performance. + */ +const getOutputSchema = (type: WordType) => { + switch (type) { + case "ism": + return IsmOutputSchema; + case "fi'l": + return VerbOutputSchema; + default: + return SimpleOutputSchema; + } +}; + +const AUTOCOMPLETE_SYSTEM_PROMPT = ` +You are an Arabic linguistics expert generating dictionary data for a language learning app. + +Tashkeel rules — apply to ALL Arabic text you produce (isolated words, definitions, etc.): +- Include full بنائية tashkeel on every word. +- NEVER add إعراب on the final letter. Strip all tanween (ًٌٍ) and any final ُ/َ/ِ that only exists for case/mood. This applies to EVERY Arabic word you output. + ✓ كِتَاب ✗ كِتَابٌ + ✓ يَكْتُب ✗ يَكْتُبُ (present tense: no final dhamma) + ✓ كَاتِب ✗ كَاتِبٌ (participle: no tanween) + ✓ مَكْتُوب ✗ مَكْتُوبٌ + ✓ كُتُب ✗ كُتُبٌ (plural: no tanween) + ✓ كِتَابَة ✗ كِتَابَةٌ (masdar: no tanween) + ✓ يَسْتَغْفِر ✗ يَسْتَغْفِرُ (no final dhamma) + Exception: diptotes (الممنوع من الصرف) show dhamma only. +- Isolated words must be indefinite — no ال. + +Definition rules: +- The definition MUST be entirely in Arabic — no English, no transliterations, no parenthetical translations. +- Write a brief Arabic synonym or explanation as it would appear in المعجم الوسيط. + +Morphology rules: +- Plurals must be real, well-known, attested forms. Do NOT invent or guess broken plurals. + Example: كِتَاب → كُتُب (correct). Do NOT generate fabricated patterns like كتوب or أكتاب. +- Only include plural forms you are certain are standard Arabic. Omit the field entirely if unsure. +- Each plural entry stands alone. The "details" field is for usage context only (e.g. "formal", "colloquial"). Do NOT mention other plural forms, do NOT compare plurals, do NOT say "also exists" or "less common than". +- Omit the gender field for masadir (verbal nouns) and abstract nouns where gender is not meaningful (e.g. تقوى، صبر، عِلم). + +Optional "details" and "context" fields: +- These fields (on plurals, masadir, examples, etc.) should be LEFT EMPTY by default. +- Only fill them when there is genuinely non-obvious information, such as a word being archaic, dialect-specific, or restricted to a specific register. +- Straightforward, common forms need no annotation. When in doubt, omit. + +Other rules: +- Omit any field you are not confident about rather than guessing. +`; + +const EXAMPLES_SYSTEM_PROMPT = ` +You are an Arabic linguistics expert generating a single example sentence for a language learning app. + +Generate one example sentence for the given word. Use functional tashkeel only: +- Mark shadda (ّ) always — it changes meaning. +- Vocalize ambiguous words where the consonant skeleton has multiple readings (e.g. عَلِمَ vs عَلَّمَ). +- Vocalize key vocabulary the learner is likely studying. +- Leave common, unambiguous words completely bare (في، من، على، هو، كان، etc.). +- Do NOT add i'rab (case/mood endings) to sentence words. +- Example: "قَرَأت كِتَابًا في تاريخ العالم" — only the verb and key noun are vocalized. +- Always include an English translation. +- Use the word in a natural, varied context. +`; + +const aiRateLimits: RateLimiterOpts[] = [ + { prefix: "ratelimit:ai:autocomplete:min", maxReqs: 5, windowSecs: 60 }, + { prefix: "ratelimit:ai:autocomplete:hr", maxReqs: 50, windowSecs: 60 * 60 }, + { + prefix: "ratelimit:ai:autocomplete:day", + maxReqs: 150, + windowSecs: 60 * 60 * 24, + }, +]; + +export const aiRouter = new Elysia({ prefix: "/ai" }) + .use(betterAuthGuard) + .post( + "/autocomplete", + async ({ body: { translation, type, word } }) => { + return chat({ + adapter: aiAdapter as never, + systemPrompts: [AUTOCOMPLETE_SYSTEM_PROMPT], + messages: [ + { + role: "user", + content: `Word: "${word}", Translation: "${translation}", Type: "${type}"`, + }, + ], + outputSchema: getOutputSchema(type), + }); + }, + { + auth: "user", + planGuard: "pro", + userRateLimit: aiRateLimits, + body: InsertDictionaryEntrySchema.pick({ + word: true, + translation: true, + type: true, + }), + } + ) + .post( + "/examples", + async ({ body: { word, translation } }) => { + return chat({ + adapter: aiAdapterNoCache as never, + systemPrompts: [EXAMPLES_SYSTEM_PROMPT], + messages: [ + { + role: "user", + content: `Word: "${word}", Translation: "${translation}"`, + }, + ], + outputSchema: ExampleOutputSchema, + }); + }, + { + auth: "user", + planGuard: "pro", + userRateLimit: aiRateLimits, + body: InsertDictionaryEntrySchema.pick({ + word: true, + translation: true, + }), + } + ); diff --git a/apps/api/src/routers/stats.ts b/apps/api/src/routers/stats.ts new file mode 100644 index 00000000..e90fa7db --- /dev/null +++ b/apps/api/src/routers/stats.ts @@ -0,0 +1,64 @@ +import { Elysia } from "elysia"; +import { nanoid } from "nanoid"; +import { z } from "zod"; +import { db } from "../db"; +import { InsertRevlogsSchema, revlogs } from "../db/schema/revlogs"; +import { betterAuthGuard } from "../middleware"; + +const RevlogBodySchema = InsertRevlogsSchema.omit({ + id: true, + user_id: true, + created_at: true, + due_timestamp_ms: true, + review_timestamp_ms: true, +}); + +export const statsRouter = new Elysia({ prefix: "/stats" }) + .use(betterAuthGuard) + .post( + "/revlogs", + async ({ user, body }) => { + const id = nanoid(); + const userId = user.id; + const due_timestamp_ms = new Date(body.due).getTime(); + const review_timestamp_ms = new Date(body.review).getTime(); + + await db.insert(revlogs).values({ + ...body, + id, + user_id: userId, + due_timestamp_ms, + review_timestamp_ms, + }); + + return { success: true } as const; + }, + { + auth: "user", + body: RevlogBodySchema, + } + ) + .post( + "/revlogs/batch", + async ({ user, body }) => { + const userId = user.id; + + const values = body.entries.map((entry) => ({ + ...entry, + id: nanoid(), + user_id: userId, + due_timestamp_ms: new Date(entry.due).getTime(), + review_timestamp_ms: new Date(entry.review).getTime(), + })); + + await db.insert(revlogs).values(values); + + return { success: true } as const; + }, + { + auth: "user", + body: z.object({ + entries: z.array(RevlogBodySchema), + }), + } + ); diff --git a/apps/api/src/utils/config.ts b/apps/api/src/utils/config.ts index 16008a22..feea0e6e 100644 --- a/apps/api/src/utils/config.ts +++ b/apps/api/src/utils/config.ts @@ -44,6 +44,10 @@ const EnvironmentVariablesSchema = z.object({ POLAR_WEBHOOK_SECRET: z.string().min(1), POLAR_PRO_PRODUCT_ID: z.string().min(1), POLAR_PRO_ANNUAL_PRODUCT_ID: z.string().min(1), + + CF_AI_GATEWAY_TOKEN: z.string().min(1), + CLOUDFLARE_ACCOUNT_ID: z.string().min(1), + CLOUDFLARE_AI_GATEWAY_ID: z.string().min(1), }); export type EnvironmentVariables = z.infer; diff --git a/apps/marketing/public/og-image.png b/apps/marketing/public/og-image.png new file mode 100644 index 00000000..67669a40 Binary files /dev/null and b/apps/marketing/public/og-image.png differ diff --git a/apps/marketing/src/layouts/BaseLayout.astro b/apps/marketing/src/layouts/BaseLayout.astro index a8bdb92b..4ad63b78 100644 --- a/apps/marketing/src/layouts/BaseLayout.astro +++ b/apps/marketing/src/layouts/BaseLayout.astro @@ -40,6 +40,9 @@ const { + + + + diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 38277925..995f7095 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -67,7 +67,7 @@ "sonner-native": "^0.21.0", "ts-fsrs": "^5.2.3", "uniwind": "^1.2.2", - "zod": "4.0.17" + "zod": "4.3.6" }, "devDependencies": { "@babel/core": "^7.25.2", diff --git a/apps/web/README.md b/apps/web/README.md index 5cabdad6..e5045fdc 100644 --- a/apps/web/README.md +++ b/apps/web/README.md @@ -97,7 +97,7 @@ To add a new color theme: } ``` -2. **Register the theme** in `src/atoms/theme.ts`: +1. **Register the theme** in `src/atoms/theme.ts`: ```typescript export enum ColorTheme { @@ -107,7 +107,7 @@ export enum ColorTheme { } ``` -3. **Add translation** in `src/components/ThemeMenu.tsx`: +1. **Add translation** in `src/components/ThemeMenu.tsx`: ```typescript const ColorThemeLabel: FC<{ theme: ColorTheme }> = ({ theme }) => { @@ -119,7 +119,7 @@ const ColorThemeLabel: FC<{ theme: ColorTheme }> = ({ theme }) => { }; ``` -4. **Extract translations**: `pnpm run i18n:extract` +1. **Extract translations**: `pnpm run i18n:extract` ## Environment Variables diff --git a/apps/web/package.json b/apps/web/package.json index 25b975e4..34c0b9c3 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -31,6 +31,7 @@ "@sentry/vite-plugin": "^4.6.0", "@tailwindcss/postcss": "^4.1.7", "@tailwindcss/vite": "4.1.7", + "@tanstack/ai-react": "^0.6.1", "@tanstack/pacer": "^0.16.3", "@tanstack/react-query": "^5.82.2", "@tanstack/react-query-devtools": "^5.82.2", @@ -51,7 +52,7 @@ "react-dom": "19.0.0", "react-hook-form": "^7.56.4", "ts-fsrs": "^5.2.3", - "zod": "4.0.17" + "zod": "4.3.6" }, "devDependencies": { "@bahar/design-system": "workspace:*", @@ -65,6 +66,7 @@ "@swc/core": "1.11.21", "@tanstack/router-devtools": "^1.91.3", "@tanstack/router-plugin": "^1.91.1", + "@types/bun": "^1.3.11", "@types/node": "^20.10.6", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", diff --git a/apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx b/apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx index 3c6bfc13..2a1ae286 100644 --- a/apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx +++ b/apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx @@ -1,3 +1,4 @@ +import { cn } from "@bahar/design-system"; import { Accordion, AccordionContent, @@ -22,15 +23,29 @@ import { } from "@bahar/web-ui/components/form"; import { Input } from "@bahar/web-ui/components/input"; import { Separator } from "@bahar/web-ui/components/separator"; -import { Trans } from "@lingui/react/macro"; -import { Plus } from "lucide-react"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@bahar/web-ui/components/tooltip"; +import { Trans, useLingui } from "@lingui/react/macro"; +import { useMutation } from "@tanstack/react-query"; +import { Plus, Sparkles } from "lucide-react"; import { AnimatePresence, motion } from "motion/react"; import { useFieldArray, useFormContext } from "react-hook-form"; +import { toast } from "sonner"; +import { api } from "@/lib/api"; +import { authClient } from "@/lib/auth-client"; import type { FormSchema } from "@/lib/schemas/dictionary"; import type { z } from "@/lib/zod"; export const AdditionalDetailsFormSection = () => { + const { t } = useLingui(); const form = useFormContext>(); + const { data: userData } = authClient.useSession(); + const isProUser = + userData?.user.plan === "pro" && + userData.user.subscriptionStatus !== "canceled"; const { fields: examplesFields, @@ -56,6 +71,33 @@ export const AdditionalDetailsFormSection = () => { const hasMorphology = type === "fi'l" || type === "ism"; const hasAntonyms = type === "ism" || type === "fi'l" || type === "harf"; + const word = form.watch("word"); + const translation = form.watch("translation"); + + const generateExample = useMutation({ + mutationFn: async () => { + const { data, error } = await api.ai.examples.post({ word, translation }); + if (error) throw error; + return data; + }, + onError: (error) => { + const status = (error as { status?: number }).status; + if (status === 429) { + toast.error(t`Rate limit reached`, { + description: t`Please wait before trying again.`, + }); + } else { + toast.error(t`Failed to generate example`, { + description: t`Something went wrong. Please try again.`, + }); + } + }, + onSuccess: (data) => { + if (!data?.sentence) return; + appendExample(data); + }, + }); + return ( @@ -268,18 +310,61 @@ export const AdditionalDetailsFormSection = () => { })} - +
+ + + + + + + + + + {!isProUser && ( + + Upgrade to Pro to generate examples. + + )} + +
{hasAntonyms && ( diff --git a/apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx b/apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx index b91ec08b..569362a1 100644 --- a/apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx +++ b/apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx @@ -212,9 +212,9 @@ export const IsmMorphologyCardSection = () => { = ({ async (grade: Grade) => { if (!(schedulingCards && currentCard)) return; - const selectedCard = schedulingCards[grade].card; + const { card: selectedCard, log } = schedulingCards[grade]; const dueTimestampMs = selectedCard.due.getTime(); const lastReviewTimestampMs = selectedCard?.last_review ? selectedCard.last_review.getTime() @@ -194,6 +195,13 @@ export const FlashcardDrawer: FC = ({ setShowAnswer(false); setCards((prev) => prev.filter((c) => c.id !== currentCard.id)); + await api.stats.revlogs.post({ + ...log, + due: log.due.toISOString(), + review: log.review.toISOString(), + direction: currentCard.direction, + }); + await updateFlashcard({ id: currentCard.id, updates: localUpdates, diff --git a/apps/web/src/hooks/db/index.ts b/apps/web/src/hooks/db/index.ts index 30ccc276..bfc75193 100644 --- a/apps/web/src/hooks/db/index.ts +++ b/apps/web/src/hooks/db/index.ts @@ -76,6 +76,14 @@ export const useDeleteDictionaryEntry = () => { const { reset } = useSearch(); const { mutateAsync } = useMutation({ mutationFn: dictionaryEntriesTable.delete.mutation, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: flashcardsTable.today.cacheOptions.queryKey, + }); + queryClient.invalidateQueries({ + queryKey: flashcardsTable.counts.cacheOptions.queryKey, + }); + }, }); return { diff --git a/apps/web/src/lib/api.ts b/apps/web/src/lib/api.ts index 4cd90c21..48cc102a 100644 --- a/apps/web/src/lib/api.ts +++ b/apps/web/src/lib/api.ts @@ -2,7 +2,7 @@ import { treaty } from "@elysiajs/eden"; import type { App } from "../../../api/src/index"; import { generateTraceId, TRACE_ID_HEADER } from "./utils"; -export const api = treaty(import.meta.env.VITE_API_BASE_URL, { +export const api = treaty(import.meta.env.VITE_API_BASE_URL!, { fetch: { credentials: "include", }, diff --git a/apps/web/src/lib/db/index.ts b/apps/web/src/lib/db/index.ts index 3dd04ac9..e11b6b80 100644 --- a/apps/web/src/lib/db/index.ts +++ b/apps/web/src/lib/db/index.ts @@ -172,6 +172,7 @@ const _initDbInternal = async () => { if (!connectionResult.ok) return connectionResult; db = connectionResult.value; + drizzleDb = drizzle( async (sql, params, method) => { if (!db) return { rows: [] }; diff --git a/apps/web/src/lib/db/operations/dictionary-entries.ts b/apps/web/src/lib/db/operations/dictionary-entries.ts index 9612b773..2e48c07c 100644 --- a/apps/web/src/lib/db/operations/dictionary-entries.ts +++ b/apps/web/src/lib/db/operations/dictionary-entries.ts @@ -274,6 +274,12 @@ export const dictionaryEntriesTable = { throw new Error(`Dictionary entry not found: ${id}`); } + // Explicitly delete flashcards since sync-wasm doesn't support + // ON DELETE CASCADE (foreign key actions other than NO ACTION) + await db + .prepare("DELETE FROM flashcards WHERE dictionary_entry_id = ?;") + .run([id]); + await db .prepare("DELETE FROM dictionary_entries WHERE id = ?;") .run([id]); diff --git a/apps/web/src/lib/db/operations/flashcards.ts b/apps/web/src/lib/db/operations/flashcards.ts index 612d910f..3f71165b 100644 --- a/apps/web/src/lib/db/operations/flashcards.ts +++ b/apps/web/src/lib/db/operations/flashcards.ts @@ -4,7 +4,9 @@ import { DICTIONARY_ENTRY_COLUMNS, } from "@bahar/db-operations"; import { + dictionaryEntries, FlashcardState, + flashcards, type InsertFlashcard, type RawFlashcard, type SelectDeck, @@ -14,9 +16,11 @@ import { } from "@bahar/drizzle-user-db-schemas"; import { createScheduler } from "@bahar/fsrs"; import * as Sentry from "@sentry/react"; +import { and, eq, inArray, lte, sql } from "drizzle-orm"; import { nanoid } from "nanoid"; -import { type Card, Rating } from "ts-fsrs"; -import { ensureDb } from ".."; +import { type Card, Rating, type ReviewLog } from "ts-fsrs"; +import { api } from "../../api"; +import { ensureDb, getDrizzleDb } from ".."; import type { TableOperation } from "./types"; /** @@ -525,7 +529,8 @@ export const flashcardsTable = { filters?: SelectDeck["filters"]; backlogThresholdDays?: number; } = {}): AsyncGenerator<{ cleared: number; total: number }> { - const db = await ensureDb(); + await ensureDb(); + const drizzleDb = getDrizzleDb(); const now = Date.now(); const backlogThresholdMs = now - daysToMs(backlogThresholdDays); @@ -541,42 +546,51 @@ export const flashcardsTable = { FlashcardState.RE_LEARNING, ]; - const directions = showReverse ? ["forward", "reverse"] : ["forward"]; - - // Build query to get backlog cards - const whereConditions: string[] = ["f.due_timestamp_ms <= ?"]; - const params: unknown[] = [backlogThresholdMs]; - - whereConditions.push( - `f.direction IN (${directions.map(() => "?").join(", ")})` - ); - params.push(...directions); - - whereConditions.push(`f.state IN (${state.map(() => "?").join(", ")})`); - params.push(...state); - - whereConditions.push(`d.type IN (${types.map(() => "?").join(", ")})`); - params.push(...types); - - whereConditions.push("f.is_hidden = 0"); - - const whereClause = whereConditions.join(" AND "); - - const tagJoin = tags.length > 0 ? ", json_each(d.tags) AS jt" : ""; - const tagCondition = - tags.length > 0 - ? ` AND jt.value IN (${tags.map(() => "?").join(", ")})` - : ""; - const tagParams = tags.length > 0 ? tags : []; - - const sql = `SELECT DISTINCT f.* - FROM flashcards f - LEFT JOIN dictionary_entries d ON f.dictionary_entry_id = d.id${tagJoin} - WHERE ${whereClause}${tagCondition}`; - - const backlogCards: RawFlashcard[] = await db - .prepare(sql) - .all([...params, ...tagParams]); + const directions: SelectFlashcard["direction"][] = showReverse + ? ["forward", "reverse"] + : ["forward"]; + + const conditions = [ + lte(flashcards.due_timestamp_ms, backlogThresholdMs), + inArray(flashcards.direction, directions), + inArray(flashcards.state, state), + inArray(dictionaryEntries.type, types), + eq(flashcards.is_hidden, false), + ...(tags.length > 0 + ? [ + sql`EXISTS (SELECT 1 FROM json_each(${dictionaryEntries.tags}) WHERE value IN (${sql.join( + tags.map((t) => sql`${t}`), + sql`, ` + )}))`, + ] + : []), + ]; + + const backlogCards = await drizzleDb + .selectDistinct({ + id: flashcards.id, + dictionary_entry_id: flashcards.dictionary_entry_id, + difficulty: flashcards.difficulty, + due: flashcards.due, + due_timestamp_ms: flashcards.due_timestamp_ms, + elapsed_days: flashcards.elapsed_days, + lapses: flashcards.lapses, + last_review: flashcards.last_review, + last_review_timestamp_ms: flashcards.last_review_timestamp_ms, + learning_steps: flashcards.learning_steps, + reps: flashcards.reps, + scheduled_days: flashcards.scheduled_days, + stability: flashcards.stability, + state: flashcards.state, + direction: flashcards.direction, + is_hidden: flashcards.is_hidden, + }) + .from(flashcards) + .leftJoin( + dictionaryEntries, + eq(flashcards.dictionary_entry_id, dictionaryEntries.id) + ) + .where(and(...conditions)); const total = backlogCards.length; @@ -586,67 +600,77 @@ export const flashcardsTable = { const f = createScheduler(); const nowDate = new Date(); + const revlogEntries: { + log: ReviewLog; + direction: SelectFlashcard["direction"]; + }[] = []; - await db.exec("BEGIN TRANSACTION"); + await drizzleDb.run(sql`BEGIN TRANSACTION`); try { for (let i = 0; i < backlogCards.length; i++) { - const rawCard = backlogCards[i]; + const row = backlogCards[i]; const card: Card = { - due: new Date(rawCard.due), - stability: rawCard.stability ?? 0, - difficulty: rawCard.difficulty ?? 0, - elapsed_days: rawCard.elapsed_days ?? 0, - scheduled_days: rawCard.scheduled_days ?? 0, - reps: rawCard.reps ?? 0, - lapses: rawCard.lapses ?? 0, - state: rawCard.state ?? FlashcardState.NEW, - learning_steps: rawCard.learning_steps ?? 0, - last_review: rawCard.last_review - ? new Date(rawCard.last_review) + due: new Date(row.due), + stability: row.stability ?? 0, + difficulty: row.difficulty ?? 0, + elapsed_days: row.elapsed_days ?? 0, + scheduled_days: row.scheduled_days ?? 0, + reps: row.reps ?? 0, + lapses: row.lapses ?? 0, + state: row.state ?? FlashcardState.NEW, + learning_steps: row.learning_steps ?? 0, + last_review: row.last_review + ? new Date(row.last_review) : undefined, }; const scheduling = f.repeat(card, nowDate); - const newCard = scheduling[Rating.Hard].card; - - await db - .prepare( - `UPDATE flashcards SET - due = ?, - due_timestamp_ms = ?, - last_review = ?, - last_review_timestamp_ms = ?, - state = ?, - stability = ?, - difficulty = ?, - reps = ?, - lapses = ?, - elapsed_days = ?, - scheduled_days = ? - WHERE id = ?` - ) - .run([ - newCard.due.toISOString(), - newCard.due.getTime(), - newCard.last_review?.toISOString() ?? null, - newCard.last_review?.getTime() ?? null, - newCard.state, - newCard.stability, - newCard.difficulty, - newCard.reps, - newCard.lapses, - newCard.elapsed_days, - newCard.scheduled_days, - rawCard.id, - ]); + const { card: newCard, log } = scheduling[Rating.Hard]; + + revlogEntries.push({ log, direction: row.direction }); + + await drizzleDb + .update(flashcards) + .set({ + due: newCard.due.toISOString(), + due_timestamp_ms: newCard.due.getTime(), + last_review: newCard.last_review?.toISOString() ?? null, + last_review_timestamp_ms: newCard.last_review?.getTime() ?? null, + state: newCard.state, + stability: newCard.stability, + difficulty: newCard.difficulty, + reps: newCard.reps, + lapses: newCard.lapses, + elapsed_days: newCard.elapsed_days, + scheduled_days: newCard.scheduled_days, + }) + .where(eq(flashcards.id, row.id)); yield { cleared: i + 1, total }; } - await db.exec("COMMIT"); + await drizzleDb.run(sql`COMMIT`); } catch (err) { - await db.exec("ROLLBACK"); + await drizzleDb.run(sql`ROLLBACK`); throw err; } + + if (revlogEntries.length > 0) { + api.stats.revlogs.batch + .post({ + entries: revlogEntries.map(({ log, direction }) => ({ + ...log, + due: log.due.toISOString(), + review: log.review.toISOString(), + direction, + source: "clear_backlog" as const, + })), + }) + .catch((err) => { + Sentry.captureException(err, { + tags: { operation: "clearBacklog.revlogs" }, + }); + }); + } }, cacheOptions: { queryKey: ["turso.flashcards.clearBacklog"], diff --git a/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx b/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx index 3f919cb0..b8dcd3ad 100644 --- a/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx +++ b/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx @@ -9,10 +9,16 @@ import { } from "@bahar/web-ui/components/breadcrumb"; import { Button } from "@bahar/web-ui/components/button"; import { Form } from "@bahar/web-ui/components/form"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@bahar/web-ui/components/tooltip"; import { zodResolver } from "@hookform/resolvers/zod"; import { Trans, useLingui } from "@lingui/react/macro"; +import { useMutation } from "@tanstack/react-query"; import { createLazyFileRoute, Link } from "@tanstack/react-router"; -import { ChevronLeft, ChevronRight } from "lucide-react"; +import { ChevronLeft, ChevronRight, Sparkles } from "lucide-react"; import { useEffect } from "react"; import { type SubmitHandler, useForm } from "react-hook-form"; import { toast } from "sonner"; @@ -26,6 +32,8 @@ import { TagsFormSection } from "@/components/features/dictionary/add/TagsFormSe import { Page } from "@/components/Page"; import { useAddDictionaryEntry } from "@/hooks/db"; import { useDir } from "@/hooks/useDir"; +import { api } from "@/lib/api"; +import { authClient } from "@/lib/auth-client"; import { FormSchema } from "@/lib/schemas/dictionary"; import type { z } from "@/lib/zod"; @@ -80,6 +88,10 @@ const BackButton = () => { const Add = () => { const { addDictionaryEntry } = useAddDictionaryEntry(); + const { data: userData } = authClient.useSession(); + const isProUser = + userData?.user.plan === "pro" && + userData.user.subscriptionStatus !== "canceled"; const { t } = useLingui(); const form = useForm>({ @@ -174,13 +186,113 @@ const Add = () => { } }, [form.formState, form.reset]); + const canAutofill = + form.watch("word") && form.watch("translation") && form.watch("type"); + + const autofill = useMutation({ + mutationFn: async () => { + const type = form.getValues("type"); + if (!type) throw new Error("Type is required"); + + const { data, error } = await api.ai.autocomplete.post({ + word: form.getValues("word"), + translation: form.getValues("translation"), + type, + }); + if (error) throw error; + return data; + }, + onError: (error) => { + const status = (error as { status?: number }).status; + if (status === 429) { + toast.error(t`Rate limit reached`, { + description: t`Please wait before trying again.`, + }); + } else { + toast.error(t`Autofill failed`, { + description: t`Something went wrong. Please try again.`, + }); + } + }, + onSuccess: (data) => { + if (!data) return; + + if (data.definition) { + form.setValue("definition", data.definition); + } + if (data.root && data.root.length > 0) { + form.setValue("root", data.root.join(" ")); + } + + if ("morphology" in data && data.morphology) { + const type = form.getValues("type"); + const m = data.morphology as Record; + + if (type === "ism") { + const ism = m as { + singular?: string; + dual?: string; + plurals?: { word: string; details?: string }[]; + gender?: "masculine" | "feminine"; + inflection?: "indeclinable" | "diptote" | "triptote"; + }; + if (ism.singular) + form.setValue("morphology.ism.singular", ism.singular); + if (ism.dual) form.setValue("morphology.ism.dual", ism.dual); + if (ism.plurals?.length) + form.setValue("morphology.ism.plurals", ism.plurals); + if (ism.gender) form.setValue("morphology.ism.gender", ism.gender); + if (ism.inflection) + form.setValue("morphology.ism.inflection", ism.inflection); + } + + if (type === "fi'l") { + const verb = m as { + past_tense?: string; + present_tense?: string; + active_participle?: string; + passive_participle?: string; + imperative?: string; + masadir?: { word: string; details?: string }[]; + form?: string; + form_arabic?: string; + huroof?: { harf: string; meaning?: string }[]; + }; + if (verb.past_tense) + form.setValue("morphology.verb.past_tense", verb.past_tense); + if (verb.present_tense) + form.setValue("morphology.verb.present_tense", verb.present_tense); + if (verb.active_participle) + form.setValue( + "morphology.verb.active_participle", + verb.active_participle + ); + if (verb.passive_participle) + form.setValue( + "morphology.verb.passive_participle", + verb.passive_participle + ); + if (verb.imperative) + form.setValue("morphology.verb.imperative", verb.imperative); + if (verb.masadir?.length) + form.setValue("morphology.verb.masadir", verb.masadir); + if (verb.form) form.setValue("morphology.verb.form", verb.form); + if (verb.form_arabic) + form.setValue("morphology.verb.form_arabic", verb.form_arabic); + if (verb.huroof?.length) + form.setValue("morphology.verb.huroof", verb.huroof); + } + } + }, + }); + return (
-
+
@@ -189,6 +301,51 @@ const Add = () => {
+ + + + + + + + {!isProUser ? ( + + Upgrade to Pro to use AI autofill. + + ) : ( + !canAutofill && ( + + + Fill in the word, translation, and type first. + + + ) + )} + +
+ + + + + + + + {!isProUser ? ( + + Upgrade to Pro to use AI autofill. + + ) : ( + !canAutofill && ( + + + Fill in the word, translation, and type first. + + + ) + )} + +
diff --git a/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx b/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx index 8ee465cf..c954a5c3 100644 --- a/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx +++ b/apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx @@ -19,6 +19,11 @@ import { DialogTrigger, } from "@bahar/web-ui/components/dialog"; import { Form } from "@bahar/web-ui/components/form"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, +} from "@bahar/web-ui/components/tooltip"; import { zodResolver } from "@hookform/resolvers/zod"; import { Trans, useLingui } from "@lingui/react/macro"; import { useMutation, useQuery } from "@tanstack/react-query"; @@ -28,7 +33,7 @@ import { useNavigate, useRouter, } from "@tanstack/react-router"; -import { ChevronLeft, ChevronRight } from "lucide-react"; +import { ChevronLeft, ChevronRight, Sparkles } from "lucide-react"; import { type FC, useEffect } from "react"; import { type SubmitHandler, useForm } from "react-hook-form"; import { toast } from "sonner"; @@ -42,6 +47,8 @@ import { TagsFormSection } from "@/components/features/dictionary/add/TagsFormSe import { Page } from "@/components/Page"; import { useDeleteDictionaryEntry, useEditDictionaryEntry } from "@/hooks/db"; import { useDir } from "@/hooks/useDir"; +import { api } from "@/lib/api"; +import { authClient } from "@/lib/auth-client"; import { dictionaryEntriesTable } from "@/lib/db/operations/dictionary-entries"; import { flashcardsTable } from "@/lib/db/operations/flashcards"; import { queryClient } from "@/lib/query"; @@ -260,6 +267,10 @@ const getDefaultFormValues = ( const Edit = () => { const { editDictionaryEntry } = useEditDictionaryEntry(); const { wordId } = Route.useParams(); + const { data: userData } = authClient.useSession(); + const isProUser = + userData?.user.plan === "pro" && + userData.user.subscriptionStatus !== "canceled"; const { data } = useQuery({ queryFn: () => dictionaryEntriesTable.entry.query(wordId), @@ -333,6 +344,106 @@ const Edit = () => { } }; + const canAutofill = + form.watch("word") && form.watch("translation") && form.watch("type"); + + const autofill = useMutation({ + mutationFn: async () => { + const type = form.getValues("type"); + if (!type) throw new Error("Type is required"); + + const { data, error } = await api.ai.autocomplete.post({ + word: form.getValues("word"), + translation: form.getValues("translation"), + type, + }); + if (error) throw error; + return data; + }, + onError: (error) => { + const status = (error as { status?: number }).status; + if (status === 429) { + toast.error(t`Rate limit reached`, { + description: t`Please wait before trying again.`, + }); + } else { + toast.error(t`Autofill failed`, { + description: t`Something went wrong. Please try again.`, + }); + } + }, + onSuccess: (data) => { + if (!data) return; + + if (data.definition) { + form.setValue("definition", data.definition); + } + if (data.root && data.root.length > 0) { + form.setValue("root", data.root.join(" ")); + } + + if ("morphology" in data && data.morphology) { + const type = form.getValues("type"); + const m = data.morphology as Record; + + if (type === "ism") { + const ism = m as { + singular?: string; + dual?: string; + plurals?: { word: string; details?: string }[]; + gender?: "masculine" | "feminine"; + inflection?: "indeclinable" | "diptote" | "triptote"; + }; + if (ism.singular) + form.setValue("morphology.ism.singular", ism.singular); + if (ism.dual) form.setValue("morphology.ism.dual", ism.dual); + if (ism.plurals?.length) + form.setValue("morphology.ism.plurals", ism.plurals); + if (ism.gender) form.setValue("morphology.ism.gender", ism.gender); + if (ism.inflection) + form.setValue("morphology.ism.inflection", ism.inflection); + } + + if (type === "fi'l") { + const verb = m as { + past_tense?: string; + present_tense?: string; + active_participle?: string; + passive_participle?: string; + imperative?: string; + masadir?: { word: string; details?: string }[]; + form?: string; + form_arabic?: string; + huroof?: { harf: string; meaning?: string }[]; + }; + if (verb.past_tense) + form.setValue("morphology.verb.past_tense", verb.past_tense); + if (verb.present_tense) + form.setValue("morphology.verb.present_tense", verb.present_tense); + if (verb.active_participle) + form.setValue( + "morphology.verb.active_participle", + verb.active_participle + ); + if (verb.passive_participle) + form.setValue( + "morphology.verb.passive_participle", + verb.passive_participle + ); + if (verb.imperative) + form.setValue("morphology.verb.imperative", verb.imperative); + if (verb.masadir?.length) + form.setValue("morphology.verb.masadir", verb.masadir); + if (verb.form) form.setValue("morphology.verb.form", verb.form); + if (verb.form_arabic) + form.setValue("morphology.verb.form_arabic", verb.form_arabic); + if (verb.huroof?.length) + form.setValue("morphology.verb.huroof", verb.huroof); + } + } + }, + }); + const content = data!.word; return ( @@ -350,6 +461,51 @@ const Edit = () => {
+ + + + + + + + {!isProUser ? ( + + Upgrade to Pro to use AI autofill. + + ) : ( + !canAutofill && ( + + + Fill in the word, translation, and type first. + + + ) + )} + +
+ + + + + + + + {!isProUser ? ( + + Upgrade to Pro to use AI autofill. + + ) : ( + !canAutofill && ( + + + Fill in the word, translation, and type first. + + + ) + )} + +
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json index 8a6a97e6..45564e95 100644 --- a/apps/web/tsconfig.json +++ b/apps/web/tsconfig.json @@ -10,6 +10,6 @@ "@bahar/web-ui/*": ["../../packages/web-ui/src/*"], "@bahar/design-system/*": ["../../packages/design-system/src/*"] }, - "types": ["vite-plugin-pwa/client"] + "types": ["vite-plugin-pwa/client", "bun-types"] } } diff --git a/bahar.pen b/bahar.pen deleted file mode 100644 index 6c38e7d5..00000000 --- a/bahar.pen +++ /dev/null @@ -1,8177 +0,0 @@ -{ - "version": "2.8", - "children": [ - { - "type": "frame", - "id": "bi8Au", - "x": 0, - "y": 0, - "name": "Frame", - "clip": true, - "width": 800, - "height": 600, - "fill": "#FFFFFF", - "layout": "none" - }, - { - "type": "frame", - "id": "XXKiE", - "x": 900, - "y": 0, - "name": "Homepage", - "clip": true, - "width": 1440, - "height": 900, - "fill": "#FFFFFF", - "children": [ - { - "type": "frame", - "id": "KcDr9", - "name": "Sidebar", - "width": 56, - "height": "fill_container", - "fill": "#FCFCFC", - "stroke": { - "align": "inside", - "thickness": { - "right": 1 - }, - "fill": "#E0E2EC" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "XUqTU", - "name": "logoWrap", - "width": 28, - "height": 28, - "fill": { - "type": "image", - "enabled": true, - "url": "./apps/web/src/assets/logo.svg", - "mode": "fit" - }, - "justifyContent": "center", - "alignItems": "center" - }, - { - "type": "frame", - "id": "Snvsr", - "name": "navItems", - "layout": "vertical", - "gap": 4, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "AkYaN", - "name": "navHomeBtn", - "width": 36, - "height": 36, - "fill": "#4F46E518", - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "DNq19", - "name": "navHomeIcon", - "width": 20, - "height": 20, - "iconFontName": "house", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "sFseQ", - "name": "navDecksBtn", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "5ylPb", - "name": "navDecksIcon", - "width": 20, - "height": 20, - "iconFontName": "layers", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "zGj6u", - "name": "navSpacer", - "width": 36, - "height": "fill_container" - }, - { - "type": "frame", - "id": "WnwJj", - "name": "navSettingsBtn", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "tkJAB", - "name": "navSettingsIcon", - "width": 20, - "height": 20, - "iconFontName": "settings", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "evUXj", - "name": "Main Content", - "width": "fill_container", - "height": "fill_container", - "fill": "#FFFFFF", - "layout": "vertical", - "gap": 16, - "padding": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "gGLll", - "name": "searchWrap", - "width": 768, - "children": [ - { - "type": "frame", - "id": "kwZjD", - "name": "Search Input", - "width": 450, - "height": 36, - "fill": "#FFFFFF", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "effect": { - "type": "shadow", - "shadowType": "outer", - "color": "#0000000A", - "offset": { - "x": 0, - "y": 1 - }, - "blur": 2 - }, - "gap": 8, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "ps7iI", - "name": "sIcon", - "width": 16, - "height": 16, - "iconFontName": "search", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - }, - { - "type": "text", - "id": "WNhpK", - "name": "sText", - "fill": "#A1A1AA", - "content": "Search...", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "Kmxuh", - "name": "Dictionary Header", - "width": 768, - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 20, - 24, - 16, - 24 - ], - "children": [ - { - "type": "frame", - "id": "85zRr", - "name": "headerRow", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "yT1D0", - "name": "headerLeft", - "gap": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "XTRN9", - "name": "iconCircle", - "width": 40, - "height": 40, - "fill": "#4F46E518", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#4F46E530" - }, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "BLvsI", - "name": "bookIcon2", - "width": 20, - "height": 20, - "iconFontName": "book-open", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "Qsr7g", - "name": "titleBlock", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "EA5sw", - "name": "hTitle", - "fill": "#1B1B2F", - "content": "Your Dictionary", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.3 - }, - { - "type": "frame", - "id": "ZxunO", - "name": "hSubtitle", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "v0HJB", - "name": "hCount", - "fill": "#1B1B2FCC", - "content": "142", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "ifHHf", - "name": "hSep", - "fill": "#6B6F80", - "content": "results", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "F1GV4", - "name": "hTime", - "fill": "#6B6F80", - "content": "· 12ms", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "sESdr", - "name": "headerRight", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "CXmqQ", - "name": "addWordBtn", - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "Tz03R", - "name": "addWordIcon", - "width": 16, - "height": 16, - "iconFontName": "plus", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "Cbwhy", - "name": "addWordText", - "fill": "#1B1B2F", - "content": "Add word", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "Ra4vW", - "name": "reviewBtn2", - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 8, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "mqpnh", - "name": "reviewIcon2", - "width": 16, - "height": 16, - "iconFontName": "graduation-cap", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "zmlog", - "name": "reviewText2", - "fill": "#1B1B2F", - "content": "Review", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "1SVFH", - "name": "reviewBadge3", - "height": 20, - "fill": "#4F46E5", - "cornerRadius": 10, - "padding": [ - 0, - 6 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "IZNmZ", - "name": "reviewNum", - "fill": "#FFFFFF", - "content": "12", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "RqQZO", - "name": "filterToggle", - "height": 36, - "cornerRadius": 8, - "gap": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "RMt9e", - "name": "filterIcon2", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "jdTl1", - "name": "filterLabel", - "fill": "#6B6F80", - "content": "Show filters", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - }, - { - "type": "frame", - "id": "0KvLG", - "name": "Word Cards", - "width": 768, - "layout": "vertical", - "gap": 12, - "children": [ - { - "type": "frame", - "id": "ByWlm", - "name": "Word Card 1", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "rectangle", - "cornerRadius": 99, - "id": "tVCrc", - "name": "accentLine1", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 180, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#4F46E599", - "position": 0 - }, - { - "color": "#4F46E533", - "position": 1 - } - ] - }, - "width": 3, - "height": 0 - }, - { - "type": "frame", - "id": "SqWJ3", - "name": "card1Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "P1I1b", - "name": "card1Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "yCqyp", - "name": "card1Title", - "fill": "#1B1B2F", - "content": "كِتَاب", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "wxtZU", - "name": "card1Actions", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "kFpfC", - "name": "card1Copy", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "5H9Xg", - "name": "card1CopyIcon", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "AfwD8", - "name": "card1Edit", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "CLwZC", - "name": "card1EditIcon", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "CxqsF", - "name": "card1Expand", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "h9Nhl", - "name": "card1ExpandIcon", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "P5dML", - "name": "card1Trans", - "fill": "#6B6F80", - "content": "book", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "8EaZU", - "name": "Word Card 2", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "sZPG9", - "name": "card2Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "cyh61", - "name": "card2Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "hI7Xh", - "name": "card2Title", - "fill": "#1B1B2F", - "content": "كَتَبَ", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "tXc00", - "name": "card2Actions", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "X6Zya", - "name": "card2CopyBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "mRB6V", - "name": "card2CopyIcon", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "frk6y", - "name": "card2EditBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "o36HM", - "name": "card2EditIcon", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "HQCcJ", - "name": "card2ExpandBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "6oX6d", - "name": "card2ExpandIcon", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "yJrXY", - "name": "card2Trans", - "fill": "#6B6F80", - "content": "to write", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "dHsJP", - "name": "Word Card 3 (Expanded)", - "width": "fill_container", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 180, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#F4F4F880", - "position": 0 - }, - { - "color": "#F4F4F84D", - "position": 1 - } - ] - }, - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "668JD", - "name": "card3Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "5iLdO", - "name": "card3Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "ZKEJ5", - "name": "card3Title", - "fill": "#1B1B2F", - "content": "جَمِيل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "NHitg", - "name": "card3Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "JmWHN", - "name": "card3C", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "4tnvl", - "name": "card3CI", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "iugg6", - "name": "card3E", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "L20U8", - "name": "card3EI", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "N6AaI", - "name": "card3X", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "pfef4", - "name": "card3XI", - "width": 16, - "height": 16, - "iconFontName": "chevron-up", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "utLjF", - "name": "card3Trans", - "fill": "#6B6F80", - "content": "beautiful, handsome", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "rectangle", - "id": "5HuCV", - "name": "expandDivider", - "fill": "#E2E3EA80", - "width": "fill_container", - "height": 1 - }, - { - "type": "frame", - "id": "veNvH", - "name": "expandDetails", - "width": "fill_container", - "layout": "vertical", - "gap": 12, - "padding": [ - 4, - 0, - 0, - 0 - ], - "children": [ - { - "type": "frame", - "id": "VuvSK", - "name": "typeRow", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "s2hAX", - "name": "typeBadge", - "height": 24, - "fill": "#4F46E518", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "QmD9i", - "name": "typeText", - "fill": "#4F46E5", - "content": "adjective", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "FD3nx", - "name": "rootBadge", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "pRg59", - "name": "rootText", - "fill": "#6B6F80", - "content": "ج م ل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "vbg8A", - "name": "defSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "PXTmr", - "name": "defLabel", - "fill": "#6B6F80B3", - "content": "DEFINITION", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "text", - "id": "fMIrF", - "name": "defText", - "fill": "#1B1B2FCC", - "content": "حسن المنظر، وسيم", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "cSrEL", - "name": "morphSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "D9M4O", - "name": "morphLabel", - "fill": "#6B6F80B3", - "content": "MORPHOLOGY", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "HZjtQ", - "name": "morphGrid", - "width": "fill_container", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "8xeqW", - "name": "morphCell1", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "2DtTg", - "name": "morphCell1L", - "fill": "#6B6F80", - "content": "Feminine", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "Y5IIh", - "name": "morphCell1V", - "fill": "#1B1B2FCC", - "content": "جَمِيلَة", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "6yQxg", - "name": "morphCell2", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "kqxDc", - "name": "morphCell2L", - "fill": "#6B6F80", - "content": "Plural", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "kW7j6", - "name": "morphCell2V", - "fill": "#1B1B2FCC", - "content": "جِمَال", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "b8Hua", - "name": "morphCell3", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "sKMxc", - "name": "morphCell3L", - "fill": "#6B6F80", - "content": "Elative", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "MzNMV", - "name": "morphCell3V", - "fill": "#1B1B2FCC", - "content": "أَجْمَل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "uFs3k", - "name": "exSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "ZgrQT", - "name": "exLabel", - "fill": "#6B6F80B3", - "content": "EXAMPLES", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "x1WJ4", - "name": "exBox", - "width": "fill_container", - "fill": "#F4F4F84D", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA4D" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 8, - 12 - ], - "children": [ - { - "type": "text", - "id": "bOQPx", - "name": "exArabic", - "fill": "#1B1B2FE6", - "content": "هذا مكانٌ جَمِيلٌ جداً", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "Dv7h9", - "name": "exEnglish", - "fill": "#6B6F80", - "content": "This is a very beautiful place", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "q6osI", - "name": "tagsSection", - "width": "fill_container", - "gap": 6, - "children": [ - { - "type": "frame", - "id": "Ul6xU", - "name": "tagPill1", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "3K9OB", - "name": "tagPill1Text", - "fill": "#6B6F80", - "content": "adjective", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "rdJF8", - "name": "tagPill2", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "0Xokz", - "name": "tagPill2Text", - "fill": "#6B6F80", - "content": "beginner", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "dFBAC", - "name": "tagPill3", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "CJCij", - "name": "tagPill3Text", - "fill": "#6B6F80", - "content": "daily", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "Jt8IR", - "name": "Word Card 4", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "STQCB", - "name": "card4Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "o2DaT", - "name": "card4Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "6J4tK", - "name": "card4Title", - "fill": "#1B1B2F", - "content": "مَدْرَسَة", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "8NhWK", - "name": "card4Btns", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "1jk1n", - "name": "card4B1", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "zHarV", - "name": "card4B1I", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "wVCuW", - "name": "card4B2", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "kc82m", - "name": "card4B2I", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "wbGf0", - "name": "card4B3", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "8R29I", - "name": "card4B3I", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "jKKsP", - "name": "card4Trans", - "fill": "#6B6F80", - "content": "school", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "cXwXi", - "x": 2540, - "y": 0, - "name": "Flashcard Drawer", - "clip": true, - "width": 1440, - "height": 900, - "fill": "#00000066", - "layout": "none", - "children": [ - { - "type": "frame", - "id": "0rwps", - "x": 0, - "y": 160, - "name": "Drawer Panel", - "clip": true, - "width": 1440, - "height": 740, - "fill": "#FFFFFF", - "cornerRadius": [ - 16, - 16, - 0, - 0 - ], - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "yVObG", - "name": "Drawer Header", - "width": "fill_container", - "stroke": { - "align": "inside", - "thickness": { - "bottom": 1 - }, - "fill": "#E2E3EA30" - }, - "layout": "vertical", - "gap": 12, - "padding": [ - 20, - 32, - 16, - 32 - ], - "children": [ - { - "type": "frame", - "id": "qaLSN", - "name": "dragHandle", - "width": "fill_container", - "justifyContent": "center", - "children": [ - { - "type": "rectangle", - "cornerRadius": 2, - "id": "4Ko7U", - "name": "handleBar", - "fill": "#D4D4D8", - "width": 48, - "height": 4 - } - ] - }, - { - "type": "frame", - "id": "yjUdT", - "name": "Queue Selector", - "width": "fill_container", - "gap": 8, - "justifyContent": "center", - "children": [ - { - "type": "frame", - "id": "OrJvL", - "name": "queueReview", - "height": 40, - "fill": "#FFFFFF", - "cornerRadius": 10, - "effect": { - "type": "shadow", - "shadowType": "outer", - "color": "#0000001A", - "offset": { - "x": 0, - "y": 1 - }, - "blur": 3 - }, - "gap": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "LBBJ3", - "name": "reviewIcon", - "width": 18, - "height": 18, - "iconFontName": "brain", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - }, - { - "type": "text", - "id": "dvGYG", - "name": "reviewLabel", - "fill": "#1B1B2F", - "content": "Review", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "QyqGC", - "name": "reviewBadge2", - "height": 20, - "fill": "#4F46E5", - "cornerRadius": 10, - "padding": [ - 0, - 7 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "LeNL7", - "name": "reviewCount", - "fill": "#FFFFFF", - "content": "5", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - }, - { - "type": "frame", - "id": "E0IuJ", - "name": "queueBacklog", - "height": 40, - "cornerRadius": 10, - "gap": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "u1Ajd", - "name": "backlogIcon", - "width": 18, - "height": 18, - "iconFontName": "archive", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - }, - { - "type": "text", - "id": "6zs8c", - "name": "backlogLabel", - "fill": "#A1A1AA", - "content": "Backlog", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "tEbeF", - "name": "backlogBadge", - "height": 20, - "fill": "#EA580C", - "cornerRadius": 10, - "padding": [ - 0, - 7 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "R8yMy", - "name": "backlogCount", - "fill": "#FFFFFF", - "content": "2", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "yhX5e", - "name": "cardsLeft", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": "fill_container", - "content": "5 cards left", - "textAlign": "center", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "a2GNv", - "name": "Card Area", - "width": "fill_container", - "height": "fill_container", - "layout": "vertical", - "padding": [ - 16, - 32 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "OKSdu", - "name": "tagRow", - "gap": 6, - "padding": [ - 0, - 0, - 8, - 0 - ], - "children": [ - { - "type": "frame", - "id": "ING6j", - "name": "tag1", - "height": 24, - "fill": "#4F46E518", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "bR7X7", - "name": "tag1Text", - "fill": "#4F46E5", - "content": "noun", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "a6qO4", - "name": "tag2", - "height": 24, - "fill": "#F0FDF4", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "S3WiQ", - "name": "tag2Text", - "fill": "#16A34A", - "content": "beginner", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500" - } - ] - } - ] - }, - { - "type": "frame", - "id": "uWpE3", - "name": "Flashcard", - "width": 640, - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 135, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#FFFFFF", - "position": 0 - }, - { - "color": "#FAFAFA", - "position": 1 - } - ] - }, - "cornerRadius": 16, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA80" - }, - "effect": { - "type": "shadow", - "shadowType": "outer", - "color": "#0000000D", - "offset": { - "x": 0, - "y": 4 - }, - "blur": 16 - }, - "layout": "vertical", - "gap": 24, - "padding": 32, - "children": [ - { - "type": "frame", - "id": "zsmuo", - "name": "Question", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "2dBJS", - "name": "arabicWord", - "fill": "#1B1B2FE6", - "content": "كِتَاب", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 32, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "cJgIt", - "name": "morphInfo", - "fill": "#F4F4F880", - "cornerRadius": 6, - "padding": [ - 4, - 10 - ], - "children": [ - { - "type": "text", - "id": "9OuV1", - "name": "morphText", - "fill": "#6B6F80", - "content": "كُتُب :plural", - "fontFamily": "Inter", - "fontSize": 15, - "fontWeight": "normal" - } - ] - }, - { - "type": "text", - "id": "zWA5o", - "name": "exampleText", - "fill": "#6B6F80", - "content": "هذا كِتَابٌ جَمِيلٌ", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 15, - "fontWeight": "normal" - } - ] - }, - { - "type": "rectangle", - "id": "Dlgub", - "name": "cardDivider", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 90, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#FFFFFF00", - "position": 0 - }, - { - "color": "#E2E3EA", - "position": 0.5 - }, - { - "color": "#FFFFFF00", - "position": 1 - } - ] - }, - "width": "fill_container", - "height": 1 - }, - { - "type": "frame", - "id": "EIIQl", - "name": "Answer", - "width": "fill_container", - "layout": "vertical", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "8RXku", - "name": "answerIndicator", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "go5F2", - "name": "checkIcon", - "width": 14, - "height": 14, - "iconFontName": "circle-check", - "iconFontFamily": "lucide", - "fill": "#16A34A" - }, - { - "type": "text", - "id": "q0bpH", - "name": "answerLabel", - "fill": "#16A34A", - "content": "ANSWER", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 2 - } - ] - }, - { - "type": "text", - "id": "IbQ9B", - "name": "definition", - "fill": "#6B6F80", - "content": "كتاب، مجلّد", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 18, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "DJWZE", - "name": "translation", - "fill": "#1B1B2FE6", - "content": "book", - "fontFamily": "Inter", - "fontSize": 24, - "fontWeight": "500" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "PyyqO", - "name": "Grading Footer", - "width": "fill_container", - "fill": "#FAFAFA08", - "stroke": { - "align": "inside", - "thickness": { - "top": 1 - }, - "fill": "#E2E3EA30" - }, - "layout": "vertical", - "gap": 8, - "padding": [ - 16, - 32, - 24, - 32 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "JuGGx", - "name": "Grade Buttons", - "width": 640, - "gap": 10, - "children": [ - { - "type": "frame", - "id": "2WZ9e", - "name": "btnAgain", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#6B6F8033" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 12, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "r8F4Q", - "name": "againIcon", - "width": 20, - "height": 20, - "iconFontName": "rotate-ccw", - "iconFontFamily": "lucide", - "fill": "#71717A" - }, - { - "type": "text", - "id": "q35t5", - "name": "againLabel", - "fill": "#3f3f46", - "content": "Again", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "VyZcu", - "name": "againTime", - "fill": "#A1A1AA", - "content": "1m", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "9Om95", - "name": "btnHard", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E07A2C33" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 12, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "708Wp", - "name": "hardIcon", - "width": 20, - "height": 20, - "iconFontName": "brain", - "iconFontFamily": "lucide", - "fill": "#E07A2C" - }, - { - "type": "text", - "id": "Jscji", - "name": "hardLabel", - "fill": "#3f3f46", - "content": "Hard", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "M4wuI", - "name": "hardTime", - "fill": "#A1A1AA", - "content": "6m", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "N0D5q", - "name": "btnGood", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#4F46E54D" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 12, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "cVXUw", - "name": "goodIcon", - "width": 20, - "height": 20, - "iconFontName": "thumbs-up", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - }, - { - "type": "text", - "id": "wPn4z", - "name": "goodLabel", - "fill": "#3f3f46", - "content": "Good", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "GLRH2", - "name": "goodTime", - "fill": "#A1A1AA", - "content": "1.2d", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "hNc3M", - "name": "btnEasy", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#16A34A4D" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 12, - 8 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "JrXVP", - "name": "easyIcon", - "width": 20, - "height": 20, - "iconFontName": "zap", - "iconFontFamily": "lucide", - "fill": "#16A34A" - }, - { - "type": "text", - "id": "b93Rs", - "name": "easyLabel", - "fill": "#3f3f46", - "content": "Easy", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "FBowB", - "name": "easyTime", - "fill": "#A1A1AA", - "content": "3.5d", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "knKsm", - "x": 900, - "y": 1000, - "name": "Homepage — Filters Expanded", - "clip": true, - "width": 1440, - "height": 900, - "fill": "#FFFFFF", - "children": [ - { - "type": "frame", - "id": "sATiu", - "name": "Sidebar", - "width": 56, - "height": "fill_container", - "fill": "#FCFCFC", - "stroke": { - "align": "inside", - "thickness": { - "right": 1 - }, - "fill": "#E0E2EC" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "qTA5O", - "name": "logoWrap", - "width": 28, - "height": 28, - "fill": { - "type": "image", - "enabled": true, - "url": "./apps/web/src/assets/logo.svg", - "mode": "fit" - }, - "justifyContent": "center", - "alignItems": "center" - }, - { - "type": "frame", - "id": "morAf", - "name": "navItems", - "layout": "vertical", - "gap": 4, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "qdxEt", - "name": "navHomeBtn", - "width": 36, - "height": 36, - "fill": "#4F46E518", - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "saIhn", - "name": "navHomeIcon", - "width": 20, - "height": 20, - "iconFontName": "house", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "aM8KJ", - "name": "navDecksBtn", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "lBJpd", - "name": "navDecksIcon", - "width": 20, - "height": 20, - "iconFontName": "layers", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "6XCzD", - "name": "navSpacer", - "width": 36, - "height": "fill_container" - }, - { - "type": "frame", - "id": "4RV9g", - "name": "navSettingsBtn", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "uJpCI", - "name": "navSettingsIcon", - "width": 20, - "height": 20, - "iconFontName": "settings", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "xDC0c", - "name": "Main Content", - "width": "fill_container", - "height": "fill_container", - "fill": "#FFFFFF", - "layout": "vertical", - "gap": 16, - "padding": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "q2W1K", - "name": "searchWrap", - "width": 768, - "children": [ - { - "type": "frame", - "id": "GLRlp", - "name": "Search Input", - "width": 450, - "height": 36, - "fill": "#FFFFFF", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "effect": { - "type": "shadow", - "shadowType": "outer", - "color": "#0000000A", - "offset": { - "x": 0, - "y": 1 - }, - "blur": 2 - }, - "gap": 8, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "ICB9r", - "name": "sIcon", - "width": 16, - "height": 16, - "iconFontName": "search", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - }, - { - "type": "text", - "id": "vth8H", - "name": "sText", - "fill": "#A1A1AA", - "content": "Search...", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "ELBdQ", - "name": "Dictionary Header", - "width": 768, - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 20, - 24, - 16, - 24 - ], - "children": [ - { - "type": "frame", - "id": "DQXVf", - "name": "headerRow", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "4Xd4o", - "name": "headerLeft", - "gap": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "WrP1r", - "name": "iconCircle", - "width": 40, - "height": 40, - "fill": "#4F46E518", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#4F46E530" - }, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "Zr1RT", - "name": "bookIcon2", - "width": 20, - "height": 20, - "iconFontName": "book-open", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "L2tOr", - "name": "titleBlock", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "cyBUE", - "name": "hTitle", - "fill": "#1B1B2F", - "content": "Your Dictionary", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.3 - }, - { - "type": "frame", - "id": "lQtPi", - "name": "hSubtitle", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "ENgbw", - "name": "hCount", - "fill": "#1B1B2FCC", - "content": "142", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "zqTLB", - "name": "hSep", - "fill": "#6B6F80", - "content": "results", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "w1G5J", - "name": "hTime", - "fill": "#6B6F80", - "content": "· 12ms", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "iJ0i3", - "name": "headerRight", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "jSkPJ", - "name": "addWordBtn", - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "ESbeu", - "name": "addWordIcon", - "width": 16, - "height": 16, - "iconFontName": "plus", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "EWtbr", - "name": "addWordText", - "fill": "#1B1B2F", - "content": "Add word", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "TughD", - "name": "reviewBtn2", - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 8, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "Sflrm", - "name": "reviewIcon2", - "width": 16, - "height": 16, - "iconFontName": "graduation-cap", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "CMZbA", - "name": "reviewText2", - "fill": "#1B1B2F", - "content": "Review", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "wiymL", - "name": "reviewBadge3", - "height": 20, - "fill": "#4F46E5", - "cornerRadius": 10, - "padding": [ - 0, - 6 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "3Kuow", - "name": "reviewNum", - "fill": "#FFFFFF", - "content": "12", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "RMF6r", - "name": "filterToggle", - "height": 36, - "cornerRadius": 8, - "gap": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "0V2eV", - "name": "filterIcon2", - "width": 16, - "height": 16, - "iconFontName": "chevron-up", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "R0hfb", - "name": "filterLabel", - "fill": "#6B6F80", - "content": "Hide filters", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "FVfZr", - "name": "activeBadge", - "height": 18, - "fill": "#4F46E5", - "cornerRadius": 9, - "padding": [ - 0, - 6 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "ZHDJN", - "name": "activeBadgeText", - "fill": "#FFFFFF", - "content": "3", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - }, - { - "type": "frame", - "id": "U4R2H", - "name": "Expanded Filters", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "children": [ - { - "type": "frame", - "id": "h9ZKk", - "name": "filtersHeader", - "width": "fill_container", - "gap": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "yPMRB", - "name": "filtersIconLabel", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "rgmOV", - "name": "filtersIcon", - "width": 16, - "height": 16, - "iconFontName": "sliders-horizontal", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "UDWz7", - "name": "filtersLabel", - "fill": "#6B6F80", - "content": "Filters", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - } - ] - }, - { - "type": "rectangle", - "id": "rY4gu", - "name": "filtersSep", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 90, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#E2E3EA80", - "position": 0 - }, - { - "color": "#E2E3EA", - "position": 0.5 - }, - { - "color": "#E2E3EA80", - "position": 1 - } - ] - }, - "width": "fill_container", - "height": 1 - } - ] - }, - { - "type": "frame", - "id": "TE6ai", - "name": "tagsSection", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "text", - "id": "oRkX4", - "name": "tagsLabel", - "fill": "#6B6F80", - "content": "Tags", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "Ids4Y", - "name": "tagsDropdown", - "width": 200, - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "fzaRS", - "name": "tagsPlaceholder", - "fill": "#1B1B2F", - "content": "2 tags selected", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "icon_font", - "id": "CFbUP", - "name": "tagsChevronsIcon", - "width": 16, - "height": 16, - "iconFontName": "chevrons-up-down", - "iconFontFamily": "lucide", - "fill": "#6B6F8080" - } - ] - }, - { - "type": "frame", - "id": "OtADV", - "name": "selectedTags", - "width": "fill_container", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "Lgsda", - "name": "selTag1", - "height": 28, - "cornerRadius": 6, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 6, - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "TYjJW", - "name": "selTag1Text", - "fill": "#1B1B2F", - "content": "beginner", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - }, - { - "type": "icon_font", - "id": "V5WcH", - "name": "selTag1X", - "width": 14, - "height": 14, - "iconFontName": "x", - "iconFontFamily": "lucide", - "fill": "#6B6F80B3" - } - ] - }, - { - "type": "frame", - "id": "7VWOp", - "name": "selTag2", - "height": 28, - "cornerRadius": 6, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 6, - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "THbCH", - "name": "selTag2Text", - "fill": "#1B1B2F", - "content": "daily", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - }, - { - "type": "icon_font", - "id": "gk7QE", - "name": "selTag2X", - "width": 14, - "height": 14, - "iconFontName": "x", - "iconFontFamily": "lucide", - "fill": "#6B6F80B3" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "ZVxSP", - "name": "sortHeader", - "width": "fill_container", - "gap": 16, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "d8GK1", - "name": "sortIconLabel", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "Ft9sF", - "name": "sortIcon", - "width": 16, - "height": 16, - "iconFontName": "arrow-down-up", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "6HGas", - "name": "sortLabel", - "fill": "#6B6F80", - "content": "Sort by", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - } - ] - }, - { - "type": "rectangle", - "id": "Fr7EL", - "name": "sortSep", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 90, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#E2E3EA80", - "position": 0 - }, - { - "color": "#E2E3EA", - "position": 0.5 - }, - { - "color": "#E2E3EA80", - "position": 1 - } - ] - }, - "width": "fill_container", - "height": 1 - } - ] - }, - { - "type": "frame", - "id": "4IU6j", - "name": "sortSection", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "5j0Nb", - "name": "sortDropdown", - "width": 200, - "height": 36, - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "IZKin", - "name": "sortValue", - "fill": "#1B1B2F", - "content": "Recently added", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "icon_font", - "id": "eh7uI", - "name": "sortChevron", - "width": 16, - "height": 16, - "iconFontName": "chevrons-up-down", - "iconFontFamily": "lucide", - "fill": "#6B6F8080" - } - ] - } - ] - }, - { - "type": "frame", - "id": "yjweR", - "name": "clearBtn", - "height": 32, - "cornerRadius": 8, - "gap": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "gNzbg", - "name": "clearIcon", - "width": 16, - "height": 16, - "iconFontName": "funnel-x", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "c9y8q", - "name": "clearText", - "fill": "#6B6F80", - "content": "Clear all filters", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "4Hs8J", - "name": "Word Cards", - "width": 768, - "layout": "vertical", - "gap": 12, - "children": [ - { - "type": "frame", - "id": "sW2X5", - "name": "Word Card 1", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "rectangle", - "cornerRadius": 99, - "id": "v6Wxo", - "name": "accentLine1", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 180, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#4F46E599", - "position": 0 - }, - { - "color": "#4F46E533", - "position": 1 - } - ] - }, - "width": 3, - "height": 0 - }, - { - "type": "frame", - "id": "7o0K5", - "name": "card1Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "Kt64O", - "name": "card1Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "d5WYU", - "name": "card1Title", - "fill": "#1B1B2F", - "content": "كِتَاب", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "rOh6G", - "name": "card1Actions", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "ZYrSL", - "name": "card1Copy", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "YrQ2d", - "name": "card1CopyIcon", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "09RGp", - "name": "card1Edit", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "75DRf", - "name": "card1EditIcon", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "G8je8", - "name": "card1Expand", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "GkNEV", - "name": "card1ExpandIcon", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "vWPvO", - "name": "card1Trans", - "fill": "#6B6F80", - "content": "book", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "z8S74", - "name": "Word Card 2", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "zOgWF", - "name": "card2Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "5VjVz", - "name": "card2Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "Z54uU", - "name": "card2Title", - "fill": "#1B1B2F", - "content": "كَتَبَ", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "nd3kz", - "name": "card2Actions", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "YUkTX", - "name": "card2CopyBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "T7PD3", - "name": "card2CopyIcon", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "MC90q", - "name": "card2EditBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "oktpr", - "name": "card2EditIcon", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "voFra", - "name": "card2ExpandBtn", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "vUA2D", - "name": "card2ExpandIcon", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "gldJd", - "name": "card2Trans", - "fill": "#6B6F80", - "content": "to write", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "i1qIp", - "name": "Word Card 3 (Expanded)", - "width": "fill_container", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 180, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#F4F4F880", - "position": 0 - }, - { - "color": "#F4F4F84D", - "position": 1 - } - ] - }, - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "Jm8fR", - "name": "card3Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "mR8BP", - "name": "card3Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "Yz89B", - "name": "card3Title", - "fill": "#1B1B2F", - "content": "جَمِيل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "kyBUr", - "name": "card3Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "ulyps", - "name": "card3C", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "R3zp5", - "name": "card3CI", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "cBjB3", - "name": "card3E", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "ZZBEw", - "name": "card3EI", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "I3QyI", - "name": "card3X", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "HOAyD", - "name": "card3XI", - "width": 16, - "height": 16, - "iconFontName": "chevron-up", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "qXgXV", - "name": "card3Trans", - "fill": "#6B6F80", - "content": "beautiful, handsome", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "rectangle", - "id": "tFG0J", - "name": "expandDivider", - "fill": "#E2E3EA80", - "width": "fill_container", - "height": 1 - }, - { - "type": "frame", - "id": "Xk5Uy", - "name": "expandDetails", - "width": "fill_container", - "layout": "vertical", - "gap": 12, - "padding": [ - 4, - 0, - 0, - 0 - ], - "children": [ - { - "type": "frame", - "id": "hFAHU", - "name": "typeRow", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "orUBI", - "name": "typeBadge", - "height": 24, - "fill": "#4F46E518", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "z4aEC", - "name": "typeText", - "fill": "#4F46E5", - "content": "adjective", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "0zCnq", - "name": "rootBadge", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "rkXLi", - "name": "rootText", - "fill": "#6B6F80", - "content": "ج م ل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "EdZIt", - "name": "defSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "2FzTy", - "name": "defLabel", - "fill": "#6B6F80B3", - "content": "DEFINITION", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "text", - "id": "2hHQi", - "name": "defText", - "fill": "#1B1B2FCC", - "content": "حسن المنظر، وسيم", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "jb0f5", - "name": "morphSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "yROC3", - "name": "morphLabel", - "fill": "#6B6F80B3", - "content": "MORPHOLOGY", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "mMYax", - "name": "morphGrid", - "width": "fill_container", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "VdqA8", - "name": "morphCell1", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "1J8qz", - "name": "morphCell1L", - "fill": "#6B6F80", - "content": "Feminine", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "IRbDz", - "name": "morphCell1V", - "fill": "#1B1B2FCC", - "content": "جَمِيلَة", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "ViMl7", - "name": "morphCell2", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "yxUSd", - "name": "morphCell2L", - "fill": "#6B6F80", - "content": "Plural", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "3I2wt", - "name": "morphCell2V", - "fill": "#1B1B2FCC", - "content": "جِمَال", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "lxo7e", - "name": "morphCell3", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "0R4fj", - "name": "morphCell3L", - "fill": "#6B6F80", - "content": "Elative", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "yl1ef", - "name": "morphCell3V", - "fill": "#1B1B2FCC", - "content": "أَجْمَل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "WnnXS", - "name": "exSection", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "7pe9G", - "name": "exLabel", - "fill": "#6B6F80B3", - "content": "EXAMPLES", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "8CJni", - "name": "exBox", - "width": "fill_container", - "fill": "#F4F4F84D", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA4D" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 8, - 12 - ], - "children": [ - { - "type": "text", - "id": "zgIEJ", - "name": "exArabic", - "fill": "#1B1B2FE6", - "content": "هذا مكانٌ جَمِيلٌ جداً", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "uzF2h", - "name": "exEnglish", - "fill": "#6B6F80", - "content": "This is a very beautiful place", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "EOxuk", - "name": "tagsSection", - "width": "fill_container", - "gap": 6, - "children": [ - { - "type": "frame", - "id": "5A9wE", - "name": "tagPill1", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "AzoPy", - "name": "tagPill1Text", - "fill": "#6B6F80", - "content": "adjective", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "K7Qc7", - "name": "tagPill2", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "NiZSl", - "name": "tagPill2Text", - "fill": "#6B6F80", - "content": "beginner", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "jI0yJ", - "name": "tagPill3", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 12, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "TFI4D", - "name": "tagPill3Text", - "fill": "#6B6F80", - "content": "daily", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "ossjA", - "name": "Word Card 4", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 16, - 20 - ], - "children": [ - { - "type": "frame", - "id": "oXTxz", - "name": "card4Inner", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "tnTSg", - "name": "card4Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "text", - "id": "FEOCN", - "name": "card4Title", - "fill": "#1B1B2F", - "content": "مَدْرَسَة", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 30, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "Gu3wa", - "name": "card4Btns", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "TeZcJ", - "name": "card4B1", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "FKM7J", - "name": "card4B1I", - "width": 16, - "height": 16, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "XFIEp", - "name": "card4B2", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "fne9C", - "name": "card4B2I", - "width": 16, - "height": 16, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "H4Bmh", - "name": "card4B3", - "width": 32, - "height": 32, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "AXWis", - "name": "card4B3I", - "width": 16, - "height": 16, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "SY23k", - "name": "card4Trans", - "fill": "#6B6F80", - "content": "school", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "ncQzW", - "x": 4130, - "y": 0, - "name": "Homepage — Redesigned", - "clip": true, - "width": 1440, - "height": 960, - "fill": "#FFFFFF", - "children": [ - { - "type": "frame", - "id": "y2XJN", - "name": "Sidebar", - "width": 56, - "height": "fill_container", - "fill": "#FCFCFC", - "stroke": { - "align": "inside", - "thickness": { - "right": 1 - }, - "fill": "#E0E2EC" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 16, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "C34fh", - "name": "logoWrap", - "width": 28, - "height": 28, - "fill": { - "type": "image", - "enabled": true, - "url": "./apps/web/src/assets/logo.svg", - "mode": "fit" - } - }, - { - "type": "frame", - "id": "3g4EH", - "name": "navGroup", - "layout": "vertical", - "gap": 4, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "eBMGJ", - "name": "navHome", - "width": 36, - "height": 36, - "fill": "#4F46E518", - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "2O6a1", - "name": "navHomeIcon", - "width": 20, - "height": 20, - "iconFontName": "house", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "zu1DB", - "name": "navDecks", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "oRFGo", - "name": "navDecksIcon", - "width": 20, - "height": 20, - "iconFontName": "layers", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "xJCVq", - "name": "navSpacer", - "width": 36, - "height": "fill_container" - }, - { - "type": "frame", - "id": "q97mK", - "name": "navSettings", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "8tqt4", - "name": "navSettingsIcon", - "width": 20, - "height": 20, - "iconFontName": "settings", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "CPilM", - "name": "Main Content", - "width": "fill_container", - "height": "fill_container", - "fill": "#FFFFFF", - "layout": "vertical", - "padding": [ - 24, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "SQbrJ", - "name": "Content Column", - "width": 768, - "layout": "vertical", - "gap": 20, - "children": [ - { - "type": "frame", - "id": "m41Gq", - "name": "Search Bar", - "width": "fill_container", - "height": 48, - "fill": "#F8F8FB", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "effect": { - "type": "shadow", - "shadowType": "outer", - "color": "#1B1B2F08", - "offset": { - "x": 0, - "y": 2 - }, - "blur": 8 - }, - "gap": 10, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "6NTRU", - "name": "searchIcon", - "width": 20, - "height": 20, - "iconFontName": "search", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "CgfHi", - "name": "searchPlaceholder", - "fill": "#A1A1AA", - "content": "Search your dictionary...", - "fontFamily": "Inter", - "fontSize": 15, - "fontWeight": "normal" - }, - { - "type": "frame", - "id": "1rRWh", - "name": "searchSpacer", - "width": "fill_container", - "height": 1 - }, - { - "type": "frame", - "id": "kGPNo", - "name": "searchKbd", - "height": 24, - "fill": "#FFFFFF", - "cornerRadius": 6, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 6 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "HC478", - "name": "searchKbdText", - "fill": "#A1A1AA", - "content": "⌘K", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "500" - } - ] - } - ] - }, - { - "type": "frame", - "id": "BIrBL", - "name": "Header Row", - "width": "fill_container", - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "qY3sV", - "name": "headerLeft", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "dXM10", - "name": "headerIcon", - "width": 36, - "height": 36, - "fill": "#4F46E512", - "cornerRadius": 10, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "dR20B", - "name": "headerBookIcon", - "width": 18, - "height": 18, - "iconFontName": "book-open", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - }, - { - "type": "frame", - "id": "PreW5", - "name": "headerTitleBlock", - "gap": 8, - "children": [ - { - "type": "text", - "id": "joGSE", - "name": "headerTitle", - "fill": "#1B1B2F", - "content": "Your Dictionary", - "fontFamily": "Inter", - "fontSize": 16, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "c9Pgq", - "name": "headerCount", - "fill": "#A1A1AA", - "content": "142 words", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "kh479", - "name": "headerRight", - "gap": 6, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "efRt4", - "name": "filterBtn", - "height": 34, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "cOaNv", - "name": "filterBtnIcon", - "width": 15, - "height": 15, - "iconFontName": "sliders-horizontal", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "pIIJa", - "name": "filterBtnText", - "fill": "#1B1B2F", - "content": "Filters", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "XYHhG", - "name": "addBtn", - "height": 34, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "nvNxu", - "name": "addBtnIcon", - "width": 15, - "height": 15, - "iconFontName": "plus", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "sVoVf", - "name": "addBtnText", - "fill": "#1B1B2F", - "content": "Add word", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "VOeei", - "name": "reviewBtn", - "height": 34, - "fill": "#4F46E5", - "cornerRadius": 8, - "gap": 8, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "KW2FF", - "name": "reviewBtnIcon", - "width": 15, - "height": 15, - "iconFontName": "graduation-cap", - "iconFontFamily": "lucide", - "fill": "#FFFFFF" - }, - { - "type": "text", - "id": "sjL7k", - "name": "reviewBtnText", - "fill": "#FFFFFF", - "content": "Review", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "4Vmlz", - "name": "reviewBadge", - "height": 18, - "fill": "#FFFFFF30", - "cornerRadius": 9, - "padding": [ - 0, - 6 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "6ZhJ3", - "name": "reviewBadgeText", - "fill": "#FFFFFF", - "content": "12", - "fontFamily": "Inter", - "fontSize": 10, - "fontWeight": "600" - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "wQe6G", - "name": "Word Cards", - "width": "fill_container", - "layout": "vertical", - "gap": 10, - "children": [ - { - "type": "frame", - "id": "mHcHb", - "name": "Word Card — Noun", - "clip": true, - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "children": [ - { - "type": "rectangle", - "id": "IBSWh", - "name": "card1Accent", - "fill": "#4F46E5", - "width": 4, - "height": "fill_container" - }, - { - "type": "frame", - "id": "VUuBA", - "name": "card1Body", - "width": "fill_container", - "layout": "vertical", - "gap": 6, - "padding": [ - 14, - 18, - 14, - 14 - ], - "children": [ - { - "type": "frame", - "id": "r74v9", - "name": "card1Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "IoPyl", - "name": "card1Left", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "z8RlD", - "name": "card1Arabic", - "fill": "#1B1B2F", - "content": "كِتَاب", - "lineHeight": 1.1, - "fontFamily": "Noto Naskh Arabic", - "fontSize": 36, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "C24pR", - "name": "card1Badge", - "height": 22, - "fill": "#4F46E50F", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "q7RjM", - "name": "card1BadgeText", - "fill": "#4F46E5", - "content": "Noun", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 0.5 - } - ] - } - ] - }, - { - "type": "frame", - "id": "cADco", - "name": "card1Actions", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "3MVrj", - "name": "card1Copy", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "dQWGt", - "name": "card1CopyI", - "width": 15, - "height": 15, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "pMLw8", - "name": "card1Edit", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "euYbo", - "name": "card1EditI", - "width": 15, - "height": 15, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "wXXcq", - "name": "card1Expand", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "QKFNO", - "name": "card1ExpandI", - "width": 15, - "height": 15, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "dRJ8v", - "name": "card1Trans", - "fill": "#6B6F80", - "content": "book", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "iG6UE", - "name": "Word Card — Verb", - "clip": true, - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "children": [ - { - "type": "rectangle", - "id": "q0AK2", - "name": "card2Accent", - "fill": "#16A34A", - "width": 4, - "height": "fill_container" - }, - { - "type": "frame", - "id": "KdIxe", - "name": "card2Body", - "width": "fill_container", - "layout": "vertical", - "gap": 6, - "padding": [ - 14, - 18, - 14, - 14 - ], - "children": [ - { - "type": "frame", - "id": "TVgMO", - "name": "card2Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "uIwNf", - "name": "card2Left", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "zRoIw", - "name": "card2Arabic", - "fill": "#1B1B2F", - "content": "كَتَبَ", - "lineHeight": 1.1, - "fontFamily": "Noto Naskh Arabic", - "fontSize": 36, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "W5EqE", - "name": "card2Badge", - "height": 22, - "fill": "#16A34A0F", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "jvCDX", - "name": "card2BadgeText", - "fill": "#16A34A", - "content": "Verb", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 0.5 - } - ] - } - ] - }, - { - "type": "frame", - "id": "k1lcO", - "name": "card2Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "tz1HF", - "name": "card2C", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "FWlPu", - "name": "card2CI", - "width": 15, - "height": 15, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "gyt50", - "name": "card2E", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "QpHYw", - "name": "card2EI", - "width": 15, - "height": 15, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "hCopX", - "name": "card2X", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "ydgyD", - "name": "card2XI", - "width": 15, - "height": 15, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "6afJY", - "name": "card2Trans", - "fill": "#6B6F80", - "content": "to write", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "5n3sB", - "name": "Word Card — Adjective (Expanded)", - "clip": true, - "width": "fill_container", - "fill": { - "type": "gradient", - "gradientType": "linear", - "enabled": true, - "rotation": 180, - "size": { - "height": 1 - }, - "colors": [ - { - "color": "#FAFAFA", - "position": 0 - }, - { - "color": "#F8F8FB60", - "position": 1 - } - ] - }, - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "children": [ - { - "type": "rectangle", - "id": "1uL1T", - "name": "card3Accent", - "fill": "#D97706", - "width": 4, - "height": "fill_container" - }, - { - "type": "frame", - "id": "LZylh", - "name": "card3Body", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "padding": [ - 14, - 18, - 14, - 14 - ], - "children": [ - { - "type": "frame", - "id": "AevSZ", - "name": "card3Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "RMf5W", - "name": "card3Left", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "wOVcm", - "name": "card3Arabic", - "fill": "#1B1B2F", - "content": "جَمِيل", - "lineHeight": 1.1, - "fontFamily": "Noto Naskh Arabic", - "fontSize": 36, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "KGU1H", - "name": "card3Badge", - "height": 22, - "fill": "#D976060F", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "c7HIw", - "name": "card3BadgeText", - "fill": "#D97706", - "content": "Adjective", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 0.5 - } - ] - } - ] - }, - { - "type": "frame", - "id": "3tFIn", - "name": "card3Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "0KXB9", - "name": "card3C", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "YUAbs", - "name": "card3CI", - "width": 15, - "height": 15, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "pHk9V", - "name": "card3E", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "hxgZ2", - "name": "card3EI", - "width": 15, - "height": 15, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "4fjxI", - "name": "card3X", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "EbevQ", - "name": "card3XI", - "width": 15, - "height": 15, - "iconFontName": "chevron-up", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "6x1sQ", - "name": "card3Trans", - "fill": "#6B6F80", - "content": "beautiful, handsome", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "rectangle", - "id": "GnoDA", - "name": "divider", - "fill": "#E2E3EA50", - "width": "fill_container", - "height": 1 - }, - { - "type": "frame", - "id": "qUWGJ", - "name": "details", - "width": "fill_container", - "layout": "vertical", - "gap": 14, - "children": [ - { - "type": "frame", - "id": "JNXZb", - "name": "typeRootRow", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "bW9RF", - "name": "rootBadge", - "height": 24, - "fill": "#F4F4F8", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "Ex0EX", - "name": "rootText", - "fill": "#6B6F80", - "content": "ج م ل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "EyL20", - "name": "defBlock", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "RbPTp", - "name": "defLabel", - "fill": "#A1A1AAB3", - "content": "DEFINITION", - "fontFamily": "Inter", - "fontSize": 10, - "fontWeight": "600", - "letterSpacing": 1.5 - }, - { - "type": "text", - "id": "JSppV", - "name": "defText", - "fill": "#1B1B2FCC", - "content": "حسن المنظر، وسيم", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 15, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "CSj5t", - "name": "morphBlock", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "C6M6i", - "name": "morphLabel", - "fill": "#A1A1AAB3", - "content": "MORPHOLOGY", - "fontFamily": "Inter", - "fontSize": 10, - "fontWeight": "600", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "bwWV2", - "name": "morphGrid", - "width": "fill_container", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "eoi6C", - "name": "mc1", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "OBtVE", - "name": "mc1l", - "fill": "#A1A1AA", - "content": "Feminine", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "8imJ1", - "name": "mc1v", - "fill": "#1B1B2FCC", - "content": "جَمِيلَة", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "bl4kn", - "name": "mc2", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "0VVWh", - "name": "mc2l", - "fill": "#A1A1AA", - "content": "Plural", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "d8wtB", - "name": "mc2v", - "fill": "#1B1B2FCC", - "content": "جِمَال", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "G4eCZ", - "name": "mc3", - "width": "fill_container", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "Z33mj", - "name": "mc3l", - "fill": "#A1A1AA", - "content": "Elative", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "ANciT", - "name": "mc3v", - "fill": "#1B1B2FCC", - "content": "أَجْمَل", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "gPsLd", - "name": "exBlock", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "children": [ - { - "type": "text", - "id": "3Zfn4", - "name": "exLabel", - "fill": "#A1A1AAB3", - "content": "EXAMPLES", - "fontFamily": "Inter", - "fontSize": 10, - "fontWeight": "600", - "letterSpacing": 1.5 - }, - { - "type": "frame", - "id": "gexR3", - "name": "exBox", - "width": "fill_container", - "fill": "#F8F8FB", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA40" - }, - "layout": "vertical", - "gap": 4, - "padding": [ - 10, - 14 - ], - "children": [ - { - "type": "text", - "id": "7MROV", - "name": "exAr", - "fill": "#1B1B2FE6", - "content": "هذا مكانٌ جَمِيلٌ جداً", - "fontFamily": "Noto Naskh Arabic", - "fontSize": 16, - "fontWeight": "normal" - }, - { - "type": "text", - "id": "sQEs5", - "name": "exEn", - "fill": "#6B6F80", - "content": "This is a very beautiful place", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "pNi5A", - "name": "tagRow", - "width": "fill_container", - "gap": 6, - "children": [ - { - "type": "frame", - "id": "Pc8wB", - "name": "tp1", - "height": 22, - "fill": "#F4F4F8", - "cornerRadius": 11, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "oDHpe", - "name": "tp1t", - "fill": "#6B6F80", - "content": "adjective", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "Pk6j2", - "name": "tp2", - "height": 22, - "fill": "#F4F4F8", - "cornerRadius": 11, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "I78hw", - "name": "tp2t", - "fill": "#6B6F80", - "content": "beginner", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "nb0HO", - "name": "tp3", - "height": 22, - "fill": "#F4F4F8", - "cornerRadius": 11, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "i6Qw2", - "name": "tp3t", - "fill": "#6B6F80", - "content": "daily", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "MyMVA", - "name": "Word Card — Noun 2", - "clip": true, - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "children": [ - { - "type": "rectangle", - "id": "5NcqR", - "name": "card4Acc", - "fill": "#4F46E5", - "width": 4, - "height": "fill_container" - }, - { - "type": "frame", - "id": "vfIn5", - "name": "card4Body", - "width": "fill_container", - "layout": "vertical", - "gap": 6, - "padding": [ - 14, - 18, - 14, - 14 - ], - "children": [ - { - "type": "frame", - "id": "C82QZ", - "name": "card4Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "TGWMe", - "name": "card4Left", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "1G5Z2", - "name": "card4Ar", - "fill": "#1B1B2F", - "content": "مَدْرَسَة", - "lineHeight": 1.1, - "fontFamily": "Noto Naskh Arabic", - "fontSize": 36, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "nF6VI", - "name": "card4Bdg", - "height": 22, - "fill": "#4F46E50F", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "WyfmZ", - "name": "card4BdgT", - "fill": "#4F46E5", - "content": "Noun", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 0.5 - } - ] - } - ] - }, - { - "type": "frame", - "id": "QD8K4", - "name": "card4Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "3DXH0", - "name": "card4C", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "UFGL0", - "name": "card4CI", - "width": 15, - "height": 15, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "MjEde", - "name": "card4E", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "AGbyy", - "name": "card4EI", - "width": 15, - "height": 15, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "rB6X4", - "name": "card4X", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "CB411", - "name": "card4XI", - "width": 15, - "height": 15, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "a0eV1", - "name": "card4Trans", - "fill": "#6B6F80", - "content": "school", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "i1Gx9", - "name": "Word Card — Verb 2", - "clip": true, - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "children": [ - { - "type": "rectangle", - "id": "ZqWFR", - "name": "card5Acc", - "fill": "#16A34A", - "width": 4, - "height": "fill_container" - }, - { - "type": "frame", - "id": "WIizX", - "name": "card5Body", - "width": "fill_container", - "layout": "vertical", - "gap": 6, - "padding": [ - 14, - 18, - 14, - 14 - ], - "children": [ - { - "type": "frame", - "id": "RH7P3", - "name": "card5Top", - "width": "fill_container", - "justifyContent": "space_between", - "children": [ - { - "type": "frame", - "id": "Pv7ZN", - "name": "card5Left", - "gap": 12, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "WMztk", - "name": "card5Ar", - "fill": "#1B1B2F", - "content": "ذَهَبَ", - "lineHeight": 1.1, - "fontFamily": "Noto Naskh Arabic", - "fontSize": 36, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "zI9gn", - "name": "card5Bdg", - "height": 22, - "fill": "#16A34A0F", - "cornerRadius": 6, - "padding": [ - 0, - 8 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "cF1lr", - "name": "card5BdgT", - "fill": "#16A34A", - "content": "Verb", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600", - "letterSpacing": 0.5 - } - ] - } - ] - }, - { - "type": "frame", - "id": "0K5Zd", - "name": "card5Acts", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "mVInG", - "name": "card5C", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "JLaMY", - "name": "card5CI", - "width": 15, - "height": 15, - "iconFontName": "copy", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "q0L4j", - "name": "card5E", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "9RGKH", - "name": "card5EI", - "width": 15, - "height": 15, - "iconFontName": "pencil", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - }, - { - "type": "frame", - "id": "5x10v", - "name": "card5X", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "jh1aK", - "name": "card5XI", - "width": 15, - "height": 15, - "iconFontName": "chevron-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - }, - { - "type": "text", - "id": "eexBj", - "name": "card5Trans", - "fill": "#6B6F80", - "content": "to go", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "uqZAR", - "x": 0, - "y": 2110, - "name": "Decks", - "clip": true, - "width": 1440, - "height": 900, - "fill": "#FFFFFF", - "children": [ - { - "type": "frame", - "id": "WFZ2L", - "name": "Sidebar", - "width": 56, - "height": "fill_container", - "fill": "#FCFCFC", - "stroke": { - "align": "inside", - "thickness": { - "right": 1 - }, - "fill": "#E0E2EC" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 16, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "CnYuR", - "name": "dLogo", - "width": 28, - "height": 28, - "fill": { - "type": "image", - "enabled": true, - "url": "./apps/web/src/assets/logo.svg", - "mode": "fit" - } - }, - { - "type": "frame", - "id": "XKbXc", - "name": "dNavGroup", - "layout": "vertical", - "gap": 4, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "kDjG0", - "name": "dNavHome", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "kVkaN", - "name": "dNavHomeI", - "width": 20, - "height": 20, - "iconFontName": "house", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - }, - { - "type": "frame", - "id": "JOYp9", - "name": "dNavDecks", - "width": 36, - "height": 36, - "fill": "#4F46E518", - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "DqEhn", - "name": "dNavDecksI", - "width": 20, - "height": 20, - "iconFontName": "layers", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - } - ] - }, - { - "type": "frame", - "id": "frv5Q", - "name": "dSpacer", - "width": 36, - "height": "fill_container" - }, - { - "type": "frame", - "id": "dftnT", - "name": "dSettings", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "xqeyB", - "name": "dSettingsI", - "width": 20, - "height": 20, - "iconFontName": "settings", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "iWh51", - "name": "Main Content", - "width": "fill_container", - "height": "fill_container", - "fill": "#FFFFFF", - "layout": "vertical", - "gap": 24, - "padding": [ - 32, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "zRYyB", - "name": "dContentCol", - "width": 896, - "layout": "vertical", - "gap": 16, - "alignItems": "end", - "children": [ - { - "type": "frame", - "id": "Nc3IR", - "name": "createBtn", - "height": 34, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "gap": 6, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "y1yU0", - "name": "createBtnI", - "width": 15, - "height": 15, - "iconFontName": "plus", - "iconFontFamily": "lucide", - "fill": "#1B1B2F" - }, - { - "type": "text", - "id": "iQ5kU", - "name": "createBtnT", - "fill": "#1B1B2F", - "content": "Create deck", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "AxXHI", - "name": "Decks Card", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "4rol7", - "name": "dcHeader", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "k1jcx", - "name": "dcTitle", - "fill": "#1B1B2F", - "content": "Decks", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "WHJs9", - "name": "dcDesc", - "fill": "#6B6F80", - "content": "Manage your decks and study them.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "XA5R8", - "name": "tableHeader", - "width": "fill_container", - "height": 40, - "stroke": { - "align": "inside", - "thickness": { - "bottom": 1 - }, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 24 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "HiYgg", - "name": "thName", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 240, - "content": "Name", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "MCIiI", - "name": "thReview", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 100, - "content": "To review", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "c2pew", - "name": "thBacklog", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 100, - "content": "Backlog", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "text", - "id": "sCcaP", - "name": "thTotal", - "fill": "#A1A1AA", - "textGrowth": "fixed-width", - "width": 80, - "content": "Total", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "hfJ6E", - "name": "thActions", - "width": "fill_container", - "height": 1 - } - ] - }, - { - "type": "frame", - "id": "JtLxi", - "name": "row1", - "width": "fill_container", - "height": 48, - "stroke": { - "align": "inside", - "thickness": { - "bottom": 1 - }, - "fill": "#E2E3EA40" - }, - "padding": [ - 0, - 24 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "GWKPy", - "name": "r1Name", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 240, - "content": "Beginner Essentials", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "NPs56", - "name": "r1Review", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 100, - "content": "5", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "45V2U", - "name": "r1Backlog", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 100, - "content": "2", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "wX6LO", - "name": "r1Total", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 80, - "content": "48", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "91b5S", - "name": "r1Actions", - "width": "fill_container", - "gap": 6, - "justifyContent": "end", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "BnMDy", - "name": "r1Study", - "height": 30, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "ipRlM", - "name": "r1StudyT", - "fill": "#1B1B2F", - "content": "Study", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "fLJHW", - "name": "r1More", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "2F5zV", - "name": "r1MoreI", - "width": 16, - "height": 16, - "iconFontName": "ellipsis", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "pHwDn", - "name": "row2", - "width": "fill_container", - "height": 48, - "stroke": { - "align": "inside", - "thickness": { - "bottom": 1 - }, - "fill": "#E2E3EA40" - }, - "padding": [ - 0, - 24 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "hiBjq", - "name": "r2Name", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 240, - "content": "Verbs Practice", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "7CVbw", - "name": "r2Review", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 100, - "content": "12", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "biVNx", - "name": "r2Backlog", - "fill": "#A1A1AA", - "textGrowth": "fixed-width", - "width": 100, - "content": "-", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "Bk80P", - "name": "r2Total", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 80, - "content": "67", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "f1bYo", - "name": "r2Actions", - "width": "fill_container", - "gap": 6, - "justifyContent": "end", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "mluja", - "name": "r2Study", - "height": 30, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "eAk3W", - "name": "r2StudyT", - "fill": "#1B1B2F", - "content": "Study", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "mkjFX", - "name": "r2More", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "f5eBV", - "name": "r2MoreI", - "width": 16, - "height": 16, - "iconFontName": "ellipsis", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "XgY0V", - "name": "row3", - "width": "fill_container", - "height": 48, - "padding": [ - 0, - 24 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "BBs7O", - "name": "r3Name", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 240, - "content": "Daily Conversation", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "cIJnm", - "name": "r3Review", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 100, - "content": "3", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "hPZIs", - "name": "r3Backlog", - "fill": "#1B1B2F", - "textGrowth": "fixed-width", - "width": 100, - "content": "8", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "UNLwq", - "name": "r3Total", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 80, - "content": "35", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "d1D5P", - "name": "r3Actions", - "width": "fill_container", - "gap": 6, - "justifyContent": "end", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "6Z4iV", - "name": "r3Study", - "height": 30, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 10 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "EsDQg", - "name": "r3StudyT", - "fill": "#1B1B2F", - "content": "Study", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "4i6PY", - "name": "r3More", - "width": 30, - "height": 30, - "cornerRadius": 6, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "83c4G", - "name": "r3MoreI", - "width": 16, - "height": 16, - "iconFontName": "ellipsis", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "VKK7A", - "x": 1590, - "y": 2110, - "name": "Settings", - "clip": true, - "width": 1440, - "height": 1720, - "fill": "#FFFFFF", - "children": [ - { - "type": "frame", - "id": "2XmWC", - "name": "Sidebar", - "width": 56, - "height": "fill_container", - "fill": "#FCFCFC", - "stroke": { - "align": "inside", - "thickness": { - "right": 1 - }, - "fill": "#E0E2EC" - }, - "layout": "vertical", - "gap": 16, - "padding": [ - 16, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "LpY6g", - "name": "sLogo", - "width": 28, - "height": 28, - "fill": { - "type": "image", - "enabled": true, - "url": "./apps/web/src/assets/logo.svg", - "mode": "fit" - } - }, - { - "type": "frame", - "id": "iiNkj", - "name": "sNavGrp", - "layout": "vertical", - "gap": 4, - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "Kc1Kj", - "name": "sNH", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "RxmBa", - "name": "sNHI", - "width": 20, - "height": 20, - "iconFontName": "house", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - }, - { - "type": "frame", - "id": "HZhhG", - "name": "sND", - "width": 36, - "height": 36, - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "U2nVP", - "name": "sNDI", - "width": 20, - "height": 20, - "iconFontName": "layers", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - } - ] - } - ] - }, - { - "type": "frame", - "id": "RuGeK", - "name": "sSpacer", - "width": 36, - "height": "fill_container" - }, - { - "type": "frame", - "id": "Ar8dl", - "name": "sSettBtn", - "width": 36, - "height": 36, - "fill": "#4F46E518", - "cornerRadius": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "uWqEP", - "name": "sSettI", - "width": 20, - "height": 20, - "iconFontName": "settings", - "iconFontFamily": "lucide", - "fill": "#4F46E5" - } - ] - } - ] - }, - { - "type": "frame", - "id": "ZVU7k", - "name": "Main Content", - "width": "fill_container", - "height": 1720, - "fill": "#FFFFFF", - "layout": "vertical", - "gap": 24, - "padding": [ - 32, - 0 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "1wNwr", - "name": "sTitle", - "fill": "#1B1B2F", - "content": "Settings", - "fontFamily": "Inter", - "fontSize": 28, - "fontWeight": "600", - "letterSpacing": -0.5 - }, - { - "type": "frame", - "id": "vjikR", - "name": "Settings Cards", - "width": 896, - "layout": "vertical", - "gap": 20, - "children": [ - { - "type": "frame", - "id": "6XfE3", - "name": "Appearance Card", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "NIz0U", - "name": "acHeader", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "X3wVU", - "name": "acTitle", - "fill": "#1B1B2F", - "content": "Appearance", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "Wt6k6", - "name": "acDesc", - "fill": "#6B6F80", - "content": "Customize how the application looks for you.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "zIWIm", - "name": "acContent", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "frame", - "id": "i6iqo", - "name": "themeRow", - "width": "fill_container", - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "2hJwt", - "name": "themeLabel", - "fill": "#1B1B2F", - "content": "Theme", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "ilzJf", - "name": "themeSelect", - "width": 180, - "height": 36, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "SpFnm", - "name": "themeSelLeft", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "zwWCK", - "name": "themeIcon", - "width": 16, - "height": 16, - "iconFontName": "sun", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "ayIHO", - "name": "themeVal", - "fill": "#1B1B2F", - "content": "Light", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "icon_font", - "id": "01EnJ", - "name": "themeChev", - "width": 14, - "height": 14, - "iconFontName": "chevrons-up-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - }, - { - "type": "frame", - "id": "Bs6Yh", - "name": "colorRow", - "width": "fill_container", - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "ga7Nd", - "name": "colorLabel", - "fill": "#1B1B2F", - "content": "Color theme", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "HXnGs", - "name": "colorSelect", - "width": 180, - "height": 36, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "fYQds", - "name": "colorSelLeft", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "icon_font", - "id": "LJzf9", - "name": "colorIcon", - "width": 16, - "height": 16, - "iconFontName": "palette", - "iconFontFamily": "lucide", - "fill": "#6B6F80" - }, - { - "type": "text", - "id": "thmxi", - "name": "colorVal", - "fill": "#1B1B2F", - "content": "Default", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "icon_font", - "id": "IXo7x", - "name": "colorChev", - "width": 14, - "height": 14, - "iconFontName": "chevrons-up-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - }, - { - "type": "frame", - "id": "MLoUF", - "name": "langRow", - "width": "fill_container", - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "j1Ly7", - "name": "langLabel", - "fill": "#1B1B2F", - "content": "Language", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "8phm4", - "name": "langSelect", - "width": 180, - "height": 36, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "9UGgG", - "name": "langVal", - "fill": "#1B1B2F", - "content": "English", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - }, - { - "type": "icon_font", - "id": "nYEmR", - "name": "langChev", - "width": 14, - "height": 14, - "iconFontName": "chevrons-up-down", - "iconFontFamily": "lucide", - "fill": "#A1A1AA" - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "GfGX3", - "name": "Dictionary Card", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "13DBU", - "name": "dictH", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "BpJBn", - "name": "dictTitle", - "fill": "#1B1B2F", - "content": "Dictionary", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "GYx2y", - "name": "dictDesc", - "fill": "#6B6F80", - "content": "Manage your dictionary.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "lGF5H", - "name": "importSect", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "padding": [ - 12, - 24, - 16, - 24 - ], - "children": [ - { - "type": "frame", - "id": "POwu7", - "name": "importRow", - "width": "fill_container", - "gap": 12, - "alignItems": "end", - "children": [ - { - "type": "frame", - "id": "60r0r", - "name": "fileInput", - "width": 280, - "height": 36, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "AZZRh", - "name": "fileText", - "fill": "#A1A1AA", - "content": "No file chosen", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "YbLL1", - "name": "importBtn", - "height": 36, - "fill": "#4F46E5", - "cornerRadius": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "KlF0H", - "name": "importBtnT", - "fill": "#FFFFFF", - "content": "Import", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - }, - { - "type": "text", - "id": "vTB7Y", - "name": "importWarn", - "fill": "#E5484D", - "content": "Any words that have the same ID will be overwritten.", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "B8tfk", - "name": "exportSect", - "width": "fill_container", - "stroke": { - "align": "inside", - "thickness": { - "top": 1 - }, - "fill": "#E2E3EA40" - }, - "padding": [ - 12, - 24, - 16, - 24 - ], - "children": [ - { - "type": "frame", - "id": "gGgTr", - "name": "exportBtn", - "height": 36, - "fill": "#F4F4F8", - "cornerRadius": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "MFPAj", - "name": "exportBtnT", - "fill": "#1B1B2F", - "content": "Export", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - }, - { - "type": "frame", - "id": "jdcCT", - "name": "deleteSect", - "width": "fill_container", - "stroke": { - "align": "inside", - "thickness": { - "top": 1 - }, - "fill": "#E2E3EA40" - }, - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "frame", - "id": "yZ9tm", - "name": "deleteBtn", - "height": 36, - "fill": "#E5484D", - "cornerRadius": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "K9nMF", - "name": "deleteBtnT", - "fill": "#FFFFFF", - "content": "Delete", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "0daPR", - "name": "Flashcards Card", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "DSnJZ", - "name": "fcH", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "ctD3B", - "name": "fcTitle", - "fill": "#1B1B2F", - "content": "Flashcards", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "CBYfb", - "name": "fcDesc", - "fill": "#6B6F80", - "content": "Customize how flashcards appear.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "EQyXq", - "name": "fcContent", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "text", - "id": "q3Gp9", - "name": "antLabel", - "fill": "#1B1B2F", - "content": "How should antonyms be shown in flashcards?", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "tTwSp", - "name": "radioGroup", - "width": "fill_container", - "layout": "vertical", - "gap": 8, - "children": [ - { - "type": "frame", - "id": "zIeRZ", - "name": "radio1", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "ellipse", - "id": "I2OpJ", - "name": "radio1Dot", - "width": 16, - "height": 16, - "stroke": { - "align": "inside", - "thickness": 1.5, - "fill": "#E2E3EA" - } - }, - { - "type": "text", - "id": "DzA9B", - "name": "radio1Text", - "fill": "#1B1B2F", - "content": "Don't show", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "K9zib", - "name": "radio2", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "ellipse", - "id": "Q2XNF", - "name": "radio2Dot", - "width": 16, - "height": 16, - "stroke": { - "align": "inside", - "thickness": 4, - "fill": "#4F46E5" - } - }, - { - "type": "text", - "id": "pNEZu", - "name": "radio2Text", - "fill": "#1B1B2F", - "content": "Show as a hint", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "BLfmL", - "name": "radio3", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "ellipse", - "id": "pGBq9", - "name": "radio3Dot", - "width": 16, - "height": 16, - "stroke": { - "align": "inside", - "thickness": 1.5, - "fill": "#E2E3EA" - } - }, - { - "type": "text", - "id": "511uF", - "name": "radio3Text", - "fill": "#1B1B2F", - "content": "Show after revealing the answer", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - } - ] - }, - { - "type": "frame", - "id": "VJLxI", - "name": "toggleRow", - "width": "fill_container", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": 16, - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "Re2iE", - "name": "toggleLeft", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "frame", - "id": "6ej3b", - "name": "toggleLabel", - "gap": 8, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "OpMtU", - "name": "toggleLabelText", - "fill": "#1B1B2F", - "content": "Reverse flashcards", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "frame", - "id": "pQmCY", - "name": "betaBadge", - "height": 18, - "fill": "#4F46E510", - "cornerRadius": 4, - "padding": [ - 0, - 6 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "JOrCk", - "name": "betaText", - "fill": "#4F46E5", - "content": "Beta", - "fontFamily": "Inter", - "fontSize": 10, - "fontWeight": "600" - } - ] - } - ] - }, - { - "type": "text", - "id": "xSTgT", - "name": "toggleDesc", - "fill": "#6B6F80", - "content": "Show English to Arabic flashcards.", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "eoz0z", - "name": "toggleSwitch", - "width": 40, - "height": 22, - "fill": "#E2E3EA", - "cornerRadius": 11, - "padding": 2, - "children": [ - { - "type": "ellipse", - "id": "hfNWm", - "name": "toggleKnob", - "fill": "#FFFFFF", - "width": 18, - "height": 18 - } - ] - } - ] - }, - { - "type": "frame", - "id": "JqtxV", - "name": "saveBtn", - "height": 36, - "fill": "#4F46E5", - "cornerRadius": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "WtGbc", - "name": "saveBtnT", - "fill": "#FFFFFF", - "content": "Save", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - }, - { - "type": "frame", - "id": "KcMqO", - "name": "clearSection", - "width": "fill_container", - "stroke": { - "align": "inside", - "thickness": { - "top": 1 - }, - "fill": "#E2E3EA40" - }, - "layout": "vertical", - "gap": 12, - "padding": [ - 16, - 0, - 0, - 0 - ], - "children": [ - { - "type": "frame", - "id": "A7Xjf", - "name": "clearBox", - "width": "fill_container", - "cornerRadius": 10, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": 16, - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "dxUIU", - "name": "clearLeft", - "layout": "vertical", - "gap": 2, - "children": [ - { - "type": "text", - "id": "MiX5o", - "name": "clearTitle", - "fill": "#1B1B2F", - "content": "Clear backlog", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "tATLl", - "name": "clearDesc", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 420, - "content": "Reschedule all backlog cards by grading them as 'Hard'.", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "BZQ7o", - "name": "clearBtn", - "height": 30, - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 0, - 12 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "ngoWm", - "name": "clearBtnT", - "fill": "#1B1B2F", - "content": "Clear", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "500" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "Dj52Q", - "name": "Debugging Card", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "jIJTd", - "name": "debugH", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "OzFga", - "name": "debugTitle", - "fill": "#1B1B2F", - "content": "Debugging", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "mFp9d", - "name": "debugDesc", - "fill": "#6B6F80", - "textGrowth": "fixed-width", - "width": 848, - "content": "If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "dmEY3", - "name": "debugContent", - "width": "fill_container", - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "frame", - "id": "u1Vi3", - "name": "resetBtn", - "height": 36, - "fill": "#F4F4F8", - "cornerRadius": 8, - "padding": [ - 0, - 16 - ], - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "aHG7c", - "name": "resetBtnT", - "fill": "#1B1B2F", - "content": "Reset local data", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "500" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "MQa7b", - "x": 3180, - "y": 2110, - "name": "Billing Card — Free", - "width": 896, - "fill": "#FFFFFF", - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "OOChT", - "name": "Billing Card — Free", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "xY4MG", - "name": "billingHeader", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "gZyye", - "name": "hTitle", - "fill": "#1B1B2F", - "content": "Billing", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "wyjOF", - "name": "hDesc", - "fill": "#6B6F80", - "content": "Manage your subscription.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "XUQg9", - "name": "planSection", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "frame", - "id": "0mO8A", - "name": "planRow", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "children": [ - { - "type": "frame", - "id": "LvVYn", - "name": "planLeft", - "layout": "vertical", - "gap": 6, - "children": [ - { - "type": "text", - "id": "4w8Fv", - "name": "planLabel", - "fill": "#6B6F80", - "content": "Current plan", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - }, - { - "type": "frame", - "id": "ioIB7", - "name": "planNameRow", - "gap": 10, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "25ENL", - "name": "planName", - "fill": "#1B1B2F", - "content": "Free", - "fontFamily": "Inter", - "fontSize": 22, - "fontWeight": "700", - "letterSpacing": -0.3 - } - ] - } - ] - }, - { - "type": "text", - "id": "Rd6ce", - "name": "upgradeLabel", - "fill": "#1B1B2F", - "content": "Upgrade to Pro", - "fontFamily": "Inter", - "fontSize": 15, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "cX0BQ", - "name": "upgradeButtons", - "width": "fill_container", - "gap": 10, - "children": [ - { - "type": "frame", - "id": "LF2Dx", - "name": "monthlyBtn", - "width": "fill_container", - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "gap": 2, - "padding": [ - 12, - 20 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "nveAj", - "name": "mTxt", - "fill": "#1B1B2F", - "content": "Monthly — $10/mo", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - }, - { - "type": "text", - "id": "BQ0pU", - "name": "mSub", - "fill": "#9CA3AF", - "content": "Billed monthly", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "b7KNH", - "name": "annualBtn", - "width": "fill_container", - "fill": "#4F46E5", - "cornerRadius": 8, - "layout": "vertical", - "gap": 2, - "padding": [ - 12, - 20 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "VRhDC", - "name": "annualTopRow", - "gap": 8, - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "FXOtS", - "name": "aTxt", - "fill": "#FFFFFF", - "content": "Annual — $7/mo", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "600" - }, - { - "type": "frame", - "id": "LjTnz", - "name": "saveBadge", - "fill": "#FFFFFF25", - "cornerRadius": 100, - "padding": [ - 2, - 8 - ], - "children": [ - { - "type": "text", - "id": "GlZHZ", - "name": "saveText", - "fill": "#FFFFFF", - "content": "Save 30%", - "fontFamily": "Inter", - "fontSize": 11, - "fontWeight": "600" - } - ] - } - ] - }, - { - "type": "text", - "id": "LLgQJ", - "name": "aSub", - "fill": "#FFFFFFB0", - "content": "Billed $84 / year", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "normal" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "XJidR", - "x": 3180, - "y": 2605, - "name": "Billing Card — Pro", - "width": 896, - "fill": "#FFFFFF", - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "U7s6j", - "name": "Billing Card — Pro", - "width": "fill_container", - "cornerRadius": 12, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "layout": "vertical", - "children": [ - { - "type": "frame", - "id": "j2d8l", - "name": "billingHeader", - "width": "fill_container", - "layout": "vertical", - "gap": 4, - "padding": [ - 24, - 24, - 12, - 24 - ], - "children": [ - { - "type": "text", - "id": "6tGxn", - "name": "hTitle", - "fill": "#1B1B2F", - "content": "Billing", - "fontFamily": "Inter", - "fontSize": 18, - "fontWeight": "600", - "letterSpacing": -0.2 - }, - { - "type": "text", - "id": "RC3Ub", - "name": "hDesc", - "fill": "#6B6F80", - "content": "Manage your subscription.", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "normal" - } - ] - }, - { - "type": "frame", - "id": "ZnAcW", - "name": "planSection", - "width": "fill_container", - "layout": "vertical", - "gap": 16, - "padding": [ - 12, - 24, - 24, - 24 - ], - "children": [ - { - "type": "frame", - "id": "X1DsI", - "name": "planRow", - "width": "fill_container", - "justifyContent": "space_between", - "alignItems": "center", - "children": [ - { - "type": "frame", - "id": "jbDbq", - "name": "planLeft", - "layout": "vertical", - "gap": 6, - "children": [ - { - "type": "text", - "id": "Os7Bk", - "name": "planLabel", - "fill": "#6B6F80", - "content": "Current plan", - "fontFamily": "Inter", - "fontSize": 13, - "fontWeight": "normal" - }, - { - "type": "frame", - "id": "RSGS3", - "name": "planNameRow", - "gap": 10, - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "gloC2", - "name": "planName", - "fill": "#1B1B2F", - "content": "Pro", - "fontFamily": "Inter", - "fontSize": 22, - "fontWeight": "700", - "letterSpacing": -0.3 - }, - { - "type": "frame", - "id": "BZyH3", - "name": "planBadge", - "fill": "#EEF2FF", - "cornerRadius": 100, - "padding": [ - 4, - 10 - ], - "children": [ - { - "type": "text", - "id": "zpllo", - "name": "badgeText", - "fill": "#4F46E5", - "content": "Active", - "fontFamily": "Inter", - "fontSize": 12, - "fontWeight": "600" - } - ] - } - ] - } - ] - }, - { - "type": "frame", - "id": "ie8eQ", - "name": "upgradeBtn", - "fill": "#FFFFFF", - "cornerRadius": 8, - "stroke": { - "align": "inside", - "thickness": 1, - "fill": "#E2E3EA" - }, - "padding": [ - 10, - 20 - ], - "justifyContent": "center", - "alignItems": "center", - "children": [ - { - "type": "text", - "id": "KVFQg", - "name": "upgradeTxt", - "fill": "#1B1B2F", - "content": "Manage Subscription", - "fontFamily": "Inter", - "fontSize": 14, - "fontWeight": "500" - } - ] - } - ] - } - ] - } - ] - } - ] - }, - { - "type": "rectangle", - "id": "VrJME", - "x": -363, - "y": 1000, - "fill": { - "type": "image", - "enabled": true, - "url": "android-chrome-512x512.png", - "mode": "fill" - }, - "width": 302, - "height": 280 - } - ] -} \ No newline at end of file diff --git a/design/bahar.pen b/design/bahar.pen new file mode 100644 index 00000000..9b4774ba --- /dev/null +++ b/design/bahar.pen @@ -0,0 +1,36058 @@ +{ + "version": "2.9", + "children": [ + { + "type": "frame", + "id": "bi8Au", + "x": 0, + "y": 0, + "name": "Frame", + "clip": true, + "width": 800, + "height": 600, + "fill": "#FFFFFF", + "layout": "none" + }, + { + "type": "frame", + "id": "XXKiE", + "x": 900, + "y": 0, + "name": "Homepage", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "KcDr9", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "XUqTU", + "name": "logoWrap", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + }, + "justifyContent": "center", + "alignItems": "center" + }, + { + "type": "frame", + "id": "Snvsr", + "name": "navItems", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "AkYaN", + "name": "navHomeBtn", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "DNq19", + "name": "navHomeIcon", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "sFseQ", + "name": "navDecksBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "5ylPb", + "name": "navDecksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "zGj6u", + "name": "navSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "WnwJj", + "name": "navSettingsBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "tkJAB", + "name": "navSettingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "evUXj", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 16, + "padding": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "gGLll", + "name": "searchWrap", + "width": 768, + "children": [ + { + "type": "frame", + "id": "kwZjD", + "name": "Search Input", + "width": 450, + "height": 36, + "fill": "#FFFFFF", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000000A", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 2 + }, + "gap": 8, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ps7iI", + "name": "sIcon", + "width": 16, + "height": 16, + "iconFontName": "search", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + }, + { + "type": "text", + "id": "WNhpK", + "name": "sText", + "fill": "#A1A1AA", + "content": "Search...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Kmxuh", + "name": "Dictionary Header", + "width": 768, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 20, + 24, + 16, + 24 + ], + "children": [ + { + "type": "frame", + "id": "85zRr", + "name": "headerRow", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "yT1D0", + "name": "headerLeft", + "gap": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "XTRN9", + "name": "iconCircle", + "width": 40, + "height": 40, + "fill": "#4F46E518", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E530" + }, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "BLvsI", + "name": "bookIcon2", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "Qsr7g", + "name": "titleBlock", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "EA5sw", + "name": "hTitle", + "fill": "#1B1B2F", + "content": "Your Dictionary", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "ZxunO", + "name": "hSubtitle", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "v0HJB", + "name": "hCount", + "fill": "#1B1B2FCC", + "content": "142", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "ifHHf", + "name": "hSep", + "fill": "#6B6F80", + "content": "results", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "F1GV4", + "name": "hTime", + "fill": "#6B6F80", + "content": "· 12ms", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "sESdr", + "name": "headerRight", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "CXmqQ", + "name": "addWordBtn", + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Tz03R", + "name": "addWordIcon", + "width": 16, + "height": 16, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "Cbwhy", + "name": "addWordText", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "Ra4vW", + "name": "reviewBtn2", + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 8, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "mqpnh", + "name": "reviewIcon2", + "width": 16, + "height": 16, + "iconFontName": "graduation-cap", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "zmlog", + "name": "reviewText2", + "fill": "#1B1B2F", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "1SVFH", + "name": "reviewBadge3", + "height": 20, + "fill": "#4F46E5", + "cornerRadius": 10, + "padding": [ + 0, + 6 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "IZNmZ", + "name": "reviewNum", + "fill": "#FFFFFF", + "content": "12", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "RqQZO", + "name": "filterToggle", + "height": 36, + "cornerRadius": 8, + "gap": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "RMt9e", + "name": "filterIcon2", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "jdTl1", + "name": "filterLabel", + "fill": "#6B6F80", + "content": "Show filters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "0KvLG", + "name": "Word Cards", + "width": 768, + "layout": "vertical", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "ByWlm", + "name": "Word Card 1", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "rectangle", + "cornerRadius": 99, + "id": "tVCrc", + "name": "accentLine1", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4F46E599", + "position": 0 + }, + { + "color": "#4F46E533", + "position": 1 + } + ] + }, + "width": 3, + "height": 0 + }, + { + "type": "frame", + "id": "SqWJ3", + "name": "card1Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "P1I1b", + "name": "card1Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "yCqyp", + "name": "card1Title", + "fill": "#1B1B2F", + "content": "كِتَاب", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "wxtZU", + "name": "card1Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "kFpfC", + "name": "card1Copy", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "5H9Xg", + "name": "card1CopyIcon", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "AfwD8", + "name": "card1Edit", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "CLwZC", + "name": "card1EditIcon", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "CxqsF", + "name": "card1Expand", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "h9Nhl", + "name": "card1ExpandIcon", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "P5dML", + "name": "card1Trans", + "fill": "#6B6F80", + "content": "book", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "8EaZU", + "name": "Word Card 2", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "sZPG9", + "name": "card2Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "cyh61", + "name": "card2Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "hI7Xh", + "name": "card2Title", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "tXc00", + "name": "card2Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "X6Zya", + "name": "card2CopyBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "mRB6V", + "name": "card2CopyIcon", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "frk6y", + "name": "card2EditBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "o36HM", + "name": "card2EditIcon", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "HQCcJ", + "name": "card2ExpandBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6oX6d", + "name": "card2ExpandIcon", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "yJrXY", + "name": "card2Trans", + "fill": "#6B6F80", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "dHsJP", + "name": "Word Card 3 (Expanded)", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#F4F4F880", + "position": 0 + }, + { + "color": "#F4F4F84D", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "668JD", + "name": "card3Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "5iLdO", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "ZKEJ5", + "name": "card3Title", + "fill": "#1B1B2F", + "content": "جَمِيل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "NHitg", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "JmWHN", + "name": "card3C", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "4tnvl", + "name": "card3CI", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "iugg6", + "name": "card3E", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "L20U8", + "name": "card3EI", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "N6AaI", + "name": "card3X", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "pfef4", + "name": "card3XI", + "width": 16, + "height": 16, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "utLjF", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "5HuCV", + "name": "expandDivider", + "fill": "#E2E3EA80", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "veNvH", + "name": "expandDetails", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 4, + 0, + 0, + 0 + ], + "children": [ + { + "type": "frame", + "id": "VuvSK", + "name": "typeRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "s2hAX", + "name": "typeBadge", + "height": 24, + "fill": "#4F46E518", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "QmD9i", + "name": "typeText", + "fill": "#4F46E5", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "FD3nx", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "pRg59", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "vbg8A", + "name": "defSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "PXTmr", + "name": "defLabel", + "fill": "#6B6F80B3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "fMIrF", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "cSrEL", + "name": "morphSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "D9M4O", + "name": "morphLabel", + "fill": "#6B6F80B3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "HZjtQ", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "8xeqW", + "name": "morphCell1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "2DtTg", + "name": "morphCell1L", + "fill": "#6B6F80", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Y5IIh", + "name": "morphCell1V", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "6yQxg", + "name": "morphCell2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "kqxDc", + "name": "morphCell2L", + "fill": "#6B6F80", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "kW7j6", + "name": "morphCell2V", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "b8Hua", + "name": "morphCell3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "sKMxc", + "name": "morphCell3L", + "fill": "#6B6F80", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "MzNMV", + "name": "morphCell3V", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uFs3k", + "name": "exSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "ZgrQT", + "name": "exLabel", + "fill": "#6B6F80B3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "x1WJ4", + "name": "exBox", + "width": "fill_container", + "fill": "#F4F4F84D", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA4D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 8, + 12 + ], + "children": [ + { + "type": "text", + "id": "bOQPx", + "name": "exArabic", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Dv7h9", + "name": "exEnglish", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "q6osI", + "name": "tagsSection", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "Ul6xU", + "name": "tagPill1", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3K9OB", + "name": "tagPill1Text", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "rdJF8", + "name": "tagPill2", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "0Xokz", + "name": "tagPill2Text", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "dFBAC", + "name": "tagPill3", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "CJCij", + "name": "tagPill3Text", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Jt8IR", + "name": "Word Card 4", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "STQCB", + "name": "card4Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "o2DaT", + "name": "card4Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "6J4tK", + "name": "card4Title", + "fill": "#1B1B2F", + "content": "مَدْرَسَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "8NhWK", + "name": "card4Btns", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "1jk1n", + "name": "card4B1", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zHarV", + "name": "card4B1I", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "wVCuW", + "name": "card4B2", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "kc82m", + "name": "card4B2I", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "wbGf0", + "name": "card4B3", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "8R29I", + "name": "card4B3I", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "jKKsP", + "name": "card4Trans", + "fill": "#6B6F80", + "content": "school", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "cXwXi", + "x": 2540, + "y": 0, + "name": "Flashcard Drawer", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#00000066", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "0rwps", + "x": 0, + "y": 160, + "name": "Drawer Panel", + "clip": true, + "width": 1440, + "height": 740, + "fill": "#FFFFFF", + "cornerRadius": [ + 16, + 16, + 0, + 0 + ], + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "yVObG", + "name": "Drawer Header", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 32, + 16, + 32 + ], + "children": [ + { + "type": "frame", + "id": "qaLSN", + "name": "dragHandle", + "width": "fill_container", + "justifyContent": "center", + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4Ko7U", + "name": "handleBar", + "fill": "#D4D4D8", + "width": 48, + "height": 4 + } + ] + }, + { + "type": "frame", + "id": "yjUdT", + "name": "Queue Selector", + "width": "fill_container", + "gap": 8, + "justifyContent": "center", + "children": [ + { + "type": "frame", + "id": "OrJvL", + "name": "queueReview", + "height": 40, + "fill": "#FFFFFF", + "cornerRadius": 10, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000001A", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 3 + }, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "LBBJ3", + "name": "reviewIcon", + "width": 18, + "height": 18, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "dvGYG", + "name": "reviewLabel", + "fill": "#1B1B2F", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "QyqGC", + "name": "reviewBadge2", + "height": 20, + "fill": "#4F46E5", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "LeNL7", + "name": "reviewCount", + "fill": "#FFFFFF", + "content": "5", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "E0IuJ", + "name": "queueBacklog", + "height": 40, + "cornerRadius": 10, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "u1Ajd", + "name": "backlogIcon", + "width": 18, + "height": 18, + "iconFontName": "archive", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + }, + { + "type": "text", + "id": "6zs8c", + "name": "backlogLabel", + "fill": "#A1A1AA", + "content": "Backlog", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "tEbeF", + "name": "backlogBadge", + "height": 20, + "fill": "#EA580C", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "R8yMy", + "name": "backlogCount", + "fill": "#FFFFFF", + "content": "2", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "yhX5e", + "name": "cardsLeft", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "5 cards left", + "textAlign": "center", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "a2GNv", + "name": "Card Area", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 16, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "OKSdu", + "name": "tagRow", + "gap": 6, + "padding": [ + 0, + 0, + 8, + 0 + ], + "children": [ + { + "type": "frame", + "id": "ING6j", + "name": "tag1", + "height": 24, + "fill": "#4F46E518", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "bR7X7", + "name": "tag1Text", + "fill": "#4F46E5", + "content": "noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "a6qO4", + "name": "tag2", + "height": 24, + "fill": "#F0FDF4", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "S3WiQ", + "name": "tag2Text", + "fill": "#16A34A", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "uWpE3", + "name": "Flashcard", + "width": 640, + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 135, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF", + "position": 0 + }, + { + "color": "#FAFAFA", + "position": 1 + } + ] + }, + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA80" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000000D", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 16 + }, + "layout": "vertical", + "gap": 24, + "padding": 32, + "children": [ + { + "type": "frame", + "id": "zsmuo", + "name": "Question", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "2dBJS", + "name": "arabicWord", + "fill": "#1B1B2FE6", + "content": "كِتَاب", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 32, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "cJgIt", + "name": "morphInfo", + "fill": "#F4F4F880", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "9OuV1", + "name": "morphText", + "fill": "#6B6F80", + "content": "كُتُب :plural", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "zWA5o", + "name": "exampleText", + "fill": "#6B6F80", + "content": "هذا كِتَابٌ جَمِيلٌ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "rectangle", + "id": "Dlgub", + "name": "cardDivider", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF00", + "position": 0 + }, + { + "color": "#E2E3EA", + "position": 0.5 + }, + { + "color": "#FFFFFF00", + "position": 1 + } + ] + }, + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "EIIQl", + "name": "Answer", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "8RXku", + "name": "answerIndicator", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "go5F2", + "name": "checkIcon", + "width": 14, + "height": 14, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "q0bpH", + "name": "answerLabel", + "fill": "#16A34A", + "content": "ANSWER", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 2 + } + ] + }, + { + "type": "text", + "id": "IbQ9B", + "name": "definition", + "fill": "#6B6F80", + "content": "كتاب، مجلّد", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 18, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "DJWZE", + "name": "translation", + "fill": "#1B1B2FE6", + "content": "book", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "PyyqO", + "name": "Grading Footer", + "width": "fill_container", + "fill": "#FAFAFA08", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 8, + "padding": [ + 16, + 32, + 24, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JuGGx", + "name": "Grade Buttons", + "width": 640, + "gap": 10, + "children": [ + { + "type": "frame", + "id": "2WZ9e", + "name": "btnAgain", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#6B6F8033" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "r8F4Q", + "name": "againIcon", + "width": 20, + "height": 20, + "iconFontName": "rotate-ccw", + "iconFontFamily": "lucide", + "fill": "#71717A" + }, + { + "type": "text", + "id": "q35t5", + "name": "againLabel", + "fill": "#3f3f46", + "content": "Again", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "VyZcu", + "name": "againTime", + "fill": "#A1A1AA", + "content": "1m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "9Om95", + "name": "btnHard", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E07A2C33" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "708Wp", + "name": "hardIcon", + "width": 20, + "height": 20, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#E07A2C" + }, + { + "type": "text", + "id": "Jscji", + "name": "hardLabel", + "fill": "#3f3f46", + "content": "Hard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "M4wuI", + "name": "hardTime", + "fill": "#A1A1AA", + "content": "6m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "N0D5q", + "name": "btnGood", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E54D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "cVXUw", + "name": "goodIcon", + "width": 20, + "height": 20, + "iconFontName": "thumbs-up", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "wPn4z", + "name": "goodLabel", + "fill": "#3f3f46", + "content": "Good", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "GLRH2", + "name": "goodTime", + "fill": "#A1A1AA", + "content": "1.2d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "hNc3M", + "name": "btnEasy", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#16A34A4D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "JrXVP", + "name": "easyIcon", + "width": 20, + "height": 20, + "iconFontName": "zap", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "b93Rs", + "name": "easyLabel", + "fill": "#3f3f46", + "content": "Easy", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "FBowB", + "name": "easyTime", + "fill": "#A1A1AA", + "content": "3.5d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "knKsm", + "x": 900, + "y": 1000, + "name": "Homepage — Filters Expanded", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "sATiu", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "qTA5O", + "name": "logoWrap", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + }, + "justifyContent": "center", + "alignItems": "center" + }, + { + "type": "frame", + "id": "morAf", + "name": "navItems", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "qdxEt", + "name": "navHomeBtn", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "saIhn", + "name": "navHomeIcon", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "aM8KJ", + "name": "navDecksBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "lBJpd", + "name": "navDecksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "6XCzD", + "name": "navSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "4RV9g", + "name": "navSettingsBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "uJpCI", + "name": "navSettingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "xDC0c", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 16, + "padding": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "q2W1K", + "name": "searchWrap", + "width": 768, + "children": [ + { + "type": "frame", + "id": "GLRlp", + "name": "Search Input", + "width": 450, + "height": 36, + "fill": "#FFFFFF", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000000A", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 2 + }, + "gap": 8, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ICB9r", + "name": "sIcon", + "width": 16, + "height": 16, + "iconFontName": "search", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + }, + { + "type": "text", + "id": "vth8H", + "name": "sText", + "fill": "#A1A1AA", + "content": "Search...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ELBdQ", + "name": "Dictionary Header", + "width": 768, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 20, + 24, + 16, + 24 + ], + "children": [ + { + "type": "frame", + "id": "DQXVf", + "name": "headerRow", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "4Xd4o", + "name": "headerLeft", + "gap": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "WrP1r", + "name": "iconCircle", + "width": 40, + "height": 40, + "fill": "#4F46E518", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E530" + }, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Zr1RT", + "name": "bookIcon2", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "L2tOr", + "name": "titleBlock", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "cyBUE", + "name": "hTitle", + "fill": "#1B1B2F", + "content": "Your Dictionary", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "lQtPi", + "name": "hSubtitle", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ENgbw", + "name": "hCount", + "fill": "#1B1B2FCC", + "content": "142", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "zqTLB", + "name": "hSep", + "fill": "#6B6F80", + "content": "results", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "w1G5J", + "name": "hTime", + "fill": "#6B6F80", + "content": "· 12ms", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "iJ0i3", + "name": "headerRight", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "jSkPJ", + "name": "addWordBtn", + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ESbeu", + "name": "addWordIcon", + "width": 16, + "height": 16, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "EWtbr", + "name": "addWordText", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "TughD", + "name": "reviewBtn2", + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 8, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Sflrm", + "name": "reviewIcon2", + "width": 16, + "height": 16, + "iconFontName": "graduation-cap", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "CMZbA", + "name": "reviewText2", + "fill": "#1B1B2F", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "wiymL", + "name": "reviewBadge3", + "height": 20, + "fill": "#4F46E5", + "cornerRadius": 10, + "padding": [ + 0, + 6 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3Kuow", + "name": "reviewNum", + "fill": "#FFFFFF", + "content": "12", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "RMF6r", + "name": "filterToggle", + "height": 36, + "cornerRadius": 8, + "gap": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "0V2eV", + "name": "filterIcon2", + "width": 16, + "height": 16, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "R0hfb", + "name": "filterLabel", + "fill": "#6B6F80", + "content": "Hide filters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "FVfZr", + "name": "activeBadge", + "height": 18, + "fill": "#4F46E5", + "cornerRadius": 9, + "padding": [ + 0, + 6 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ZHDJN", + "name": "activeBadgeText", + "fill": "#FFFFFF", + "content": "3", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "U4R2H", + "name": "Expanded Filters", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "h9ZKk", + "name": "filtersHeader", + "width": "fill_container", + "gap": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "yPMRB", + "name": "filtersIconLabel", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "rgmOV", + "name": "filtersIcon", + "width": 16, + "height": 16, + "iconFontName": "sliders-horizontal", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "UDWz7", + "name": "filtersLabel", + "fill": "#6B6F80", + "content": "Filters", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "rectangle", + "id": "rY4gu", + "name": "filtersSep", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#E2E3EA80", + "position": 0 + }, + { + "color": "#E2E3EA", + "position": 0.5 + }, + { + "color": "#E2E3EA80", + "position": 1 + } + ] + }, + "width": "fill_container", + "height": 1 + } + ] + }, + { + "type": "frame", + "id": "TE6ai", + "name": "tagsSection", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "oRkX4", + "name": "tagsLabel", + "fill": "#6B6F80", + "content": "Tags", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "Ids4Y", + "name": "tagsDropdown", + "width": 200, + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "fzaRS", + "name": "tagsPlaceholder", + "fill": "#1B1B2F", + "content": "2 tags selected", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "CFbUP", + "name": "tagsChevronsIcon", + "width": 16, + "height": 16, + "iconFontName": "chevrons-up-down", + "iconFontFamily": "lucide", + "fill": "#6B6F8080" + } + ] + }, + { + "type": "frame", + "id": "OtADV", + "name": "selectedTags", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "Lgsda", + "name": "selTag1", + "height": 28, + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 6, + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TYjJW", + "name": "selTag1Text", + "fill": "#1B1B2F", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "V5WcH", + "name": "selTag1X", + "width": 14, + "height": 14, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#6B6F80B3" + } + ] + }, + { + "type": "frame", + "id": "7VWOp", + "name": "selTag2", + "height": 28, + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 6, + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "THbCH", + "name": "selTag2Text", + "fill": "#1B1B2F", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "gk7QE", + "name": "selTag2X", + "width": 14, + "height": 14, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#6B6F80B3" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZVxSP", + "name": "sortHeader", + "width": "fill_container", + "gap": 16, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "d8GK1", + "name": "sortIconLabel", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Ft9sF", + "name": "sortIcon", + "width": 16, + "height": 16, + "iconFontName": "arrow-down-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "6HGas", + "name": "sortLabel", + "fill": "#6B6F80", + "content": "Sort by", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "rectangle", + "id": "Fr7EL", + "name": "sortSep", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#E2E3EA80", + "position": 0 + }, + { + "color": "#E2E3EA", + "position": 0.5 + }, + { + "color": "#E2E3EA80", + "position": 1 + } + ] + }, + "width": "fill_container", + "height": 1 + } + ] + }, + { + "type": "frame", + "id": "4IU6j", + "name": "sortSection", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "5j0Nb", + "name": "sortDropdown", + "width": 200, + "height": 36, + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "IZKin", + "name": "sortValue", + "fill": "#1B1B2F", + "content": "Recently added", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "eh7uI", + "name": "sortChevron", + "width": 16, + "height": 16, + "iconFontName": "chevrons-up-down", + "iconFontFamily": "lucide", + "fill": "#6B6F8080" + } + ] + } + ] + }, + { + "type": "frame", + "id": "yjweR", + "name": "clearBtn", + "height": 32, + "cornerRadius": 8, + "gap": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "gNzbg", + "name": "clearIcon", + "width": 16, + "height": 16, + "iconFontName": "funnel-x", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "c9y8q", + "name": "clearText", + "fill": "#6B6F80", + "content": "Clear all filters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "4Hs8J", + "name": "Word Cards", + "width": 768, + "layout": "vertical", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "sW2X5", + "name": "Word Card 1", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "rectangle", + "cornerRadius": 99, + "id": "v6Wxo", + "name": "accentLine1", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4F46E599", + "position": 0 + }, + { + "color": "#4F46E533", + "position": 1 + } + ] + }, + "width": 3, + "height": 0 + }, + { + "type": "frame", + "id": "7o0K5", + "name": "card1Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "Kt64O", + "name": "card1Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "d5WYU", + "name": "card1Title", + "fill": "#1B1B2F", + "content": "كِتَاب", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "rOh6G", + "name": "card1Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "ZYrSL", + "name": "card1Copy", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "YrQ2d", + "name": "card1CopyIcon", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "09RGp", + "name": "card1Edit", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "75DRf", + "name": "card1EditIcon", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "G8je8", + "name": "card1Expand", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "GkNEV", + "name": "card1ExpandIcon", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "vWPvO", + "name": "card1Trans", + "fill": "#6B6F80", + "content": "book", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "z8S74", + "name": "Word Card 2", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "zOgWF", + "name": "card2Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "5VjVz", + "name": "card2Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Z54uU", + "name": "card2Title", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "nd3kz", + "name": "card2Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "YUkTX", + "name": "card2CopyBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "T7PD3", + "name": "card2CopyIcon", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "MC90q", + "name": "card2EditBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "oktpr", + "name": "card2EditIcon", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "voFra", + "name": "card2ExpandBtn", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "vUA2D", + "name": "card2ExpandIcon", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "gldJd", + "name": "card2Trans", + "fill": "#6B6F80", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "i1qIp", + "name": "Word Card 3 (Expanded)", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#F4F4F880", + "position": 0 + }, + { + "color": "#F4F4F84D", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "Jm8fR", + "name": "card3Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "mR8BP", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Yz89B", + "name": "card3Title", + "fill": "#1B1B2F", + "content": "جَمِيل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "kyBUr", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "ulyps", + "name": "card3C", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "R3zp5", + "name": "card3CI", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "cBjB3", + "name": "card3E", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ZZBEw", + "name": "card3EI", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "I3QyI", + "name": "card3X", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "HOAyD", + "name": "card3XI", + "width": 16, + "height": 16, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "qXgXV", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "tFG0J", + "name": "expandDivider", + "fill": "#E2E3EA80", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "Xk5Uy", + "name": "expandDetails", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 4, + 0, + 0, + 0 + ], + "children": [ + { + "type": "frame", + "id": "hFAHU", + "name": "typeRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "orUBI", + "name": "typeBadge", + "height": 24, + "fill": "#4F46E518", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "z4aEC", + "name": "typeText", + "fill": "#4F46E5", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "0zCnq", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rkXLi", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "EdZIt", + "name": "defSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "2FzTy", + "name": "defLabel", + "fill": "#6B6F80B3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "2hHQi", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "jb0f5", + "name": "morphSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "yROC3", + "name": "morphLabel", + "fill": "#6B6F80B3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "mMYax", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "VdqA8", + "name": "morphCell1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "1J8qz", + "name": "morphCell1L", + "fill": "#6B6F80", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "IRbDz", + "name": "morphCell1V", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ViMl7", + "name": "morphCell2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "yxUSd", + "name": "morphCell2L", + "fill": "#6B6F80", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "3I2wt", + "name": "morphCell2V", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "lxo7e", + "name": "morphCell3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "0R4fj", + "name": "morphCell3L", + "fill": "#6B6F80", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "yl1ef", + "name": "morphCell3V", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "WnnXS", + "name": "exSection", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "7pe9G", + "name": "exLabel", + "fill": "#6B6F80B3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "8CJni", + "name": "exBox", + "width": "fill_container", + "fill": "#F4F4F84D", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA4D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 8, + 12 + ], + "children": [ + { + "type": "text", + "id": "zgIEJ", + "name": "exArabic", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "uzF2h", + "name": "exEnglish", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "EOxuk", + "name": "tagsSection", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "5A9wE", + "name": "tagPill1", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "AzoPy", + "name": "tagPill1Text", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "K7Qc7", + "name": "tagPill2", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "NiZSl", + "name": "tagPill2Text", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "jI0yJ", + "name": "tagPill3", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 12, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TFI4D", + "name": "tagPill3Text", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ossjA", + "name": "Word Card 4", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 16, + 20 + ], + "children": [ + { + "type": "frame", + "id": "oXTxz", + "name": "card4Inner", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "tnTSg", + "name": "card4Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "FEOCN", + "name": "card4Title", + "fill": "#1B1B2F", + "content": "مَدْرَسَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 30, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "Gu3wa", + "name": "card4Btns", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "TeZcJ", + "name": "card4B1", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "FKM7J", + "name": "card4B1I", + "width": 16, + "height": 16, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "XFIEp", + "name": "card4B2", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "fne9C", + "name": "card4B2I", + "width": 16, + "height": 16, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "H4Bmh", + "name": "card4B3", + "width": 32, + "height": 32, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "AXWis", + "name": "card4B3I", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "SY23k", + "name": "card4Trans", + "fill": "#6B6F80", + "content": "school", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ncQzW", + "x": 5796, + "y": 5175, + "name": "Homepage — Redesigned", + "clip": true, + "width": 1440, + "height": 960, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "y2XJN", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "C34fh", + "name": "logoWrap", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "3g4EH", + "name": "navGroup", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "eBMGJ", + "name": "navHome", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "2O6a1", + "name": "navHomeIcon", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "zu1DB", + "name": "navDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "oRFGo", + "name": "navDecksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "xJCVq", + "name": "navSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "q97mK", + "name": "navSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "8tqt4", + "name": "navSettingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "CPilM", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "padding": [ + 24, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "SQbrJ", + "name": "Content Column", + "width": 768, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "m41Gq", + "name": "Search Bar", + "width": "fill_container", + "height": 48, + "fill": "#F8F8FB", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "gap": 10, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6NTRU", + "name": "searchIcon", + "width": 20, + "height": 20, + "iconFontName": "search", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "CgfHi", + "name": "searchPlaceholder", + "fill": "#A1A1AA", + "content": "Search your dictionary...", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "1rRWh", + "name": "searchSpacer", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "kGPNo", + "name": "searchKbd", + "height": 24, + "fill": "#FFFFFF", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 6 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "HC478", + "name": "searchKbdText", + "fill": "#A1A1AA", + "content": "⌘K", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "BIrBL", + "name": "Header Row", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "qY3sV", + "name": "headerLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dXM10", + "name": "headerIcon", + "width": 36, + "height": 36, + "fill": "#4F46E512", + "cornerRadius": 10, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "dR20B", + "name": "headerBookIcon", + "width": 18, + "height": 18, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "PreW5", + "name": "headerTitleBlock", + "gap": 8, + "children": [ + { + "type": "text", + "id": "joGSE", + "name": "headerTitle", + "fill": "#1B1B2F", + "content": "Your Dictionary", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "c9Pgq", + "name": "headerCount", + "fill": "#A1A1AA", + "content": "142 words", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "kh479", + "name": "headerRight", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "efRt4", + "name": "filterBtn", + "height": 34, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "cOaNv", + "name": "filterBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "sliders-horizontal", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "pIIJa", + "name": "filterBtnText", + "fill": "#1B1B2F", + "content": "Filters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "XYHhG", + "name": "addBtn", + "height": 34, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "nvNxu", + "name": "addBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "sVoVf", + "name": "addBtnText", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "VOeei", + "name": "reviewBtn", + "height": 34, + "fill": "#4F46E5", + "cornerRadius": 8, + "gap": 8, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "KW2FF", + "name": "reviewBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "graduation-cap", + "iconFontFamily": "lucide", + "fill": "#FFFFFF" + }, + { + "type": "text", + "id": "sjL7k", + "name": "reviewBtnText", + "fill": "#FFFFFF", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "4Vmlz", + "name": "reviewBadge", + "height": 18, + "fill": "#FFFFFF30", + "cornerRadius": 9, + "padding": [ + 0, + 6 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6ZhJ3", + "name": "reviewBadgeText", + "fill": "#FFFFFF", + "content": "12", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "wQe6G", + "name": "Word Cards", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "children": [ + { + "type": "frame", + "id": "mHcHb", + "name": "Word Card — Noun", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "IBSWh", + "name": "card1Accent", + "fill": "#4F46E5", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "VUuBA", + "name": "card1Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "r74v9", + "name": "card1Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "IoPyl", + "name": "card1Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "z8RlD", + "name": "card1Arabic", + "fill": "#1B1B2F", + "content": "كِتَاب", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "C24pR", + "name": "card1Badge", + "height": 22, + "fill": "#4F46E50F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "q7RjM", + "name": "card1BadgeText", + "fill": "#4F46E5", + "content": "Noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "cADco", + "name": "card1Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "3MVrj", + "name": "card1Copy", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "dQWGt", + "name": "card1CopyI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "pMLw8", + "name": "card1Edit", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "euYbo", + "name": "card1EditI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "wXXcq", + "name": "card1Expand", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "QKFNO", + "name": "card1ExpandI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "dRJ8v", + "name": "card1Trans", + "fill": "#6B6F80", + "content": "book", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "iG6UE", + "name": "Word Card — Verb", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "q0AK2", + "name": "card2Accent", + "fill": "#16A34A", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "KdIxe", + "name": "card2Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "TVgMO", + "name": "card2Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "uIwNf", + "name": "card2Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "zRoIw", + "name": "card2Arabic", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "W5EqE", + "name": "card2Badge", + "height": 22, + "fill": "#16A34A0F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "jvCDX", + "name": "card2BadgeText", + "fill": "#16A34A", + "content": "Verb", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "k1lcO", + "name": "card2Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "tz1HF", + "name": "card2C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "FWlPu", + "name": "card2CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "gyt50", + "name": "card2E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "QpHYw", + "name": "card2EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "hCopX", + "name": "card2X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ydgyD", + "name": "card2XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "6afJY", + "name": "card2Trans", + "fill": "#6B6F80", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "5n3sB", + "name": "Word Card — Adjective (Expanded)", + "clip": true, + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FAFAFA", + "position": 0 + }, + { + "color": "#F8F8FB60", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "1uL1T", + "name": "card3Accent", + "fill": "#D97706", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "LZylh", + "name": "card3Body", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "AevSZ", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "RMf5W", + "name": "card3Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "wOVcm", + "name": "card3Arabic", + "fill": "#1B1B2F", + "content": "جَمِيل", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "KGU1H", + "name": "card3Badge", + "height": 22, + "fill": "#D976060F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "c7HIw", + "name": "card3BadgeText", + "fill": "#D97706", + "content": "Adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "3tFIn", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "0KXB9", + "name": "card3C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "YUAbs", + "name": "card3CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "pHk9V", + "name": "card3E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "hxgZ2", + "name": "card3EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "4fjxI", + "name": "card3X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "EbevQ", + "name": "card3XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "6x1sQ", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "GnoDA", + "name": "divider", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "qUWGJ", + "name": "details", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "JNXZb", + "name": "typeRootRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "bW9RF", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Ex0EX", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "EyL20", + "name": "defBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "RbPTp", + "name": "defLabel", + "fill": "#A1A1AAB3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "JSppV", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "CSj5t", + "name": "morphBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "C6M6i", + "name": "morphLabel", + "fill": "#A1A1AAB3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "bwWV2", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "eoi6C", + "name": "mc1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "OBtVE", + "name": "mc1l", + "fill": "#A1A1AA", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "8imJ1", + "name": "mc1v", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "bl4kn", + "name": "mc2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "0VVWh", + "name": "mc2l", + "fill": "#A1A1AA", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "d8wtB", + "name": "mc2v", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "G4eCZ", + "name": "mc3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "Z33mj", + "name": "mc3l", + "fill": "#A1A1AA", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ANciT", + "name": "mc3v", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "gPsLd", + "name": "exBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "3Zfn4", + "name": "exLabel", + "fill": "#A1A1AAB3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "gexR3", + "name": "exBox", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA40" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "7MROV", + "name": "exAr", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "sQEs5", + "name": "exEn", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "pNi5A", + "name": "tagRow", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "Pc8wB", + "name": "tp1", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oDHpe", + "name": "tp1t", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Pk6j2", + "name": "tp2", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "I78hw", + "name": "tp2t", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "nb0HO", + "name": "tp3", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "i6Qw2", + "name": "tp3t", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "MyMVA", + "name": "Word Card — Noun 2", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "5NcqR", + "name": "card4Acc", + "fill": "#4F46E5", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "vfIn5", + "name": "card4Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "C82QZ", + "name": "card4Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "TGWMe", + "name": "card4Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "1G5Z2", + "name": "card4Ar", + "fill": "#1B1B2F", + "content": "مَدْرَسَة", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "nF6VI", + "name": "card4Bdg", + "height": 22, + "fill": "#4F46E50F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WyfmZ", + "name": "card4BdgT", + "fill": "#4F46E5", + "content": "Noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "QD8K4", + "name": "card4Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "3DXH0", + "name": "card4C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "UFGL0", + "name": "card4CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "MjEde", + "name": "card4E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "AGbyy", + "name": "card4EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "rB6X4", + "name": "card4X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "CB411", + "name": "card4XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "a0eV1", + "name": "card4Trans", + "fill": "#6B6F80", + "content": "school", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "i1Gx9", + "name": "Word Card — Verb 2", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "ZqWFR", + "name": "card5Acc", + "fill": "#16A34A", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "WIizX", + "name": "card5Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "RH7P3", + "name": "card5Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "Pv7ZN", + "name": "card5Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WMztk", + "name": "card5Ar", + "fill": "#1B1B2F", + "content": "ذَهَبَ", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "zI9gn", + "name": "card5Bdg", + "height": 22, + "fill": "#16A34A0F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "cF1lr", + "name": "card5BdgT", + "fill": "#16A34A", + "content": "Verb", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "0K5Zd", + "name": "card5Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "mVInG", + "name": "card5C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "JLaMY", + "name": "card5CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "q0L4j", + "name": "card5E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "9RGKH", + "name": "card5EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "5x10v", + "name": "card5X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "jh1aK", + "name": "card5XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "eexBj", + "name": "card5Trans", + "fill": "#6B6F80", + "content": "to go", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uqZAR", + "x": 0, + "y": 2110, + "name": "Decks", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "WFZ2L", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "CnYuR", + "name": "dLogo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "XKbXc", + "name": "dNavGroup", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "kDjG0", + "name": "dNavHome", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "kVkaN", + "name": "dNavHomeI", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "JOYp9", + "name": "dNavDecks", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "DqEhn", + "name": "dNavDecksI", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + } + ] + }, + { + "type": "frame", + "id": "frv5Q", + "name": "dSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "dftnT", + "name": "dSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "xqeyB", + "name": "dSettingsI", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "iWh51", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "zRYyB", + "name": "dContentCol", + "width": 896, + "layout": "vertical", + "gap": 16, + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "Nc3IR", + "name": "createBtn", + "height": 34, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "y1yU0", + "name": "createBtnI", + "width": 15, + "height": 15, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "iQ5kU", + "name": "createBtnT", + "fill": "#1B1B2F", + "content": "Create deck", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "AxXHI", + "name": "Decks Card", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "4rol7", + "name": "dcHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "k1jcx", + "name": "dcTitle", + "fill": "#1B1B2F", + "content": "Decks", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "WHJs9", + "name": "dcDesc", + "fill": "#6B6F80", + "content": "Manage your decks and study them.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "XA5R8", + "name": "tableHeader", + "width": "fill_container", + "height": 40, + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 24 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "HiYgg", + "name": "thName", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 240, + "content": "Name", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "MCIiI", + "name": "thReview", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 100, + "content": "To review", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "c2pew", + "name": "thBacklog", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 100, + "content": "Backlog", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "sCcaP", + "name": "thTotal", + "fill": "#A1A1AA", + "textGrowth": "fixed-width", + "width": 80, + "content": "Total", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "hfJ6E", + "name": "thActions", + "width": "fill_container", + "height": 1 + } + ] + }, + { + "type": "frame", + "id": "JtLxi", + "name": "row1", + "width": "fill_container", + "height": 48, + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA40" + }, + "padding": [ + 0, + 24 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "GWKPy", + "name": "r1Name", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 240, + "content": "Beginner Essentials", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "NPs56", + "name": "r1Review", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 100, + "content": "5", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "45V2U", + "name": "r1Backlog", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 100, + "content": "2", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "wX6LO", + "name": "r1Total", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 80, + "content": "48", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "91b5S", + "name": "r1Actions", + "width": "fill_container", + "gap": 6, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "BnMDy", + "name": "r1Study", + "height": 30, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ipRlM", + "name": "r1StudyT", + "fill": "#1B1B2F", + "content": "Study", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "fLJHW", + "name": "r1More", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "2F5zV", + "name": "r1MoreI", + "width": 16, + "height": 16, + "iconFontName": "ellipsis", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "pHwDn", + "name": "row2", + "width": "fill_container", + "height": 48, + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA40" + }, + "padding": [ + 0, + 24 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hiBjq", + "name": "r2Name", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 240, + "content": "Verbs Practice", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "7CVbw", + "name": "r2Review", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 100, + "content": "12", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "biVNx", + "name": "r2Backlog", + "fill": "#A1A1AA", + "textGrowth": "fixed-width", + "width": 100, + "content": "-", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Bk80P", + "name": "r2Total", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 80, + "content": "67", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "f1bYo", + "name": "r2Actions", + "width": "fill_container", + "gap": 6, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "mluja", + "name": "r2Study", + "height": 30, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eAk3W", + "name": "r2StudyT", + "fill": "#1B1B2F", + "content": "Study", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "mkjFX", + "name": "r2More", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "f5eBV", + "name": "r2MoreI", + "width": 16, + "height": 16, + "iconFontName": "ellipsis", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "XgY0V", + "name": "row3", + "width": "fill_container", + "height": 48, + "padding": [ + 0, + 24 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "BBs7O", + "name": "r3Name", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 240, + "content": "Daily Conversation", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "cIJnm", + "name": "r3Review", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 100, + "content": "3", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "hPZIs", + "name": "r3Backlog", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": 100, + "content": "8", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "UNLwq", + "name": "r3Total", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 80, + "content": "35", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "d1D5P", + "name": "r3Actions", + "width": "fill_container", + "gap": 6, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "6Z4iV", + "name": "r3Study", + "height": 30, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "EsDQg", + "name": "r3StudyT", + "fill": "#1B1B2F", + "content": "Study", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "4i6PY", + "name": "r3More", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "83c4G", + "name": "r3MoreI", + "width": 16, + "height": 16, + "iconFontName": "ellipsis", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "VKK7A", + "x": 1590, + "y": 2110, + "name": "Settings", + "clip": true, + "width": 1440, + "height": 1720, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "2XmWC", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "LpY6g", + "name": "sLogo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "iiNkj", + "name": "sNavGrp", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Kc1Kj", + "name": "sNH", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "RxmBa", + "name": "sNHI", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "HZhhG", + "name": "sND", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "U2nVP", + "name": "sNDI", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "RuGeK", + "name": "sSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "Ar8dl", + "name": "sSettBtn", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "uWqEP", + "name": "sSettI", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZVU7k", + "name": "Main Content", + "width": "fill_container", + "height": 1720, + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "1wNwr", + "name": "sTitle", + "fill": "#1B1B2F", + "content": "Settings", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "600", + "letterSpacing": -0.5 + }, + { + "type": "frame", + "id": "vjikR", + "name": "Settings Cards", + "width": 896, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "6XfE3", + "name": "Appearance Card", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "NIz0U", + "name": "acHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "X3wVU", + "name": "acTitle", + "fill": "#1B1B2F", + "content": "Appearance", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "Wt6k6", + "name": "acDesc", + "fill": "#6B6F80", + "content": "Customize how the application looks for you.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "zIWIm", + "name": "acContent", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "i6iqo", + "name": "themeRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "2hJwt", + "name": "themeLabel", + "fill": "#1B1B2F", + "content": "Theme", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "ilzJf", + "name": "themeSelect", + "width": 180, + "height": 36, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "SpFnm", + "name": "themeSelLeft", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zwWCK", + "name": "themeIcon", + "width": 16, + "height": 16, + "iconFontName": "sun", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "ayIHO", + "name": "themeVal", + "fill": "#1B1B2F", + "content": "Light", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "01EnJ", + "name": "themeChev", + "width": 14, + "height": 14, + "iconFontName": "chevrons-up-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Bs6Yh", + "name": "colorRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ga7Nd", + "name": "colorLabel", + "fill": "#1B1B2F", + "content": "Color theme", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "HXnGs", + "name": "colorSelect", + "width": 180, + "height": 36, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "fYQds", + "name": "colorSelLeft", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "LJzf9", + "name": "colorIcon", + "width": 16, + "height": 16, + "iconFontName": "palette", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "thmxi", + "name": "colorVal", + "fill": "#1B1B2F", + "content": "Default", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "IXo7x", + "name": "colorChev", + "width": 14, + "height": 14, + "iconFontName": "chevrons-up-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + }, + { + "type": "frame", + "id": "MLoUF", + "name": "langRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "j1Ly7", + "name": "langLabel", + "fill": "#1B1B2F", + "content": "Language", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "8phm4", + "name": "langSelect", + "width": 180, + "height": 36, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "9UGgG", + "name": "langVal", + "fill": "#1B1B2F", + "content": "English", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "nYEmR", + "name": "langChev", + "width": 14, + "height": 14, + "iconFontName": "chevrons-up-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "GfGX3", + "name": "Dictionary Card", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "13DBU", + "name": "dictH", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "BpJBn", + "name": "dictTitle", + "fill": "#1B1B2F", + "content": "Dictionary", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "GYx2y", + "name": "dictDesc", + "fill": "#6B6F80", + "content": "Manage your dictionary.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "lGF5H", + "name": "importSect", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "padding": [ + 12, + 24, + 16, + 24 + ], + "children": [ + { + "type": "frame", + "id": "POwu7", + "name": "importRow", + "width": "fill_container", + "gap": 12, + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "60r0r", + "name": "fileInput", + "width": 280, + "height": 36, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "AZZRh", + "name": "fileText", + "fill": "#A1A1AA", + "content": "No file chosen", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "YbLL1", + "name": "importBtn", + "height": 36, + "fill": "#4F46E5", + "cornerRadius": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "KlF0H", + "name": "importBtnT", + "fill": "#FFFFFF", + "content": "Import", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "vTB7Y", + "name": "importWarn", + "fill": "#E5484D", + "content": "Any words that have the same ID will be overwritten.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "B8tfk", + "name": "exportSect", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA40" + }, + "padding": [ + 12, + 24, + 16, + 24 + ], + "children": [ + { + "type": "frame", + "id": "gGgTr", + "name": "exportBtn", + "height": 36, + "fill": "#F4F4F8", + "cornerRadius": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "MFPAj", + "name": "exportBtnT", + "fill": "#1B1B2F", + "content": "Export", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "jdcCT", + "name": "deleteSect", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA40" + }, + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "yZ9tm", + "name": "deleteBtn", + "height": 36, + "fill": "#E5484D", + "cornerRadius": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "K9nMF", + "name": "deleteBtnT", + "fill": "#FFFFFF", + "content": "Delete", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "0daPR", + "name": "Flashcards Card", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "DSnJZ", + "name": "fcH", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "ctD3B", + "name": "fcTitle", + "fill": "#1B1B2F", + "content": "Flashcards", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "CBYfb", + "name": "fcDesc", + "fill": "#6B6F80", + "content": "Customize how flashcards appear.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "EQyXq", + "name": "fcContent", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "text", + "id": "q3Gp9", + "name": "antLabel", + "fill": "#1B1B2F", + "content": "How should antonyms be shown in flashcards?", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "tTwSp", + "name": "radioGroup", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "zIeRZ", + "name": "radio1", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "I2OpJ", + "name": "radio1Dot", + "width": 16, + "height": 16, + "stroke": { + "align": "inside", + "thickness": 1.5, + "fill": "#E2E3EA" + } + }, + { + "type": "text", + "id": "DzA9B", + "name": "radio1Text", + "fill": "#1B1B2F", + "content": "Don't show", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "K9zib", + "name": "radio2", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "Q2XNF", + "name": "radio2Dot", + "width": 16, + "height": 16, + "stroke": { + "align": "inside", + "thickness": 4, + "fill": "#4F46E5" + } + }, + { + "type": "text", + "id": "pNEZu", + "name": "radio2Text", + "fill": "#1B1B2F", + "content": "Show as a hint", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "BLfmL", + "name": "radio3", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "pGBq9", + "name": "radio3Dot", + "width": 16, + "height": 16, + "stroke": { + "align": "inside", + "thickness": 1.5, + "fill": "#E2E3EA" + } + }, + { + "type": "text", + "id": "511uF", + "name": "radio3Text", + "fill": "#1B1B2F", + "content": "Show after revealing the answer", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "VJLxI", + "name": "toggleRow", + "width": "fill_container", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": 16, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Re2iE", + "name": "toggleLeft", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "6ej3b", + "name": "toggleLabel", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "OpMtU", + "name": "toggleLabelText", + "fill": "#1B1B2F", + "content": "Reverse flashcards", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "pQmCY", + "name": "betaBadge", + "height": 18, + "fill": "#4F46E510", + "cornerRadius": 4, + "padding": [ + 0, + 6 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "JOrCk", + "name": "betaText", + "fill": "#4F46E5", + "content": "Beta", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "xSTgT", + "name": "toggleDesc", + "fill": "#6B6F80", + "content": "Show English to Arabic flashcards.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "eoz0z", + "name": "toggleSwitch", + "width": 40, + "height": 22, + "fill": "#E2E3EA", + "cornerRadius": 11, + "padding": 2, + "children": [ + { + "type": "ellipse", + "id": "hfNWm", + "name": "toggleKnob", + "fill": "#FFFFFF", + "width": 18, + "height": 18 + } + ] + } + ] + }, + { + "type": "frame", + "id": "JqtxV", + "name": "saveBtn", + "height": 36, + "fill": "#4F46E5", + "cornerRadius": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WtGbc", + "name": "saveBtnT", + "fill": "#FFFFFF", + "content": "Save", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "KcMqO", + "name": "clearSection", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA40" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 16, + 0, + 0, + 0 + ], + "children": [ + { + "type": "frame", + "id": "A7Xjf", + "name": "clearBox", + "width": "fill_container", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": 16, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dxUIU", + "name": "clearLeft", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "MiX5o", + "name": "clearTitle", + "fill": "#1B1B2F", + "content": "Clear backlog", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "tATLl", + "name": "clearDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 420, + "content": "Reschedule all backlog cards by grading them as 'Hard'.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "BZQ7o", + "name": "clearBtn", + "height": 30, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ngoWm", + "name": "clearBtnT", + "fill": "#1B1B2F", + "content": "Clear", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Dj52Q", + "name": "Debugging Card", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "jIJTd", + "name": "debugH", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "OzFga", + "name": "debugTitle", + "fill": "#1B1B2F", + "content": "Debugging", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "mFp9d", + "name": "debugDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 848, + "content": "If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "dmEY3", + "name": "debugContent", + "width": "fill_container", + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "u1Vi3", + "name": "resetBtn", + "height": 36, + "fill": "#F4F4F8", + "cornerRadius": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "aHG7c", + "name": "resetBtnT", + "fill": "#1B1B2F", + "content": "Reset local data", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "MQa7b", + "x": 3180, + "y": 2110, + "name": "Billing Card — Free", + "width": 896, + "fill": "#FFFFFF", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "OOChT", + "name": "Billing Card — Free", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "xY4MG", + "name": "billingHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "gZyye", + "name": "hTitle", + "fill": "#1B1B2F", + "content": "Billing", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "wyjOF", + "name": "hDesc", + "fill": "#6B6F80", + "content": "Manage your subscription.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "XUQg9", + "name": "planSection", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "0mO8A", + "name": "planRow", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "LvVYn", + "name": "planLeft", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "4w8Fv", + "name": "planLabel", + "fill": "#6B6F80", + "content": "Current plan", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "ioIB7", + "name": "planNameRow", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "25ENL", + "name": "planName", + "fill": "#1B1B2F", + "content": "Free", + "fontFamily": "Inter", + "fontSize": 22, + "fontWeight": "700", + "letterSpacing": -0.3 + } + ] + } + ] + }, + { + "type": "text", + "id": "Rd6ce", + "name": "upgradeLabel", + "fill": "#1B1B2F", + "content": "Upgrade to Pro", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "cX0BQ", + "name": "upgradeButtons", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "frame", + "id": "LF2Dx", + "name": "monthlyBtn", + "width": "fill_container", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 2, + "padding": [ + 12, + 20 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "nveAj", + "name": "mTxt", + "fill": "#1B1B2F", + "content": "Monthly — $10/mo", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "text", + "id": "BQ0pU", + "name": "mSub", + "fill": "#9CA3AF", + "content": "Billed monthly", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "b7KNH", + "name": "annualBtn", + "width": "fill_container", + "fill": "#4F46E5", + "cornerRadius": 8, + "layout": "vertical", + "gap": 2, + "padding": [ + 12, + 20 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "VRhDC", + "name": "annualTopRow", + "gap": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "FXOtS", + "name": "aTxt", + "fill": "#FFFFFF", + "content": "Annual — $7/mo", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "LjTnz", + "name": "saveBadge", + "fill": "#FFFFFF25", + "cornerRadius": 100, + "padding": [ + 2, + 8 + ], + "children": [ + { + "type": "text", + "id": "GlZHZ", + "name": "saveText", + "fill": "#FFFFFF", + "content": "Save 30%", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "LLgQJ", + "name": "aSub", + "fill": "#FFFFFFB0", + "content": "Billed $84 / year", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "XJidR", + "x": 3180, + "y": 2605, + "name": "Billing Card — Pro", + "width": 896, + "fill": "#FFFFFF", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "U7s6j", + "name": "Billing Card — Pro", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "j2d8l", + "name": "billingHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "padding": [ + 24, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "6tGxn", + "name": "hTitle", + "fill": "#1B1B2F", + "content": "Billing", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "RC3Ub", + "name": "hDesc", + "fill": "#6B6F80", + "content": "Manage your subscription.", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ZnAcW", + "name": "planSection", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 12, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "X1DsI", + "name": "planRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "jbDbq", + "name": "planLeft", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "Os7Bk", + "name": "planLabel", + "fill": "#6B6F80", + "content": "Current plan", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "RSGS3", + "name": "planNameRow", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "gloC2", + "name": "planName", + "fill": "#1B1B2F", + "content": "Pro", + "fontFamily": "Inter", + "fontSize": 22, + "fontWeight": "700", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "BZyH3", + "name": "planBadge", + "fill": "#EEF2FF", + "cornerRadius": 100, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "zpllo", + "name": "badgeText", + "fill": "#4F46E5", + "content": "Active", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ie8eQ", + "name": "upgradeBtn", + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 10, + 20 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "KVFQg", + "name": "upgradeTxt", + "fill": "#1B1B2F", + "content": "Manage Subscription", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Ldu8R", + "x": 3080, + "y": 3930, + "name": "Add Word — Current State", + "clip": true, + "width": 1440, + "height": 1200, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "EUwce", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "children": [ + { + "type": "frame", + "id": "br99w", + "name": "cLogo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + }, + "justifyContent": "center", + "alignItems": "center" + }, + { + "type": "frame", + "id": "issGk", + "name": "cNavGrp", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "enicq", + "name": "cNavHome", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zeGFH", + "name": "cNavHomeI", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "c5bf3", + "name": "cNavDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "mB0tS", + "name": "cNavDecksI", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "g87HK", + "name": "cSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "i53H6", + "name": "cSettBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zdyXp", + "name": "cSettI", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "kzbDr", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 20, + "padding": [ + 24, + 40 + ], + "children": [ + { + "type": "frame", + "id": "5OhGc", + "name": "cBreadcrumbs", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eamfg", + "name": "cBcHome", + "fill": "#6B6F80", + "content": "Home", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "XVdh9", + "name": "cBcSep", + "fill": "#6B6F80", + "content": "/", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "HNcXh", + "name": "cBcCurrent", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "9nfiU", + "name": "cHeaderRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "gFZvk", + "name": "cTitle", + "fill": "#1B1B2F", + "content": "Add a new word to your dictionary", + "fontFamily": "Inter", + "fontSize": 22, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "e9Lmn", + "name": "cBtnRow", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "SKjVE", + "name": "cDiscardBtn", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rwInB", + "name": "cDiscardText", + "fill": "#6B6F80", + "content": "Discard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "CUr1a", + "name": "cSaveBtn", + "fill": "#1B1B2F", + "cornerRadius": 8, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "uR8tV", + "name": "cSaveText", + "fill": "#FFFFFF", + "content": "Save", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "jjG94", + "name": "Form Grid", + "width": "fill_container", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "QASe0", + "name": "Left Column", + "width": "fill_container", + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "IbZMX", + "name": "Basic Details", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "FbuOs", + "name": "bdHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "RzkiG", + "name": "bdTitle", + "fill": "#1B1B2F", + "content": "Basic Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "CP0B8", + "name": "bdBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "9NrTg", + "name": "bdWordField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "0eXZJ", + "name": "bdWordLbl", + "fill": "#3D3F4A", + "content": "Word*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "nD2f2", + "name": "bdWordIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "4ZQYW", + "name": "bdWordPlc", + "fill": "#A0A3B1", + "content": "Enter Arabic word...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "3U5nh", + "name": "bdTransField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "96K1s", + "name": "bdTransLbl", + "fill": "#3D3F4A", + "content": "Translation*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "6W40P", + "name": "bdTransIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "tMa4A", + "name": "bdTransPlc", + "fill": "#A0A3B1", + "content": "Enter English translation...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "kb8x2", + "name": "bdTransDesc", + "fill": "#6B6F80", + "content": "An English translation of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "lhifS", + "name": "Additional Details", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "0Pf6d", + "name": "adHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "FNnCm", + "name": "adTitle", + "fill": "#1B1B2F", + "content": "Additional Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "o5F0j", + "name": "adDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Information such as the word's root, meaning, and examples.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "YY79W", + "name": "adBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "d5Ksg", + "name": "adDefField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "7JHPE", + "name": "adDefLbl", + "fill": "#3D3F4A", + "content": "Definition", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "RwoZ5", + "name": "adDefIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "x5BlS", + "name": "adDefPlc", + "fill": "#A0A3B1", + "content": "Arabic definition...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "Lg2jk", + "name": "adDefDesc", + "fill": "#6B6F80", + "content": "An Arabic definition of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "d80RP", + "name": "adRootField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "zRaGq", + "name": "adRootLbl", + "fill": "#3D3F4A", + "content": "Root letters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "p9S5H", + "name": "adRootIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hapTd", + "name": "adRootPlc", + "fill": "#A0A3B1", + "content": "ف ع ل", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "a7Q9N", + "name": "adRootDesc", + "fill": "#6B6F80", + "content": "The root letters of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "g6jNw", + "name": "adExWrap", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "ve13M", + "name": "adExHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "a8INN", + "name": "adExTitle", + "fill": "#1B1B2F", + "content": "Examples", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "zjKGt", + "name": "adExDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Example usages of the word in different contexts.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "2b7hU", + "name": "adExAddBtn", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 6, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "EPxrG", + "name": "adExAddIcon", + "width": 14, + "height": 14, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "gJwEq", + "name": "adExAddText", + "fill": "#6B6F80", + "content": "Add example", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "tslV6", + "name": "Morphology", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "tVcs3", + "name": "morphHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "2fn68", + "name": "morphTitle", + "fill": "#1B1B2F", + "content": "Morphology", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Gjwb6", + "name": "morphDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The morphological breakdown of the word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "hklHQ", + "name": "morphBody", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "Re9Lw", + "name": "morphRow1", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "v44fq", + "name": "mSingF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "v0wQX", + "name": "mSingLbl", + "fill": "#3D3F4A", + "content": "Singular", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "bQdm8", + "name": "mSingIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center" + } + ] + }, + { + "type": "frame", + "id": "hFMcV", + "name": "mDualF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "xoFoW", + "name": "mDualLbl", + "fill": "#3D3F4A", + "content": "Dual", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "7gEv5", + "name": "mDualIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center" + } + ] + } + ] + }, + { + "type": "frame", + "id": "xHpts", + "name": "mRow2", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "789rI", + "name": "mGenderF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "6iRyM", + "name": "mGenderLbl", + "fill": "#3D3F4A", + "content": "Gender", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "VHtRY", + "name": "mGenderIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8J8DJ", + "name": "mGenderVal", + "fill": "#1B1B2F", + "content": "Masculine", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "QardB", + "name": "mGenderChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "jDJtU", + "name": "mInflF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "M7MIX", + "name": "mInflLbl", + "fill": "#3D3F4A", + "content": "Inflection", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "W6hML", + "name": "mInflIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "4CT3o", + "name": "mInflVal", + "fill": "#1B1B2F", + "content": "Triptote", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "U5pxT", + "name": "mInflChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "2aKQK", + "name": "Right Sidebar", + "width": 280, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "I8FNF", + "name": "Category", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "Kjujy", + "name": "catHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "kFVGg", + "name": "catTitle", + "fill": "#1B1B2F", + "content": "Category", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "9Ua4b", + "name": "catDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "How the word is categorized.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "uEehB", + "name": "catBody", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "text", + "id": "sF16e", + "name": "catLbl", + "fill": "#3D3F4A", + "content": "Type", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "iqaYU", + "name": "catSelect", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WDLZm", + "name": "catVal", + "fill": "#1B1B2F", + "content": "Ism", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "25BSc", + "name": "catChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ImF0L", + "name": "Tags", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "ICu4k", + "name": "tagHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "hFG7b", + "name": "tagTitle", + "fill": "#1B1B2F", + "content": "Tags", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "n2mOB", + "name": "tagDesc", + "fill": "#6B6F80", + "content": "Add tags to your word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "wNo8q", + "name": "tagBody", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "yHmVL", + "name": "tagInput", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "h8epW", + "name": "tagPlc", + "fill": "#A0A3B1", + "content": "Search for a tag...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "4iJHJ", + "name": "tagRecent", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "ewdqU", + "name": "tagRecentLbl", + "fill": "#6B6F80", + "content": "Recently used", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "GfzJZ", + "name": "tagPills", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "b4nQy", + "name": "tagP1", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "IwR8Q", + "name": "tagP1T", + "fill": "#3D3F4A", + "content": "transitive", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "es7dT", + "name": "tagP2", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "0rCon", + "name": "tagP2T", + "fill": "#3D3F4A", + "content": "form-I", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "EOoXc", + "x": 0, + "y": 3930, + "name": "Add Word — AI Button", + "clip": true, + "width": 1440, + "height": 1200, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "6VqIS", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "children": [ + { + "type": "frame", + "id": "khRKm", + "name": "cLogo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + }, + "justifyContent": "center", + "alignItems": "center" + }, + { + "type": "frame", + "id": "ilntI", + "name": "cNavGrp", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "qC4KW", + "name": "cNavHome", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "F1gRS", + "name": "cNavHomeI", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "pham9", + "name": "cNavDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "5nZ2p", + "name": "cNavDecksI", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "XbLl5", + "name": "cSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "ukkVf", + "name": "cSettBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "h4vkF", + "name": "cSettI", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "RfLwL", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 20, + "padding": [ + 24, + 40 + ], + "children": [ + { + "type": "frame", + "id": "t8vot", + "name": "cBreadcrumbs", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "IzQc1", + "name": "cBcHome", + "fill": "#6B6F80", + "content": "Home", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "OWd36", + "name": "cBcSep", + "fill": "#6B6F80", + "content": "/", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "wJozn", + "name": "cBcCurrent", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "uGaVi", + "name": "cHeaderRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "kVbIh", + "name": "cTitle", + "fill": "#1B1B2F", + "content": "Add a new word to your dictionary", + "fontFamily": "Inter", + "fontSize": 22, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "MFiBR", + "name": "cBtnRow", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "vFFKd", + "name": "AI Autofill Btn", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#4F46E5", + "position": 0 + }, + { + "color": "#6D5BF7", + "position": 1 + } + ] + }, + "cornerRadius": 8, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#4F46E514", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 4 + }, + "gap": 6, + "padding": [ + 8, + 14 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "nosrM", + "name": "aiHBIcon", + "width": 14, + "height": 14, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#FFFFFF" + }, + { + "type": "text", + "id": "Kf2BT", + "name": "aiHBText", + "fill": "#FFFFFF", + "content": "Auto-fill with AI", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "Zfsvk", + "name": "aiHBBadge", + "fill": "#FFFFFF20", + "cornerRadius": 3, + "padding": [ + 1, + 5 + ], + "children": [ + { + "type": "text", + "id": "3LC23", + "name": "aiHBBadgeT", + "fill": "#FFFFFF", + "content": "PRO", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "ymASC", + "name": "cDiscardBtn", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "1XaTm", + "name": "cDiscardText", + "fill": "#6B6F80", + "content": "Discard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "C7k1b", + "name": "cSaveBtn", + "fill": "#1B1B2F", + "cornerRadius": 8, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "fqnha", + "name": "cSaveText", + "fill": "#FFFFFF", + "content": "Save", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "239tb", + "name": "Form Grid", + "width": "fill_container", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "jQmzs", + "name": "Left Column", + "width": "fill_container", + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "HEyEo", + "name": "Basic Details", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "yxkwd", + "name": "bdHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "wKknF", + "name": "bdTitle", + "fill": "#1B1B2F", + "content": "Basic Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "FSkBp", + "name": "bdBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "b0sYp", + "name": "bdWordField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "lkP3t", + "name": "bdWordLbl", + "fill": "#3D3F4A", + "content": "Word*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "lNioE", + "name": "bdWordIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1.5, + "fill": "#4F46E5" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "p4CaF", + "name": "bdWordPlc", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "AFcwl", + "name": "bdTransField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "dcbG6", + "name": "bdTransLbl", + "fill": "#3D3F4A", + "content": "Translation*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "1C9tl", + "name": "bdTransIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8cFQb", + "name": "bdTransPlc", + "fill": "#1B1B2F", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "vyuiq", + "name": "bdTransDesc", + "fill": "#6B6F80", + "content": "An English translation of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uwlqN", + "name": "Additional Details", + "width": "fill_container", + "fill": "#FAFAFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "GWMn6", + "name": "adHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "frame", + "id": "wi3a6", + "name": "adAiRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JJJdr", + "name": "adAiBadge", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "vWonn", + "name": "adAiIcon", + "width": 13, + "height": 13, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "9zzgO", + "name": "adAiText", + "fill": "#4F46E5", + "content": "AI-Generated", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "XyVfX", + "name": "adClearBtn", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "kQ9X1", + "name": "adClearIcon", + "width": 12, + "height": 12, + "iconFontName": "rotate-ccw", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + }, + { + "type": "text", + "id": "J5r5w", + "name": "adClearText", + "fill": "#8B85D0", + "content": "Clear all", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "M66mC", + "name": "adTitle", + "fill": "#1B1B2F", + "content": "Additional Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Yo2Hp", + "name": "adDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Information such as the word's root, meaning, and examples.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Wuz98", + "name": "adBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "gOhCe", + "name": "adDefField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "Px6Ny", + "name": "adDefLbl", + "fill": "#3D3F4A", + "content": "Definition", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "wbksG", + "name": "Def Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "gn8OH", + "name": "adDefIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "2SIZq", + "name": "adDefPlc", + "fill": "#1B1B2F", + "content": "سَطَّرَ، خَطَّ بِالقَلَم", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "0CNqg", + "name": "defSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + }, + { + "type": "text", + "id": "mjkT3", + "name": "adDefDesc", + "fill": "#6B6F80", + "content": "An Arabic definition of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "1xPSv", + "name": "adRootField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "Awls1", + "name": "adRootLbl", + "fill": "#3D3F4A", + "content": "Root letters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "hGqi3", + "name": "Root Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "S4Gw0", + "name": "adRootIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "PJhYb", + "name": "adRootPlc", + "fill": "#1B1B2F", + "content": "ك ت ب", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "slNtB", + "name": "rootSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + }, + { + "type": "text", + "id": "QEZcs", + "name": "adRootDesc", + "fill": "#6B6F80", + "content": "The root letters of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "7eClp", + "name": "adExWrap", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "dMuDz", + "name": "adExHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "yIPLT", + "name": "adExTitle", + "fill": "#1B1B2F", + "content": "Examples", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "Q8K51", + "name": "adExDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Example usages of the word in different contexts.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "PTeUb", + "name": "Example 1", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "frame", + "id": "z2Cy6", + "name": "ex1TopRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "oHsEZ", + "name": "ex1Label", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "DSRGB", + "name": "ex1Dot", + "fill": "#4F46E5", + "width": 5, + "height": 5 + }, + { + "type": "text", + "id": "jqdP3", + "name": "ex1CtxT", + "fill": "#4F46E5", + "content": "formal", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "bHsM0", + "name": "ex1Reset", + "width": 14, + "height": 14, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + }, + { + "type": "text", + "id": "7JSCV", + "name": "ex1Ar", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "كَتَبَ الطَّالِبُ رِسَالَةً إِلَى صَدِيقِهِ", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "EvVvn", + "name": "ex1En", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The student wrote a letter to his friend.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "F27eW", + "name": "Example 2", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "frame", + "id": "h4xpO", + "name": "ex2TopRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Wex5w", + "name": "ex2Label", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "Prp6i", + "name": "ex2Dot", + "fill": "#22C55E", + "width": 5, + "height": 5 + }, + { + "type": "text", + "id": "n9A9J", + "name": "ex2CtxT", + "fill": "#22C55E", + "content": "modern", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "1RkKE", + "name": "ex2Reset", + "width": 14, + "height": 14, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + }, + { + "type": "text", + "id": "3KTIF", + "name": "ex2Ar", + "fill": "#1B1B2F", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "يَكْتُبُ المُؤَلِّفُ كِتَابًا جَدِيدًا كُلَّ عَام", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "48pDE", + "name": "ex2En", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The author writes a new book every year.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "coMHf", + "name": "Morphology", + "width": "fill_container", + "fill": "#FAFAFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "Scwys", + "name": "morphHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "frame", + "id": "enxPF", + "name": "mAiRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "FyDtg", + "name": "mAiBadge", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "2P8df", + "name": "mAiIcon", + "width": 13, + "height": 13, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "hHW0D", + "name": "mAiText", + "fill": "#4F46E5", + "content": "AI-Generated", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "kWpIs", + "name": "mClearBtn", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "16mVx", + "name": "mClearIcon", + "width": 12, + "height": 12, + "iconFontName": "rotate-ccw", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + }, + { + "type": "text", + "id": "ZICG2", + "name": "mClearText", + "fill": "#8B85D0", + "content": "Clear all", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "SbysH", + "name": "morphTitle", + "fill": "#1B1B2F", + "content": "Morphology", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "IQigT", + "name": "morphDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The morphological breakdown of the word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "htFLn", + "name": "morphBody", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "zZOV9", + "name": "morphRow1", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "yQFDr", + "name": "mSingF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "lu7zi", + "name": "mSingLbl", + "fill": "#3D3F4A", + "content": "Singular", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "i48jU", + "name": "Sing Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "HMwvc", + "name": "mSingIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "JxBmc", + "name": "singVal", + "fill": "#1B1B2F", + "content": "كِتَاب", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "b6ucK", + "name": "singSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + } + ] + }, + { + "type": "frame", + "id": "9r9Ow", + "name": "mDualF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "pvSAN", + "name": "mDualLbl", + "fill": "#3D3F4A", + "content": "Dual", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "ixLPz", + "name": "Dual Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Gpb8z", + "name": "mDualIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "h0rrS", + "name": "dualVal", + "fill": "#1B1B2F", + "content": "كِتَابَان", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "d1Fal", + "name": "dualSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "LjAhZ", + "name": "mRow2", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "NAJk8", + "name": "mGenderF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "pks93", + "name": "mGenderLbl", + "fill": "#3D3F4A", + "content": "Gender", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "HeGTz", + "name": "Gender Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "8NnnW", + "name": "mGenderIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "swVnK", + "name": "mGenderVal", + "fill": "#1B1B2F", + "content": "Masculine", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "8FJW8", + "name": "genderSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + } + ] + }, + { + "type": "frame", + "id": "X3pbL", + "name": "mInflF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "ykBU7", + "name": "mInflLbl", + "fill": "#3D3F4A", + "content": "Inflection", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "aZofN", + "name": "Infl Input Row", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "YTvNt", + "name": "mInflIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#D4D0F8" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "pas2Q", + "name": "mInflVal", + "fill": "#1B1B2F", + "content": "Triptote", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon_font", + "id": "yRfBG", + "name": "inflSparkle", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "cmW3V", + "name": "Right Sidebar", + "width": 280, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "jF8PD", + "name": "Category", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "9HKJH", + "name": "catHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "ieq6U", + "name": "catTitle", + "fill": "#1B1B2F", + "content": "Category", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "8fjnn", + "name": "catDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "How the word is categorized.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "3oKIz", + "name": "catBody", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "text", + "id": "16a6o", + "name": "catLbl", + "fill": "#3D3F4A", + "content": "Type", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "S4NWc", + "name": "catSelect", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TXoKP", + "name": "catVal", + "fill": "#1B1B2F", + "content": "Ism", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "QXqGC", + "name": "catChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "4JBYW", + "name": "Tags", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "ANznn", + "name": "tagHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "PgK6L", + "name": "tagTitle", + "fill": "#1B1B2F", + "content": "Tags", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "pdj6Y", + "name": "tagDesc", + "fill": "#6B6F80", + "content": "Add tags to your word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "p5axP", + "name": "tagBody", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "Stpa5", + "name": "tagInput", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "k0RQs", + "name": "tagPlc", + "fill": "#A0A3B1", + "content": "Search for a tag...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "6NgNU", + "name": "tagRecent", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "a9FJj", + "name": "tagRecentLbl", + "fill": "#6B6F80", + "content": "Recently used", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "jfXfF", + "name": "tagPills", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "Sdop6", + "name": "tagP1", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "XASQm", + "name": "tagP1T", + "fill": "#3D3F4A", + "content": "transitive", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "YRttD", + "name": "tagP2", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "ZDFvh", + "name": "tagP2T", + "fill": "#3D3F4A", + "content": "form-I", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "48UPU", + "x": 1540, + "y": 3930, + "name": "Add Word — Auto Suggest", + "clip": true, + "width": 1440, + "height": 1200, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "1MsIp", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "children": [ + { + "type": "frame", + "id": "3GlcW", + "name": "cLogo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + }, + "justifyContent": "center", + "alignItems": "center" + }, + { + "type": "frame", + "id": "9QMZM", + "name": "cNavGrp", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "Yda3c", + "name": "cNavHome", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "784Ci", + "name": "cNavHomeI", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "4JLGH", + "name": "cNavDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Fb0rQ", + "name": "cNavDecksI", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "E0Vrs", + "name": "cSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "6GGhO", + "name": "cSettBtn", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "n5vfB", + "name": "cSettI", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "q9S2p", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 20, + "padding": [ + 24, + 40 + ], + "children": [ + { + "type": "frame", + "id": "rurQf", + "name": "cBreadcrumbs", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "X3CB7", + "name": "cBcHome", + "fill": "#6B6F80", + "content": "Home", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "O4WEn", + "name": "cBcSep", + "fill": "#6B6F80", + "content": "/", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Y3pGv", + "name": "cBcCurrent", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "GCyvF", + "name": "cHeaderRow", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "53Ol8", + "name": "cTitle", + "fill": "#1B1B2F", + "content": "Add a new word to your dictionary", + "fontFamily": "Inter", + "fontSize": 22, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "PDL0d", + "name": "cBtnRow", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "WqKUC", + "name": "cDiscardBtn", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "DbBou", + "name": "cDiscardText", + "fill": "#6B6F80", + "content": "Discard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "o9OFO", + "name": "cSaveBtn", + "fill": "#1B1B2F", + "cornerRadius": 8, + "padding": [ + 8, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "5XKV8", + "name": "cSaveText", + "fill": "#FFFFFF", + "content": "Save", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "4ROjN", + "name": "Form Grid", + "width": "fill_container", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "GL54t", + "name": "Left Column", + "width": "fill_container", + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "RF3t2", + "name": "Basic Details", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "PYGU0", + "name": "bdHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "ceak7", + "name": "bdTitle", + "fill": "#1B1B2F", + "content": "Basic Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "Ww7jR", + "name": "bdBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "Q0d9s", + "name": "bdWordField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "hDCgn", + "name": "bdWordLbl", + "fill": "#3D3F4A", + "content": "Word*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "SXZmW", + "name": "bdWordIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1.5, + "fill": "#4F46E5" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6he37", + "name": "bdWordPlc", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "rN3x8", + "name": "bdTransField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "8yCQ5", + "name": "bdTransLbl", + "fill": "#3D3F4A", + "content": "Translation*", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "U6Sgn", + "name": "bdTransIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "G9XGn", + "name": "bdTransPlc", + "fill": "#1B1B2F", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "lo0c4", + "name": "bdTransDesc", + "fill": "#6B6F80", + "content": "An English translation of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Pz0rJ", + "name": "Additional Details", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "xoP3x", + "name": "adHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "mlIDV", + "name": "adTitle", + "fill": "#1B1B2F", + "content": "Additional Details", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "37i3P", + "name": "adDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Information such as the word's root, meaning, and examples.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "UCCGp", + "name": "adBody", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "UuWqf", + "name": "adDefField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "lzlon", + "name": "adDefLbl", + "fill": "#3D3F4A", + "content": "Definition", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "y6OoF", + "name": "adDefIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rbDb3", + "name": "adDefPlc", + "fill": "#8B85D0", + "content": "سَطَّرَ، خَطَّ بِالقَلَم", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "icon_font", + "id": "5m5D7", + "name": "defHint", + "width": 14, + "height": 14, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D040" + } + ] + }, + { + "type": "text", + "id": "UFGe2", + "name": "adDefDesc", + "fill": "#6B6F80", + "content": "An Arabic definition of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "WK8Dx", + "name": "adRootField", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "vLBmX", + "name": "adRootLbl", + "fill": "#3D3F4A", + "content": "Root letters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "Q14oa", + "name": "adRootIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3rP0U", + "name": "adRootPlc", + "fill": "#8B85D0", + "content": "ك ت ب", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "frame", + "id": "Yx8Aa", + "name": "rootHint", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6sUIl", + "name": "rootHintI", + "width": 12, + "height": 12, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + }, + { + "type": "text", + "id": "Tu7D8", + "name": "rootHintT", + "fill": "#8B85D0", + "content": "Tab ↵", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "Htn1N", + "name": "adRootDesc", + "fill": "#6B6F80", + "content": "The root letters of the word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "FK0bQ", + "name": "adExWrap", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "a1hEJ", + "name": "sugHint", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "J9mr5", + "name": "sugHintI", + "width": 12, + "height": 12, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D0" + }, + { + "type": "text", + "id": "j5RDI", + "name": "sugHintT", + "fill": "#8B85D0", + "content": "2 suggestions available", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "oEauC", + "name": "adExHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3Gij7", + "name": "adExTitle", + "fill": "#1B1B2F", + "content": "Examples", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "XwBrL", + "name": "adExDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Example usages of the word in different contexts.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "triB7", + "name": "Suggestion 1", + "width": "fill_container", + "fill": "#FAFAFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "kexqs", + "name": "exS1Ar", + "fill": "#8B85D0", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "كَتَبَ الطَّالِبُ رِسَالَةً إِلَى صَدِيقِهِ", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "text", + "id": "6mVWl", + "name": "exS1En", + "fill": "#8B85D080", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The student wrote a letter to his friend.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "frame", + "id": "ZoEtc", + "name": "exS1Actions", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dMppy", + "name": "exS1AccBtn", + "fill": "#4F46E510", + "cornerRadius": 5, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "g7VMQ", + "name": "exS1AccI", + "width": 12, + "height": 12, + "iconFontName": "check", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "lj9LE", + "name": "exS1AccT", + "fill": "#4F46E5", + "content": "Accept", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "wtsDD", + "name": "exS1Dis", + "fill": "#6B6F80", + "content": "Dismiss", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "cyZUW", + "name": "Suggestion 2", + "width": "fill_container", + "fill": "#FAFAFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "waFgW", + "name": "exS2Ar", + "fill": "#8B85D0", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "يَكْتُبُ المُؤَلِّفُ كِتَابًا جَدِيدًا كُلَّ عَام", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "text", + "id": "nIQSi", + "name": "exS2En", + "fill": "#8B85D080", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The author writes a new book every year.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "frame", + "id": "fm0bE", + "name": "exS2Actions", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "w7Yq6", + "name": "exS2AccBtn", + "fill": "#4F46E510", + "cornerRadius": 5, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "InR49", + "name": "exS2AccI", + "width": 12, + "height": 12, + "iconFontName": "check", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "6wDOx", + "name": "exS2AccT", + "fill": "#4F46E5", + "content": "Accept", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "2pbrZ", + "name": "exS2Dis", + "fill": "#6B6F80", + "content": "Dismiss", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "3Ezpq", + "name": "Morphology", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "x0m2W", + "name": "morphHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "4V8GX", + "name": "morphTitle", + "fill": "#1B1B2F", + "content": "Morphology", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "FuE5e", + "name": "morphDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "The morphological breakdown of the word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Xnc8F", + "name": "morphBody", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "A0sk3", + "name": "morphRow1", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "xe0Cv", + "name": "mSingF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "Q6M7R", + "name": "mSingLbl", + "fill": "#3D3F4A", + "content": "Singular", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "sXLzh", + "name": "mSingIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8FwiK", + "name": "singGhost", + "fill": "#8B85D0", + "content": "كِتَاب", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "icon_font", + "id": "Y4QJx", + "name": "singHint", + "width": 12, + "height": 12, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D040" + } + ] + } + ] + }, + { + "type": "frame", + "id": "YV5eA", + "name": "mDualF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "3V1wD", + "name": "mDualLbl", + "fill": "#3D3F4A", + "content": "Dual", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "ySuAP", + "name": "mDualIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "GvFXZ", + "name": "dualGhost", + "fill": "#8B85D0", + "content": "كِتَابَان", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal", + "fontStyle": "italic" + }, + { + "type": "icon_font", + "id": "klz47", + "name": "dualHint", + "width": 12, + "height": 12, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#8B85D040" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "cGoex", + "name": "mRow2", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "346Ge", + "name": "mGenderF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "iK4Em", + "name": "mGenderLbl", + "fill": "#3D3F4A", + "content": "Gender", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "66dJW", + "name": "mGenderIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Qy29T", + "name": "mGenderVal", + "fill": "#1B1B2F", + "content": "Masculine", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "Zg5Jz", + "name": "mGenderChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "KySg0", + "name": "mInflF", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "ONvHU", + "name": "mInflLbl", + "fill": "#3D3F4A", + "content": "Inflection", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "k5IX7", + "name": "mInflIn", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "F6u9R", + "name": "mInflVal", + "fill": "#1B1B2F", + "content": "Triptote", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "RpWBw", + "name": "mInflChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "N3F43", + "name": "Right Sidebar", + "width": 280, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "Fk56D", + "name": "Category", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "xn10n", + "name": "catHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "3ODkz", + "name": "catTitle", + "fill": "#1B1B2F", + "content": "Category", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "jauGV", + "name": "catDesc", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "How the word is categorized.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "icgg7", + "name": "catBody", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "text", + "id": "9YMFH", + "name": "catLbl", + "fill": "#3D3F4A", + "content": "Type", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "tAlRO", + "name": "catSelect", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "27Txi", + "name": "catVal", + "fill": "#1B1B2F", + "content": "Ism", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon_font", + "id": "wJCqY", + "name": "catChev", + "width": 16, + "height": 16, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "tIvJI", + "name": "Tags", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "hjHUW", + "name": "tagHeader", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "padding": [ + 20, + 24, + 12, + 24 + ], + "children": [ + { + "type": "text", + "id": "Yakak", + "name": "tagTitle", + "fill": "#1B1B2F", + "content": "Tags", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "e4rTM", + "name": "tagDesc", + "fill": "#6B6F80", + "content": "Add tags to your word.", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "T7HNU", + "name": "tagBody", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "padding": [ + 0, + 24, + 24, + 24 + ], + "children": [ + { + "type": "frame", + "id": "3jkXi", + "name": "tagInput", + "width": "fill_container", + "height": 44, + "fill": "#FFFFFF", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rwIed", + "name": "tagPlc", + "fill": "#A0A3B1", + "content": "Search for a tag...", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "QELWC", + "name": "tagRecent", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "qW4ar", + "name": "tagRecentLbl", + "fill": "#6B6F80", + "content": "Recently used", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "ARQSC", + "name": "tagPills", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "SK0N9", + "name": "tagP1", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "1Z6CU", + "name": "tagP1T", + "fill": "#3D3F4A", + "content": "transitive", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "7r3gy", + "name": "tagP2", + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "xIsM0", + "name": "tagP2T", + "fill": "#3D3F4A", + "content": "form-I", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "kTSLg", + "x": -1273, + "y": 4091, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fill" + }, + "width": 512, + "height": 512 + }, + { + "type": "frame", + "id": "B5NuO", + "x": 5670, + "y": 0, + "name": "Stats — Pro", + "clip": true, + "width": 1440, + "height": 1319, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "kaZmi", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "none", + "children": [ + { + "type": "frame", + "id": "QCy0g", + "x": 14, + "y": 16, + "name": "logo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "eZHwi", + "x": 10, + "y": 60, + "name": "navGroup", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "ngCgM", + "name": "navHome", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "z8PT9", + "name": "homeIcon", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "2qi3G", + "name": "navDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "fhO3g", + "name": "decksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "Lhata", + "name": "navStats", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "1DXlT", + "name": "statsIcon", + "width": 20, + "height": 20, + "iconFontName": "activity", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + } + ] + }, + { + "type": "frame", + "id": "jYqRf", + "x": 0, + "y": 192, + "name": "spacer", + "width": 36, + "height": "fill_container(1059)" + }, + { + "type": "frame", + "id": "wD4Ym", + "x": 0, + "y": 1267, + "name": "navSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "PzLFX", + "name": "settingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "s7tjX", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "PkVit", + "name": "title", + "fill": "#1B1B2F", + "content": "Progress", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "600", + "letterSpacing": -0.5 + }, + { + "type": "frame", + "id": "0TtQd", + "name": "Content", + "width": 768, + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "7UH8W", + "name": "Overview", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "DcvZP", + "name": "Streak Card", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFBEB", + "position": 0 + }, + { + "color": "#FFFDF5", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#F59E0B40" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 24 + ], + "children": [ + { + "type": "frame", + "id": "XrOTH", + "name": "sTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "7WvHP", + "name": "sLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "3xDmw", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + }, + { + "type": "frame", + "id": "QuKPG", + "name": "sInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "U3WpB", + "name": "sNum", + "width": "fit_content(105)", + "height": "fit_content(34)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "ULpud", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "12", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "fpRkh", + "x": 35, + "y": 10, + "fill": "#92400E", + "content": "day streak", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "IJusI", + "opacity": 0.6, + "fill": "#B45309", + "content": "Longest: 34 days", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "8GNTq", + "name": "sGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "SnHQ8", + "width": 18, + "height": 18, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + }, + { + "type": "text", + "id": "6qAi4", + "fill": "#92400E", + "content": "Goal met!", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "JHtIZ", + "name": "sBar", + "width": "fill_container", + "height": 6, + "fill": "#F59E0B", + "cornerRadius": 3 + } + ] + }, + { + "type": "frame", + "id": "CqbhB", + "name": "Stats Row", + "width": "fill_container", + "height": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "p9QRa", + "name": "Words Learned", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 10, + "padding": [ + 16, + 20 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "w4ADL", + "name": "wTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "bK0tT", + "name": "wInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "fHzF1", + "fill": "#1B1B2F", + "content": "89", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "Wqjwy", + "fill": "#6B6F80", + "content": "Words Added", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "wWaxh", + "name": "wTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "5Wq5O", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "5kwxD", + "fill": "#10B981", + "content": "+12 this week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Bjni9", + "name": "Pro Stats", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "01ec7", + "name": "Pro Header", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "LqRX2", + "name": "proTitle", + "fill": "#1B1B2F", + "content": "Insights", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "BrXXX", + "name": "proBadge", + "fill": "#4F46E5", + "cornerRadius": 6, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "kAerO", + "name": "proBadgeText", + "fill": "#FFFFFF", + "content": "PRO", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "9ekf5", + "name": "Heatmap Card", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "text", + "id": "aotbf", + "name": "heatmapTitle", + "fill": "#1B1B2F", + "content": "Review Activity", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "zVWBr", + "name": "Heatmap Wrap", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "p2AMy", + "name": "dayLabels", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "sVgau", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Vzd3b", + "fill": "#9CA3AF", + "content": "Mon", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "slFOd", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "lbhPc", + "fill": "#9CA3AF", + "content": "Wed", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "2wbrf", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "BlH4C", + "fill": "#9CA3AF", + "content": "Fri", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "VQ8S9", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "t93eD", + "name": "Grid", + "width": "fill_container", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "6cbkx", + "name": "w1-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Yw9UF", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "s8Bde", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wmxVI", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0PAuE", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KS60w", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CCkMv", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sQRfS", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "bQnB2", + "name": "w2-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "F3KSb", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LHV9R", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5JvRW", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mrGYD", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tlRxH", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pMDfA", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZP46L", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "mrHWZ", + "name": "w3-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Gntn7", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ANxi1", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pSqzd", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gVmDL", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "C7cvP", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "psURd", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rgnKi", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "yhjZB", + "name": "w4-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S7BS1", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QZn5q", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PvLZR", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zERUL", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RS05M", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PfDnY", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vpgaC", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "LPkHL", + "name": "w5", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cW28a", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dLJG9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3Xcka", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0Guou", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6cK6Q", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D782C", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9uKbo", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "jU5vr", + "name": "w6", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oYqaU", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pn51b", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HJfF2", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QQ5L5", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4miYT", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "k90yJ", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KljBw", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "C2dmx", + "name": "w7", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SGgo4", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7Nltg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "st3pi", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "J1427", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gFkPr", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FHIFP", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ang4k", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "F2RiH", + "name": "w8", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QBv5G", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CbLV1", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3f9hP", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "avDsV", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "J5HnC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UnbuX", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7ZP6W", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "JZxw9", + "name": "w9", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KJXvY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "moEHu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TxFbQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wW20L", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2vqm0", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wdh4g", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eoFFp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "k3kj0", + "name": "w10", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Tvhh2", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WQBaZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4oxKh", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "raQU8", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ggVFe", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pbLpS", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zTJlo", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Zd4PN", + "name": "w11", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uS20F", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "F9H7L", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NFItE", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CwNkO", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jRXSx", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9gQFF", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KMSbq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Evrwp", + "name": "w12", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ItTS5", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7sfZM", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wT9Jr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Rkflc", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "l6vKy", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TYKBH", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "K23cF", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "0AM4l", + "name": "w13", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ky9Cy", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dOz4R", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mztbg", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LIzxN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xTxYK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E2T3t", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ax5B8", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "qJ6xy", + "name": "w14", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "u4ybY", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "q5bIt", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0rY01", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8BQnD", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a1kMv", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "k1R14", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zZdVn", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "1cuSl", + "name": "w15", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9RrK0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hQJp9", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fnnT5", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "U0j2M", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BDpMu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vmUig", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "48CKn", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "SdzEv", + "name": "w16", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XqoAw", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "A8bCF", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rsoWW", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cSTRo", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E5xGI", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DZnkG", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oyKbS", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "iaatZ", + "name": "w17", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cmonQ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vTeWd", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NSVYA", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "roXcT", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OH7rc", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NxB3k", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "f44KA", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "yspaj", + "name": "w18", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kwxmr", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UiTDa", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9mvye", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "F30IY", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "h4cv0", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "O7aYt", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a1tYk", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "2aGsO", + "name": "w19", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YiX1T", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kaWe6", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "plicE", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BzvwX", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9Eu64", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "f0HPG", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PW8Mn", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "6fiVC", + "name": "w20", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mGMYE", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VvUrf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Y6XZf", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yWWLV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BZPWZ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IM3kE", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JFndx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "OhWjb", + "name": "w21", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fLB2Y", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bj1Gj", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vKIQp", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dSIlw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kEJo3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "K8DvJ", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AAtAW", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "75yHE", + "name": "w22", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cjMXV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3fE5F", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "I3RW2", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "upQM7", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HazMK", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RSG4n", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VbASK", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "4Hf8A", + "name": "w23", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kDqSs", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3d5bt", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "m2RwB", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GewEt", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Xpmck", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Bd7gR", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ht0DT", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "bzQMO", + "name": "w24", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KSQsZ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "K0275", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fJkp1", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "08ZiO", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Qot1d", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ancVZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JoALi", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "5Heoa", + "name": "w25", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JAdtu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7AaM6", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WjizK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uRlgO", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cntUx", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "51woA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bfAYX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "8wHIo", + "name": "w26", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "q7yci", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CjZ49", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OHUjm", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "G67a9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BlJ7w", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "j95zn", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QnudL", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "VxxOi", + "name": "w27", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4CnyG", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "q6Upf", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LNy7c", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7m1bx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KHUbR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0e4He", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uFoxY", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "4fiO9", + "name": "w28", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kjFKo", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WWOPw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4Wrhq", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S6JnW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kQeVK", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2gDqu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IiZQy", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "oyxKB", + "name": "w29", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5nAyD", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "04Gry", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YFZZ0", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VpLNG", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RHhdv", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3EqpH", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MDUEw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "QRS9S", + "name": "w30", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6KgIK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BYkOV", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mGgTo", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KxtNK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1fTbA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PeqS0", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8heuD", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "JFJZA", + "name": "w31", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ObO9X", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "l0UVv", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ypal0", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ViHfj", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Mie4a", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0wLa9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yN5dc", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "awcn7", + "name": "w32", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mQAdL", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TzRLr", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uzaoc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nS5v8", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6xHK7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IjGSt", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KRdzp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "tfUon", + "name": "w33", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HBTZY", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xbCHL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bLpst", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RfloF", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4zrhd", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9HZmp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cabO9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "7aEO0", + "name": "w34", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eQjjA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tFv0b", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WWpmG", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CACKH", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Y4MUJ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QxbFg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eOfrU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "AOPBL", + "name": "w35", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jx1du", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Kj9Ka", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jWrXG", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "I8lqm", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3lRf4", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "avHd6", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fUb4I", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "rAci9", + "name": "w36", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hqVAm", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "czWkP", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7re5N", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YmamF", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PrryX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZXJTT", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8yobw", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "oXC3E", + "name": "w37", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3IRO4", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6j9ZE", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "USm9x", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6VD1Y", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uxVGL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NKKnG", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9lOwP", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "PtIBW", + "name": "w38", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "C9lZT", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xnUf5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Haryx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "urwhq", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UOeXA", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dgtA3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ndnwK", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "iTKP6", + "name": "w39", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UWYyy", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "W8l1i", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YNhQA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vLtVs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OqcmM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ABlga", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DWUlg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "ilZ0B", + "name": "w40", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p2xdK", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jV2tK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "P7fUz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "aFCPM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jZpTj", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i4eZK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "w9aG5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "QBh1i", + "name": "w41", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iMdoi", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3RuEY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "aLRvU", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4kPhA", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bo9xt", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LjXcu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Vdg2u", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "QMUhc", + "name": "w42", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SGhth", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4ONO3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QtOoA", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "51MJL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XquQr", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UrBzD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yNa0Q", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "0NsCe", + "name": "w43", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "A1o8L", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YX2nu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bei2O", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Hn2DV", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yCvBu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Z4TJf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NKnnf", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "dnrsS", + "name": "w44", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZzRQD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ynp4B", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0kAFa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wfAu2", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BU5AU", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GD6bD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VJJKY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "zHoM6", + "name": "w45", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LsS8n", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tIGQs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XnH28", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Sifwj", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0FPTB", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "otkGj", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OZGW1", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "XxUhy", + "name": "w46", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "I6x14", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5OXTc", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yyov3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PjWjm", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xJ1Rz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ubdKq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a8jjQ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "GWDTz", + "name": "w47", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tegqf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ulmYO", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BtuIh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "y2ide", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DUw9W", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "o4j4G", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Joalq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "LsDXV", + "name": "w48", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D8p3J", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KDFSm", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tqZEH", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "czBOP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "F5O8g", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pfbxY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qVSqx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "lBo1O", + "name": "w49", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vv16b", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E9m3I", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5xpOX", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nTeBJ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4MdjI", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9yf7j", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r5XHg", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "9YX8s", + "name": "w50", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PtQyx", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KzK7g", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1XRsf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dkVIZ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Xagem", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "59nze", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RoxQV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "6VRJf", + "name": "w51", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rluPz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2BnEu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6ZVQf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "b2fo3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HworA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "R7Zjp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9GShx", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "MiIGs", + "name": "w52", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jCQ5g", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pmLco", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KTKnc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Lnyxc", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r0yRx", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SKvIc", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i16eL", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "MoGeB", + "name": "w53", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vjN4A", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "botZ5", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UlK2H", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iD9xF", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "72cA8", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QgSAh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SgJUp", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "90zg1", + "name": "w54", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IL9Tf", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lqoRL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nbxsR", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kihZg", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "56dj8", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eCv4b", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZLg25", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Ufkq6", + "name": "w55", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ldjI5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MK64S", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gW27A", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B5uEW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2Auzv", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xkO9U", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Md8nX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "4izGZ", + "name": "w56", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "x7yXA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oqFLW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IwXTY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Oxvoo", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lI2Fu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BOHUu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8kbt2", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "8JP4a", + "name": "w57", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9yyaq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "57M7R", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MABSk", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "b5ih2", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mEFNE", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Zx84O", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9Ac4o", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "9gfMu", + "name": "Month Labels", + "width": "fill_container", + "padding": [ + 0, + 0, + 0, + 28 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "YcMKA", + "fill": "#9CA3AF", + "content": "Apr", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "feF8r", + "fill": "#9CA3AF", + "content": "May", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "qe4gD", + "fill": "#9CA3AF", + "content": "Jun", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "AiQLC", + "fill": "#9CA3AF", + "content": "Jul", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "qkfs2", + "fill": "#9CA3AF", + "content": "Aug", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "MlXUD", + "fill": "#9CA3AF", + "content": "Sep", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "G0Eyv", + "fill": "#9CA3AF", + "content": "Oct", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "vzFMg", + "fill": "#9CA3AF", + "content": "Nov", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "VPhCR", + "fill": "#9CA3AF", + "content": "Dec", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "81gRV", + "fill": "#9CA3AF", + "content": "Jan", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "nn3dt", + "fill": "#9CA3AF", + "content": "Feb", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "ogoWm", + "fill": "#1B1B2F", + "content": "Mar", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "gYE2r", + "name": "Legend", + "width": "fill_container", + "gap": 6, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "0JeXs", + "fill": "#9CA3AF", + "content": "Less", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0O65i", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Vikqs", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "h4wvA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rFW2D", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WSsvJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "JB2HX", + "fill": "#9CA3AF", + "content": "More", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "jkjqG", + "name": "Top Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "5eeGz", + "name": "Words Learned", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "mbvXL", + "name": "wlHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "19vXi", + "name": "wlTitle", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "c12JH", + "fill": "#6B6F80", + "content": "Words Learned", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "YYVBo", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "SUJi1", + "name": "wlTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ilmDg", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "VaDHa", + "fill": "#10B981", + "content": "+7 this week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "90vzj", + "name": "wlValue", + "width": "fit_content(133)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "fOkwu", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "62", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "0RsdX", + "x": 52, + "y": 18, + "enabled": false, + "fill": "#6B6F80", + "content": "of 89 added", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "PJSnv", + "fill": "#9CA3AF", + "content": "All time", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "l3b9J", + "name": "Retention Rate", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "SNcB1", + "name": "retHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "PIFHN", + "name": "retInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "tl3xr", + "name": "retTitle", + "fill": "#6B6F80", + "content": "Retention Rate", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "MXTXh", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "ixJ2G", + "name": "retTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "qij6w", + "name": "retTrendIcon", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "5Q7ro", + "name": "retTrendText", + "fill": "#10B981", + "content": "+2.3% vs last week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "hBaRM", + "name": "retValue", + "fill": "#1B1B2F", + "content": "87%", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "YUxbP", + "name": "retDesc", + "fill": "#9CA3AF", + "content": "7-day average", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "MYWXX", + "name": "Bottom Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "L1kIR", + "name": "Difficult Words", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "Qts0m", + "name": "header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "WymgV", + "name": "titleWrap", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "G44xb", + "fill": "#6B6F80", + "content": "Difficult Words", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "lobY7", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "3kubo", + "name": "countBadge", + "fill": "#F8F8FB", + "cornerRadius": 10, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hO2gK", + "fill": "#6B6F80", + "content": "12 total", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "zjO2s", + "name": "subLabel", + "fill": "#9CA3AF", + "content": "Top 3 most difficult", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "kEebM", + "name": "strugList", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "uu9cz", + "name": "word1", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "XQ9Ia", + "name": "w1Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "sfyjq", + "fill": "#9CA3AF", + "content": "5 lapses", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "99zo8", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "frame", + "id": "qE6kB", + "name": "clip1", + "clip": true, + "width": "fill_container", + "height": 24, + "children": [ + { + "type": "text", + "id": "PlteK", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "...هل يمكنكِ أن تساعديني في", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Tm0YX", + "name": "word2", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "VltRg", + "name": "w2Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "2mer9", + "name": "meta2", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "L55G1", + "name": "icon2", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "gnGR8", + "fill": "#9CA3AF", + "content": "4 lapses", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "dYzGz", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "text", + "id": "KOyzY", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "تَصَرَّفَ", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "Y8xfr", + "name": "word3", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Wf5bt", + "name": "w3Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "VXxzh", + "name": "meta3", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6edEC", + "name": "icon3", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "CZl6i", + "fill": "#9CA3AF", + "content": "3 lapses", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "tdc28", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "text", + "id": "DSOfb", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "اِنْطِبَاع", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Ii4qE", + "name": "footer", + "width": "fill_container", + "padding": [ + 4, + 0, + 0, + 0 + ], + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "C0rbT", + "fill": "#4F46E5", + "content": "View all in dictionary →", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "uet3n", + "name": "Workload Forecast", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "B2WHx", + "name": "forecastInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "CFHwA", + "name": "forecastHeader", + "fill": "#6B6F80", + "content": "Workload Forecast", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "VTGcW", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "cr0uS", + "name": "forecastValue", + "width": "fit_content(196)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "8iuFf", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "~28", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "dn5S2", + "x": 75, + "y": 18, + "fill": "#6B6F80", + "content": "reviews tomorrow", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "yzo7H", + "name": "Forecast Bars", + "width": "fill_container", + "height": 48, + "gap": 4, + "alignItems": "end", + "children": [ + { + "type": "rectangle", + "cornerRadius": 3, + "id": "oRzV6", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 20 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "V7i82", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 34 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "q6TYI", + "fill": "#4F46E5", + "width": "fill_container", + "height": 48 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "1wfA7", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 38 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "KzAA7", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 24 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "BmetN", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 16 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "OyNe9", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 30 + } + ] + }, + { + "type": "frame", + "id": "m6H8H", + "name": "forecastLabels", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "oPZCS", + "fill": "#9CA3AF", + "content": "Mon", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "uGDFv", + "fill": "#9CA3AF", + "content": "Tue", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "YHtcS", + "fill": "#1B1B2F", + "content": "Wed", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "D8SXy", + "fill": "#9CA3AF", + "content": "Thu", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "zTdEY", + "fill": "#9CA3AF", + "content": "Fri", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "STIfP", + "fill": "#9CA3AF", + "content": "Sat", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "gCaD0", + "fill": "#9CA3AF", + "content": "Sun", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "k8App", + "name": "Recent Reviews", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 14, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "pyQsn", + "name": "rcHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "wrk7m", + "name": "rcTitle", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hZz5r", + "fill": "#6B6F80", + "content": "Recent Reviews", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "dLLOj", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "text", + "id": "qmYn2", + "fill": "#9CA3AF", + "content": "Today", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "UyLkc", + "name": "Review List", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "MnTde", + "name": "r1", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 8, + "padding": [ + 8, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "bqPbf", + "name": "r1Left", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "RxvRR", + "fill": "#22C55E", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "UKkys", + "fill": "#1B1B2F", + "content": "كِتَاب", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "EyTkk", + "fill": "#9CA3AF", + "content": "book", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "wY31Y", + "name": "r1Right", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "0pvJW", + "fill": "#9CA3AF", + "content": "Good · 2m ago", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "lNgCC", + "name": "r1Undo", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Mjs1H", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "7AuL9", + "fill": "#6B6F80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Ic0Dy", + "name": "r2", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 8, + "padding": [ + 8, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "L0jRY", + "name": "r2L", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "vn3qj", + "fill": "#DC2626", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "8lwbv", + "fill": "#1B1B2F", + "content": "ذَهَبَ", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "UecTP", + "fill": "#9CA3AF", + "content": "to go", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "1isQF", + "name": "r2R", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Yg8zC", + "fill": "#9CA3AF", + "content": "Again · 5m ago", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "pe9eQ", + "name": "r2Undo", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "H5fOL", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "lFzNI", + "fill": "#6B6F80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "jeIPv", + "name": "r3", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 8, + "padding": [ + 8, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "6hqEi", + "name": "r3L", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "JMdZU", + "fill": "#22C55E", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "OPInd", + "fill": "#1B1B2F", + "content": "جَمِيل", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "hl0NU", + "fill": "#9CA3AF", + "content": "beautiful", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "FTSfW", + "name": "r3R", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "lHtwv", + "fill": "#9CA3AF", + "content": "Good · 8m ago", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "tIfoa", + "name": "r3Undo", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "deLR9", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "awKm6", + "fill": "#6B6F80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "4es6f", + "name": "r4", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 8, + "padding": [ + 8, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Xxr3p", + "name": "r4L", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "p6eLv", + "fill": "#15803D", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "27vFl", + "fill": "#1B1B2F", + "content": "مَدْرَسَة", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "qpTkZ", + "fill": "#9CA3AF", + "content": "school", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "3X9vz", + "name": "r4R", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "jEwQg", + "fill": "#9CA3AF", + "content": "Easy · 10m ago", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "L9nvp", + "name": "r4Undo", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "OrxJv", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "ww2mr", + "fill": "#6B6F80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "lg2l5", + "name": "r5", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 8, + "padding": [ + 8, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "aM4BI", + "name": "r5L", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "8LLmw", + "fill": "#F97316", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "92d7X", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "79uSn", + "fill": "#9CA3AF", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "06QHZ", + "name": "r5R", + "gap": 10, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "a9MAP", + "fill": "#9CA3AF", + "content": "Hard · 12m ago", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "AJeTq", + "name": "r5Undo", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 3, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "4CkEq", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "CHTmg", + "fill": "#6B6F80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "QLMzp", + "x": 9533, + "y": 145, + "name": "OG Image", + "clip": true, + "width": 1200, + "height": 630, + "fill": "#FFFFFF", + "layout": "none", + "children": [ + { + "type": "ellipse", + "id": "5ZMVm", + "x": -100, + "y": -150, + "name": "glow1", + "fill": { + "type": "gradient", + "gradientType": "radial", + "enabled": true, + "rotation": 0, + "size": { + "width": 1, + "height": 1 + }, + "colors": [ + { + "color": "#5B4AE415", + "position": 0 + }, + { + "color": "#5B4AE400", + "position": 1 + } + ] + }, + "width": 600, + "height": 500 + }, + { + "type": "ellipse", + "id": "2yFdl", + "x": 700, + "y": 250, + "name": "glow2", + "fill": { + "type": "gradient", + "gradientType": "radial", + "enabled": true, + "rotation": 0, + "size": { + "width": 1, + "height": 1 + }, + "colors": [ + { + "color": "#5B4AE410", + "position": 0 + }, + { + "color": "#5B4AE400", + "position": 1 + } + ] + }, + "width": 600, + "height": 500 + }, + { + "type": "ellipse", + "id": "LBt2p", + "x": 350, + "y": -50, + "name": "glow3", + "fill": { + "type": "gradient", + "gradientType": "radial", + "enabled": true, + "rotation": 0, + "size": { + "width": 1, + "height": 1 + }, + "colors": [ + { + "color": "#5B4AE408", + "position": 0 + }, + { + "color": "#5B4AE400", + "position": 1 + } + ] + }, + "width": 500, + "height": 400 + }, + { + "type": "text", + "id": "bsfhc", + "x": -20, + "y": 80, + "name": "leftArabic", + "rotation": -10, + "fill": "#5B4AE418", + "content": "عَرَبِيّ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 180, + "fontWeight": "700" + }, + { + "type": "text", + "id": "vm6Me", + "x": 850, + "y": 320, + "name": "rightArabic", + "rotation": 8, + "fill": "#5B4AE418", + "content": "لُغَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 160, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "0dL46", + "x": 0, + "y": 0, + "name": "Content", + "width": 1200, + "height": 630, + "layout": "vertical", + "gap": 20, + "padding": [ + 0, + 80 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "5Oq54", + "name": "arabicDecor", + "fill": "#1A1625", + "content": "بَحْر", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 72, + "fontWeight": "700" + }, + { + "type": "text", + "id": "itzCH", + "name": "logo", + "fill": "#71688A", + "content": "Bahar", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "normal", + "letterSpacing": -2 + }, + { + "type": "text", + "id": "WxeoL", + "name": "tagline", + "fill": "#71688A", + "content": "Master Arabic, Your Way", + "fontFamily": "Inter", + "fontSize": 26, + "fontWeight": "500" + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PRJzC", + "name": "divider", + "fill": "#5B4AE4", + "width": 48, + "height": 3 + }, + { + "type": "text", + "id": "KwvsO", + "name": "subtitle", + "fill": "#9994AD", + "content": "Personal dictionary · Flashcards · Spaced repetition", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "2lVdX", + "name": "domain", + "fill": "#5B4AE4", + "content": "getbahar.com", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500", + "letterSpacing": 1 + } + ] + }, + { + "type": "rectangle", + "id": "Q9t48", + "x": 0, + "y": 0, + "name": "border", + "width": 1200, + "height": 630, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E4E0EE" + } + } + ] + }, + { + "type": "frame", + "id": "dbkfV", + "x": 5780, + "y": -414, + "name": "Streak — In Progress", + "width": 380, + "fill": "#FAFAFA", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "ZijKC", + "name": "ipTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "G2f6Y", + "name": "ipLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "CpCz5", + "name": "ipFlame", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "frame", + "id": "RVYVf", + "name": "ipInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "KU8vX", + "name": "ipNum", + "gap": 5, + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "8nGFU", + "fill": "#6B6F80", + "content": "12", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "FEtx8", + "fill": "#9CA3AF", + "content": "day streak", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "6cK8P", + "opacity": 0.6, + "fill": "#9CA3AF", + "content": "Longest: 34 days", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "8wloz", + "name": "ipGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "bq5Du", + "fill": "#6B6F80", + "content": "15 / 30", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "700" + }, + { + "type": "text", + "id": "EWNUW", + "fill": "#9CA3AF", + "content": "today's goal", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "D9Z9q", + "width": 12, + "height": 12, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZbXM4", + "name": "ipBar", + "width": "fill_container", + "height": 6, + "fill": "#E2E3EA", + "cornerRadius": 3, + "children": [ + { + "type": "rectangle", + "cornerRadius": 3, + "id": "1cWG1", + "fill": "#9CA3AF", + "width": 170, + "height": "fill_container" + } + ] + } + ] + }, + { + "type": "frame", + "id": "D7Luc", + "x": 6200, + "y": -414, + "name": "Streak — Goal Met", + "width": 380, + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFBEB", + "position": 0 + }, + { + "color": "#FFFDF5", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#F59E0B40" + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "PV3Ae", + "name": "cTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dWOrl", + "name": "cLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "0BYoD", + "name": "cFlame", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "weight": 400, + "fill": "#F59E0B" + }, + { + "type": "frame", + "id": "EO6tW", + "name": "cInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "4EHeY", + "name": "cNum", + "gap": 5, + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "Zlihy", + "fill": "#1B1B2F", + "content": "12", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "0rWj4", + "fill": "#92400E", + "content": "day streak", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "GHMI3", + "opacity": 0.6, + "fill": "#B45309", + "content": "Longest: 34 days", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "6efDb", + "name": "cGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "dOODu", + "width": 18, + "height": 18, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + }, + { + "type": "text", + "id": "5JV01", + "fill": "#92400E", + "content": "Goal met!", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Wtch4", + "name": "cBar", + "width": "fill_container", + "height": 6, + "fill": "#F59E0B", + "cornerRadius": 3 + } + ] + }, + { + "type": "frame", + "id": "SXdVW", + "x": 6620, + "y": -414, + "name": "Streak — Broken", + "width": 380, + "fill": "#FAFAFA", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "4YrvJ", + "name": "bTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "frGQM", + "name": "bLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "3WHcR", + "name": "bFlame", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "frame", + "id": "9YqID", + "name": "bInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "DHpon", + "name": "bNum", + "gap": 5, + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "4hhcp", + "fill": "#6B6F80", + "content": "0", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "Nc7ul", + "fill": "#9CA3AF", + "content": "day streak", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "TVusq", + "opacity": 0.6, + "fill": "#9CA3AF", + "content": "Previous: 12 days", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "iCKMy", + "name": "bGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "XhISj", + "fill": "#9CA3AF", + "content": "0 / 30", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "700" + }, + { + "type": "icon_font", + "id": "72H9V", + "width": 12, + "height": 12, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + } + ] + }, + { + "type": "frame", + "id": "C9ioG", + "name": "bBar", + "width": "fill_container", + "height": 6, + "fill": "#E2E3EA", + "cornerRadius": 3 + }, + { + "type": "frame", + "id": "LgoTn", + "name": "bCta", + "width": "fill_container", + "gap": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8xv3X", + "fill": "#6B6F80", + "content": "Start reviewing to rebuild your streak", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "qSzYI", + "x": 7210, + "y": 1154, + "name": "Stats — Pro (Arabic)", + "clip": true, + "width": 1440, + "height": 960, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "8LJud", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Ur2w3", + "name": "title", + "fill": "#1B1B2F", + "content": "التقدّم", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "600", + "letterSpacing": -0.5 + }, + { + "type": "frame", + "id": "Aqlem", + "name": "Content", + "width": 768, + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "GYo2k", + "name": "Overview", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "GhDvI", + "name": "Stats Row", + "width": "fill_container", + "height": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "9EXKM", + "name": "Words Learned", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 10, + "padding": [ + 16, + 20 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "jxn71", + "name": "wTop", + "width": "fill_container", + "height": "fit_content(78)", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "DWoOz", + "x": 0, + "y": 0, + "name": "wTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "h242z", + "fill": "#10B981", + "content": "+١٢ هذا الأسبوع", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon_font", + "id": "EBIar", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + } + ] + }, + { + "type": "frame", + "id": "hCzNp", + "x": 269, + "y": 0, + "name": "wInfo", + "width": "fit_content(69)", + "height": "fit_content(78)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "97bvf", + "x": 41, + "y": 0, + "fill": "#1B1B2F", + "content": "٨٩", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "MV9Lg", + "x": 0, + "y": 53, + "fill": "#6B6F80", + "content": "كلمات مضافة", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "RDjRb", + "name": "Streak Card", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFBEB", + "position": 0 + }, + { + "color": "#FFFDF5", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#F59E0B40" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 24 + ], + "children": [ + { + "type": "frame", + "id": "N412r", + "name": "sTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "uAzsG", + "name": "sGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "yo6ol", + "fill": "#92400E", + "content": "!تم تحقيق الهدف", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "icon_font", + "id": "QD0Ib", + "width": 18, + "height": 18, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + } + ] + }, + { + "type": "frame", + "id": "oyUdr", + "name": "sLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "IxLdy", + "name": "sInfo", + "width": "fit_content(105)", + "height": "fit_content(61)", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "zgGmQ", + "x": 0, + "y": 0, + "name": "sNum", + "width": "fit_content(105)", + "height": "fit_content(34)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "4Wkqd", + "x": 79, + "y": 0, + "fill": "#1B1B2F", + "content": "١٢", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "dZt8b", + "x": 16, + "y": 15, + "fill": "#92400E", + "content": "يوم متتالي", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "h6Aeq", + "x": 32, + "y": 39, + "opacity": 0.6, + "fill": "#B45309", + "content": "الأطول: ٣٤ يوم", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "Iyiry", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZWXrm", + "name": "sBar", + "width": "fill_container", + "height": 6, + "fill": "#F59E0B", + "cornerRadius": 3 + } + ] + } + ] + }, + { + "type": "frame", + "id": "puwzB", + "name": "Pro Stats", + "width": "fill_container", + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "LoWI2", + "name": "Pro Header", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "g54LW", + "name": "proBadge", + "fill": "#4F46E5", + "cornerRadius": 6, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ZvGBc", + "name": "proBadgeText", + "fill": "#FFFFFF", + "content": "PRO", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "text", + "id": "lJx54", + "name": "proTitle", + "fill": "#1B1B2F", + "content": "تحليلات", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.3 + } + ] + }, + { + "type": "frame", + "id": "M4ULs", + "name": "Heatmap Card", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "text", + "id": "9kRkr", + "name": "heatmapTitle", + "fill": "#1B1B2F", + "content": "نشاط المراجعة", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "GImIL", + "name": "Heatmap Wrap", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "vLX2g", + "name": "Grid", + "flipX": true, + "width": "fill_container", + "gap": 2, + "justifyContent": "end", + "children": [ + { + "type": "frame", + "id": "cd4Yr", + "name": "w1-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HkkXB", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dUZkR", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4Q9j5", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jhnlq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jd3E3", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jzisr", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iQ3HV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "zP3mh", + "name": "w2-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "43FW4", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "m1pOH", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eeW8l", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BAbdP", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QzqN0", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "klELq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pl5qG", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "rSZKl", + "name": "w3-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SgiEU", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "80t1s", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wvPwK", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SAbXK", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Fe3Ga", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VHbvx", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RPKf2", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "lU9Ew", + "name": "w4-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "R4xe0", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "s1NMV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9aKZV", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VRku9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4IOFQ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NvBoZ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "A39S4", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "3o9lB", + "name": "w5", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B3J7W", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DVjTP", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OXbzS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "V6MNq", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Lt07y", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UsxtB", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yeYWB", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "kM2dE", + "name": "w6", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r2jAT", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "T0EpU", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ek1FE", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qJ4MA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "78JhG", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "M1XO0", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lMlzB", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "C28j9", + "name": "w7", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Eo1Ch", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "q40gU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "olW0v", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MPCSA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Cg8aX", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mB1zD", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "v3JD9", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "rUTKB", + "name": "w8", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YaFys", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "m3pE9", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bBMBX", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kT51y", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iGolz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YmOMi", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bf8LL", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "DfilA", + "name": "w9", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KFr38", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Cjjs6", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S5Fzm", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hIZ89", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UYUCR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E4nrR", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vsnIS", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "xds0S", + "name": "w10", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "N7B80", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FkNvY", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SIa2c", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jug9w", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IUXwi", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pPFXB", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jl76H", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Aarax", + "name": "w11", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "57RXW", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CdU7A", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AUt9S", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xHFYT", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oGeQf", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "byWNl", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Y5R4o", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "QzN7R", + "name": "w12", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4rrv3", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "63Ct5", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qClqA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "g8nxy", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tlkye", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sqvJi", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EUDbR", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "sRsWM", + "name": "w13", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dIb9s", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DlZE0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kVb90", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1j8t5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "owhoZ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gSWtl", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "K1qGK", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Fg5bD", + "name": "w14", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Lh1BE", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "60KOR", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D9lTH", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1yJA5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vgjyh", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jy5bO", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kHqQP", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "JgxEE", + "name": "w15", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ouy6J", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Led6O", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lMCq5", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fEreS", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "01hlM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3vC9Z", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8pPnj", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Md4nQ", + "name": "w16", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FKHbv", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jVChH", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IzJCN", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lFYeU", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6huu7", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DIGcU", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xcqsi", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Qz55r", + "name": "w17", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DGq0N", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kIm4x", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "InvVD", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zY3VC", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VqPjE", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uQisZ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8wbMM", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "CqJ3I", + "name": "w18", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dBRya", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ruepW", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bpOmm", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "92Scz", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uIOKM", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ADVY5", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QwNgA", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "diVGM", + "name": "w19", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ooZcX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Kn15w", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "o4Mmg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1bekT", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LQfs1", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "M3OKD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Z95pu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "OtmJu", + "name": "w20", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pAsuf", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oicnB", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EVk6e", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "U22JC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JbpWw", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0zbu0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XOQHl", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "TQKbQ", + "name": "w21", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8lZxO", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YOzbU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "m5HRh", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kShLk", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GOO9L", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PLbQp", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4OjN6", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "gEh6h", + "name": "w22", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JmfuS", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "q971u", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "v4VDk", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tfbki", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mQnMR", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hlD9L", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fL0me", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "OmUj3", + "name": "w23", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7xO24", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3LGqf", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pAyWW", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EKEoa", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IIt3H", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QNueK", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3I9qq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "HuBeA", + "name": "w24", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7aTuv", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "z0qif", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PxFFz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ib3c5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "W2oDb", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VdTT0", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mFEqJ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "P0aT2", + "name": "w25", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FLUuQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B1BKC", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6ZwlL", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "s4gPU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VY7Ro", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DSKZi", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Y3bv4", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "LkfmL", + "name": "w26", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cdQJP", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KdLEP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HH3PX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "N2y91", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FfN0H", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TJt8x", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6Aakv", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "BYI5O", + "name": "w27", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gR40l", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dKh4o", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9n2kY", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4hFeI", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6Dz2K", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qthfV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ix3iO", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "WYRxt", + "name": "w28", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KGSsP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Khk15", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "x3YvW", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "49O75", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lIXSr", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZXXiH", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YQxCE", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "hM4oV", + "name": "w29", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eyQll", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cWGwN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4rT8v", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OBZyJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "O8z8z", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yey3m", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2LHFS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "eHN8r", + "name": "w30", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Pu6yd", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "56Gi0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "96xHA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7Z5ac", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "217l8", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4vg3m", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "V1Ni9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Qvp0n", + "name": "w31", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GxacP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "y5ZYr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ky4H7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "N7MDA", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ybcDJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yBd0c", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dK0rQ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "vitPy", + "name": "w32", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WuD8w", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zbrBs", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ndzzC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6E0pz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "933fX", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZtP8x", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hZbNC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "l4ug8", + "name": "w33", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5OWec", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3r4lH", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "R7QAY", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sgeSu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VXDze", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Q6Uf7", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6S9bg", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "8PRAZ", + "name": "w34", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JDYjQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FHkKf", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CPZll", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rdYSt", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3eQlX", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1keHc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0uJxu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "DXyjV", + "name": "w35", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ozFKP", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "d3VIR", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FTwtL", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p1WVp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jjam2", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GHVzJ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Vwm6b", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Cbncw", + "name": "w36", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "88lSk", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "w3TcS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bkefs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "UO9OS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RlkDN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "e2DeI", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vWMtY", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Xi3Z0", + "name": "w37", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "El2El", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i0Egz", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BoSuy", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZS5Mw", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Nqw3a", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SPBPK", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FyM75", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "C9hmj", + "name": "w38", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "odOR8", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fyj2b", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JjRed", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Z1whm", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7Y9tG", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hfHD5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NKeCc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "SW0m3", + "name": "w39", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tliT8", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XfWy6", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uyVQq", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PotNW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "az6dA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gpXra", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KlyQV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "O9NxA", + "name": "w40", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mxUkk", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OByxI", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Fxj5K", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HZSOe", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2PP8N", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ina1P", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "l97F9", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "J3Y9M", + "name": "w41", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dE4nw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tjw8t", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gI1Qf", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7HJxS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a3N58", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LRtvi", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "W7GAI", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "GNGd8", + "name": "w42", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RE8xH", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8Ftmx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D254q", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Cy20O", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yP9ph", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TFIbd", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cubaR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "rLW98", + "name": "w43", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eOfN8", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5o9Vs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nTZGa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7zYUI", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ukZIg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JkRc9", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kpe49", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "wa2HX", + "name": "w44", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S75P2", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XKVHi", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tQEZp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MHqQk", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ffjNx", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oEB12", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kYfMi", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Ngzba", + "name": "w45", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "f8nfq", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Il7j5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NBAJr", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8SMVa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "G2qc3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AvELz", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KrjjR", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "OroFb", + "name": "w46", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "M2ZwA", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VR737", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IrmjQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hHK39", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9xLov", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cl3EZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cn1Tv", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Fn04Q", + "name": "w47", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Tnsuz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TarGY", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lC8JF", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "noQoa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QhPQa", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vUfma", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TxN9m", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "hejT4", + "name": "w48", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Vpk08", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gbYVo", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Yb6nf", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3ITd3", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kFlWW", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "x2fQD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cvvUl", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "JoxSs", + "name": "w49", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "G5dYv", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rFEca", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4rBbs", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "G3Tcr", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "M0sTK", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AnRJR", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QL8qH", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "fyIek", + "name": "w50", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eINdV", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Tpwxa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "W7b02", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TDWrY", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OhsRQ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YeSwg", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qmZpJ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "PmQxM", + "name": "w51", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vqgR9", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "h584q", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jalwJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "77T1m", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B2mwH", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BnYcQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uQKOh", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "co2qf", + "name": "w52", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3Gk2S", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "U6oHL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tUq28", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "L7xdq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8rYEJ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E2BQW", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6DWW9", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + } + ] + }, + { + "type": "frame", + "id": "uKOC9", + "name": "dayLabels", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "xJHP8", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "jVZsl", + "fill": "#9CA3AF", + "content": "إثن", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "vY50N", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "CbDtX", + "fill": "#9CA3AF", + "content": "أرب", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "MwYxM", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "A3bEK", + "fill": "#9CA3AF", + "content": "جمع", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "m08uS", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ITIzZ", + "name": "Month Labels", + "width": "fill_container", + "padding": [ + 0, + 28, + 0, + 0 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "cGYq9", + "fill": "#1B1B2F", + "content": "مارس", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "CqiAD", + "fill": "#9CA3AF", + "content": "فبر", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "52VPH", + "fill": "#9CA3AF", + "content": "يناير", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "SiWvV", + "fill": "#9CA3AF", + "content": "ديس", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "ArKHz", + "fill": "#9CA3AF", + "content": "نوف", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "x7T8n", + "fill": "#9CA3AF", + "content": "أكت", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "S6KSv", + "fill": "#9CA3AF", + "content": "سبت", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "cQBO5", + "fill": "#9CA3AF", + "content": "أغس", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "OHGm1", + "fill": "#9CA3AF", + "content": "يول", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "O58B3", + "fill": "#9CA3AF", + "content": "يون", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "LZbOg", + "fill": "#9CA3AF", + "content": "مايو", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "8HHTD", + "fill": "#9CA3AF", + "content": "أبر", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "rI26j", + "name": "Legend", + "width": "fill_container", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6NhGP", + "fill": "#9CA3AF", + "content": "أكثر", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PEx6Y", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wzL5E", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2VE9R", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gTf0r", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IpNEk", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "8ZiOG", + "fill": "#9CA3AF", + "content": "أقل", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "DtDEs", + "name": "Top Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "FcyWM", + "name": "Retention Rate", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "x8lqk", + "name": "retHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "SahK6", + "name": "retTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "n2ScF", + "name": "retTrendText", + "fill": "#10B981", + "content": "+٢.٣٪ عن الأسبوع الماضي", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon_font", + "id": "rEg4r", + "name": "retTrendIcon", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + } + ] + }, + { + "type": "frame", + "id": "T5a6T", + "name": "retInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "pgQaF", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "5mHRi", + "name": "retTitle", + "fill": "#6B6F80", + "content": "معدل الاسترجاع", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "d55Kj", + "name": "retValue", + "fill": "#1B1B2F", + "content": "٨٧٪", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "hD2qq", + "name": "retDesc", + "fill": "#9CA3AF", + "content": "متوسط ٧ أيام", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "CSJ6t", + "name": "Words Learned", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "a9tP1", + "name": "wlHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Ua0Jx", + "name": "wlTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "gkGfk", + "fill": "#10B981", + "content": "+٧ هذا الأسبوع", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon_font", + "id": "IPQPN", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + } + ] + }, + { + "type": "frame", + "id": "0oVLY", + "name": "wlTitle", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "wPGkj", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "y5jcp", + "fill": "#6B6F80", + "content": "كلمات متعلّمة", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "76WWU", + "name": "wlValue", + "width": "fit_content(133)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "431gr", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "٦٢", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "dMbE9", + "x": 52, + "y": 18, + "enabled": false, + "fill": "#6B6F80", + "content": "of 89 added", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "C842E", + "fill": "#9CA3AF", + "content": "كل الوقت", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "sfX1p", + "name": "Bottom Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "ZQmi7", + "name": "Workload Forecast", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "nSLw5", + "name": "forecastInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "F1vcc", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "yTfaR", + "name": "forecastHeader", + "fill": "#6B6F80", + "content": "توقعات المراجعة", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "a4f0b", + "name": "forecastValue", + "width": "fit_content(196)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "lLmBR", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "~٢٨", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "yXjnq", + "x": 75, + "y": 18, + "fill": "#6B6F80", + "content": "مراجعة غدًا", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "r10ze", + "name": "Forecast Bars", + "width": "fill_container", + "height": 48, + "gap": 4, + "alignItems": "end", + "children": [ + { + "type": "rectangle", + "cornerRadius": 3, + "id": "7mCvX", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 20 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "NSxoz", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 34 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "mlPai", + "fill": "#4F46E5", + "width": "fill_container", + "height": 48 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "2HyMd", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 38 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "rHA27", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 24 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "nUDcN", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 16 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "6Rmrs", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 30 + } + ] + }, + { + "type": "frame", + "id": "4dvlD", + "name": "forecastLabels", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "4Lw4Y", + "fill": "#9CA3AF", + "content": "إثن", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "lCAGB", + "fill": "#9CA3AF", + "content": "ثلث", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "HI8VN", + "fill": "#1B1B2F", + "content": "أرب", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "0dw3f", + "fill": "#9CA3AF", + "content": "خمس", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "NPwLy", + "fill": "#9CA3AF", + "content": "جمع", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "kUBCo", + "fill": "#9CA3AF", + "content": "سبت", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "4lHx8", + "fill": "#9CA3AF", + "content": "أحد", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "0Ipga", + "name": "Difficult Words", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "sMN62", + "name": "header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "25Ny7", + "name": "countBadge", + "fill": "#F8F8FB", + "cornerRadius": 10, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "zz9qg", + "fill": "#6B6F80", + "content": "١٢ إجمالي", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "L6df7", + "name": "titleWrap", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "qsvlt", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "gxGJr", + "fill": "#6B6F80", + "content": "كلمات صعبة", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "text", + "id": "HxMop", + "name": "subLabel", + "fill": "#9CA3AF", + "content": "أصعب ٣ كلمات", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "if3tb", + "name": "strugList", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "Kc75n", + "name": "word1", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "cavs7", + "name": "clip1", + "clip": true, + "width": "fill_container", + "height": 24, + "children": [ + { + "type": "text", + "id": "jPuCK", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "...هل يمكنكِ أن تساعديني في", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "Iu7LC", + "name": "w1Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "kBLOV", + "fill": "#9CA3AF", + "content": "٥ أخطاء", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "W1Xii", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + } + ] + }, + { + "type": "frame", + "id": "S40d0", + "name": "word2", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "fFUlN", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "تَصَرَّفَ", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "YxUxP", + "name": "w2Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "h2Qab", + "name": "meta2", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "1L46Z", + "name": "icon2", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "GtEDD", + "fill": "#9CA3AF", + "content": "٤ أخطاء", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "EHDlQ", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + } + ] + }, + { + "type": "frame", + "id": "1OIAi", + "name": "word3", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "b1Ycf", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "اِنْطِبَاع", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "aDh9N", + "name": "w3Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "LyjZY", + "name": "meta3", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "kBxEV", + "name": "icon3", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "kmsAK", + "fill": "#9CA3AF", + "content": "٣ أخطاء", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "GCBdW", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "zmfmO", + "name": "footer", + "width": "fill_container", + "padding": [ + 4, + 0, + 0, + 0 + ], + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "Kkw9l", + "fill": "#4F46E5", + "content": "← عرض الكل في القاموس", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Q90Rz", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "left": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "children": [ + { + "type": "frame", + "id": "8zjXD", + "name": "logo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "TWVUe", + "name": "navGroup", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "hnJ67", + "name": "navHome", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "s8oo5", + "name": "homeIcon", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "4ZcSM", + "name": "navDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ks1Mk", + "name": "decksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "BSwvn", + "name": "navStats", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "3ZR0Y", + "name": "statsIcon", + "width": 20, + "height": 20, + "iconFontName": "activity", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + } + ] + }, + { + "type": "frame", + "id": "bBP3H", + "name": "spacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "9mZXw", + "name": "navSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "oQD1S", + "name": "settingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "nyN9J", + "x": 7210, + "y": 0, + "name": "Stats — Free", + "clip": true, + "width": 1440, + "height": 960, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "0PrWC", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "none", + "children": [ + { + "type": "frame", + "id": "SnV8e", + "x": 14, + "y": 16, + "name": "logo", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "PT5pV", + "x": 10, + "y": 60, + "name": "navGroup", + "width": "fit_content(36)", + "height": "fit_content(116)", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "m8q0u", + "x": 0, + "y": 0, + "name": "navHome", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Ct7MF", + "name": "homeIcon", + "width": 20, + "height": 20, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "bSR79", + "x": 0, + "y": 40, + "name": "navDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "H4prz", + "name": "decksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + }, + { + "type": "frame", + "id": "WhscT", + "x": 0, + "y": 80, + "name": "navStats", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "DDEqL", + "name": "statsIcon", + "width": 20, + "height": 20, + "iconFontName": "activity", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + } + ] + }, + { + "type": "frame", + "id": "l4ePb", + "x": 0, + "y": 192, + "name": "spacer", + "width": 36, + "height": "fill_container(700)" + }, + { + "type": "frame", + "id": "PpbU0", + "x": 0, + "y": 908, + "name": "navSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Wv46f", + "name": "settingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "KTAys", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "gap": 24, + "padding": [ + 32, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "LOEi7", + "name": "title", + "fill": "#1B1B2F", + "content": "Progress", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "600", + "letterSpacing": -0.5 + }, + { + "type": "frame", + "id": "AYUJx", + "name": "Content", + "width": 768, + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "tXU2B", + "name": "Overview", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "eIzrS", + "name": "Streak Card", + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFBEB", + "position": 0 + }, + { + "color": "#FFFDF5", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#F59E0B40" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 24 + ], + "children": [ + { + "type": "frame", + "id": "jWcAI", + "name": "sTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "eqTMH", + "name": "sLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "oS7PG", + "width": 28, + "height": 28, + "iconFontName": "flame", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + }, + { + "type": "frame", + "id": "u3wWq", + "name": "sInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "kCN11", + "name": "sNum", + "width": "fit_content(105)", + "height": "fit_content(34)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "nrnDJ", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "12", + "fontFamily": "Inter", + "fontSize": 28, + "fontWeight": "800", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "7EmlA", + "x": 35, + "y": 10, + "fill": "#92400E", + "content": "day streak", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "PaMLG", + "opacity": 0.6, + "fill": "#B45309", + "content": "Longest: 34 days", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "KLtXS", + "name": "sGoal", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "iN56h", + "width": 18, + "height": 18, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#F59E0B" + }, + { + "type": "text", + "id": "TqBnH", + "fill": "#92400E", + "content": "Goal met!", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "RPGyz", + "name": "sBar", + "width": "fill_container", + "height": 6, + "fill": "#F59E0B", + "cornerRadius": 3 + } + ] + }, + { + "type": "frame", + "id": "Bgcnz", + "name": "Stats Row", + "width": "fill_container", + "height": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "6RNvH", + "name": "Words Learned", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 10, + "padding": [ + 16, + 20 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "oQgLZ", + "name": "wTop", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "zuFjA", + "name": "wInfo", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "rdOEw", + "fill": "#1B1B2F", + "content": "89", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "dIKS1", + "fill": "#6B6F80", + "content": "Words Added", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "wQppF", + "name": "wTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "GIMWp", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "QJIFb", + "fill": "#10B981", + "content": "+12 this week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "8GsQu", + "name": "Pro Section Wrapper", + "width": "fill_container", + "height": 420, + "layout": "none", + "children": [ + { + "type": "frame", + "id": "8wRjD", + "x": 0, + "y": 133, + "name": "Pro Stats", + "opacity": 0.3, + "width": 768, + "height": 420, + "effect": { + "type": "blur", + "radius": 4 + }, + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "U3Azy", + "name": "Pro Header", + "width": "fill_container", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Z1Kiy", + "name": "proTitle", + "fill": "#1B1B2F", + "content": "Insights", + "fontFamily": "Inter", + "fontSize": 18, + "fontWeight": "600", + "letterSpacing": -0.3 + }, + { + "type": "frame", + "id": "SfGCf", + "name": "proBadge", + "fill": "#4F46E5", + "cornerRadius": 6, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "bmpQK", + "name": "proBadgeText", + "fill": "#FFFFFF", + "content": "PRO", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "AMufb", + "name": "Heatmap Card", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "text", + "id": "nHBGy", + "name": "heatmapTitle", + "fill": "#1B1B2F", + "content": "Review Activity", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "mWplB", + "name": "Heatmap Wrap", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "JqGwP", + "name": "dayLabels", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "viqMe", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "JbQDa", + "fill": "#9CA3AF", + "content": "Mon", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "83KKz", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "pxh8n", + "fill": "#9CA3AF", + "content": "Wed", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Im8Qs", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "saODG", + "fill": "#9CA3AF", + "content": "Fri", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "text", + "id": "dxBmB", + "fill": "#9CA3AF", + "content": " ", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "GTiJd", + "name": "Grid", + "width": "fill_container", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "3Uu6c", + "name": "w1-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GwrQb", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mGXrI", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "o657h", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ltPMO", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "o4mM5", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oxqdM", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oq6RX", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "LYwVm", + "name": "w2-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1MB1E", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "swMHW", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cTUIG", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CgVbH", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dGbaH", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2Qcle", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qYcyd", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "VySGa", + "name": "w3-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rqaYO", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LtzTV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "L28iq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BfQbx", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "paOZs", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hlFuZ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XTxq0", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "4bG8A", + "name": "w4-sparse", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BoffR", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "poJY9", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mQCcQ", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uQLVE", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "U0Q2T", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ofpGb", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wU52f", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "aqVXj", + "name": "w5", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uKEUw", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VJQRP", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GtzPt", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "aNcS7", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TgxrQ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HLBNX", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tNGmI", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "8CSzl", + "name": "w6", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sMC2R", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NuE5Y", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "d0D3H", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IWh2A", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TkjHL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mUyfh", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "J4xHe", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "r0F1C", + "name": "w7", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GxgS1", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FojQg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7MnK3", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CXcJF", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Lqzd4", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yCe2J", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SQpd5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Tut50", + "name": "w8", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vOlRl", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "U1ZJZ", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HWx8u", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OknDy", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MfI58", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yPGuR", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "45KRB", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "9NvP3", + "name": "w9", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0HPfZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "X0JAd", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eO4QM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "frQlx", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0VoD6", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kVuUi", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cQVni", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "jMRY6", + "name": "w10", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WhlQE", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yODmG", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "j41oC", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3De7r", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "42ptV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eBvaW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a0icc", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Jg5xm", + "name": "w11", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MabYm", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2N73S", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lY7a5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0nrCh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SCXO8", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3Daf2", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i1873", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "d2UX9", + "name": "w12", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "u264n", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8v2kj", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i4lNL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QMYb7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "tw8Fi", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5YquL", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p6BNj", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "dOAxV", + "name": "w13", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7MTHj", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2L3ks", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YITyG", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "G1vig", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i0Ls7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CPUpO", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FBYWD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "UJKAr", + "name": "w14", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vHHgt", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HH9Yk", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "boMlz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fTfMw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WfVxy", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IFMpn", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "z6Iq7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "CfLbf", + "name": "w15", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HQj1j", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kmYs8", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "50oRO", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VYfp7", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IWwZa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nDjb4", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kxCaR", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "L8kbH", + "name": "w16", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0KcAo", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "899ot", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9ZYEe", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VZl6Q", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ko8nD", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xdrd9", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FXrqC", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "0bLho", + "name": "w17", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TQUMm", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7VL4q", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qqep2", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "83FiX", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VQvKF", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uc1RV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DYK1u", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Untoj", + "name": "w18", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2YExr", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jVuoJ", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bnis6", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Jd3xY", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZVZgm", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sUSLo", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AYGBs", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "pOryM", + "name": "w19", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pxNVB", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fbMPI", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hqFYS", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "avrZx", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8NC63", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DO9pD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QEgsQ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "pbTzn", + "name": "w20", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yRqNa", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1VH6d", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JECrt", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OfxLd", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S7gUX", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "z4vSZ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zLJNM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "uszXk", + "name": "w21", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rir0O", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XiYXL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WQcLS", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7k9RR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KV8ZC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Jg99T", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9mrWd", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "yjb5I", + "name": "w22", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OIwGd", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "soL6K", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oJF2H", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HyB5H", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BNRvV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jibAy", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "v1mZn", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "MExaX", + "name": "w23", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8TjIn", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DhrFb", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zhYUp", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nI1Tm", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3Pzla", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PzXOt", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bznt5", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "vDz2K", + "name": "w24", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eVpSS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bcczE", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r3Hle", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eulgN", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SgwlX", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "OKisa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "feTVB", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "v1lwd", + "name": "w25", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "T7GYz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PJMGd", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "h4mTA", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p67ZN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p9OfA", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ITzfN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6bbsf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "91Doe", + "name": "w26", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "s2iyu", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YGtBb", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "NyTZ2", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "b0gYw", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3wpeI", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qeVot", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D3n51", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "itGS2", + "name": "w27", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r5jWZ", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EYCQz", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "aiwus", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BtaNP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MhboZ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "A0t5p", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "omQlu", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "IZRts", + "name": "w28", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EuQcq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YcSVp", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "N56Kc", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ygRoZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "EVeFg", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CUTwB", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ynKmq", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "bo8zF", + "name": "w29", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3kY2G", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "o0jyX", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "bvs8h", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dLIop", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DwSYL", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Jf8SC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HF3TA", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "LnEVo", + "name": "w30", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PFw5r", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TsGF3", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wosRo", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "60lLH", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8ePZK", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "drcqk", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KTdQm", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "RKviU", + "name": "w31", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mzhXf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SFPON", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "GzGng", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qOqJM", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kIUZe", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B2Mv7", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4hklB", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "9scP3", + "name": "w32", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2x2hk", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XejXT", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TmBqr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rnv2I", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YFbMX", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7FMoP", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "c9BSV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "T8O2M", + "name": "w33", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cSHSo", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KRttO", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2quHE", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2jPhQ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zXIaD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Dgum0", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a1Mj1", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "hg8CF", + "name": "w34", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "M2AKp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oIbdb", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WPryJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ox6ud", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "P9vB7", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pdiir", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sFteO", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "5nCni", + "name": "w35", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "mDXnr", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "oBsv8", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "j2gGE", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3SKLd", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "E0vqE", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kiACA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "C4TBe", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "arNKP", + "name": "w36", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZVcef", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JcTbk", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0s8tv", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "p4SuH", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZPM8B", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Lt99Z", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D4B54", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "pH5ie", + "name": "w37", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PnMna", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Kqv8P", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "fakAy", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dUxan", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XInlQ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HXcop", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "i4xYj", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "M1zgO", + "name": "w38", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6StA9", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SFxPT", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9QyHW", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iBbr4", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uLKlf", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "POhir", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "hCJpb", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Vwncg", + "name": "w39", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CT7lj", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9DEth", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Foqg9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5gzKr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "3Q9ET", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "RhPXI", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0xUSb", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "uK18c", + "name": "w40", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "agJ8l", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0wziv", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KnvFU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "JZkuC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1ZRLe", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wH3ZS", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wNqzl", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "3T5wA", + "name": "w41", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lS8aw", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kMPPa", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "X7Iw5", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "C4CQF", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nVQFP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "2He5B", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "7pZI1", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "HKvWW", + "name": "w42", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0mf7s", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Ab7Bp", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "O2BRE", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wY4GH", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "eKN6N", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "csd88", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "sWP6w", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "c8aDj", + "name": "w43", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zTsqg", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "X9doc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rk27y", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "VuCb1", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "F3uMh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jr7tV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "TylM0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Kc71U", + "name": "w44", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QweNB", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "YpkHQ", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "57KTg", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "qYPGA", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lrsjr", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FSRsC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "wf4c7", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "V9HlO", + "name": "w45", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jmAHC", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "PeWGs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XEZAG", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZRy6W", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IAMGk", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ZROL5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "N0AHR", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "horx0", + "name": "w46", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "123hC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "dMCaf", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "KeWXh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "lwSLY", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "B4O1h", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "9EWZI", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "d6Ph9", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "ASYz9", + "name": "w47", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "czQfs", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HtyRb", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Jxpfz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "0Yyqh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kfTEc", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pZXc9", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "m4seh", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "pvIiT", + "name": "w48", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "WzXAx", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "uAGnn", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ukL80", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "AuZX5", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "L3Y9M", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6JKEP", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rCGaC", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "UmGVY", + "name": "w49", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nY28n", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vebOV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "5LIms", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "txqFy", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "kCV2b", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pmmme", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iCI22", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Ct3X9", + "name": "w50", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8vf1N", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nhJHL", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8Cp56", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "s5ZU0", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vdnxo", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "DYJmO", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "f3ID6", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "KOstV", + "name": "w51", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "ca2j1", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "glUgn", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "P504a", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "HDRGf", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "cXXvY", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "XtMfu", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FA9lN", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "Vuslf", + "name": "w52", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "toUbT", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a6ByZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "y4mnr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "h9MUc", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "Wkh54", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "k2qLM", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "MBqTq", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "yRNrM", + "name": "w53", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "FthrT", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "nDmYK", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CxyqZ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pegfO", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "48JAe", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "onk9w", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "zOBVp", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "NpSqi", + "name": "w54", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "C5g2H", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "4oFqr", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yqJwN", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "w48Ze", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "CAMl5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "LqnJ0", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "S3ujc", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "qj2Eh", + "name": "w55", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "73jrV", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r3A3q", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "jPKUR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "guPtz", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "veU9t", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "rzbX0", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "QvdJe", + "fill": "#4F46E5", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "t7XiM", + "name": "w56", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "xneIb", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "iFT9S", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "58wze", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "6Rbrq", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "D4oro", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "t4hxD", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "gplTR", + "fill": "#7C73E6", + "width": 10, + "height": 10 + } + ] + }, + { + "type": "frame", + "id": "EH33C", + "name": "w57", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1Of04", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vTXLb", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "yy7XJ", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "IwunU", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "vgmIV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8AkCV", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "O2A5C", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "sm1U5", + "name": "Month Labels", + "width": "fill_container", + "padding": [ + 0, + 0, + 0, + 28 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Lt6Wn", + "fill": "#9CA3AF", + "content": "Apr", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Fwg1n", + "fill": "#9CA3AF", + "content": "May", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "RECW6", + "fill": "#9CA3AF", + "content": "Jun", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "tqqB6", + "fill": "#9CA3AF", + "content": "Jul", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "iq925", + "fill": "#9CA3AF", + "content": "Aug", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "w6gEV", + "fill": "#9CA3AF", + "content": "Sep", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "YoUor", + "fill": "#9CA3AF", + "content": "Oct", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "FjuLH", + "fill": "#9CA3AF", + "content": "Nov", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "JmPYj", + "fill": "#9CA3AF", + "content": "Dec", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "uA3tg", + "fill": "#9CA3AF", + "content": "Jan", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "TsCOi", + "fill": "#9CA3AF", + "content": "Feb", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Vltiw", + "fill": "#1B1B2F", + "content": "Mar", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "POqIs", + "name": "Legend", + "width": "fill_container", + "gap": 6, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eVQsq", + "fill": "#9CA3AF", + "content": "Less", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "SXBwn", + "fill": "#F0F0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "BnR5a", + "fill": "#E0DFFE", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "r4ulS", + "fill": "#B4B0F5", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "8Fon5", + "fill": "#7C73E6", + "width": 10, + "height": 10 + }, + { + "type": "rectangle", + "cornerRadius": 2, + "id": "a4IWM", + "fill": "#4F46E5", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "qdb0p", + "fill": "#9CA3AF", + "content": "More", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "1mJyt", + "name": "Top Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "s8b0T", + "name": "Words Learned", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "kz2mu", + "name": "wlHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "RFiw1", + "name": "wlTitle", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6r9Mr", + "fill": "#6B6F80", + "content": "Words Learned", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "M5k4n", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "ynHuq", + "name": "wlTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "9iQdZ", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "9GllT", + "fill": "#10B981", + "content": "+7 this week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "bs7ZH", + "name": "wlValue", + "width": "fit_content(133)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "smJg3", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "62", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "Hy5Sv", + "x": 52, + "y": 18, + "enabled": false, + "fill": "#6B6F80", + "content": "of 89 added", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "text", + "id": "IEReM", + "fill": "#9CA3AF", + "content": "All time", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "4lwgH", + "name": "Retention Rate", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "iAZYr", + "name": "retHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "8SqWa", + "name": "retInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "yxT5i", + "name": "retTitle", + "fill": "#6B6F80", + "content": "Retention Rate", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "TJ41N", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "wRYWo", + "name": "retTrend", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "iF9Ai", + "name": "retTrendIcon", + "width": 14, + "height": 14, + "iconFontName": "trending-up", + "iconFontFamily": "lucide", + "fill": "#10B981" + }, + { + "type": "text", + "id": "Lv5nW", + "name": "retTrendText", + "fill": "#10B981", + "content": "+2.3% vs last week", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "Qetpi", + "name": "retValue", + "fill": "#1B1B2F", + "content": "87%", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "1Jz1O", + "name": "retDesc", + "fill": "#9CA3AF", + "content": "7-day average", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "gRQuf", + "name": "Bottom Insight Cards", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "E1wQ8", + "name": "Difficult Words", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "Amp9e", + "name": "header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dVwgq", + "name": "titleWrap", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hMgbQ", + "fill": "#6B6F80", + "content": "Difficult Words", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "MmlQu", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "eo1NJ", + "name": "countBadge", + "fill": "#F8F8FB", + "cornerRadius": 10, + "padding": [ + 2, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WsrmP", + "fill": "#6B6F80", + "content": "12 total", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "text", + "id": "nI1Ny", + "name": "subLabel", + "fill": "#9CA3AF", + "content": "Top 3 most difficult", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "LxQLC", + "name": "strugList", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "fLnDo", + "name": "word1", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "cPHN1", + "name": "w1Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "w1wnr", + "fill": "#9CA3AF", + "content": "5 lapses", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "Qtmyw", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "frame", + "id": "g6s7g", + "name": "clip1", + "clip": true, + "width": "fill_container", + "height": 24, + "children": [ + { + "type": "text", + "id": "gHV1w", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "...هل يمكنكِ أن تساعديني في", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Lohy8", + "name": "word2", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "SQTGf", + "name": "w2Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "bizvH", + "name": "meta2", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zrn6Y", + "name": "icon2", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "WQzgU", + "fill": "#9CA3AF", + "content": "4 lapses", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "8qFwc", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "text", + "id": "0Nf0h", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "تَصَرَّفَ", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "42Xbh", + "name": "word3", + "width": "fill_container", + "fill": "#FEF2F2", + "cornerRadius": 6, + "gap": 4, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "OiG6H", + "name": "w3Right", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "xMGzz", + "name": "meta3", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Thavm", + "name": "icon3", + "width": 11, + "height": 11, + "iconFontName": "arrow-left-right", + "iconFontFamily": "lucide", + "fill": "#B91C1C80" + }, + { + "type": "text", + "id": "JfDOP", + "fill": "#9CA3AF", + "content": "3 lapses", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "icon_font", + "id": "IFggJ", + "width": 11, + "height": 11, + "iconFontName": "pencil-line", + "iconFontFamily": "lucide", + "fill": "#B91C1C60" + } + ] + }, + { + "type": "text", + "id": "8io5o", + "fill": "#991B1B", + "textGrowth": "fixed-width-height", + "width": "fill_container", + "height": 24, + "content": "اِنْطِبَاع", + "textAlign": "right", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "zjBuG", + "name": "footer", + "width": "fill_container", + "padding": [ + 4, + 0, + 0, + 0 + ], + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "IU3jX", + "fill": "#4F46E5", + "content": "View all in dictionary →", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "zgkhw", + "name": "Workload Forecast", + "width": "fill_container", + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "layout": "vertical", + "gap": 12, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "wSGED", + "name": "forecastInfo", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "RdSJ8", + "name": "forecastHeader", + "fill": "#6B6F80", + "content": "Workload Forecast", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "6zaWh", + "width": 13, + "height": 13, + "iconFontName": "info", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "frame", + "id": "V4Jpx", + "name": "forecastValue", + "width": "fit_content(196)", + "height": "fit_content(44)", + "layout": "none", + "children": [ + { + "type": "text", + "id": "ak4V9", + "x": 0, + "y": 0, + "fill": "#1B1B2F", + "content": "~28", + "fontFamily": "Inter", + "fontSize": 36, + "fontWeight": "700", + "letterSpacing": -0.5 + }, + { + "type": "text", + "id": "5dGGD", + "x": 75, + "y": 18, + "fill": "#6B6F80", + "content": "reviews tomorrow", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "CqR8I", + "name": "Forecast Bars", + "width": "fill_container", + "height": 48, + "gap": 4, + "alignItems": "end", + "children": [ + { + "type": "rectangle", + "cornerRadius": 3, + "id": "Yrhmb", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 20 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "jSwNO", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 34 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "rUN3V", + "fill": "#4F46E5", + "width": "fill_container", + "height": 48 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "nThld", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 38 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "njRE5", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 24 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "adSwc", + "fill": "#E0DFFE", + "width": "fill_container", + "height": 16 + }, + { + "type": "rectangle", + "cornerRadius": 3, + "id": "NWFhs", + "fill": "#B4B0F5", + "width": "fill_container", + "height": 30 + } + ] + }, + { + "type": "frame", + "id": "uErXl", + "name": "forecastLabels", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "iztsF", + "fill": "#9CA3AF", + "content": "Mon", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "yfCA1", + "fill": "#9CA3AF", + "content": "Tue", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "qJjEa", + "fill": "#1B1B2F", + "content": "Wed", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "fw5rw", + "fill": "#9CA3AF", + "content": "Thu", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "sXzgf", + "fill": "#9CA3AF", + "content": "Fri", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "oUXDe", + "fill": "#9CA3AF", + "content": "Sat", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + }, + { + "type": "text", + "id": "g08mE", + "fill": "#9CA3AF", + "content": "Sun", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "X91UB", + "x": 184, + "y": 80, + "name": "Upgrade CTA", + "width": 400, + "fill": "#FFFFFFEE", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA80" + }, + "effect": [ + { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F18", + "offset": { + "x": 0, + "y": 8 + }, + "blur": 24 + }, + { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 4 + } + ], + "layout": "vertical", + "gap": 14, + "padding": 32, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "iaSQo", + "width": 28, + "height": 28, + "iconFontName": "lock", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "syoGL", + "fill": "#1B1B2F", + "content": "Unlock Insights", + "textAlign": "center", + "fontFamily": "Inter", + "fontSize": 20, + "fontWeight": "700", + "letterSpacing": -0.3 + }, + { + "type": "text", + "id": "HQrGv", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": 320, + "content": "See your retention rate, workload forecast, difficult words, and more.", + "lineHeight": 1.5, + "textAlign": "center", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "pRkly", + "name": "Upgrade Button", + "fill": "#4F46E5", + "cornerRadius": 8, + "gap": 8, + "padding": [ + 10, + 24 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "w8E4N", + "width": 16, + "height": 16, + "iconFontName": "sparkles", + "iconFontFamily": "lucide", + "fill": "#FFFFFF" + }, + { + "type": "text", + "id": "LxZCn", + "fill": "#FFFFFF", + "content": "Upgrade to Pro", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "emEms", + "x": 5796, + "y": 3979, + "name": "Homepage — Filters Open", + "clip": true, + "width": 1440, + "height": 960, + "fill": "#FFFFFF", + "children": [ + { + "type": "frame", + "id": "5vWrR", + "name": "Sidebar", + "width": 56, + "height": "fill_container", + "fill": "#FCFCFC", + "stroke": { + "align": "inside", + "thickness": { + "right": 1 + }, + "fill": "#E0E2EC" + }, + "layout": "vertical", + "gap": 16, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "6hebo", + "name": "logoWrap", + "width": 28, + "height": 28, + "fill": { + "type": "image", + "enabled": true, + "url": "logo.png", + "mode": "fit" + } + }, + { + "type": "frame", + "id": "Io6yU", + "name": "navGroup", + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "NUFyp", + "name": "navHome", + "width": 36, + "height": 36, + "fill": "#4F46E518", + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "RjLtf", + "name": "navHomeIcon", + "width": 20, + "height": 20, + "iconFontName": "house", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "MDgXd", + "name": "navDecks", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Fxv0U", + "name": "navDecksIcon", + "width": 20, + "height": 20, + "iconFontName": "layers", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Ru0q4", + "name": "navSpacer", + "width": 36, + "height": "fill_container" + }, + { + "type": "frame", + "id": "SlVWo", + "name": "navSettings", + "width": 36, + "height": 36, + "cornerRadius": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "qX4Mx", + "name": "navSettingsIcon", + "width": 20, + "height": 20, + "iconFontName": "settings", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + }, + { + "type": "frame", + "id": "K268R", + "name": "Main Content", + "width": "fill_container", + "height": "fill_container", + "fill": "#FFFFFF", + "layout": "vertical", + "padding": [ + 24, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "nmZgc", + "name": "Content Column", + "width": 768, + "layout": "vertical", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "90LmZ", + "name": "Search Bar", + "width": "fill_container", + "height": 48, + "fill": "#F8F8FB", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 2 + }, + "blur": 8 + }, + "gap": 10, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ENymI", + "name": "searchIcon", + "width": 20, + "height": 20, + "iconFontName": "search", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + }, + { + "type": "text", + "id": "lI127", + "name": "searchPlaceholder", + "fill": "#A1A1AA", + "content": "Search your dictionary...", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "xmEpm", + "name": "searchSpacer", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "E5hOe", + "name": "searchKbd", + "height": 24, + "fill": "#FFFFFF", + "cornerRadius": 6, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 0, + 6 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Tqmtm", + "name": "searchKbdText", + "fill": "#A1A1AA", + "content": "⌘K", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "e9IIp", + "name": "Header Row", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "jhj10", + "name": "headerLeft", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "GEKGx", + "name": "headerIcon", + "width": 36, + "height": 36, + "fill": "#4F46E512", + "cornerRadius": 10, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "h5Pa4", + "name": "headerBookIcon", + "width": 18, + "height": 18, + "iconFontName": "book-open", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + } + ] + }, + { + "type": "frame", + "id": "jgisk", + "name": "headerTitleBlock", + "gap": 8, + "children": [ + { + "type": "text", + "id": "IVF7s", + "name": "headerTitle", + "fill": "#1B1B2F", + "content": "Your Dictionary", + "fontFamily": "Inter", + "fontSize": 16, + "fontWeight": "600", + "letterSpacing": -0.2 + }, + { + "type": "text", + "id": "1Ll14", + "name": "headerCount", + "fill": "#A1A1AA", + "content": "142 words", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "TCy02", + "name": "headerRight", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "kriPb", + "name": "filterBtn", + "height": 34, + "fill": "#4F46E510", + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E5" + }, + "gap": 6, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "RA15W", + "name": "filterBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "sliders-horizontal", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "UkL4a", + "name": "filterBtnText", + "fill": "#4F46E5", + "content": "Filters", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "lTxgR", + "name": "filterBadge", + "fill": "#4F46E5", + "cornerRadius": 8, + "padding": [ + 0, + 5 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ZfkCY", + "fill": "#FFFFFF", + "content": "2", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "oun2z", + "name": "addBtn", + "height": 34, + "cornerRadius": 8, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 6, + "padding": [ + 0, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "tReTU", + "name": "addBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#1B1B2F" + }, + { + "type": "text", + "id": "e7GiU", + "name": "addBtnText", + "fill": "#1B1B2F", + "content": "Add word", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "Pxooo", + "name": "reviewBtn", + "height": 34, + "fill": "#4F46E5", + "cornerRadius": 8, + "gap": 8, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zaxgP", + "name": "reviewBtnIcon", + "width": 15, + "height": 15, + "iconFontName": "graduation-cap", + "iconFontFamily": "lucide", + "fill": "#FFFFFF" + }, + { + "type": "text", + "id": "nRRrP", + "name": "reviewBtnText", + "fill": "#FFFFFF", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "rqTI8", + "name": "reviewBadge", + "height": 18, + "fill": "#FFFFFF30", + "cornerRadius": 9, + "padding": [ + 0, + 6 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "N3BOQ", + "name": "reviewBadgeText", + "fill": "#FFFFFF", + "content": "12", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Zi2bS", + "name": "Filter Panel", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "layout": "vertical", + "gap": 14, + "padding": 16, + "children": [ + { + "type": "frame", + "id": "FmGWv", + "name": "Filter Row 1", + "width": "fill_container", + "height": 130, + "layout": "none", + "children": [ + { + "type": "frame", + "id": "DxmEP", + "x": 0, + "y": 0, + "name": "Tag Filter", + "width": 340, + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "IZoTy", + "fill": "#6B6F80", + "content": "Tags", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "rDH5t", + "name": "tagPills", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "tEfdX", + "name": "pill1", + "fill": "#4F46E515", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E540" + }, + "gap": 4, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "gNN2g", + "fill": "#4F46E5", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "xtnn4", + "width": 12, + "height": 12, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#4F46E580" + } + ] + }, + { + "type": "frame", + "id": "GuBtY", + "name": "pill2", + "fill": "#4F46E515", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E540" + }, + "gap": 4, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8IRfb", + "fill": "#4F46E5", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "BL3OO", + "width": 12, + "height": 12, + "iconFontName": "x", + "iconFontFamily": "lucide", + "fill": "#4F46E580" + } + ] + }, + { + "type": "frame", + "id": "ERfEt", + "name": "addTag", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "7IySK", + "width": 12, + "height": 12, + "iconFontName": "plus", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "gUXAn", + "fill": "#9CA3AF", + "content": "Add tag", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "XfCxV", + "x": 356, + "y": 0, + "name": "Sort Filter", + "width": 340, + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "i4mJw", + "fill": "#6B6F80", + "content": "Sort by", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "DlUAm", + "name": "sortPills", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "90wAT", + "name": "sortActive", + "fill": "#1B1B2F", + "cornerRadius": 16, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "42FmF", + "fill": "#FFFFFF", + "content": "Relevance", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "rcTAH", + "name": "sortOpt1", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "G5Iqm", + "fill": "#6B6F80", + "content": "Recently added", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "zU2hu", + "name": "sortOpt2", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "CTPwY", + "fill": "#6B6F80", + "content": "Recently updated", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "8bFwK", + "name": "sortDiff", + "rotation": -3.975693351829396e-16, + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WYjJd", + "fill": "#6B6F80", + "content": "Most difficult", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "pvLQt", + "width": 11, + "height": 11, + "iconFontName": "lock", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "260tG", + "x": 190, + "y": 52, + "name": "Tag Popover", + "width": 200, + "fill": "#FFFFFF", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "effect": [ + { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F15", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 16 + }, + { + "type": "shadow", + "shadowType": "outer", + "color": "#1B1B2F08", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 4 + } + ], + "layout": "vertical", + "gap": 2, + "padding": 8, + "children": [ + { + "type": "frame", + "id": "6lxdW", + "name": "searchRow", + "width": "fill_container", + "gap": 6, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "EXFpD", + "width": 14, + "height": 14, + "iconFontName": "search", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + }, + { + "type": "text", + "id": "0wzgv", + "fill": "#9CA3AF", + "content": "Search tags...", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "rectangle", + "id": "aFtjQ", + "name": "divider", + "fill": "#E2E3EA", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "l1pM5", + "name": "opt1", + "width": "fill_container", + "cornerRadius": 6, + "gap": 8, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "auVGm", + "width": 14, + "height": 14, + "iconFontName": "check", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "P8hHh", + "fill": "#1B1B2F", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "z9ifr", + "name": "opt2", + "width": "fill_container", + "cornerRadius": 6, + "gap": 8, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "RMzep", + "width": 14, + "height": 14, + "iconFontName": "check", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "ui9Cy", + "fill": "#1B1B2F", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "2wwlc", + "name": "opt3", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 6, + "gap": 8, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Ke1Cg", + "width": 14, + "height": 14 + }, + { + "type": "text", + "id": "elWex", + "fill": "#6B6F80", + "content": "food", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "vP407", + "name": "opt4", + "width": "fill_container", + "cornerRadius": 6, + "gap": 8, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "znOeN", + "width": 14, + "height": 14 + }, + { + "type": "text", + "id": "de7Wy", + "fill": "#6B6F80", + "content": "greeting", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "pVbto", + "name": "opt5", + "width": "fill_container", + "cornerRadius": 6, + "gap": 8, + "padding": [ + 6, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "nzecf", + "width": 14, + "height": 14 + }, + { + "type": "text", + "id": "yc0Tx", + "fill": "#6B6F80", + "content": "verb", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "CW0M5", + "name": "footerRow", + "width": "fill_container", + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "vZvjf", + "fill": "#9CA3AF", + "content": "Clear all filters", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "x62DD", + "name": "Filter Row 2", + "width": "fill_container", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "OCIZA", + "name": "Difficulty Filter", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "sUuKX", + "fill": "#6B6F80", + "content": "Show only", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "nvaBB", + "name": "diffPills", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "hzvDY", + "name": "diffToggle", + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "gap": 4, + "padding": [ + 4, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oXZLg", + "fill": "#6B6F80", + "content": "Difficult words", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "icon_font", + "id": "soIb6", + "width": 11, + "height": 11, + "iconFontName": "lock", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ntN8k", + "name": "Word Cards", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "children": [ + { + "type": "frame", + "id": "PggBq", + "name": "Word Card — Noun", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "zDZFz", + "name": "card1Accent", + "fill": "#4F46E5", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "Zfvf2", + "name": "card1Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "IELoF", + "name": "card1Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "nkBNk", + "name": "card1Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ljata", + "name": "card1Arabic", + "fill": "#1B1B2F", + "content": "كِتَاب", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "2mbZ7", + "name": "card1Badge", + "height": 22, + "fill": "#4F46E50F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "SjXsP", + "name": "card1BadgeText", + "fill": "#4F46E5", + "content": "Noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "et63n", + "name": "card1Actions", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "oUOM7", + "name": "card1Copy", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "IYSeP", + "name": "card1CopyI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "dKvOx", + "name": "card1Edit", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ri2rl", + "name": "card1EditI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "wd7x7", + "name": "card1Expand", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "5OyI0", + "name": "card1ExpandI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "KZxvb", + "name": "card1Trans", + "fill": "#6B6F80", + "content": "book", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "5ao5X", + "name": "Word Card — Verb", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "J9LAe", + "name": "card2Accent", + "fill": "#16A34A", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "fOjus", + "name": "card2Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "GcZOx", + "name": "card2Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "CbnvS", + "name": "card2Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "92veW", + "name": "card2Arabic", + "fill": "#1B1B2F", + "content": "كَتَبَ", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "mXuyA", + "name": "card2Badge", + "height": 22, + "fill": "#16A34A0F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "WJfDf", + "name": "card2BadgeText", + "fill": "#16A34A", + "content": "Verb", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "15Cq8", + "name": "card2Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "8dp5n", + "name": "card2C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "SrCjD", + "name": "card2CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "3WRVB", + "name": "card2E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "fqnX0", + "name": "card2EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "sWb8L", + "name": "card2X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "bNs5I", + "name": "card2XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "VSJIN", + "name": "card2Trans", + "fill": "#6B6F80", + "content": "to write", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "6ByoB", + "name": "Word Card — Adjective (Expanded)", + "clip": true, + "width": "fill_container", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 180, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FAFAFA", + "position": 0 + }, + { + "color": "#F8F8FB60", + "position": 1 + } + ] + }, + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "QeDIf", + "name": "card3Accent", + "fill": "#D97706", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "VhoXn", + "name": "card3Body", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "6rAnO", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "DWur2", + "name": "card3Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "dI0hi", + "name": "card3Arabic", + "fill": "#1B1B2F", + "content": "جَمِيل", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "GqQuL", + "name": "card3Badge", + "height": 22, + "fill": "#D976060F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "2a8Ou", + "name": "card3BadgeText", + "fill": "#D97706", + "content": "Adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "D3flq", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "3o7I1", + "name": "card3C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "kedEU", + "name": "card3CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "fE2Ry", + "name": "card3E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "mr6EU", + "name": "card3EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "oiKYI", + "name": "card3X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "vz9Kr", + "name": "card3XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "mqX9h", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "WxswQ", + "name": "divider", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "n9vAA", + "name": "details", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "xPleO", + "name": "typeRootRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "WlJlZ", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ptVya", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "9oo4X", + "name": "defBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "Yimys", + "name": "defLabel", + "fill": "#A1A1AAB3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "mwWcF", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "TaQH5", + "name": "morphBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "ZHGhX", + "name": "morphLabel", + "fill": "#A1A1AAB3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "ZBmHs", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "SczEx", + "name": "mc1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "6ldzG", + "name": "mc1l", + "fill": "#A1A1AA", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "gdbAi", + "name": "mc1v", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Xp7ZV", + "name": "mc2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "d1zWd", + "name": "mc2l", + "fill": "#A1A1AA", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "c1tic", + "name": "mc2v", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "1TfhQ", + "name": "mc3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "ykL6G", + "name": "mc3l", + "fill": "#A1A1AA", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ak2m0", + "name": "mc3v", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "9XRWv", + "name": "exBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "EMxBu", + "name": "exLabel", + "fill": "#A1A1AAB3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "PwRwH", + "name": "exBox", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA40" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "9NjWy", + "name": "exAr", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "8QOQz", + "name": "exEn", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "e5Dov", + "name": "tagRow", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "Bnx8c", + "name": "tp1", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "JE7iL", + "name": "tp1t", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "rAEvk", + "name": "tp2", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "h2Tqw", + "name": "tp2t", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "7nDxs", + "name": "tp3", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3WUET", + "name": "tp3t", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "jH8ma", + "name": "Word Card — Noun 2", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "J2OmW", + "name": "card4Acc", + "fill": "#4F46E5", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "vAUfD", + "name": "card4Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "oYL8k", + "name": "card4Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "JsRba", + "name": "card4Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "jGExg", + "name": "card4Ar", + "fill": "#1B1B2F", + "content": "مَدْرَسَة", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "VxIZv", + "name": "card4Bdg", + "height": 22, + "fill": "#4F46E50F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "t0Sa5", + "name": "card4BdgT", + "fill": "#4F46E5", + "content": "Noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "yGOsg", + "name": "card4Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "GwRyF", + "name": "card4C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "y7APB", + "name": "card4CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "OQJ2x", + "name": "card4E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "s2V9t", + "name": "card4EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "7JV4D", + "name": "card4X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "m5MJS", + "name": "card4XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "KjDsF", + "name": "card4Trans", + "fill": "#6B6F80", + "content": "school", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "4ZfeT", + "name": "Word Card — Verb 2", + "clip": true, + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "Pq2Mh", + "name": "card5Acc", + "fill": "#16A34A", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "kfF3p", + "name": "card5Body", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "AtB70", + "name": "card5Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "krgGg", + "name": "card5Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Aex3D", + "name": "card5Ar", + "fill": "#1B1B2F", + "content": "ذَهَبَ", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "iKLLa", + "name": "card5Bdg", + "height": 22, + "fill": "#16A34A0F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "OKAwd", + "name": "card5BdgT", + "fill": "#16A34A", + "content": "Verb", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "SvZ5Y", + "name": "card5Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "Rev6L", + "name": "card5C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "OJxfB", + "name": "card5CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "89p0G", + "name": "card5E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6CCVm", + "name": "card5EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "dABGX", + "name": "card5X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "xjRA3", + "name": "card5XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-down", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "osW4U", + "name": "card5Trans", + "fill": "#6B6F80", + "content": "to go", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "2cjjT", + "x": -1273, + "y": 6235, + "name": "Word Card — With Review History", + "clip": true, + "width": 768, + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "Cve7B", + "name": "card3Accent", + "fill": "#D97706", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "47VmI", + "name": "card3Body", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "DbL3X", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "2F8z0", + "name": "card3Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "4Xlql", + "name": "card3Arabic", + "fill": "#1B1B2F", + "content": "جَمِيل", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "bvXZD", + "name": "card3Badge", + "height": 22, + "fill": "#D976060F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "DAvhX", + "name": "card3BadgeText", + "fill": "#D97706", + "content": "Adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "Y9EUn", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "vYwGA", + "name": "card3C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "h9QgN", + "name": "card3CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "w6HEq", + "name": "card3E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ORAD7", + "name": "card3EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "NJIL2", + "name": "card3X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "p6VBf", + "name": "card3XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "igIXc", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "7HTAN", + "name": "divider", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "nlaMj", + "name": "details", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "VnfVq", + "name": "typeRootRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Xz5Ip", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "vTFxj", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "GZnSL", + "name": "defBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "fhfFv", + "name": "defLabel", + "fill": "#A1A1AAB3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "oOxlW", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "hM047", + "name": "morphBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "c0yfl", + "name": "morphLabel", + "fill": "#A1A1AAB3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "tMxI2", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "Qkkyt", + "name": "mc1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "tt3Pd", + "name": "mc1l", + "fill": "#A1A1AA", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "lXSPp", + "name": "mc1v", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "orAF8", + "name": "mc2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "Smd3x", + "name": "mc2l", + "fill": "#A1A1AA", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "MGXlP", + "name": "mc2v", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "GhaL9", + "name": "mc3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "QFlyv", + "name": "mc3l", + "fill": "#A1A1AA", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ZMdph", + "name": "mc3v", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "x3xld", + "name": "exBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "lbYO6", + "name": "exLabel", + "fill": "#A1A1AAB3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "4PBPq", + "name": "exBox", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA40" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "OJtiP", + "name": "exAr", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "2o75k", + "name": "exEn", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "wbeJ4", + "name": "tagRow", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "RLDdf", + "name": "tp1", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rMyTc", + "name": "tp1t", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "4wptq", + "name": "tp2", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "1iKuw", + "name": "tp2t", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ZQUX3", + "name": "tp3", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "F0vWw", + "name": "tp3t", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "iDlk8", + "name": "divider2", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "mYfIw", + "name": "Review History", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "children": [ + { + "type": "text", + "id": "Rgv1b", + "name": "histLabel", + "fill": "#9CA3AF", + "content": "REVIEW HISTORY", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "Ngf29", + "name": "AR to EN", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "U37td", + "name": "arHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "4939J", + "fill": "#1B1B2F", + "content": "Arabic → English", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "CHrWb", + "name": "arMeta", + "fill": "#9CA3AF", + "content": "12 reviews · 1 lapse · 2h ago", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "0wCwk", + "name": "arDots", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "BKNL4", + "name": "arOldest", + "fill": "#9CA3AF", + "content": "Oldest", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "ellipse", + "id": "BIcXc", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "5jxSo", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "TXFNn", + "fill": "#F97316", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "BUwdN", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "5AhtG", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "oBhlK", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "22BJ8", + "fill": "#DC2626", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "lEgat", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "AVzY6", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "iSAE4", + "fill": "#15803D", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "ITCOz", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "SqBcm", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "TuBCb", + "fill": "#9CA3AF", + "content": "Latest", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "acTgh", + "name": "EN to AR", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "07tcQ", + "name": "enHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "2EHKN", + "fill": "#1B1B2F", + "content": "English → Arabic", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "NoAKg", + "fill": "#9CA3AF", + "content": "8 reviews · 3 lapses · 2h ago", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ZpjPa", + "name": "enDots", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "SeeO5", + "name": "enOldest", + "fill": "#9CA3AF", + "content": "Oldest", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + }, + { + "type": "ellipse", + "id": "7U4pW", + "fill": "#DC2626", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "ctYbs", + "fill": "#F97316", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "Bitko", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "AJhFx", + "fill": "#DC2626", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "g9V0u", + "fill": "#F97316", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "H2HnB", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "GcruP", + "fill": "#22C55E", + "width": 10, + "height": 10 + }, + { + "type": "ellipse", + "id": "aHQAK", + "fill": "#DC2626", + "width": 10, + "height": 10 + }, + { + "type": "text", + "id": "gmoNY", + "fill": "#9CA3AF", + "content": "Latest", + "fontFamily": "Inter", + "fontSize": 9, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "vQlsJ", + "name": "legend", + "width": "fill_container", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "tTfEK", + "name": "l1", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "MpG8y", + "fill": "#DC2626", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "QOkE9", + "fill": "#9CA3AF", + "content": "Again", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "udg8F", + "name": "l2", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "U617k", + "fill": "#F97316", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "LBget", + "fill": "#9CA3AF", + "content": "Hard", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "2WQHq", + "name": "l3", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "N1QQR", + "fill": "#22C55E", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "NnrWt", + "fill": "#9CA3AF", + "content": "Good", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "hqZyB", + "name": "l4", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "hJLJU", + "fill": "#15803D", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "tthzC", + "fill": "#9CA3AF", + "content": "Easy", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "500" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "DmUKE", + "x": -405, + "y": 6235, + "name": "Word Card — Review History (Free)", + "clip": true, + "width": 768, + "fill": "#FFFFFF", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA" + }, + "children": [ + { + "type": "rectangle", + "id": "T1Kwx", + "name": "card3Accent", + "fill": "#D97706", + "width": 4, + "height": "fill_container" + }, + { + "type": "frame", + "id": "54xYD", + "name": "card3Body", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "padding": [ + 14, + 18, + 14, + 14 + ], + "children": [ + { + "type": "frame", + "id": "8Jrj2", + "name": "card3Top", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "3s351", + "name": "card3Left", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "3l4tW", + "name": "card3Arabic", + "fill": "#1B1B2F", + "content": "جَمِيل", + "lineHeight": 1.1, + "fontFamily": "Noto Naskh Arabic", + "fontSize": 36, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "PQZ82", + "name": "card3Badge", + "height": 22, + "fill": "#D976060F", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "VaDh7", + "name": "card3BadgeText", + "fill": "#D97706", + "content": "Adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "rzy2x", + "name": "card3Acts", + "gap": 2, + "children": [ + { + "type": "frame", + "id": "mZ6mN", + "name": "card3C", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "jd8Md", + "name": "card3CI", + "width": 15, + "height": 15, + "iconFontName": "copy", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "bsQIo", + "name": "card3E", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Gi9iZ", + "name": "card3EI", + "width": 15, + "height": 15, + "iconFontName": "pencil", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + } + ] + }, + { + "type": "frame", + "id": "y4UrN", + "name": "card3X", + "width": 30, + "height": 30, + "cornerRadius": 6, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "c9WdR", + "name": "card3XI", + "width": 15, + "height": 15, + "iconFontName": "chevron-up", + "iconFontFamily": "lucide", + "fill": "#6B6F80" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "GPegQ", + "name": "card3Trans", + "fill": "#6B6F80", + "content": "beautiful, handsome", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "rectangle", + "id": "Vk1Z5", + "name": "divider", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "SSETp", + "name": "details", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "uq2ZT", + "name": "typeRootRow", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "uxcex", + "name": "rootBadge", + "height": 24, + "fill": "#F4F4F8", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "QU7VZ", + "name": "rootText", + "fill": "#6B6F80", + "content": "ج م ل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "6Oo3N", + "name": "defBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "Cax05", + "name": "defLabel", + "fill": "#A1A1AAB3", + "content": "DEFINITION", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "text", + "id": "swCQW", + "name": "defText", + "fill": "#1B1B2FCC", + "content": "حسن المنظر، وسيم", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "QTzqc", + "name": "morphBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "OzOM6", + "name": "morphLabel", + "fill": "#A1A1AAB3", + "content": "MORPHOLOGY", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "o667h", + "name": "morphGrid", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "ZXTZk", + "name": "mc1", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "eqfQS", + "name": "mc1l", + "fill": "#A1A1AA", + "content": "Feminine", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "JsaWV", + "name": "mc1v", + "fill": "#1B1B2FCC", + "content": "جَمِيلَة", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "4vxTv", + "name": "mc2", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "qC7je", + "name": "mc2l", + "fill": "#A1A1AA", + "content": "Plural", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "RiWKP", + "name": "mc2v", + "fill": "#1B1B2FCC", + "content": "جِمَال", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "QQDO6", + "name": "mc3", + "width": "fill_container", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "lIYSu", + "name": "mc3l", + "fill": "#A1A1AA", + "content": "Elative", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "PSSfp", + "name": "mc3v", + "fill": "#1B1B2FCC", + "content": "أَجْمَل", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "hJu6y", + "name": "exBlock", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "1fvxZ", + "name": "exLabel", + "fill": "#A1A1AAB3", + "content": "EXAMPLES", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 1.5 + }, + { + "type": "frame", + "id": "nXbEV", + "name": "exBox", + "width": "fill_container", + "fill": "#F8F8FB", + "cornerRadius": 10, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA40" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 10, + 14 + ], + "children": [ + { + "type": "text", + "id": "TZowL", + "name": "exAr", + "fill": "#1B1B2FE6", + "content": "هذا مكانٌ جَمِيلٌ جداً", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 16, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "zIftT", + "name": "exEn", + "fill": "#6B6F80", + "content": "This is a very beautiful place", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "bVRN7", + "name": "tagRow", + "width": "fill_container", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "DB8fJ", + "name": "tp1", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "pVhQ8", + "name": "tp1t", + "fill": "#6B6F80", + "content": "adjective", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Vo1bm", + "name": "tp2", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "mc8lM", + "name": "tp2t", + "fill": "#6B6F80", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "IBzyP", + "name": "tp3", + "height": 22, + "fill": "#F4F4F8", + "cornerRadius": 11, + "padding": [ + 0, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "MigHx", + "name": "tp3t", + "fill": "#6B6F80", + "content": "daily", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "To9o0", + "name": "divider2", + "fill": "#E2E3EA50", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "mXlr0", + "name": "Review History", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "frame", + "id": "VGI0s", + "name": "headerRow", + "width": "fill_container", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "4N64c", + "name": "histLabel", + "fill": "#9CA3AF", + "content": "REVIEW HISTORY", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 0.5 + }, + { + "type": "icon_font", + "id": "lRUCg", + "width": 11, + "height": 11, + "iconFontName": "lock", + "iconFontFamily": "lucide", + "fill": "#9CA3AF" + } + ] + }, + { + "type": "text", + "id": "gplFB", + "fill": "#9CA3AF", + "content": "Upgrade to Pro to see your review history for this word.", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "nSojk", + "x": -1273, + "y": 6844, + "name": "Flashcard — Undo Toast", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#00000066", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "r3LYQ", + "x": 0, + "y": 160, + "name": "Drawer Panel", + "clip": true, + "width": 1440, + "height": 740, + "fill": "#FFFFFF", + "cornerRadius": [ + 16, + 16, + 0, + 0 + ], + "layout": "vertical", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "lGkZz", + "name": "Drawer Header", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 32, + 16, + 32 + ], + "children": [ + { + "type": "frame", + "id": "xVl1o", + "name": "dragHandle", + "width": "fill_container", + "justifyContent": "center", + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "1tU6C", + "name": "handleBar", + "fill": "#D4D4D8", + "width": 48, + "height": 4 + } + ] + }, + { + "type": "frame", + "id": "UKV2I", + "name": "Queue Selector", + "width": "fill_container", + "gap": 8, + "justifyContent": "center", + "children": [ + { + "type": "frame", + "id": "MsvWb", + "name": "queueReview", + "height": 40, + "fill": "#FFFFFF", + "cornerRadius": 10, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000001A", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 3 + }, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "vQzFg", + "name": "reviewIcon", + "width": 18, + "height": 18, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "HIpVe", + "name": "reviewLabel", + "fill": "#1B1B2F", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "s8qs0", + "name": "reviewBadge2", + "height": 20, + "fill": "#4F46E5", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "8O50t", + "name": "reviewCount", + "fill": "#FFFFFF", + "content": "5", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "d0qxU", + "name": "queueBacklog", + "height": 40, + "cornerRadius": 10, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "UESly", + "name": "backlogIcon", + "width": 18, + "height": 18, + "iconFontName": "archive", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + }, + { + "type": "text", + "id": "EvflE", + "name": "backlogLabel", + "fill": "#A1A1AA", + "content": "Backlog", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "6bhqx", + "name": "backlogBadge", + "height": 20, + "fill": "#EA580C", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TBief", + "name": "backlogCount", + "fill": "#FFFFFF", + "content": "2", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "QAuzQ", + "name": "cardsLeft", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "5 cards left", + "textAlign": "center", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "PFDcO", + "name": "Card Area", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 16, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "96vtI", + "name": "tagRow", + "gap": 6, + "padding": [ + 0, + 0, + 8, + 0 + ], + "children": [ + { + "type": "frame", + "id": "iwxCm", + "name": "tag1", + "height": 24, + "fill": "#4F46E518", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "lfvF8", + "name": "tag1Text", + "fill": "#4F46E5", + "content": "noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "ABv2w", + "name": "tag2", + "height": 24, + "fill": "#F0FDF4", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "MBksd", + "name": "tag2Text", + "fill": "#16A34A", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "31Hwz", + "name": "Flashcard", + "width": 640, + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 135, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF", + "position": 0 + }, + { + "color": "#FAFAFA", + "position": 1 + } + ] + }, + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA80" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000000D", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 16 + }, + "layout": "vertical", + "gap": 24, + "padding": 32, + "children": [ + { + "type": "frame", + "id": "oldhH", + "name": "Question", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "OwvyD", + "name": "arabicWord", + "fill": "#1B1B2FE6", + "content": "كِتَاب", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 32, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "1nfOL", + "name": "morphInfo", + "fill": "#F4F4F880", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "G650r", + "name": "morphText", + "fill": "#6B6F80", + "content": "كُتُب :plural", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "Uiyid", + "name": "exampleText", + "fill": "#6B6F80", + "content": "هذا كِتَابٌ جَمِيلٌ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "rectangle", + "id": "8Nudj", + "name": "cardDivider", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF00", + "position": 0 + }, + { + "color": "#E2E3EA", + "position": 0.5 + }, + { + "color": "#FFFFFF00", + "position": 1 + } + ] + }, + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "m9b9g", + "name": "Answer", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "ubQHE", + "name": "answerIndicator", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "62A11", + "name": "checkIcon", + "width": 14, + "height": 14, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "tmCmU", + "name": "answerLabel", + "fill": "#16A34A", + "content": "ANSWER", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 2 + } + ] + }, + { + "type": "text", + "id": "8U56E", + "name": "definition", + "fill": "#6B6F80", + "content": "كتاب، مجلّد", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 18, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "t7E4G", + "name": "translation", + "fill": "#1B1B2FE6", + "content": "book", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "HJ47F", + "name": "Undo Toast", + "width": 400, + "fill": "#1B1B2F", + "cornerRadius": 12, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#00000030", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 20 + }, + "gap": 12, + "padding": [ + 12, + 16 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "roISC", + "name": "toastLeft", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "6cpwN", + "width": 16, + "height": 16, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#22C55E" + }, + { + "type": "text", + "id": "RYtzz", + "fill": "#FFFFFF", + "content": "Rated Good — كِتَاب", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "hLBo2", + "name": "undoBtn", + "fill": "#FFFFFF18", + "cornerRadius": 6, + "gap": 6, + "padding": [ + 6, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "ZLOuL", + "width": 14, + "height": 14, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#FFFFFF" + }, + { + "type": "text", + "id": "s9lmv", + "fill": "#FFFFFF", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "YHnlI", + "name": "Grading Footer", + "width": "fill_container", + "fill": "#FAFAFA08", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 8, + "padding": [ + 16, + 32, + 24, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "H5vlq", + "name": "Grade Buttons", + "width": 640, + "gap": 10, + "children": [ + { + "type": "frame", + "id": "SNe1q", + "name": "btnAgain", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#6B6F8033" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "f0wRQ", + "name": "againIcon", + "width": 20, + "height": 20, + "iconFontName": "rotate-ccw", + "iconFontFamily": "lucide", + "fill": "#71717A" + }, + { + "type": "text", + "id": "44J7O", + "name": "againLabel", + "fill": "#3f3f46", + "content": "Again", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "14nrq", + "name": "againTime", + "fill": "#A1A1AA", + "content": "1m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Fk9Sv", + "name": "btnHard", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E07A2C33" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "aiAhF", + "name": "hardIcon", + "width": 20, + "height": 20, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#E07A2C" + }, + { + "type": "text", + "id": "3rE9I", + "name": "hardLabel", + "fill": "#3f3f46", + "content": "Hard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Rf3VV", + "name": "hardTime", + "fill": "#A1A1AA", + "content": "6m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "IBARC", + "name": "btnGood", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E54D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "iJeLs", + "name": "goodIcon", + "width": 20, + "height": 20, + "iconFontName": "thumbs-up", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "XuO6z", + "name": "goodLabel", + "fill": "#3f3f46", + "content": "Good", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "pS5p8", + "name": "goodTime", + "fill": "#A1A1AA", + "content": "1.2d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "7pD6F", + "name": "btnEasy", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#16A34A4D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "UWie3", + "name": "easyIcon", + "width": 20, + "height": 20, + "iconFontName": "zap", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "4bKtf", + "name": "easyLabel", + "fill": "#3f3f46", + "content": "Easy", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "wIkBf", + "name": "easyTime", + "fill": "#A1A1AA", + "content": "3.5d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "tqGAW", + "x": 267, + "y": 6844, + "name": "Flashcard — Session History (Pro)", + "clip": true, + "width": 1440, + "height": 900, + "fill": "#00000066", + "layout": "none", + "children": [ + { + "type": "frame", + "id": "EJ7Rt", + "x": 0, + "y": 160, + "name": "Drawer Panel", + "clip": true, + "width": 1440, + "height": 740, + "fill": "#FFFFFF", + "cornerRadius": [ + 16, + 16, + 0, + 0 + ], + "layout": "vertical", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "7mkDl", + "name": "Drawer Header", + "width": "fill_container", + "stroke": { + "align": "inside", + "thickness": { + "bottom": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 12, + "padding": [ + 20, + 32, + 16, + 32 + ], + "children": [ + { + "type": "frame", + "id": "T8apd", + "name": "dragHandle", + "width": "fill_container", + "justifyContent": "center", + "children": [ + { + "type": "rectangle", + "cornerRadius": 2, + "id": "pKlIt", + "name": "handleBar", + "fill": "#D4D4D8", + "width": 48, + "height": 4 + } + ] + }, + { + "type": "frame", + "id": "TUliE", + "name": "Queue Selector", + "width": "fill_container", + "gap": 8, + "justifyContent": "center", + "children": [ + { + "type": "frame", + "id": "z29cq", + "name": "queueReview", + "height": 40, + "fill": "#FFFFFF", + "cornerRadius": 10, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000001A", + "offset": { + "x": 0, + "y": 1 + }, + "blur": 3 + }, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "AFM6s", + "name": "reviewIcon", + "width": 18, + "height": 18, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "C5DzD", + "name": "reviewLabel", + "fill": "#1B1B2F", + "content": "Review", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "mcIxi", + "name": "reviewBadge2", + "height": 20, + "fill": "#4F46E5", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6RoJQ", + "name": "reviewCount", + "fill": "#FFFFFF", + "content": "5", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "NV6Fc", + "name": "queueBacklog", + "height": 40, + "cornerRadius": 10, + "gap": 8, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "t63pb", + "name": "backlogIcon", + "width": 18, + "height": 18, + "iconFontName": "archive", + "iconFontFamily": "lucide", + "fill": "#A1A1AA" + }, + { + "type": "text", + "id": "YtDxV", + "name": "backlogLabel", + "fill": "#A1A1AA", + "content": "Backlog", + "fontFamily": "Inter", + "fontSize": 14, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "qqEQj", + "name": "backlogBadge", + "height": 20, + "fill": "#EA580C", + "cornerRadius": 10, + "padding": [ + 0, + 7 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "kNqOf", + "name": "backlogCount", + "fill": "#FFFFFF", + "content": "2", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "6oJ4l", + "name": "cardsLeft", + "fill": "#6B6F80", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "5 cards left", + "textAlign": "center", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "m3qbo", + "name": "Card Area", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "padding": [ + 16, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "UnIeF", + "name": "tagRow", + "gap": 6, + "padding": [ + 0, + 0, + 8, + 0 + ], + "children": [ + { + "type": "frame", + "id": "HCPS7", + "name": "tag1", + "height": 24, + "fill": "#4F46E518", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "6Gi2U", + "name": "tag1Text", + "fill": "#4F46E5", + "content": "noun", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + }, + { + "type": "frame", + "id": "3tI6f", + "name": "tag2", + "height": 24, + "fill": "#F0FDF4", + "cornerRadius": 6, + "padding": [ + 0, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "UTcAm", + "name": "tag2Text", + "fill": "#16A34A", + "content": "beginner", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "BUrbg", + "name": "Flashcard", + "width": 640, + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 135, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF", + "position": 0 + }, + { + "color": "#FAFAFA", + "position": 1 + } + ] + }, + "cornerRadius": 16, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E2E3EA80" + }, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#0000000D", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 16 + }, + "layout": "vertical", + "gap": 24, + "padding": 32, + "children": [ + { + "type": "frame", + "id": "FmhuA", + "name": "Question", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "bzdsu", + "name": "arabicWord", + "fill": "#1B1B2FE6", + "content": "كِتَاب", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 32, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "i1KYL", + "name": "morphInfo", + "fill": "#F4F4F880", + "cornerRadius": 6, + "padding": [ + 4, + 10 + ], + "children": [ + { + "type": "text", + "id": "hPiHf", + "name": "morphText", + "fill": "#6B6F80", + "content": "كُتُب :plural", + "fontFamily": "Inter", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "hXFfu", + "name": "exampleText", + "fill": "#6B6F80", + "content": "هذا كِتَابٌ جَمِيلٌ", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 15, + "fontWeight": "normal" + } + ] + }, + { + "type": "rectangle", + "id": "pJNSZ", + "name": "cardDivider", + "fill": { + "type": "gradient", + "gradientType": "linear", + "enabled": true, + "rotation": 90, + "size": { + "height": 1 + }, + "colors": [ + { + "color": "#FFFFFF00", + "position": 0 + }, + { + "color": "#E2E3EA", + "position": 0.5 + }, + { + "color": "#FFFFFF00", + "position": 1 + } + ] + }, + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "ipxZK", + "name": "Answer", + "width": "fill_container", + "layout": "vertical", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "1ctdd", + "name": "answerIndicator", + "gap": 6, + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "1lRck", + "name": "checkIcon", + "width": 14, + "height": 14, + "iconFontName": "circle-check", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "S9m3r", + "name": "answerLabel", + "fill": "#16A34A", + "content": "ANSWER", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 2 + } + ] + }, + { + "type": "text", + "id": "rwyrx", + "name": "definition", + "fill": "#6B6F80", + "content": "كتاب، مجلّد", + "fontFamily": "Noto Naskh Arabic", + "fontSize": 18, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "811Wb", + "name": "translation", + "fill": "#1B1B2FE6", + "content": "book", + "fontFamily": "Inter", + "fontSize": 24, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "J9kNF", + "name": "Session History", + "width": 480, + "fill": "#1B1B2F", + "cornerRadius": 12, + "effect": { + "type": "shadow", + "shadowType": "outer", + "color": "#00000030", + "offset": { + "x": 0, + "y": 4 + }, + "blur": 20 + }, + "layout": "vertical", + "gap": 8, + "padding": [ + 12, + 16 + ], + "children": [ + { + "type": "frame", + "id": "4DOJ2", + "name": "histHeader", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "G85tK", + "fill": "#FFFFFF90", + "content": "Session History", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "500" + }, + { + "type": "frame", + "id": "U8CTf", + "name": "histBadge", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "YPwP8", + "fill": "#FFFFFF50", + "content": "PRO", + "fontFamily": "Inter", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "B5F4Z", + "name": "row1", + "width": "fill_container", + "fill": "#FFFFFF10", + "cornerRadius": 8, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "OLWOq", + "name": "r1Left", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "9oZyk", + "fill": "#22C55E", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "r06VL", + "fill": "#FFFFFF", + "content": "كِتَاب", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "Dj2GS", + "fill": "#FFFFFF60", + "content": "Good", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "h0ETM", + "name": "r1Undo", + "fill": "#FFFFFF15", + "cornerRadius": 4, + "gap": 4, + "padding": [ + 4, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "YGDOJ", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#FFFFFF80" + }, + { + "type": "text", + "id": "sGzkE", + "fill": "#FFFFFF80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "2Dd9g", + "name": "row2", + "width": "fill_container", + "fill": "#FFFFFF10", + "cornerRadius": 8, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "vJs0h", + "name": "r2Left", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "NRbtg", + "fill": "#DC2626", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "KQXKF", + "fill": "#FFFFFF", + "content": "ذَهَبَ", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "eFmzw", + "fill": "#FFFFFF60", + "content": "Again", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "BMBAX", + "name": "r2Undo", + "fill": "#FFFFFF15", + "cornerRadius": 4, + "gap": 4, + "padding": [ + 4, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "zcFIh", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#FFFFFF80" + }, + { + "type": "text", + "id": "eR8Na", + "fill": "#FFFFFF80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + }, + { + "type": "frame", + "id": "lzKUB", + "name": "row3", + "width": "fill_container", + "fill": "#FFFFFF10", + "cornerRadius": 8, + "padding": [ + 8, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "PwmXq", + "name": "r3Left", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "8j39w", + "fill": "#F97316", + "width": 8, + "height": 8 + }, + { + "type": "text", + "id": "r3hqE", + "fill": "#FFFFFF", + "content": "جَمِيل", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "cCzWx", + "fill": "#FFFFFF60", + "content": "Hard", + "fontFamily": "Inter", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Jy0ov", + "name": "r3Undo", + "fill": "#FFFFFF15", + "cornerRadius": 4, + "gap": 4, + "padding": [ + 4, + 8 + ], + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "2cCfK", + "width": 12, + "height": 12, + "iconFontName": "undo-2", + "iconFontFamily": "lucide", + "fill": "#FFFFFF80" + }, + { + "type": "text", + "id": "aucEE", + "fill": "#FFFFFF80", + "content": "Undo", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "500" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "pq3mw", + "name": "Grading Footer", + "width": "fill_container", + "fill": "#FAFAFA08", + "stroke": { + "align": "inside", + "thickness": { + "top": 1 + }, + "fill": "#E2E3EA30" + }, + "layout": "vertical", + "gap": 8, + "padding": [ + 16, + 32, + 24, + 32 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "kzzif", + "name": "Grade Buttons", + "width": 640, + "gap": 10, + "children": [ + { + "type": "frame", + "id": "BmJrs", + "name": "btnAgain", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#6B6F8033" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "NM49x", + "name": "againIcon", + "width": 20, + "height": 20, + "iconFontName": "rotate-ccw", + "iconFontFamily": "lucide", + "fill": "#71717A" + }, + { + "type": "text", + "id": "iSGq5", + "name": "againLabel", + "fill": "#3f3f46", + "content": "Again", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "QroNy", + "name": "againTime", + "fill": "#A1A1AA", + "content": "1m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "rEFMW", + "name": "btnHard", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#E07A2C33" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "cSmiV", + "name": "hardIcon", + "width": 20, + "height": 20, + "iconFontName": "brain", + "iconFontFamily": "lucide", + "fill": "#E07A2C" + }, + { + "type": "text", + "id": "P5ACC", + "name": "hardLabel", + "fill": "#3f3f46", + "content": "Hard", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "3f8Dl", + "name": "hardTime", + "fill": "#A1A1AA", + "content": "6m", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "yE5lz", + "name": "btnGood", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#4F46E54D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "Vx8wh", + "name": "goodIcon", + "width": 20, + "height": 20, + "iconFontName": "thumbs-up", + "iconFontFamily": "lucide", + "fill": "#4F46E5" + }, + { + "type": "text", + "id": "UxcXa", + "name": "goodLabel", + "fill": "#3f3f46", + "content": "Good", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "utTuo", + "name": "goodTime", + "fill": "#A1A1AA", + "content": "1.2d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "zbIWk", + "name": "btnEasy", + "width": "fill_container", + "cornerRadius": 12, + "stroke": { + "align": "inside", + "thickness": 1, + "fill": "#16A34A4D" + }, + "layout": "vertical", + "gap": 4, + "padding": [ + 12, + 8 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon_font", + "id": "AzmIp", + "name": "easyIcon", + "width": 20, + "height": 20, + "iconFontName": "zap", + "iconFontFamily": "lucide", + "fill": "#16A34A" + }, + { + "type": "text", + "id": "Mxf9m", + "name": "easyLabel", + "fill": "#3f3f46", + "content": "Easy", + "fontFamily": "Inter", + "fontSize": 13, + "fontWeight": "500" + }, + { + "type": "text", + "id": "ns7rX", + "name": "easyTime", + "fill": "#A1A1AA", + "content": "3.5d", + "fontFamily": "Inter", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/design/logo.png b/design/logo.png new file mode 100644 index 00000000..53456645 Binary files /dev/null and b/design/logo.png differ diff --git a/packages/db-operations/package.json b/packages/db-operations/package.json index d3dd5be1..d5769a0e 100644 --- a/packages/db-operations/package.json +++ b/packages/db-operations/package.json @@ -14,7 +14,7 @@ "@bahar/drizzle-user-db-schemas": "workspace:*", "@bahar/result": "workspace:*", "@bahar/typescript-config": "workspace:*", - "zod": "4.0.17" + "zod": "4.3.6" }, "dependencies": { "nanoid": "^5.0.7" diff --git a/packages/design-system/globals.css b/packages/design-system/globals.css index 670ea2f6..93216424 100644 --- a/packages/design-system/globals.css +++ b/packages/design-system/globals.css @@ -57,6 +57,7 @@ --animate-caret-blink: caret-blink 1.2s ease-out infinite; --animate-accordion-down: accordion-down 0.2s ease-out; --animate-accordion-up: accordion-up 0.2s ease-out; + --animate-shimmer: shimmer 1.5s infinite; } /* Animation keyframes */ @@ -89,3 +90,12 @@ height: 0; } } + +@keyframes shimmer { + 0% { + transform: translateX(-100%); + } + 100% { + transform: translateX(200%); + } +} diff --git a/packages/drizzle-user-db-schemas/package.json b/packages/drizzle-user-db-schemas/package.json index a914cf41..61a5365c 100644 --- a/packages/drizzle-user-db-schemas/package.json +++ b/packages/drizzle-user-db-schemas/package.json @@ -9,7 +9,7 @@ "drizzle:gen": "drizzle-kit generate" }, "peerDependencies": { - "zod": "4.0.17", + "zod": ">=4.0.0", "drizzle-orm": "^0.45.1", "drizzle-zod": "^0.8.3" }, diff --git a/packages/drizzle-user-db-schemas/src/dictionary.ts b/packages/drizzle-user-db-schemas/src/dictionary.ts index 3e68b310..cb6eb572 100644 --- a/packages/drizzle-user-db-schemas/src/dictionary.ts +++ b/packages/drizzle-user-db-schemas/src/dictionary.ts @@ -1,4 +1,5 @@ import { integer, sqliteTable, text } from "drizzle-orm/sqlite-core"; +import { createInsertSchema, createSelectSchema } from "drizzle-zod"; import { type Antonym, type Example, @@ -46,3 +47,9 @@ export type RawDictionaryEntry = Omit< examples: string | null; morphology: string | null; }; + +export const InsertDictionaryEntrySchema = + createInsertSchema(dictionaryEntries); + +export const SelectDictionaryEntrySchema = + createSelectSchema(dictionaryEntries); diff --git a/packages/drizzle-user-db-schemas/src/index.ts b/packages/drizzle-user-db-schemas/src/index.ts index 380e0cf4..1010a8c1 100644 --- a/packages/drizzle-user-db-schemas/src/index.ts +++ b/packages/drizzle-user-db-schemas/src/index.ts @@ -8,8 +8,10 @@ export { decks, type InsertDeck, type RawDeck, type SelectDeck } from "./decks"; export { dictionaryEntries, type InsertDictionaryEntry, + InsertDictionaryEntrySchema, type RawDictionaryEntry, type SelectDictionaryEntry, + SelectDictionaryEntrySchema, } from "./dictionary"; export { diff --git a/packages/drizzle-user-db-schemas/src/types.ts b/packages/drizzle-user-db-schemas/src/types.ts index dcefef4c..20bc3f22 100644 --- a/packages/drizzle-user-db-schemas/src/types.ts +++ b/packages/drizzle-user-db-schemas/src/types.ts @@ -22,57 +22,110 @@ export const AntonymSchema = z.object({ export type Antonym = z.infer; export const ExampleSchema = z.object({ - sentence: z.string(), - context: z.string().optional(), - translation: z.string().optional(), + sentence: z + .string() + .describe("Example sentence in Arabic with full tashkeel."), + context: z + .string() + .optional() + .describe( + "Leave empty unless the register is non-obvious (e.g. colloquial, Quranic, archaic). Omit for standard modern Arabic. This is NOT a translation." + ), + translation: z + .string() + .optional() + .describe("English translation of the sentence."), }); export type Example = z.infer; -export const MorphologySchema = z - .object({ - ism: z - .object({ - singular: z.string().optional(), - dual: z.string().optional(), - plurals: z - .array( - z.object({ - word: z.string(), - details: z.string().optional(), - }) - ) - .optional(), - gender: z.enum(["masculine", "feminine"]).optional(), - inflection: z.enum(["indeclinable", "diptote", "triptote"]).optional(), +export const IsmMorphologySchema = z.object({ + singular: z.string().optional().describe("Singular form with full tashkeel."), + dual: z + .string() + .optional() + .describe("Dual form (المثنى) with full tashkeel."), + plurals: z + .array( + z.object({ + word: z.string(), + details: z + .string() + .optional() + .describe( + "Leave empty for standard plurals. Only fill for genuinely non-obvious info (e.g. archaic, dialect-specific). Do NOT mention other plural forms here." + ), + }) + ) + .optional() + .describe( + "Only well-known, attested plural forms. Do NOT invent or guess broken plurals. Omit entirely if unsure." + ), + gender: z.enum(["masculine", "feminine"]).optional(), + inflection: z.enum(["indeclinable", "diptote", "triptote"]).optional(), +}); + +export const VerbMorphologySchema = z.object({ + huroof: z + .array( + z.object({ + harf: z.string(), + meaning: z.string().optional(), }) - .optional(), - verb: z - .object({ - huroof: z - .array( - z.object({ - harf: z.string(), - meaning: z.string().optional(), - }) - ) - .optional(), - past_tense: z.string().optional(), - present_tense: z.string().optional(), - active_participle: z.string().optional(), - passive_participle: z.string().optional(), - imperative: z.string().optional(), - masadir: z - .array( - z.object({ - word: z.string(), - details: z.string().optional(), - }) - ) - .optional(), - form: z.string().optional(), - form_arabic: z.string().optional(), + ) + .optional() + .describe( + "Prepositions (huroof al-jarr) that pair with this verb to alter its meaning, e.g. رَغِبَ في (to desire) vs رَغِبَ عن (to shun). Omit if no notable particle pairings." + ), + past_tense: z + .string() + .optional() + .describe( + "Third-person masculine singular past (الماضي) with full tashkeel." + ), + present_tense: z + .string() + .optional() + .describe( + "Third-person masculine singular present (المضارع) with full tashkeel." + ), + active_participle: z + .string() + .optional() + .describe("Active participle (اسم الفاعل) with full tashkeel."), + passive_participle: z + .string() + .optional() + .describe("Passive participle (اسم المفعول) with full tashkeel."), + imperative: z + .string() + .optional() + .describe("Imperative (الأمر) with full tashkeel."), + masadir: z + .array( + z.object({ + word: z.string(), + details: z + .string() + .optional() + .describe( + "Leave empty for standard masadir. Only fill for genuinely non-obvious info (e.g. archaic, dialect-specific). Do NOT compare to other masadir forms." + ), }) - .optional(), + ) + .optional(), + form: z.string().optional().describe("Verb form in Roman numerals (I–XII)."), + form_arabic: z + .string() + .optional() + .describe( + "The Arabic wazn (model pattern) for this verb form, e.g. فَعَلَ for Form I, أَفْعَلَ for Form IV, تَفَاعَلَ for Form VI." + ), +}); + +export const MorphologySchema = z + .object({ + ism: IsmMorphologySchema.optional(), + verb: VerbMorphologySchema.optional(), }) .optional(); diff --git a/packages/i18n/locales/ar.po b/packages/i18n/locales/ar.po index b7c12942..678c4d57 100644 --- a/packages/i18n/locales/ar.po +++ b/packages/i18n/locales/ar.po @@ -52,7 +52,7 @@ msgstr "{0} إجمالي" msgid "{hydrationSkippedCount, plural, one {# entry was skipped due to data issues. Your data is preserved, but you won't be able to search for the entry that wasn't loaded.} other {# entries were skipped due to data issues. Your data is preserved, but you won't be able to search for any entries that weren't loaded.}}" msgstr "{hydrationSkippedCount, plural, one {تم تخطي إدخال واحد بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخال الذي لم يتم تحميله.} two {تم تخطي إدخالين بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.} few {تم تخطي # إدخالات بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.} many {تم تخطي # إدخالًا بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.} other {تم تخطي # إدخال بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.}}" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:123 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:130 msgid "{skippedCount} entries were skipped due to data corruption." msgstr "تم تخطي {skippedCount} إدخالات بسبب تلف البيانات." @@ -108,7 +108,7 @@ msgstr "أضف ترحيل SQL جديد." msgid "Add a new word" msgstr "أضف كلمة جديدة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:188 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:297 msgid "Add a new word to your dictionary" msgstr "أضف كلمة جديدة إلى معجمك" @@ -121,7 +121,7 @@ msgstr "أضف علامة واضغط Enter" msgid "Add all" msgstr "إضافة الكل" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:355 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:440 msgid "Add antonym" msgstr "أضف ضدا" @@ -130,7 +130,7 @@ msgstr "أضف ضدا" msgid "Add Antonym" msgstr "أضف ضد" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:281 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:324 msgid "Add example" msgstr "أضف مثلا" @@ -184,13 +184,13 @@ msgid "Add tags to your word." msgstr "أضف علامات إلى كلمتك." #: ../../apps/web/src/routes/_authorized-layout/_search-layout/index.lazy.tsx:113 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:48 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:56 #: ../../apps/mobile/src/app/(search)/(home)/index.tsx:156 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:71 msgid "Add word" msgstr "أضف كلمة" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:63 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:105 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:437 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:547 msgid "Additional Details" @@ -204,11 +204,11 @@ msgstr "مرة أخرى" msgid "All done for today!" msgstr "انتهيت لليوم!" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:95 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:137 msgid "An Arabic definition of the word." msgstr "تعريف عربية للكلمة." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:216 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:258 msgid "An English translation of the sentence." msgstr "ترجمة إنجليزية للجملة." @@ -220,7 +220,7 @@ msgstr "ترجمة إنجليزية للكلمة." msgid "An unexpected error occurred. You can try reloading the page to fix it." msgstr "حدث خطأ غير متوقع. يمكنك محاولة إعادة تحميل الصفحة لإصلاحه." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:99 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:101 msgid "Annual — $7/mo" msgstr "سنوي — $٧/شهر" @@ -231,7 +231,7 @@ msgid "Answer" msgstr "الجواب" #. placeholder {0}: index + 1 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:300 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:385 msgid "Antonym {0}" msgstr "الضد {0}" @@ -240,7 +240,7 @@ msgstr "الضد {0}" msgid "Antonym word" msgstr "كلمة مضادة" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:288 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:373 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:555 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:665 msgid "Antonyms" @@ -255,7 +255,7 @@ msgstr "أية تفاصيل إضافية عن هذه الصيغة مثلا تك msgid "Any plural forms of the word." msgstr "أية صيغ جمع للكلمة." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:419 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:426 msgid "Any words that have the same ID will be overwritten." msgstr "سيستبدل كل كلمات التي لديها نفس المعرف." @@ -263,7 +263,7 @@ msgstr "سيستبدل كل كلمات التي لديها نفس المعرف." msgid "App language" msgstr "لغة التطبيق" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:199 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:206 #: ../../apps/mobile/src/app/(search)/settings.tsx:236 msgid "Appearance" msgstr "المظهر" @@ -296,7 +296,7 @@ msgstr "الكلمة بالعربية" msgid "Are you sure you want to delete \"{0}\"?" msgstr "هل أنت متأكد من حذف \"{0}\"؟" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:140 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:147 msgid "Are you sure you want to delete this word? It will be removed from your dictionary and its flashcards will be deleted.<0/><1/><2>This action cannot be undone." msgstr "هل أنت متأكد أنك تريد حذف هذه الكلمة؟ سيتم إزالتها من معجمك وسيتم حذف البطاقات بها.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء." @@ -304,16 +304,28 @@ msgstr "هل أنت متأكد أنك تريد حذف هذه الكلمة؟ سي msgid "Are you sure you want to delete this word? This action cannot be undone." msgstr "هل أنت متأكد من حذف هذه الكلمة؟ لا يمكن التراجع عن هذا الإجراء." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:496 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:503 msgid "Are you sure you want to delete your dictionary? All your words will be deleted permanently. This action cannot be undone. Please make sure to export your dictionary before deleting it." msgstr "هل أنت متأكد من رغبتك في حذف معجمك؟ سيحذف جميع كلماتك بشكل دائم. لا يمكن التراجع عن هذا الإجراء. صدر معجمك قبل حذفه من فضلك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:88 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:95 msgid "Are you sure you want to reset this flashcard's progress? The word entry in the dictionary will not be modified, but its corresponding flashcards will be treated as new ones.<0/><1/><2>This action cannot be undone." msgstr "هل أنت متأكد أنك تريد إعادة تعيين تقدم بطاقة هذه؟ لن يتم تعديل إدخال الكلمة في المعجم، ولكن سيتم التعامل مع بطاقات بها على أنها بطاقات جديدة.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:216 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:74 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:485 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:538 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:325 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:382 +msgid "Autofill" +msgstr "تعبئة تلقائية" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:367 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:209 +msgid "Autofill failed" +msgstr "فشلت التعبئة التلقائية" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:223 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:82 msgid "Back" msgstr "رجوع" @@ -347,24 +359,24 @@ msgstr "تفاصيل أساسية" msgid "BETA" msgstr "بيتا" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:111 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:113 msgid "Billed $84/year" msgstr "يُدفع $٨٤/سنة" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:86 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:88 msgid "Billed monthly" msgstr "يُدفع شهريًا" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:39 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:41 msgid "Billing" msgstr "الفوترة" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:159 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:164 msgid "By signing in, you agree to our <0>Privacy Policy" msgstr "بتسجيل الدخول، فإنك توافق على <0>سياسة الخصوصية" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:514 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:594 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:521 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:601 #: ../../apps/mobile/src/app/(search)/settings.tsx:128 #: ../../apps/mobile/src/app/(search)/decks.tsx:283 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:995 @@ -415,7 +427,7 @@ msgstr "امسح المتراكمات" #~ msgid "Clearing..." #~ msgstr "جارٍ المسح..." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:217 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:224 msgid "Color theme" msgstr "سمة الألوان" @@ -423,7 +435,7 @@ msgstr "سمة الألوان" msgid "Contact support" msgstr "اتصل بالدعم" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:231 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:273 msgid "Context" msgstr "السياق" @@ -432,7 +444,7 @@ msgstr "السياق" msgid "Continue" msgstr "استمر" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:137 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:142 #: ../../apps/mobile/src/app/(auth)/login.tsx:105 msgid "Continue with Email" msgstr "استمرّ مع بريد الإلكتروني" @@ -478,7 +490,7 @@ msgstr "إنشاء مجموعة" msgid "Create your first deck" msgstr "أنشئ مجموعتك الأولى" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:51 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:53 msgid "Current plan" msgstr "الخطة الحالية" @@ -486,7 +498,7 @@ msgstr "الخطة الحالية" msgid "Customize how flashcards appear." msgstr "خصص كيفيّة ظهور البطاقات." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:203 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:210 msgid "Customize how the application looks for you." msgstr "قم بتخصيص كيف يظهر التطبيق بالنسبة لك." @@ -499,7 +511,7 @@ msgstr "منطقة الخطر" msgid "Dark" msgstr "غامق" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:530 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:537 msgid "Debugging" msgstr "استكشاف الأخطاء" @@ -549,17 +561,17 @@ msgid "Default" msgstr "افتراضي" #: ../../apps/web/src/components/search/InfiniteScroll.tsx:138 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:81 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:123 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:117 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:444 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:554 msgid "Definition" msgstr "التعريف" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:485 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:508 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:129 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:161 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:492 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:515 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:136 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:168 #: ../../apps/web/src/routes/_authorized-layout/_app-layout/decks/route.lazy.tsx:207 #: ../../apps/mobile/src/app/(search)/decks.tsx:285 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:393 @@ -582,7 +594,7 @@ msgstr "حذف المعجم" msgid "Delete Everything" msgstr "حذف كل شيء" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:136 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:143 msgid "Delete this word?" msgstr "حذف هذه الكلمة؟" @@ -590,7 +602,7 @@ msgstr "حذف هذه الكلمة؟" msgid "Delete word" msgstr "حذف الكلمة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:492 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:499 msgid "Delete your dictionary?" msgstr "هل تريد أن تحذف معجمك؟" @@ -607,7 +619,7 @@ msgstr "تفاصيل" msgid "Details:" msgstr "التفاصيل:" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:234 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:241 msgid "Dictionary" msgstr "معجم" @@ -619,8 +631,8 @@ msgstr "تم حذف المعجم" msgid "Diptote" msgstr "ممنوع من الصرف" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:194 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:221 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:348 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:420 msgid "Discard" msgstr "ألغ" @@ -653,7 +665,7 @@ msgstr "سهل" msgid "Edit" msgstr "عدَل" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:188 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:195 msgid "Edit {word}" msgstr "حرّر {word}" @@ -674,7 +686,7 @@ msgstr "عدّل مجموعتك" msgid "Edit your deck by choosing filters. The deck will be composed of the cards that match the filters." msgstr "عدّل مجموعتك من خلال اختيار الفلاتر. ستتكون المجموعة من البطاقات التي تطابق الفلاتر." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:111 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:116 #: ../../apps/mobile/src/app/(auth)/login.tsx:68 msgid "Email" msgstr "البريد الإلكتروني" @@ -716,46 +728,46 @@ msgid "Entry {arrayIndex}" msgstr "العنصر {arrayIndex}" #. placeholder {0}: index + 1 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:166 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:208 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:499 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:609 msgid "Example {0}" msgstr "المثال {0}" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:158 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:200 msgid "Example usages of the word in different contexts." msgstr "استخدامات مثالية للكلمة في سياقات مختلفة." #: ../../apps/web/src/components/search/InfiniteScroll.tsx:292 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:154 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:196 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:262 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:490 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:600 msgid "Examples" msgstr "أمثلة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:429 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:465 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:436 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:472 msgid "Export" msgstr "صدر" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:122 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:129 msgid "Export completed with issues" msgstr "اكتمل التصدير مع وجود مشاكل" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:132 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:139 msgid "Export failed!" msgstr "فشل التصدير!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:473 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:480 msgid "Export with flashcards" msgstr "تصدير مع البطاقات" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:436 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:443 msgid "Export your dictionary" msgstr "تصدير معجمك" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:440 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:447 msgid "Exporting dictionary with flaschards will save your flashcard progress along with all the content in your dictionary. Use this option if you want to make a backup of your data.<0/><1/>Exporting your dictionary without flashcards will not save any flashcard progress. Use this option if you want to share your dictionary.<2/><3/><4>Warning: Importing your file without flashcards will reset all of your flashcards." msgstr "تصدير المعجم مع البطاقات سيحفظ تقدم البطاقات بالإضافة إلى كل المحتوى في معجمك. استخدم هذا الخيار إذا كنت ترغب في إنشاء نسخة احتياطية من بياناتك.<0/><1/>تصدير المعجم بدون البطاقات لن يحفظ أي تقدم للبطاقات. استخدم هذا الخيار إذا كنت ترغب في مشاركة معجمك.<2/><3/><4>تحذير: استيراد ملفك بدون البطاقات سيؤدي إلى إعادة تعيين جميع البطاقات." @@ -771,7 +783,7 @@ msgstr "عبارة" msgid "Failed to add word" msgstr "فشل إضافة الكلمة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:165 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:177 msgid "Failed to add word!" msgstr "فشل إضافة الكلمة!" @@ -799,11 +811,15 @@ msgstr "فشل حذف المعجم" msgid "Failed to delete word" msgstr "فشل حذف الكلمة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:172 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:179 msgid "Failed to delete!" msgstr "فشل الحذف!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:581 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:90 +msgid "Failed to generate example" +msgstr "فشل توليد المثال" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:588 msgid "Failed to reset local data" msgstr "فشل في إعادة تعيين البيانات المحلية" @@ -827,7 +843,7 @@ msgstr "فشل في تحديث إعدادات البطاقة." msgid "Failed to update settings" msgstr "فشل تحديث الإعدادات" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:330 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:341 msgid "Failed to update the word!" msgstr "فشل في تحديث الكلمة!" @@ -852,6 +868,13 @@ msgstr "مؤنّث" msgid "Fi'l" msgstr "فعل" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:498 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:551 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:338 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:395 +msgid "Fill in the word, translation, and type first." +msgstr "أدخل الكلمة والترجمة والنوع أولاً." + #: ../../apps/web/src/components/features/dictionary/filters/TagsFilter.tsx:51 msgid "Filter by tags..." msgstr "رشّح حسب العلامات..." @@ -888,7 +911,7 @@ msgstr "مثلا الكلمة" msgid "Form" msgstr "الوزن" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:25 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:30 msgid "Free" msgstr "مجاني" @@ -900,7 +923,19 @@ msgstr "مجاني" msgid "Gender" msgstr "جنس" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:155 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:355 +msgid "Generate example" +msgstr "توليد مثال" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:483 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:536 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:323 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:380 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:353 +msgid "Generating..." +msgstr "جارٍ التوليد..." + +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:160 #: ../../apps/mobile/src/components/GithubLoginButton.tsx:24 msgid "GitHub" msgstr "GitHub" @@ -910,7 +945,7 @@ msgstr "GitHub" msgid "Go back" msgstr "ارجع" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:36 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:44 msgid "Go to dictionary" msgstr "الذهاب إلى القاموس" @@ -961,8 +996,8 @@ msgstr "إخفاء المرشحات" msgid "Hint" msgstr "تلميح" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:179 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:39 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:186 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:47 #: ../../apps/web/src/components/MobileHeader.tsx:154 #: ../../apps/web/src/components/DesktopNavigation.tsx:53 #: ../../apps/web/src/components/DesktopNavigation.tsx:59 @@ -992,7 +1027,7 @@ msgstr "المعرف:" msgid "if needed." msgstr "إذا لزم الأمر." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:534 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:541 msgid "If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server." msgstr "إذا كنت تواجه مشاكل في المزامنة أو عدم تحميل البيانات بشكل صحيح، يمكنك إعادة تعيين بياناتك المحلية وإعادة المزامنة من الخادم." @@ -1004,12 +1039,12 @@ msgstr "إذا كنت تواجه مشاكل في المزامنة أو عدم ت msgid "Imperative" msgstr "الأمر" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:393 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:400 msgid "Import" msgstr "استورد" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:365 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:371 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:372 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:378 msgid "Import failed!" msgstr "فشل الاستيراد!" @@ -1017,7 +1052,7 @@ msgstr "فشل الاستيراد!" msgid "Include English to Arabic flashcards" msgstr "تضمين بطاقات الإنجليزية إلى العربية" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:253 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:260 msgid "Incorrect file type" msgstr "نوع الملف غير صحيح" @@ -1031,7 +1066,7 @@ msgstr "مبنى" msgid "Inflection" msgstr "إعراب" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:67 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:109 msgid "Information such as the word's root, meaning, and examples." msgstr "معلومات مثلا الجذر أو المعنى أو الأمثلة." @@ -1063,7 +1098,7 @@ msgstr "قيمة غير صالحة. يجب أن تكون إحدى القيم ا msgid "Ism" msgstr "اسم" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:224 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:231 #: ../../apps/mobile/src/app/(search)/settings.tsx:258 msgid "Language" msgstr "اللغة" @@ -1090,7 +1125,7 @@ msgstr "جارٍ التحميل..." #~ msgid "Local data reset successfully!" #~ msgstr "تمت إعادة تعيين البيانات المحلية بنجاح!" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:93 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:98 #: ../../apps/mobile/src/app/(auth)/login.tsx:63 msgid "Log in to your existing account or sign up for a new one" msgstr "قم بتسجيل الدخول إلى حسابك الحالي أو قم بالتسجيل للحصول على حساب جديد" @@ -1101,7 +1136,7 @@ msgstr "قم بتسجيل الدخول إلى حسابك الحالي أو قم msgid "Logout" msgstr "تسجيل الخروج" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:61 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:63 msgid "Manage Subscription" msgstr "إدارة الاشتراك" @@ -1109,11 +1144,11 @@ msgstr "إدارة الاشتراك" msgid "Manage your decks and study them." msgstr "إدارة مجموعاتك ودراستها." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:238 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:245 msgid "Manage your dictionary." msgstr "إدارة معجمك." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:43 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:45 msgid "Manage your subscription." msgstr "إدارة اشتراكك." @@ -1154,7 +1189,7 @@ msgstr "القائمة" msgid "Migration successfully registered." msgstr "تم تسجيل الترحيل بنجاح." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:82 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:84 msgid "Monthly — $10/mo" msgstr "شهري — $١٠/شهر" @@ -1227,7 +1262,7 @@ msgstr "اسم" msgid "Noun Morphology" msgstr "صرف الاسم" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:149 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:154 #: ../../apps/mobile/src/app/(auth)/login.tsx:111 msgid "Or continue with" msgstr "أو استمر مع" @@ -1272,11 +1307,11 @@ msgstr "يرجى الاتصال <0>بالدعم مع التفاصيل الت msgid "Please enter a deck name" msgstr "الرجاء إدخال اسم المجموعة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:254 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:261 msgid "Please select a JSON file with your dictionary." msgstr "اختر ملف JSON لمعجمك من فضلك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:582 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:589 msgid "Please try again or reload the page." msgstr "حاول مرة أخرى أو أعد تحميل الصفحة." @@ -1287,6 +1322,12 @@ msgstr "حاول مرة أخرى أو أعد تحميل الصفحة." msgid "Please try again." msgstr "حاول مرّة أخرى." +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:364 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:206 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:87 +msgid "Please wait before trying again." +msgstr "يرجى الانتظار قبل المحاولة مرة أخرى." + #: ../../apps/web/src/components/search/InfiniteScroll.tsx:188 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:159 msgid "Plural" @@ -1337,10 +1378,16 @@ msgstr "المضارع" msgid "Present Tense" msgstr "المضارع" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:23 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:27 msgid "Pro" msgstr "برو" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:363 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:205 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:86 +msgid "Rate limit reached" +msgstr "تم الوصول إلى الحد الأقصى" + #: ../../apps/web/src/components/features/dictionary/filters/DictionaryFilters.tsx:36 msgid "Recently added" msgstr "المضافة حديثًا" @@ -1364,8 +1411,8 @@ msgstr "أعد التحميل" #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:251 #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:408 #: ../../apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx:183 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:263 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:337 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:305 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:422 msgid "Remove" msgstr "احذف" @@ -1377,28 +1424,28 @@ msgstr "حقل مطلوب" msgid "Reschedule all backlog cards by grading them as \"Hard\"." msgstr "أعد جدولة جميع البطاقات المتراكمة بتقييمها كـ \"صعب\"." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:588 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:595 msgid "Reset and re-sync" msgstr "إعادة التعيين والمزامنة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:77 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:111 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:84 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:118 msgid "Reset flashcard" msgstr "أعد البطاقة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:84 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:91 msgid "Reset flashcard progress?" msgstr "إعادة تعيين تقدم البطاقة؟" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:546 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:553 msgid "Reset local data" msgstr "إعادة تعيين البيانات المحلية" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:553 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:560 msgid "Reset local data and re-sync?" msgstr "إعادة تعيين البيانات المحلية والمزامنة؟" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:186 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:193 msgid "Resetting local data..." msgstr "جارٍ إعادة تعيين البيانات المحلية..." @@ -1429,7 +1476,7 @@ msgstr "راجع البطاقات بالتكرار المتباعد" msgid "Review your Arabic flashcards and grade your understanding with Again, Hard, Good, or Easy options to adjust scheduling." msgstr "راجع بطاقاتك العربية وقيم فهمك باستخدام خيارات مرة أخرى أو صعب أو جيد أو سهل لتعديل الجدولة." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:120 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:162 msgid "Root letters" msgstr "الجذر" @@ -1438,17 +1485,17 @@ msgstr "الجذر" msgid "Root Letters" msgstr "الحروف الأصلية" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:356 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:385 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:199 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:226 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:509 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:583 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:353 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:425 #: ../../apps/web/src/components/features/settings/FlashcardSettingsCardSection.tsx:232 #: ../../apps/web/src/components/features/settings/AdminSettingsCardSection.tsx:146 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:1005 msgid "Save" msgstr "احفظ" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:105 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:107 msgid "Save 30%" msgstr "وفّر ٣٠٪" @@ -1504,7 +1551,7 @@ msgstr "حدد أنواع الكلمات التي تريد تضمينها في msgid "Select type" msgstr "اختر الجنس" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:176 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:218 msgid "Sentence" msgstr "جملة" @@ -1513,7 +1560,7 @@ msgstr "جملة" msgid "Separate letters with spaces or commas" msgstr "افصل الحروف بمسافات أو فواصل" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:193 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:200 #: ../../apps/web/src/components/MobileHeader.tsx:178 #: ../../apps/web/src/components/DesktopNavigation.tsx:107 #: ../../apps/mobile/src/app/(search)/settings.tsx:175 @@ -1569,6 +1616,12 @@ msgstr "تعذر تحميل بعض إدخالات المعجم" msgid "Something went wrong" msgstr "حدث خطأ ما" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:368 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:210 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:91 +msgid "Something went wrong. Please try again." +msgstr "حدث خطأ ما. يرجى المحاولة مرة أخرى." + #: ../../apps/web/src/components/features/dictionary/filters/DictionaryFilters.tsx:161 msgid "Sort by" msgstr "ترتيب حسب" @@ -1585,27 +1638,27 @@ msgstr "لا يزال لا يعمل؟" msgid "Study" msgstr "أدرس" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:157 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:169 msgid "Successfully added word!" msgstr "تم إضافة الكلمة بنجاح!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:166 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:173 msgid "Successfully deleted!" msgstr "نجح الحذف!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:126 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:133 msgid "Successfully exported!" msgstr "تم التصدير بنجاح!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:342 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:349 msgid "Successfully imported!" msgstr "تم الاستيراد بنجاح!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:106 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:113 msgid "Successfully reset the flashcard." msgstr "تمت إعادة تعيين البطاقة بنجاح." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:322 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:333 msgid "Successfully updated the word!" msgstr "حدثت الكلمة بنجاح!" @@ -1629,7 +1682,7 @@ msgstr "نظام" msgid "Tags" msgstr "علامات" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:26 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:34 msgid "Thank you for subscribing to Bahar Pro. You now have access to all Pro features." msgstr "شكرًا لاشتراكك في بهار برو. يمكنك الآن الوصول إلى جميع ميزات برو." @@ -1652,7 +1705,7 @@ msgstr "هذا ليس JSON صالح." msgid "The app may be open in another tab. Try closing other tabs and refreshing this page." msgstr "قد يكون التطبيق مفتوحًا في علامة تبويب أخرى. حاول إغلاق علامات التبويب الأخرى وتحديث هذه الصفحة." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:245 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:287 msgid "The context of the sentence, ex. formal or colloquial." msgstr "سياق الجملة مثلا رسمي أو عامي." @@ -1681,24 +1734,24 @@ msgstr "معنى الفعل إذا استعمل مع الحرف." msgid "The morphological breakdown of the word." msgstr "التصريف." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:135 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:177 msgid "The root letters of the word. The input can be separated by commas, spaces or have no delimeter ex. فعل or ف, ع, ل or ف ع ل." msgstr "الحروف الجذرية للكلمة. يمكن فصل المدخلات بفواصل أو مسافات أو لا تحتوي على محدد مثلا فعل أو ف، ع، ل أو ف ع ل." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:158 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:170 msgid "The word has been added to your dictionary." msgstr "تمت إضافة الكلمة إلى معجمك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:323 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:334 msgid "The word has been updated." msgstr "حدثت الكلمة." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:210 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:217 #: ../../apps/mobile/src/app/(search)/settings.tsx:243 msgid "Theme" msgstr "المظهر" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:166 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:178 msgid "There was an error adding your word. Please try again." msgstr "حدث خطأ أثناء إضافة كلمتك. حاول مرة اخرى." @@ -1710,15 +1763,15 @@ msgstr "حدث خطأ أثناء مسح المتراكمات." msgid "There was an error creating the deck" msgstr "حدث خطأ أثناء إنشاء المجموعة" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:173 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:180 msgid "There was an error deleting your dictionary. Please try again later." msgstr "حدث خطأ أثناء حذف معجمك. حاول مرة أخرى لاحقا من فضلك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:133 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:140 msgid "There was an error exporting your dictionary. Please try again later." msgstr "حدث خطأ أثناء تصدير معجمك. حاول مرة أخرى لاحقا من فضلك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:372 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:379 msgid "There was an error importing your dictionary. Please try again later." msgstr "حدث خطأ أثناء استيراد لمعجمك. حاول مرة أخرى لاحقا." @@ -1742,7 +1795,7 @@ msgstr "حدث خطأ أثناء تحديث المجموعة" msgid "There was an error updating your flashcard settings." msgstr "حدث خطأ أثناء تحديث إعدادات بطاقاتك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:331 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:342 msgid "There was an error updating your word. Please try again." msgstr "حدث خطأ أثناء تحديث كلمتك. حاول مرة أخرى." @@ -1773,7 +1826,7 @@ msgstr "هناك مشكلة مؤقتة في تحميل حسابك. حاول إع msgid "This field is required." msgstr "هذه الخانة لازم." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:119 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:124 #: ../../apps/mobile/src/app/(auth)/login.tsx:94 msgid "This is case insensitive." msgstr "هذا حالة غير حساسة." @@ -1786,7 +1839,7 @@ msgstr "هذا هو اسم مجموعتك." msgid "This refers to how many case endings the word can take." msgstr "هذا هو إعراب الكلمة." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:557 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:564 msgid "This will delete the local copy of your data stored in this browser and download a fresh copy from the server. Your data on the server will not be affected. Use this if you're experiencing sync errors or seeing outdated data." msgstr "سيؤدي هذا إلى حذف النسخة المحلية من بياناتك المخزنة في هذا المتصفح وتنزيل نسخة جديدة من الخادم. لن تتأثر بياناتك على الخادم. استخدم هذا إذا كنت تواجه أخطاء في المزامنة أو ترى بيانات قديمة." @@ -1815,7 +1868,7 @@ msgid "Total" msgstr "الإجمالي" #: ../../apps/web/src/components/features/dictionary/add/BasicDetailsFormSection.tsx:64 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:202 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:244 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:381 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:491 msgid "Translation" @@ -1857,10 +1910,21 @@ msgstr "غير قادر على الاتصال بقاعدة البيانات ال msgid "Unknown error." msgstr "خطأ غير معروف." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:69 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:71 msgid "Upgrade to Pro" msgstr "الترقية إلى برو" +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:363 +msgid "Upgrade to Pro to generate examples." +msgstr "قم بالترقية إلى برو لتوليد الأمثلة." + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:493 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:546 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:333 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:390 +msgid "Upgrade to Pro to use AI autofill." +msgstr "قم بالترقية إلى برو لاستخدام التعبئة التلقائية." + #. placeholder {0}: String(err.minimum) #: ../../apps/web/src/lib/error.ts:128 msgid "Value must be {0} or greater" @@ -1913,7 +1977,7 @@ msgstr "لا يمكننا الوصول إلى خوادمنا الآن. تحقق msgid "We're having trouble with your account setup. Please try again." msgstr "نواجه مشكلة في إعداد حسابك. حاول مرة أخرى من فضلك." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:89 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:94 #: ../../apps/mobile/src/app/(auth)/login.tsx:59 msgid "Welcome to Bahar!" msgstr "مرحباً بكم في بحر!" @@ -1921,7 +1985,7 @@ msgstr "مرحباً بكم في بحر!" #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:192 #: ../../apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx:125 #: ../../apps/web/src/components/features/dictionary/add/BasicDetailsFormSection.tsx:40 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:310 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:395 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:357 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:467 msgid "Word" @@ -1947,7 +2011,7 @@ msgstr "تم تحديث الكلمة بنجاح" msgid "Words that have any of these tags will be included in the deck." msgstr "الكلمات التي تحتوي على أي من هذه العلامات ستُدرج في المجموعة." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:292 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:377 msgid "Words that have the opposite meaning." msgstr "الكلمات التي لها معنى عكسي." @@ -1968,7 +2032,7 @@ msgstr "ليس لديك أي مجموعات بعد." msgid "You have no words in your dictionary yet." msgstr "ليس لديك أي كلمات في قاموسك بعد." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:22 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:30 msgid "You're all set!" msgstr "أنت جاهز!" @@ -1993,15 +2057,15 @@ msgstr "لم يتم تحديث مجموعتك. يرجى المحاولة مرة msgid "Your Dictionary" msgstr "معجمك" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:167 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:174 msgid "Your dictionary has been deleted." msgstr "حذف معجمك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:127 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:134 msgid "Your dictionary has been downloaded." msgstr "تم تحميل معجمك." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:343 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:350 msgid "Your dictionary has been updated!" msgstr "تم تحديث معجمك!" @@ -2009,7 +2073,7 @@ msgstr "تم تحديث معجمك!" msgid "Your dictionary is empty" msgstr "معجمك فارغ" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:366 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:373 msgid "Your dictionary is not valid. Please fix the errors and upload it again." msgstr "معجمك غير صالح. صوب الأخطاء و استورد مرة أخرى من فضلك." diff --git a/packages/i18n/locales/ar.ts b/packages/i18n/locales/ar.ts index 1368f68c..cb2428cc 100644 --- a/packages/i18n/locales/ar.ts +++ b/packages/i18n/locales/ar.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"Wg0uLA\":[[\"0\",\"plural\",{\"one\":[\"علامة واحدة محددة\"],\"two\":[\"علامتان محددتان\"],\"few\":[\"#\",\" علامات محددة\"],\"many\":[\"#\",\" علامة محددة\"],\"other\":[\"#\",\" علامة محددة\"]}]],\"5rgLzy\":[[\"0\",\"plural\",{\"one\":[\"بطاقة متبقية\"],\"other\":[\"بطاقات متبقية\"]}]],\"/hTM9k\":[[\"0\"],\" / \",[\"1\"],\" دفعات\"],\"mHye52\":[[\"0\"],\" / \",[\"1\"],\" بطاقات\"],\"baIPh3\":[[\"0\"],\" بطاقات مستحقة\"],\"beWT44\":[\"تمت إعادة جدولة \",[\"0\"],\" بطاقات.\"],\"JJcBCm\":[[\"0\"],\" إجمالي\"],\"JtTuS0\":[[\"hydrationSkippedCount\",\"plural\",{\"one\":[\"تم تخطي إدخال واحد بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخال الذي لم يتم تحميله.\"],\"two\":[\"تم تخطي إدخالين بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"few\":[\"تم تخطي \",\"#\",\" إدخالات بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"many\":[\"تم تخطي \",\"#\",\" إدخالًا بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"other\":[\"تم تخطي \",\"#\",\" إدخال بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"]}]],\"UGMDWm\":[\"تم تخطي \",[\"skippedCount\"],\" إدخالات بسبب تلف البيانات.\"],\"gp8eDB\":[[\"totalHits\",\"plural\",{\"one\":[\"نتيجة\"],\"two\":[\"نتيجتان\"],\"few\":[\"نتائج\"],\"many\":[\"نتيجة\"],\"other\":[\"نتيجة\"]}]],\"QSRKsm\":[[\"totalResults\",\"plural\",{\"one\":[[\"totalResults\"],\" نتيجة\"],\"two\":[[\"totalResults\"],\" نتيجتان\"],\"few\":[[\"totalResults\"],\" نتائج\"],\"many\":[[\"totalResults\"],\" نتيجة\"],\"other\":[[\"totalResults\"],\" نتيجة\"]}]],\"gD09hk\":[[\"val\",\"plural\",{\"one\":[\"لا يمكن تجاوز حرف واحد\"],\"two\":[\"لا يمكن تجاوز حرفين\"],\"few\":[\"لا يمكن تجاوز \",\"#\",\" حروف\"],\"many\":[\"لا يمكن تجاوز \",\"#\",\" حرفا\"],\"other\":[\"لا يمكن تجاوز \",\"#\",\" حرف\"]}]],\"I1sa5o\":[[\"val\",\"plural\",{\"one\":[\"يجب أن يكون على الأقل واحد حرف\"],\"two\":[\"يجب أن يكون على الأقل حرفين\"],\"few\":[\"يجب أن يكون على الأقل \",\"#\",\" حروف\"],\"many\":[\"يجب أن يكون على الأقل \",\"#\",\" حرفا\"],\"other\":[\"يجب أن يكون على الأقل \",\"#\",\" حرف\"]}]],\"WWcbHw\":[\"غير فعل أو حرف.\"],\"ZQW2PY\":[\"حرف أو عطف.\"],\"0iy5O2\":[\"فعل.\"],\"7L01XJ\":[\"أعمال\"],\"DQqXHw\":[\"اسم فاعل\"],\"AwJc6G\":[\"اسم فاعل\"],\"rJwPkp\":[\"أضف ترحيل SQL جديد.\"],\"t89Ong\":[\"أضف كلمة جديدة\"],\"L18Pbl\":[\"أضف كلمة جديدة إلى معجمك\"],\"TYPFtT\":[\"أضف علامة واضغط Enter\"],\"iJMhp0\":[\"إضافة الكل\"],\"nPm6bB\":[\"أضف ضدا\"],\"jVmrwy\":[\"أضف ضد\"],\"1x4W9u\":[\"أضف مثلا\"],\"nI3A8B\":[\"أضف مثال\"],\"gLlFHX\":[\"أضف حرف\"],\"aLEtgY\":[\"أضف حرف\"],\"Tcbo6a\":[\"أضف مصدر\"],\"vKbErK\":[\"أضف صيغة جمع\"],\"SNF/r2\":[\"أضف جمع\"],\"cR1WUS\":[\"أضف شيئًا لتبدأ!\"],\"Oft+Pb\":[\"أضف بعض الكلمات للبدء!\"],\"Xls3A3\":[\"أضف علامة \",[\"inputValue\"]],\"VMjLu6\":[\"إضافة العلامة \",[\"value\"]],\"uF1GKn\":[\"أضف علامات إلى كلمتك.\"],\"bDXmnN\":[\"أضف كلمة\"],\"p59pEv\":[\"تفاصيل إضافية\"],\"b/7DUT\":[\"مرة أخرى\"],\"KK8UsT\":[\"انتهيت لليوم!\"],\"7Qi3W5\":[\"تعريف عربية للكلمة.\"],\"Y/gBMP\":[\"ترجمة إنجليزية للجملة.\"],\"jalxln\":[\"ترجمة إنجليزية للكلمة.\"],\"hyC+qY\":[\"حدث خطأ غير متوقع. يمكنك محاولة إعادة تحميل الصفحة لإصلاحه.\"],\"Fl8owW\":[\"سنوي — $٧/شهر\"],\"4xBHUg\":[\"الجواب\"],\"vQXp82\":[\"الضد \",[\"0\"]],\"o9dJs3\":[\"كلمة مضادة\"],\"Hvs4LI\":[\"أضداد\"],\"p1Kh9a\":[\"أية تفاصيل إضافية عن هذه الصيغة مثلا تكرار الاستخدام أو السياق.\"],\"9kni2/\":[\"أية صيغ جمع للكلمة.\"],\"2PPE7k\":[\"سيستبدل كل كلمات التي لديها نفس المعرف.\"],\"cnAqww\":[\"لغة التطبيق\"],\"aAIQg2\":[\"المظهر\"],\"8HV3WN\":[\"العربية\"],\"LNIQwr\":[\"التعريف بالعربية\"],\"uKmc5K\":[\"الجملة بالعربية\"],\"wxIhw3\":[\"صيغة الفعل العربي\"],\"071WZA\":[\"الكلمة بالعربية\"],\"pkD36F\":[\"هل أنت متأكد من حذف \\\"\",[\"0\"],\"\\\"؟\"],\"DOiV7q\":[\"هل أنت متأكد أنك تريد حذف هذه الكلمة؟ سيتم إزالتها من معجمك وسيتم حذف البطاقات بها.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء.\"],\"2cZh44\":[\"هل أنت متأكد من حذف هذه الكلمة؟ لا يمكن التراجع عن هذا الإجراء.\"],\"ikBPhc\":[\"هل أنت متأكد من رغبتك في حذف معجمك؟ سيحذف جميع كلماتك بشكل دائم. لا يمكن التراجع عن هذا الإجراء. صدر معجمك قبل حذفه من فضلك.\"],\"IJr17L\":[\"هل أنت متأكد أنك تريد إعادة تعيين تقدم بطاقة هذه؟ لن يتم تعديل إدخال الكلمة في المعجم، ولكن سيتم التعامل مع بطاقات بها على أنها بطاقات جديدة.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء.\"],\"iH8pgl\":[\"رجوع\"],\"0MgdN+\":[\"العودة إلى الأعلى\"],\"KNKCTb\":[\"المتراكمة\"],\"Fg+fNW\":[\"تم مسح المتراكمات!\"],\"vMebS2\":[\"بحر\"],\"EOUool\":[\"تفاصيل أساسية\"],\"cSCbv3\":[\"بيتا\"],\"t/5uBV\":[\"يُدفع $٨٤/سنة\"],\"aIkeAd\":[\"يُدفع شهريًا\"],\"R+w/Va\":[\"الفوترة\"],\"OKWk8n\":[\"بتسجيل الدخول، فإنك توافق على <0>سياسة الخصوصية\"],\"dEgA5A\":[\"ألغ\"],\"oySfhX\":[\"بطاقات مستحقة اليوم أو مؤخرًا\"],\"uV52e1\":[\"بطاقات متأخرة أكثر من ٧ أيام\"],\"zAwyRS\":[\"بطاقات للمراجعة اليوم\"],\"K7tIrx\":[\"الباب\"],\"qWRWG1\":[\"السبب:\"],\"+yPBXI\":[\"اختر ملف\"],\"xCJdfg\":[\"امسح\"],\"ot7qsv\":[\"مسح كل المرشّحات\"],\"saoOio\":[\"امسح المتراكمات\"],\"Oo39Ga\":[\"جارٍ المسح...\"],\"rFmBG3\":[\"سمة الألوان\"],\"mpby9d\":[\"اتصل بالدعم\"],\"M73whl\":[\"السياق\"],\"xGVfLh\":[\"استمر\"],\"RvVi9c\":[\"استمرّ مع بريد الإلكتروني\"],\"NMo6Pj\":[\"تحكم في مكان ظهور الأضداد أثناء المراجعة\"],\"PiH3UR\":[\"تم النسخ!\"],\"he3ygx\":[\"انسخ\"],\"hYgDIe\":[\"إنشاء\"],\"oJc/nD\":[\"أنشئ مجموعة لتنظيم مراجعات بطاقاتك\"],\"wxDqxy\":[\"إنشاء مجموعة جديدة\"],\"oQH8Kl\":[\"أنشئ مجموعة جديدة باختيار الفلاتر. ستكون المجموعة مكونة من البطاقات التي تطابق هذه الفلاتر.\"],\"l7kxcE\":[\"أنشئ مجموعة\"],\"g/Uxjl\":[\"إنشاء مجموعة\"],\"1m75Ii\":[\"أنشئ مجموعتك الأولى\"],\"A+zoTy\":[\"الخطة الحالية\"],\"PQ2zPy\":[\"خصص كيفيّة ظهور البطاقات.\"],\"P+gzBQ\":[\"قم بتخصيص كيف يظهر التطبيق بالنسبة لك.\"],\"ZQKLI1\":[\"منطقة الخطر\"],\"pvnfJD\":[\"غامق\"],\"Wf+eYa\":[\"استكشاف الأخطاء\"],\"LUfCYM\":[\"تم إنشاء المجموعة\"],\"sHVysr\":[\"تم حذف المجموعة\"],\"UzOd8J\":[\"اسم المجموعة\"],\"iJA/GX\":[\"تم إنشاء المجموعة بنجاح!\"],\"M+Nngk\":[\"تم حذف المجموعة بنجاح!\"],\"NVQRbB\":[\"تم تحديث المجموعة بنجاح!\"],\"WWDML8\":[\"تم تحديث المجموعة\"],\"9TyPfF\":[\"المجموعات\"],\"iUt5VS\":[\"تتيح لك المجموعات إنشاء مجموعات فرعية من بطاقاتك التعليمية الموجودة باستخدام الفلاتر على قاموسك، والتي يمكنك دراستها بشكل فردي.\"],\"ovBPCi\":[\"افتراضي\"],\"MbRyzp\":[\"التعريف\"],\"cnGeoo\":[\"احذف\"],\"CYf/wo\":[\"حذف جميع البيانات\"],\"G6sE0d\":[\"حذف المجموعة\"],\"fWNrfJ\":[\"حذف المعجم\"],\"Xpcev7\":[\"حذف كل شيء\"],\"pe67wL\":[\"حذف هذه الكلمة؟\"],\"VEQ9bX\":[\"حذف الكلمة\"],\"/GZNuU\":[\"هل تريد أن تحذف معجمك؟\"],\"Nu4oKW\":[\"الوصف\"],\"URmyfc\":[\"تفاصيل\"],\"wjSthp\":[\"التفاصيل:\"],\"VrH1k+\":[\"معجم\"],\"RPYrAz\":[\"تم حذف المعجم\"],\"460RzB\":[\"ممنوع من الصرف\"],\"bzSI52\":[\"ألغ\"],\"1QfxQT\":[\"اغلق\"],\"Nwbs0q\":[\"لا تعرض\"],\"xifE4+\":[\"المثنى\"],\"jSxAVI\":[\"مثال: ك ت ب\"],\"Pqhtap\":[\"سهل\"],\"ePK91l\":[\"عدَل\"],\"nZQfan\":[\"حرّر \",[\"word\"]],\"4cP5gy\":[\"تعديل المجموعة\"],\"AN/oWt\":[\"تعديل الكلمة\"],\"IQ6Efp\":[\"عدّل مجموعتك\"],\"FEct+T\":[\"عدّل مجموعتك من خلال اختيار الفلاتر. ستتكون المجموعة من البطاقات التي تطابق الفلاتر.\"],\"O3oNi5\":[\"البريد الإلكتروني\"],\"lYGfRP\":[\"الإنجليزية\"],\"7MHe6P\":[\"الترجمة بالإنجليزية\"],\"Ac92c9\":[\"أدخل اسم المجموعة\"],\"ot6UAQ\":[\"أدخل وصفًا لترحيلك\"],\"shwNsK\":[\"أدخل اسم المجموعة\"],\"BTF0Gj\":[\"ادخل رمزك المكون من ٦ أرقام من بريدك الإلكتروني\"],\"ojjQlT\":[\"أدخل نص ترحيل SQL هنا\"],\"CA1DlQ\":[\"العنصر \",[\"arrayIndex\"]],\"Af6M/a\":[\"المثال \",[\"0\"]],\"oea1as\":[\"استخدامات مثالية للكلمة في سياقات مختلفة.\"],\"hFthoo\":[\"أمثلة\"],\"GS+Mus\":[\"صدر\"],\"Mk2MqX\":[\"اكتمل التصدير مع وجود مشاكل\"],\"XydOn5\":[\"فشل التصدير!\"],\"FAMOg+\":[\"تصدير مع البطاقات\"],\"HynDdB\":[\"تصدير معجمك\"],\"cQ+n9e\":[\"تصدير المعجم مع البطاقات سيحفظ تقدم البطاقات بالإضافة إلى كل المحتوى في معجمك. استخدم هذا الخيار إذا كنت ترغب في إنشاء نسخة احتياطية من بياناتك.<0/><1/>تصدير المعجم بدون البطاقات لن يحفظ أي تقدم للبطاقات. استخدم هذا الخيار إذا كنت ترغب في مشاركة معجمك.<2/><3/><4>تحذير: استيراد ملفك بدون البطاقات سيؤدي إلى إعادة تعيين جميع البطاقات.\"],\"1JBTZV\":[\"عبارة\"],\"GiPSsF\":[\"فشل إضافة الكلمة\"],\"zABpXD\":[\"فشل إضافة الكلمة!\"],\"NcBoUU\":[\"فشل تطبيق الترحيل على قاعدة البيانات المحلية.\"],\"eN1Tfn\":[\"فشل مسح المتراكمات\"],\"7hUTxx\":[\"فشل إنشاء المجموعة\"],\"Fr4iT6\":[\"فشل حذف المجموعة\"],\"GCd4Bz\":[\"فشل حذف المعجم\"],\"KLMMnR\":[\"فشل حذف الكلمة\"],\"cncTzY\":[\"فشل الحذف!\"],\"usb0iv\":[\"فشل في إعادة تعيين البيانات المحلية\"],\"dCD/3a\":[\"فشل في استرجاع البيانات من قاعدة البيانات المحلية.\"],\"btG7GG\":[\"فشل استرجاع معلومات قاعدة البيانات.\"],\"CBm+/w\":[\"فشل تحديث المجموعة\"],\"gw2VAF\":[\"فشل في تحديث إعدادات البطاقة.\"],\"tOcErW\":[\"فشل تحديث الإعدادات\"],\"X/iINj\":[\"فشل في تحديث الكلمة!\"],\"cnYJdR\":[\"فشل تحديث الكلمة\"],\"ixyKje\":[\"فشل تحميل الترحيل\"],\"1B52uC\":[\"مؤنّث\"],\"TUSnpz\":[\"فعل\"],\"YCAFdN\":[\"رشّح حسب العلامات...\"],\"cSev+j\":[\"الترشيح\"],\"wG1Flg\":[\"تم تحديث إعدادات البطاقة!\"],\"EiJpdz\":[\"بطاقات\"],\"hpt1Ta\":[\"يتبع لغة جهازك\"],\"tR/FIC\":[\"يتبع إعدادات النظام\"],\"q1hBIe\":[\"مثلا الكلمة\"],\"QRAWTO\":[\"الوزن\"],\"2POOFK\":[\"مجاني\"],\"5iyJje\":[\"جنس\"],\"RkXlPZ\":[\"GitHub\"],\"CKyk7Q\":[\"ارجع\"],\"lUTqcW\":[\"الذهاب إلى القاموس\"],\"OEEQKT\":[\"حسن\"],\"VOwQ6g\":[\"أحسنت في المتراكمات! لا يزال لديك \",[\"0\"],\" مراجعات عادية.\"],\"Xv6Pek\":[\"عمل رائع! عد لاحقًا لمزيد من المراجعات.\"],\"g5Fk5U\":[\"صعب\"],\"h4MDwq\":[\"حرف\"],\"IzmuJh\":[\"الحرف \",[\"0\"]],\"D+zLDD\":[\"مخفي\"],\"VMlRqi\":[\"إخفاء التفاصيل\"],\"QWNZbK\":[\"إخفاء المرشحات\"],\"f+BFfG\":[\"تلميح\"],\"i0qMbr\":[\"منزل\"],\"q0alPy\":[\"كيف ينبغي عرض الأضداد في بطاقات؟\"],\"af2WMF\":[\"طريقة تصنف الكلمة حسب نوعها أو سياقها.\"],\"qGZ1pF\":[\"حروف\"],\"7fIUBE\":[\"المعرف:\"],\"mU4ZuB\":[\"إذا لزم الأمر.\"],\"eQI7A0\":[\"إذا كنت تواجه مشاكل في المزامنة أو عدم تحميل البيانات بشكل صحيح، يمكنك إعادة تعيين بياناتك المحلية وإعادة المزامنة من الخادم.\"],\"wqQIcr\":[\"الأمر\"],\"l3s5ri\":[\"استورد\"],\"5LwmgO\":[\"فشل الاستيراد!\"],\"X85Lgt\":[\"تضمين بطاقات الإنجليزية إلى العربية\"],\"O1SPgK\":[\"نوع الملف غير صحيح\"],\"bjwx3z\":[\"مبنى\"],\"d7G5eB\":[\"إعراب\"],\"IaZUGL\":[\"معلومات مثلا الجذر أو المعنى أو الأمثلة.\"],\"FP8ELf\":[\"الصيغة الزمنية غير صالحة\"],\"LpHyjF\":[\"صيغة النص غير صالحة\"],\"xVH/JG\":[\"نوع غير صالح. المتوقع \",[\"0\"]],\"lBmlgJ\":[\"نوع غير صالح. المتوقع \",[\"0\"],\"، المستلم \",[\"1\"]],\"5R5T/G\":[\"قيمة غير صالحة. يجب أن تكون إحدى القيم التالية: \",[\"0\"]],\"SK5zz1\":[\"اسم\"],\"vXIe7J\":[\"اللغة\"],\"1njn7W\":[\"فاتح\"],\"CZOrLB\":[\"جارٍ تحميل التفاصيل...\"],\"LioGSK\":[\"جارٍ تحميل معجمك...\"],\"Z3FXyt\":[\"جارٍ التحميل...\"],\"1bAISV\":[\"تمت إعادة تعيين البيانات المحلية بنجاح!\"],\"Od5n57\":[\"قم بتسجيل الدخول إلى حسابك الحالي أو قم بالتسجيل للحصول على حساب جديد\"],\"nOhz3x\":[\"تسجيل الخروج\"],\"L9IOec\":[\"إدارة الاشتراك\"],\"c1DM+0\":[\"إدارة مجموعاتك ودراستها.\"],\"QUTgGW\":[\"إدارة معجمك.\"],\"4zd4U3\":[\"إدارة اشتراكك.\"],\"U60v+9\":[\"مصادر\"],\"IPJKNz\":[\"مذكر\"],\"dLgiXX\":[\"مصدر\"],\"SXYWd/\":[\"المصدر \",[\"0\"]],\"6URaYg\":[\"المعنى\"],\"MYTK2T\":[\"المعنى مع هذا الحرف\"],\"zucql+\":[\"القائمة\"],\"qGioCB\":[\"تم تسجيل الترحيل بنجاح.\"],\"O+YlVk\":[\"شهري — $١٠/شهر\"],\"QI9AZD\":[\"أكثر من \",[\"0\"],\" بطاقة للمراجعة\"],\"yf87+x\":[\"الصرف\"],\"60xV9Y\":[\"الصرف ينطبق فقط على الأسماء والأفعال. سيتم إخفاء هذا القسم إذا تم تعيين نوع الكلمة إلى أي شيء آخر.\"],\"qhwV2C\":[\"حسابي\"],\"6YtxFj\":[\"اسم\"],\"TizFpt\":[\"قائمة التنقل\"],\"TQ5Es1\":[\"لا توجد بطاقات متراكمة للمسح.\"],\"WAQMrN\":[\"لا توجد بطاقات مستحقة\"],\"TkUliY\":[\"لا توجد مجموعات بعد\"],\"7+IHTZ\":[\"لم يتم اختيار ملف\"],\"AxPAXW\":[\"لم يتم العثور على نتائج\"],\"vLuosE\":[\"لم يتم العثور على علامات.\"],\"Utp0Ef\":[\"نورد\"],\"tTu2yx\":[\"اسم\"],\"KfoKzr\":[\"صرف الاسم\"],\"zW+FpA\":[\"أو استمر مع\"],\"PMqWHy\":[\"حرف\"],\"UIYada\":[\"اسم مفعول\"],\"9wi5te\":[\"اسم مفعول\"],\"Ff0Dor\":[\"الماضي\"],\"KkgkHx\":[\"الماضي\"],\"uiVVIw\":[\"الماضي\"],\"VHWIM2\":[\"حذف جميع بياناتك نهائيًا بما في ذلك الكلمات والبطاقات والمجموعات.\"],\"1OB0cV\":[\"يرجى الاتصال <0>بالدعم مع التفاصيل التالية:\"],\"HsEwwb\":[\"الرجاء إدخال اسم المجموعة\"],\"nqOcNX\":[\"اختر ملف JSON لمعجمك من فضلك.\"],\"AXJfF/\":[\"حاول مرة أخرى أو أعد تحميل الصفحة.\"],\"fuwKpE\":[\"حاول مرّة أخرى.\"],\"BPig2P\":[\"الجمع\"],\"K5KP2J\":[\"صيغة الجمع \",[\"0\"]],\"zt7UFB\":[\"صيغة الجمع\"],\"u5SHG2\":[\"صيغ جمع\"],\"go9eTo\":[\"حرف\"],\"JuM71B\":[\"حروف الجر\"],\"0Of985\":[\"الحروف التي يمكن استخدامها مع الفعل لتغيير معناه.\"],\"eZb+lw\":[\"المضارع\"],\"24cT5U\":[\"المضارع\"],\"6Kwq+n\":[\"المضارع\"],\"3fPjUY\":[\"برو\"],\"0DYtlD\":[\"المضافة حديثًا\"],\"X5P6yv\":[\"المحدّثة حديثًا\"],\"uabU9X\":[\"المستخدمة مؤخرًا\"],\"7dZnmw\":[\"الصلة\"],\"HpK/8d\":[\"أعد التحميل\"],\"t/YqKh\":[\"احذف\"],\"8dg+Yo\":[\"حقل مطلوب\"],\"+7Cebq\":[\"أعد جدولة جميع البطاقات المتراكمة بتقييمها كـ \\\"صعب\\\".\"],\"ly/6zq\":[\"إعادة التعيين والمزامنة\"],\"vWTWiR\":[\"أعد البطاقة\"],\"7HeQ9b\":[\"إعادة تعيين تقدم البطاقة؟\"],\"2ma9vI\":[\"إعادة تعيين البيانات المحلية\"],\"lLVyir\":[\"إعادة تعيين البيانات المحلية والمزامنة؟\"],\"K/RS6y\":[\"جارٍ إعادة تعيين البيانات المحلية...\"],\"QFtnWs\":[\"بطاقات العكسية\"],\"5k0NLb\":[\"مراجعة\"],\"nqtnG9\":[\"ادرس البطاقات\"],\"HtzuX3\":[\"راجع البطاقات (\",[\"0\"],\" متراكمة)\"],\"TbJrZ9\":[\"راجع البطاقات بالتكرار المتباعد\"],\"05OIsb\":[\"راجع بطاقاتك العربية وقيم فهمك باستخدام خيارات مرة أخرى أو صعب أو جيد أو سهل لتعديل الجدولة.\"],\"cbGyYK\":[\"الجذر\"],\"qMVAMv\":[\"الحروف الأصلية\"],\"tfDRzk\":[\"احفظ\"],\"JAxBTB\":[\"وفّر ٣٠٪\"],\"y3aU20\":[\"حفظ التغييرات\"],\"IUwGEM\":[\"حفظ التغييرات\"],\"bf6lG0\":[\"ترحيلات المخطط\"],\"BnCS55\":[\"ابحث عن علامة...\"],\"VV6Aru\":[\"ابحث عن علامة...\"],\"YIix5Y\":[\"ابحث...\"],\"Du+zn+\":[\"يبحث...\"],\"hid6Sx\":[\"اختر جنسا\"],\"NdMnnc\":[\"اختر إعرابا\"],\"V/vqsf\":[\"حدد أنواع الكلمات التي تريد تضمينها في المجموعة.\"],\"tXQ9KI\":[\"اختر الجنس\"],\"FDpH/H\":[\"جملة\"],\"iw3JO4\":[\"افصل الحروف بمسافات أو فواصل\"],\"Tz0i8g\":[\"الإعدادات\"],\"l8nxCn\":[\"عرض بعد كشف الإجابة\"],\"r0Xcmy\":[\"اعرض الجواب\"],\"vDNaTX\":[\"إظهار الأضداد\"],\"1H95wk\":[\"عرض كتلميح\"],\"BowKyI\":[\"عرض التفاصيل\"],\"C5SZax\":[\"اعرض بطاقات من الإنجليزية إلى العربية.\"],\"+b9Ad2\":[\"عرض المرشحات\"],\"xzH3m9\":[\"إظهار البطاقات العكسية\"],\"maCaRp\":[\"مفرد\"],\"vK/oE0\":[\"تعذر تحميل بعض إدخالات المعجم\"],\"nwtY4N\":[\"حدث خطأ ما\"],\"/HgF9q\":[\"ترتيب حسب\"],\"r20wDW\":[\"نص SQL\"],\"ykSlaQ\":[\"لا يزال لا يعمل؟\"],\"pKr7ta\":[\"أدرس\"],\"+Env0D\":[\"تم إضافة الكلمة بنجاح!\"],\"NJp0hH\":[\"نجح الحذف!\"],\"z6XClS\":[\"تم التصدير بنجاح!\"],\"1uuPpZ\":[\"تم الاستيراد بنجاح!\"],\"/5ZZnV\":[\"تمت إعادة تعيين البطاقة بنجاح.\"],\"oEWC7j\":[\"حدثت الكلمة بنجاح!\"],\"QgnNyZ\":[\"خطأ في المزامنة\"],\"D+NlUC\":[\"نظام\"],\"OYHzN1\":[\"علامات\"],\"iEZ4Fc\":[\"شكرًا لاشتراكك في بهار برو. يمكنك الآن الوصول إلى جميع ميزات برو.\"],\"hz39Yb\":[\"هذا الشفرة غير صالح.\"],\"90dpv/\":[\"هذا البريد الإلكتروني غير صالح.\"],\"7X8sXq\":[\"هذا ليس JSON صالح.\"],\"P7iz9S\":[\"قد يكون التطبيق مفتوحًا في علامة تبويب أخرى. حاول إغلاق علامات التبويب الأخرى وتحديث هذه الصفحة.\"],\"Bm2B8s\":[\"سياق الجملة مثلا رسمي أو عامي.\"],\"MMs+Zk\":[\"تم حذف المجموعة \\\"\",[\"0\"],\"\\\".\"],\"Gpyta0\":[\"صيغة الفعل مثلا I, II, III, IV, هكذا و هكذا...\"],\"OE9TJJ\":[\"صيغة الفعل بالعربية مثلا فعل, أفعل, استفعل, هكذا و هكذا...\"],\"4cDTK/\":[\"قاعدة البيانات المحلية مقفلة بواسطة جلسة أخرى.\"],\"EVX5FZ\":[\"معنى الفعل إذا استعمل مع الحرف.\"],\"bdFFEw\":[\"التصريف.\"],\"nIdeZ6\":[\"الحروف الجذرية للكلمة. يمكن فصل المدخلات بفواصل أو مسافات أو لا تحتوي على محدد مثلا فعل أو ف، ع، ل أو ف ع ل.\"],\"AvErlv\":[\"تمت إضافة الكلمة إلى معجمك.\"],\"LbpyqF\":[\"حدثت الكلمة.\"],\"FEr96N\":[\"المظهر\"],\"uTlsP3\":[\"حدث خطأ أثناء إضافة كلمتك. حاول مرة اخرى.\"],\"boDfXQ\":[\"حدث خطأ أثناء مسح المتراكمات.\"],\"IOwnXs\":[\"حدث خطأ أثناء إنشاء المجموعة\"],\"AObMB6\":[\"حدث خطأ أثناء حذف معجمك. حاول مرة أخرى لاحقا من فضلك.\"],\"QPU+ph\":[\"حدث خطأ أثناء تصدير معجمك. حاول مرة أخرى لاحقا من فضلك.\"],\"+0R2Vl\":[\"حدث خطأ أثناء استيراد لمعجمك. حاول مرة أخرى لاحقا.\"],\"GrwZZY\":[\"حدث خطأ في مزامنة بياناتك. إذا استمرت المشكلة، حاول إعادة تعيين البيانات المحلية من الإعدادات.\"],\"1GLBeM\":[\"حدث خطأ في مزامنة بياناتك. حاول إعادة تعيين البيانات المحلية من الإعدادات.\"],\"Xs1nsK\":[\"حدث خطأ في مزامنة بياناتك. بياناتك المحلية لا تزال متاحة.\"],\"aUu2Qy\":[\"حدث خطأ أثناء تحديث المجموعة\"],\"jObkch\":[\"حدث خطأ أثناء تحديث إعدادات بطاقاتك.\"],\"DvuiAU\":[\"حدث خطأ أثناء تحديث كلمتك. حاول مرة أخرى.\"],\"n//cii\":[\"حدث خطأ أثناء تحميل ترحيل SQL الخاص بك\"],\"p0aTgS\":[\"حدث خطأ أثناء فهرسة بياناتك في محرك البحث.\"],\"7Eqx1H\":[\"حدث خطأ غير متوقع. حاول مرة أخرى من فضلك.\"],\"1hR1ca\":[\"هناك مشكلة مؤقتة في تحميل حسابك. حاول إعادة تحميل الصفحة من فضلك.\"],\"UwqoLj\":[\"هذه الخانة لازم.\"],\"oM4aHs\":[\"هذا حالة غير حساسة.\"],\"GoNjj1\":[\"هذا هو اسم مجموعتك.\"],\"e92j12\":[\"هذا هو إعراب الكلمة.\"],\"fxunD6\":[\"سيؤدي هذا إلى حذف النسخة المحلية من بياناتك المخزنة في هذا المتصفح وتنزيل نسخة جديدة من الخادم. لن تتأثر بياناتك على الخادم. استخدم هذا إذا كنت تواجه أخطاء في المزامنة أو ترى بيانات قديمة.\"],\"lpK0Kp\":[\"سيؤدي هذا إلى حذف جميع كلماتك وبطاقاتك ومجموعاتك نهائيًا. لا يمكن التراجع عن هذا الإجراء.\"],\"NVF43p\":[\"الوقت:\"],\"i1FCIq\":[\"للمراجعة\"],\"1Q2HRv\":[\"تبديل القائمة\"],\"inGj5T\":[\"ليلة طوكيو\"],\"72c5Qo\":[\"الإجمالي\"],\"wFcvZJ\":[\"الترجمة\"],\"/Onh8p\":[\"معرب\"],\"qlwLcm\":[\"استكشاف الأخطاء\"],\"jKoZME\":[\"جرب مصطلح بحث مختلف\"],\"+zy2Nq\":[\"الجنس\"],\"WtTYSX\":[\"أقسام\"],\"xlZRtS\":[\"آه! حدث خطأ ما!\"],\"6njDZ+\":[\"غير قادر على الاتصال بقاعدة البيانات البعيدة.\"],\"WRB75e\":[\"خطأ غير معروف.\"],\"IelE1h\":[\"الترقية إلى برو\"],\"1ZR0xe\":[\"يجب أن تكون القيمة \",[\"0\"],\" أو أكبر\"],\"e5Ml90\":[\"يجب أن تكون القيمة \",[\"0\"],\" أو أقل\"],\"bwa0RV\":[\"فعل\"],\"LnBspw\":[\"صيغة الفعل\"],\"esQ1ry\":[\"صرف الفعل\"],\"WjcFrD\":[\"مصادر للفعل.\"],\"2oIAhB\":[\"المصادر\"],\"s6NYcb\":[\"المصادر\"],\"B4iZJX\":[\"انظر كل الألفاظ في معجمك الشخصي.\"],\"VvvGs4\":[\"لا يمكننا الوصول إلى خوادمنا الآن. تحقق من اتصالك وحاول مرة أخرى.\"],\"dHoQb8\":[\"نواجه مشكلة في إعداد حسابك. حاول مرة أخرى من فضلك.\"],\"eqpeYp\":[\"مرحباً بكم في بحر!\"],\"dZiBrj\":[\"الكلمة\"],\"MJ0gHH\":[\"تمت إضافة الكلمة بنجاح\"],\"wazgbb\":[\"تم حذف الكلمة بنجاح\"],\"2WVQNU\":[\"الكلمة غير موجودة\"],\"Xwf/Kn\":[\"تم تحديث الكلمة بنجاح\"],\"FVyDlC\":[\"الكلمات التي تحتوي على أي من هذه العلامات ستُدرج في المجموعة.\"],\"7niJN/\":[\"الكلمات التي لها معنى عكسي.\"],\"nTIiPJ\":[\"ليس لديك إذن لتحميل ترحيلات المخطط.\"],\"4eom/r\":[\"لديك \",[\"0\"],\" بطاقات متراكمة عندما تكون جاهزًا.\"],\"alITRb\":[\"ليس لديك أي مجموعات بعد.\"],\"XOUb7A\":[\"ليس لديك أي كلمات في قاموسك بعد.\"],\"voqWOr\":[\"أنت جاهز!\"],\"/dColV\":[\"حسابك يحتاج إلى صيانة. تم إخطارنا. حاول مرة أخرى لاحقا من فضلك.\"],\"a8jRIt\":[\"تمت إعادة مزامنة بياناتك من الخادم.\"],\"uRXiIT\":[\"لم يتم إنشاء مجموعتك. يرجى المحاولة مرة أخرى.\"],\"oz/nIQ\":[\"لم يتم تحديث مجموعتك. يرجى المحاولة مرة أخرى.\"],\"L1VLmw\":[\"معجمك\"],\"SB7dXw\":[\"حذف معجمك.\"],\"aQiurv\":[\"تم تحميل معجمك.\"],\"YAeum9\":[\"تم تحديث معجمك!\"],\"C0Fx9N\":[\"معجمك فارغ\"],\"3ma3fF\":[\"معجمك غير صالح. صوب الأخطاء و استورد مرة أخرى من فضلك.\"],\"4bRwmE\":[\"كلمة «محمد» هي معرب.\"],\"kkC1Qd\":[\"كلمة «موسى» هي مبنى.\"],\"jFIhM0\":[\"كلمة «يوسف» هي ممنوع من الصرف.\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"Wg0uLA\":[[\"0\",\"plural\",{\"one\":[\"علامة واحدة محددة\"],\"two\":[\"علامتان محددتان\"],\"few\":[\"#\",\" علامات محددة\"],\"many\":[\"#\",\" علامة محددة\"],\"other\":[\"#\",\" علامة محددة\"]}]],\"5rgLzy\":[[\"0\",\"plural\",{\"one\":[\"بطاقة متبقية\"],\"other\":[\"بطاقات متبقية\"]}]],\"/hTM9k\":[[\"0\"],\" / \",[\"1\"],\" دفعات\"],\"mHye52\":[[\"0\"],\" / \",[\"1\"],\" بطاقات\"],\"baIPh3\":[[\"0\"],\" بطاقات مستحقة\"],\"beWT44\":[\"تمت إعادة جدولة \",[\"0\"],\" بطاقات.\"],\"JJcBCm\":[[\"0\"],\" إجمالي\"],\"JtTuS0\":[[\"hydrationSkippedCount\",\"plural\",{\"one\":[\"تم تخطي إدخال واحد بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخال الذي لم يتم تحميله.\"],\"two\":[\"تم تخطي إدخالين بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"few\":[\"تم تخطي \",\"#\",\" إدخالات بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"many\":[\"تم تخطي \",\"#\",\" إدخالًا بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"],\"other\":[\"تم تخطي \",\"#\",\" إدخال بسبب مشاكل في البيانات. بياناتك محفوظة، لكن لن تتمكن من البحث عن الإدخالات التي لم يتم تحميلها.\"]}]],\"UGMDWm\":[\"تم تخطي \",[\"skippedCount\"],\" إدخالات بسبب تلف البيانات.\"],\"gp8eDB\":[[\"totalHits\",\"plural\",{\"one\":[\"نتيجة\"],\"two\":[\"نتيجتان\"],\"few\":[\"نتائج\"],\"many\":[\"نتيجة\"],\"other\":[\"نتيجة\"]}]],\"QSRKsm\":[[\"totalResults\",\"plural\",{\"one\":[[\"totalResults\"],\" نتيجة\"],\"two\":[[\"totalResults\"],\" نتيجتان\"],\"few\":[[\"totalResults\"],\" نتائج\"],\"many\":[[\"totalResults\"],\" نتيجة\"],\"other\":[[\"totalResults\"],\" نتيجة\"]}]],\"gD09hk\":[[\"val\",\"plural\",{\"one\":[\"لا يمكن تجاوز حرف واحد\"],\"two\":[\"لا يمكن تجاوز حرفين\"],\"few\":[\"لا يمكن تجاوز \",\"#\",\" حروف\"],\"many\":[\"لا يمكن تجاوز \",\"#\",\" حرفا\"],\"other\":[\"لا يمكن تجاوز \",\"#\",\" حرف\"]}]],\"I1sa5o\":[[\"val\",\"plural\",{\"one\":[\"يجب أن يكون على الأقل واحد حرف\"],\"two\":[\"يجب أن يكون على الأقل حرفين\"],\"few\":[\"يجب أن يكون على الأقل \",\"#\",\" حروف\"],\"many\":[\"يجب أن يكون على الأقل \",\"#\",\" حرفا\"],\"other\":[\"يجب أن يكون على الأقل \",\"#\",\" حرف\"]}]],\"WWcbHw\":[\"غير فعل أو حرف.\"],\"ZQW2PY\":[\"حرف أو عطف.\"],\"0iy5O2\":[\"فعل.\"],\"7L01XJ\":[\"أعمال\"],\"DQqXHw\":[\"اسم فاعل\"],\"AwJc6G\":[\"اسم فاعل\"],\"rJwPkp\":[\"أضف ترحيل SQL جديد.\"],\"t89Ong\":[\"أضف كلمة جديدة\"],\"L18Pbl\":[\"أضف كلمة جديدة إلى معجمك\"],\"TYPFtT\":[\"أضف علامة واضغط Enter\"],\"iJMhp0\":[\"إضافة الكل\"],\"nPm6bB\":[\"أضف ضدا\"],\"jVmrwy\":[\"أضف ضد\"],\"1x4W9u\":[\"أضف مثلا\"],\"nI3A8B\":[\"أضف مثال\"],\"gLlFHX\":[\"أضف حرف\"],\"aLEtgY\":[\"أضف حرف\"],\"Tcbo6a\":[\"أضف مصدر\"],\"vKbErK\":[\"أضف صيغة جمع\"],\"SNF/r2\":[\"أضف جمع\"],\"cR1WUS\":[\"أضف شيئًا لتبدأ!\"],\"Oft+Pb\":[\"أضف بعض الكلمات للبدء!\"],\"Xls3A3\":[\"أضف علامة \",[\"inputValue\"]],\"VMjLu6\":[\"إضافة العلامة \",[\"value\"]],\"uF1GKn\":[\"أضف علامات إلى كلمتك.\"],\"bDXmnN\":[\"أضف كلمة\"],\"p59pEv\":[\"تفاصيل إضافية\"],\"b/7DUT\":[\"مرة أخرى\"],\"KK8UsT\":[\"انتهيت لليوم!\"],\"7Qi3W5\":[\"تعريف عربية للكلمة.\"],\"Y/gBMP\":[\"ترجمة إنجليزية للجملة.\"],\"jalxln\":[\"ترجمة إنجليزية للكلمة.\"],\"hyC+qY\":[\"حدث خطأ غير متوقع. يمكنك محاولة إعادة تحميل الصفحة لإصلاحه.\"],\"Fl8owW\":[\"سنوي — $٧/شهر\"],\"4xBHUg\":[\"الجواب\"],\"vQXp82\":[\"الضد \",[\"0\"]],\"o9dJs3\":[\"كلمة مضادة\"],\"Hvs4LI\":[\"أضداد\"],\"p1Kh9a\":[\"أية تفاصيل إضافية عن هذه الصيغة مثلا تكرار الاستخدام أو السياق.\"],\"9kni2/\":[\"أية صيغ جمع للكلمة.\"],\"2PPE7k\":[\"سيستبدل كل كلمات التي لديها نفس المعرف.\"],\"cnAqww\":[\"لغة التطبيق\"],\"aAIQg2\":[\"المظهر\"],\"8HV3WN\":[\"العربية\"],\"LNIQwr\":[\"التعريف بالعربية\"],\"uKmc5K\":[\"الجملة بالعربية\"],\"wxIhw3\":[\"صيغة الفعل العربي\"],\"071WZA\":[\"الكلمة بالعربية\"],\"pkD36F\":[\"هل أنت متأكد من حذف \\\"\",[\"0\"],\"\\\"؟\"],\"DOiV7q\":[\"هل أنت متأكد أنك تريد حذف هذه الكلمة؟ سيتم إزالتها من معجمك وسيتم حذف البطاقات بها.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء.\"],\"2cZh44\":[\"هل أنت متأكد من حذف هذه الكلمة؟ لا يمكن التراجع عن هذا الإجراء.\"],\"ikBPhc\":[\"هل أنت متأكد من رغبتك في حذف معجمك؟ سيحذف جميع كلماتك بشكل دائم. لا يمكن التراجع عن هذا الإجراء. صدر معجمك قبل حذفه من فضلك.\"],\"IJr17L\":[\"هل أنت متأكد أنك تريد إعادة تعيين تقدم بطاقة هذه؟ لن يتم تعديل إدخال الكلمة في المعجم، ولكن سيتم التعامل مع بطاقات بها على أنها بطاقات جديدة.<0/><1/><2>لا يمكن التراجع عن هذا الإجراء.\"],\"OsXw/g\":[\"تعبئة تلقائية\"],\"ujMTU0\":[\"فشلت التعبئة التلقائية\"],\"iH8pgl\":[\"رجوع\"],\"0MgdN+\":[\"العودة إلى الأعلى\"],\"KNKCTb\":[\"المتراكمة\"],\"Fg+fNW\":[\"تم مسح المتراكمات!\"],\"vMebS2\":[\"بحر\"],\"EOUool\":[\"تفاصيل أساسية\"],\"cSCbv3\":[\"بيتا\"],\"t/5uBV\":[\"يُدفع $٨٤/سنة\"],\"aIkeAd\":[\"يُدفع شهريًا\"],\"R+w/Va\":[\"الفوترة\"],\"OKWk8n\":[\"بتسجيل الدخول، فإنك توافق على <0>سياسة الخصوصية\"],\"dEgA5A\":[\"ألغ\"],\"oySfhX\":[\"بطاقات مستحقة اليوم أو مؤخرًا\"],\"uV52e1\":[\"بطاقات متأخرة أكثر من ٧ أيام\"],\"zAwyRS\":[\"بطاقات للمراجعة اليوم\"],\"K7tIrx\":[\"الباب\"],\"qWRWG1\":[\"السبب:\"],\"+yPBXI\":[\"اختر ملف\"],\"xCJdfg\":[\"امسح\"],\"ot7qsv\":[\"مسح كل المرشّحات\"],\"saoOio\":[\"امسح المتراكمات\"],\"Oo39Ga\":[\"جارٍ المسح...\"],\"rFmBG3\":[\"سمة الألوان\"],\"mpby9d\":[\"اتصل بالدعم\"],\"M73whl\":[\"السياق\"],\"xGVfLh\":[\"استمر\"],\"RvVi9c\":[\"استمرّ مع بريد الإلكتروني\"],\"NMo6Pj\":[\"تحكم في مكان ظهور الأضداد أثناء المراجعة\"],\"PiH3UR\":[\"تم النسخ!\"],\"he3ygx\":[\"انسخ\"],\"hYgDIe\":[\"إنشاء\"],\"oJc/nD\":[\"أنشئ مجموعة لتنظيم مراجعات بطاقاتك\"],\"wxDqxy\":[\"إنشاء مجموعة جديدة\"],\"oQH8Kl\":[\"أنشئ مجموعة جديدة باختيار الفلاتر. ستكون المجموعة مكونة من البطاقات التي تطابق هذه الفلاتر.\"],\"l7kxcE\":[\"أنشئ مجموعة\"],\"g/Uxjl\":[\"إنشاء مجموعة\"],\"1m75Ii\":[\"أنشئ مجموعتك الأولى\"],\"A+zoTy\":[\"الخطة الحالية\"],\"PQ2zPy\":[\"خصص كيفيّة ظهور البطاقات.\"],\"P+gzBQ\":[\"قم بتخصيص كيف يظهر التطبيق بالنسبة لك.\"],\"ZQKLI1\":[\"منطقة الخطر\"],\"pvnfJD\":[\"غامق\"],\"Wf+eYa\":[\"استكشاف الأخطاء\"],\"LUfCYM\":[\"تم إنشاء المجموعة\"],\"sHVysr\":[\"تم حذف المجموعة\"],\"UzOd8J\":[\"اسم المجموعة\"],\"iJA/GX\":[\"تم إنشاء المجموعة بنجاح!\"],\"M+Nngk\":[\"تم حذف المجموعة بنجاح!\"],\"NVQRbB\":[\"تم تحديث المجموعة بنجاح!\"],\"WWDML8\":[\"تم تحديث المجموعة\"],\"9TyPfF\":[\"المجموعات\"],\"iUt5VS\":[\"تتيح لك المجموعات إنشاء مجموعات فرعية من بطاقاتك التعليمية الموجودة باستخدام الفلاتر على قاموسك، والتي يمكنك دراستها بشكل فردي.\"],\"ovBPCi\":[\"افتراضي\"],\"MbRyzp\":[\"التعريف\"],\"cnGeoo\":[\"احذف\"],\"CYf/wo\":[\"حذف جميع البيانات\"],\"G6sE0d\":[\"حذف المجموعة\"],\"fWNrfJ\":[\"حذف المعجم\"],\"Xpcev7\":[\"حذف كل شيء\"],\"pe67wL\":[\"حذف هذه الكلمة؟\"],\"VEQ9bX\":[\"حذف الكلمة\"],\"/GZNuU\":[\"هل تريد أن تحذف معجمك؟\"],\"Nu4oKW\":[\"الوصف\"],\"URmyfc\":[\"تفاصيل\"],\"wjSthp\":[\"التفاصيل:\"],\"VrH1k+\":[\"معجم\"],\"RPYrAz\":[\"تم حذف المعجم\"],\"460RzB\":[\"ممنوع من الصرف\"],\"bzSI52\":[\"ألغ\"],\"1QfxQT\":[\"اغلق\"],\"Nwbs0q\":[\"لا تعرض\"],\"xifE4+\":[\"المثنى\"],\"jSxAVI\":[\"مثال: ك ت ب\"],\"Pqhtap\":[\"سهل\"],\"ePK91l\":[\"عدَل\"],\"nZQfan\":[\"حرّر \",[\"word\"]],\"4cP5gy\":[\"تعديل المجموعة\"],\"AN/oWt\":[\"تعديل الكلمة\"],\"IQ6Efp\":[\"عدّل مجموعتك\"],\"FEct+T\":[\"عدّل مجموعتك من خلال اختيار الفلاتر. ستتكون المجموعة من البطاقات التي تطابق الفلاتر.\"],\"O3oNi5\":[\"البريد الإلكتروني\"],\"lYGfRP\":[\"الإنجليزية\"],\"7MHe6P\":[\"الترجمة بالإنجليزية\"],\"Ac92c9\":[\"أدخل اسم المجموعة\"],\"ot6UAQ\":[\"أدخل وصفًا لترحيلك\"],\"shwNsK\":[\"أدخل اسم المجموعة\"],\"BTF0Gj\":[\"ادخل رمزك المكون من ٦ أرقام من بريدك الإلكتروني\"],\"ojjQlT\":[\"أدخل نص ترحيل SQL هنا\"],\"CA1DlQ\":[\"العنصر \",[\"arrayIndex\"]],\"Af6M/a\":[\"المثال \",[\"0\"]],\"oea1as\":[\"استخدامات مثالية للكلمة في سياقات مختلفة.\"],\"hFthoo\":[\"أمثلة\"],\"GS+Mus\":[\"صدر\"],\"Mk2MqX\":[\"اكتمل التصدير مع وجود مشاكل\"],\"XydOn5\":[\"فشل التصدير!\"],\"FAMOg+\":[\"تصدير مع البطاقات\"],\"HynDdB\":[\"تصدير معجمك\"],\"cQ+n9e\":[\"تصدير المعجم مع البطاقات سيحفظ تقدم البطاقات بالإضافة إلى كل المحتوى في معجمك. استخدم هذا الخيار إذا كنت ترغب في إنشاء نسخة احتياطية من بياناتك.<0/><1/>تصدير المعجم بدون البطاقات لن يحفظ أي تقدم للبطاقات. استخدم هذا الخيار إذا كنت ترغب في مشاركة معجمك.<2/><3/><4>تحذير: استيراد ملفك بدون البطاقات سيؤدي إلى إعادة تعيين جميع البطاقات.\"],\"1JBTZV\":[\"عبارة\"],\"GiPSsF\":[\"فشل إضافة الكلمة\"],\"zABpXD\":[\"فشل إضافة الكلمة!\"],\"NcBoUU\":[\"فشل تطبيق الترحيل على قاعدة البيانات المحلية.\"],\"eN1Tfn\":[\"فشل مسح المتراكمات\"],\"7hUTxx\":[\"فشل إنشاء المجموعة\"],\"Fr4iT6\":[\"فشل حذف المجموعة\"],\"GCd4Bz\":[\"فشل حذف المعجم\"],\"KLMMnR\":[\"فشل حذف الكلمة\"],\"cncTzY\":[\"فشل الحذف!\"],\"RztBUK\":[\"فشل توليد المثال\"],\"usb0iv\":[\"فشل في إعادة تعيين البيانات المحلية\"],\"dCD/3a\":[\"فشل في استرجاع البيانات من قاعدة البيانات المحلية.\"],\"btG7GG\":[\"فشل استرجاع معلومات قاعدة البيانات.\"],\"CBm+/w\":[\"فشل تحديث المجموعة\"],\"gw2VAF\":[\"فشل في تحديث إعدادات البطاقة.\"],\"tOcErW\":[\"فشل تحديث الإعدادات\"],\"X/iINj\":[\"فشل في تحديث الكلمة!\"],\"cnYJdR\":[\"فشل تحديث الكلمة\"],\"ixyKje\":[\"فشل تحميل الترحيل\"],\"1B52uC\":[\"مؤنّث\"],\"TUSnpz\":[\"فعل\"],\"+6O2ek\":[\"أدخل الكلمة والترجمة والنوع أولاً.\"],\"YCAFdN\":[\"رشّح حسب العلامات...\"],\"cSev+j\":[\"الترشيح\"],\"wG1Flg\":[\"تم تحديث إعدادات البطاقة!\"],\"EiJpdz\":[\"بطاقات\"],\"hpt1Ta\":[\"يتبع لغة جهازك\"],\"tR/FIC\":[\"يتبع إعدادات النظام\"],\"q1hBIe\":[\"مثلا الكلمة\"],\"QRAWTO\":[\"الوزن\"],\"2POOFK\":[\"مجاني\"],\"5iyJje\":[\"جنس\"],\"2Pl4DZ\":[\"توليد مثال\"],\"NOdFZR\":[\"جارٍ التوليد...\"],\"RkXlPZ\":[\"GitHub\"],\"CKyk7Q\":[\"ارجع\"],\"lUTqcW\":[\"الذهاب إلى القاموس\"],\"OEEQKT\":[\"حسن\"],\"VOwQ6g\":[\"أحسنت في المتراكمات! لا يزال لديك \",[\"0\"],\" مراجعات عادية.\"],\"Xv6Pek\":[\"عمل رائع! عد لاحقًا لمزيد من المراجعات.\"],\"g5Fk5U\":[\"صعب\"],\"h4MDwq\":[\"حرف\"],\"IzmuJh\":[\"الحرف \",[\"0\"]],\"D+zLDD\":[\"مخفي\"],\"VMlRqi\":[\"إخفاء التفاصيل\"],\"QWNZbK\":[\"إخفاء المرشحات\"],\"f+BFfG\":[\"تلميح\"],\"i0qMbr\":[\"منزل\"],\"q0alPy\":[\"كيف ينبغي عرض الأضداد في بطاقات؟\"],\"af2WMF\":[\"طريقة تصنف الكلمة حسب نوعها أو سياقها.\"],\"qGZ1pF\":[\"حروف\"],\"7fIUBE\":[\"المعرف:\"],\"mU4ZuB\":[\"إذا لزم الأمر.\"],\"eQI7A0\":[\"إذا كنت تواجه مشاكل في المزامنة أو عدم تحميل البيانات بشكل صحيح، يمكنك إعادة تعيين بياناتك المحلية وإعادة المزامنة من الخادم.\"],\"wqQIcr\":[\"الأمر\"],\"l3s5ri\":[\"استورد\"],\"5LwmgO\":[\"فشل الاستيراد!\"],\"X85Lgt\":[\"تضمين بطاقات الإنجليزية إلى العربية\"],\"O1SPgK\":[\"نوع الملف غير صحيح\"],\"bjwx3z\":[\"مبنى\"],\"d7G5eB\":[\"إعراب\"],\"IaZUGL\":[\"معلومات مثلا الجذر أو المعنى أو الأمثلة.\"],\"FP8ELf\":[\"الصيغة الزمنية غير صالحة\"],\"LpHyjF\":[\"صيغة النص غير صالحة\"],\"xVH/JG\":[\"نوع غير صالح. المتوقع \",[\"0\"]],\"lBmlgJ\":[\"نوع غير صالح. المتوقع \",[\"0\"],\"، المستلم \",[\"1\"]],\"5R5T/G\":[\"قيمة غير صالحة. يجب أن تكون إحدى القيم التالية: \",[\"0\"]],\"SK5zz1\":[\"اسم\"],\"vXIe7J\":[\"اللغة\"],\"1njn7W\":[\"فاتح\"],\"CZOrLB\":[\"جارٍ تحميل التفاصيل...\"],\"LioGSK\":[\"جارٍ تحميل معجمك...\"],\"Z3FXyt\":[\"جارٍ التحميل...\"],\"1bAISV\":[\"تمت إعادة تعيين البيانات المحلية بنجاح!\"],\"Od5n57\":[\"قم بتسجيل الدخول إلى حسابك الحالي أو قم بالتسجيل للحصول على حساب جديد\"],\"nOhz3x\":[\"تسجيل الخروج\"],\"L9IOec\":[\"إدارة الاشتراك\"],\"c1DM+0\":[\"إدارة مجموعاتك ودراستها.\"],\"QUTgGW\":[\"إدارة معجمك.\"],\"4zd4U3\":[\"إدارة اشتراكك.\"],\"U60v+9\":[\"مصادر\"],\"IPJKNz\":[\"مذكر\"],\"dLgiXX\":[\"مصدر\"],\"SXYWd/\":[\"المصدر \",[\"0\"]],\"6URaYg\":[\"المعنى\"],\"MYTK2T\":[\"المعنى مع هذا الحرف\"],\"zucql+\":[\"القائمة\"],\"qGioCB\":[\"تم تسجيل الترحيل بنجاح.\"],\"O+YlVk\":[\"شهري — $١٠/شهر\"],\"QI9AZD\":[\"أكثر من \",[\"0\"],\" بطاقة للمراجعة\"],\"yf87+x\":[\"الصرف\"],\"60xV9Y\":[\"الصرف ينطبق فقط على الأسماء والأفعال. سيتم إخفاء هذا القسم إذا تم تعيين نوع الكلمة إلى أي شيء آخر.\"],\"qhwV2C\":[\"حسابي\"],\"6YtxFj\":[\"اسم\"],\"TizFpt\":[\"قائمة التنقل\"],\"TQ5Es1\":[\"لا توجد بطاقات متراكمة للمسح.\"],\"WAQMrN\":[\"لا توجد بطاقات مستحقة\"],\"TkUliY\":[\"لا توجد مجموعات بعد\"],\"7+IHTZ\":[\"لم يتم اختيار ملف\"],\"AxPAXW\":[\"لم يتم العثور على نتائج\"],\"vLuosE\":[\"لم يتم العثور على علامات.\"],\"Utp0Ef\":[\"نورد\"],\"tTu2yx\":[\"اسم\"],\"KfoKzr\":[\"صرف الاسم\"],\"zW+FpA\":[\"أو استمر مع\"],\"PMqWHy\":[\"حرف\"],\"UIYada\":[\"اسم مفعول\"],\"9wi5te\":[\"اسم مفعول\"],\"Ff0Dor\":[\"الماضي\"],\"KkgkHx\":[\"الماضي\"],\"uiVVIw\":[\"الماضي\"],\"VHWIM2\":[\"حذف جميع بياناتك نهائيًا بما في ذلك الكلمات والبطاقات والمجموعات.\"],\"1OB0cV\":[\"يرجى الاتصال <0>بالدعم مع التفاصيل التالية:\"],\"HsEwwb\":[\"الرجاء إدخال اسم المجموعة\"],\"nqOcNX\":[\"اختر ملف JSON لمعجمك من فضلك.\"],\"AXJfF/\":[\"حاول مرة أخرى أو أعد تحميل الصفحة.\"],\"fuwKpE\":[\"حاول مرّة أخرى.\"],\"6hUL0D\":[\"يرجى الانتظار قبل المحاولة مرة أخرى.\"],\"BPig2P\":[\"الجمع\"],\"K5KP2J\":[\"صيغة الجمع \",[\"0\"]],\"zt7UFB\":[\"صيغة الجمع\"],\"u5SHG2\":[\"صيغ جمع\"],\"go9eTo\":[\"حرف\"],\"JuM71B\":[\"حروف الجر\"],\"0Of985\":[\"الحروف التي يمكن استخدامها مع الفعل لتغيير معناه.\"],\"eZb+lw\":[\"المضارع\"],\"24cT5U\":[\"المضارع\"],\"6Kwq+n\":[\"المضارع\"],\"3fPjUY\":[\"برو\"],\"zbzsUz\":[\"تم الوصول إلى الحد الأقصى\"],\"0DYtlD\":[\"المضافة حديثًا\"],\"X5P6yv\":[\"المحدّثة حديثًا\"],\"uabU9X\":[\"المستخدمة مؤخرًا\"],\"7dZnmw\":[\"الصلة\"],\"HpK/8d\":[\"أعد التحميل\"],\"t/YqKh\":[\"احذف\"],\"8dg+Yo\":[\"حقل مطلوب\"],\"+7Cebq\":[\"أعد جدولة جميع البطاقات المتراكمة بتقييمها كـ \\\"صعب\\\".\"],\"ly/6zq\":[\"إعادة التعيين والمزامنة\"],\"vWTWiR\":[\"أعد البطاقة\"],\"7HeQ9b\":[\"إعادة تعيين تقدم البطاقة؟\"],\"2ma9vI\":[\"إعادة تعيين البيانات المحلية\"],\"lLVyir\":[\"إعادة تعيين البيانات المحلية والمزامنة؟\"],\"K/RS6y\":[\"جارٍ إعادة تعيين البيانات المحلية...\"],\"QFtnWs\":[\"بطاقات العكسية\"],\"5k0NLb\":[\"مراجعة\"],\"nqtnG9\":[\"ادرس البطاقات\"],\"HtzuX3\":[\"راجع البطاقات (\",[\"0\"],\" متراكمة)\"],\"TbJrZ9\":[\"راجع البطاقات بالتكرار المتباعد\"],\"05OIsb\":[\"راجع بطاقاتك العربية وقيم فهمك باستخدام خيارات مرة أخرى أو صعب أو جيد أو سهل لتعديل الجدولة.\"],\"cbGyYK\":[\"الجذر\"],\"qMVAMv\":[\"الحروف الأصلية\"],\"tfDRzk\":[\"احفظ\"],\"JAxBTB\":[\"وفّر ٣٠٪\"],\"y3aU20\":[\"حفظ التغييرات\"],\"IUwGEM\":[\"حفظ التغييرات\"],\"bf6lG0\":[\"ترحيلات المخطط\"],\"BnCS55\":[\"ابحث عن علامة...\"],\"VV6Aru\":[\"ابحث عن علامة...\"],\"YIix5Y\":[\"ابحث...\"],\"Du+zn+\":[\"يبحث...\"],\"hid6Sx\":[\"اختر جنسا\"],\"NdMnnc\":[\"اختر إعرابا\"],\"V/vqsf\":[\"حدد أنواع الكلمات التي تريد تضمينها في المجموعة.\"],\"tXQ9KI\":[\"اختر الجنس\"],\"FDpH/H\":[\"جملة\"],\"iw3JO4\":[\"افصل الحروف بمسافات أو فواصل\"],\"Tz0i8g\":[\"الإعدادات\"],\"l8nxCn\":[\"عرض بعد كشف الإجابة\"],\"r0Xcmy\":[\"اعرض الجواب\"],\"vDNaTX\":[\"إظهار الأضداد\"],\"1H95wk\":[\"عرض كتلميح\"],\"BowKyI\":[\"عرض التفاصيل\"],\"C5SZax\":[\"اعرض بطاقات من الإنجليزية إلى العربية.\"],\"+b9Ad2\":[\"عرض المرشحات\"],\"xzH3m9\":[\"إظهار البطاقات العكسية\"],\"maCaRp\":[\"مفرد\"],\"vK/oE0\":[\"تعذر تحميل بعض إدخالات المعجم\"],\"nwtY4N\":[\"حدث خطأ ما\"],\"fWsBTs\":[\"حدث خطأ ما. يرجى المحاولة مرة أخرى.\"],\"/HgF9q\":[\"ترتيب حسب\"],\"r20wDW\":[\"نص SQL\"],\"ykSlaQ\":[\"لا يزال لا يعمل؟\"],\"pKr7ta\":[\"أدرس\"],\"+Env0D\":[\"تم إضافة الكلمة بنجاح!\"],\"NJp0hH\":[\"نجح الحذف!\"],\"z6XClS\":[\"تم التصدير بنجاح!\"],\"1uuPpZ\":[\"تم الاستيراد بنجاح!\"],\"/5ZZnV\":[\"تمت إعادة تعيين البطاقة بنجاح.\"],\"oEWC7j\":[\"حدثت الكلمة بنجاح!\"],\"QgnNyZ\":[\"خطأ في المزامنة\"],\"D+NlUC\":[\"نظام\"],\"OYHzN1\":[\"علامات\"],\"iEZ4Fc\":[\"شكرًا لاشتراكك في بهار برو. يمكنك الآن الوصول إلى جميع ميزات برو.\"],\"hz39Yb\":[\"هذا الشفرة غير صالح.\"],\"90dpv/\":[\"هذا البريد الإلكتروني غير صالح.\"],\"7X8sXq\":[\"هذا ليس JSON صالح.\"],\"P7iz9S\":[\"قد يكون التطبيق مفتوحًا في علامة تبويب أخرى. حاول إغلاق علامات التبويب الأخرى وتحديث هذه الصفحة.\"],\"Bm2B8s\":[\"سياق الجملة مثلا رسمي أو عامي.\"],\"MMs+Zk\":[\"تم حذف المجموعة \\\"\",[\"0\"],\"\\\".\"],\"Gpyta0\":[\"صيغة الفعل مثلا I, II, III, IV, هكذا و هكذا...\"],\"OE9TJJ\":[\"صيغة الفعل بالعربية مثلا فعل, أفعل, استفعل, هكذا و هكذا...\"],\"4cDTK/\":[\"قاعدة البيانات المحلية مقفلة بواسطة جلسة أخرى.\"],\"EVX5FZ\":[\"معنى الفعل إذا استعمل مع الحرف.\"],\"bdFFEw\":[\"التصريف.\"],\"nIdeZ6\":[\"الحروف الجذرية للكلمة. يمكن فصل المدخلات بفواصل أو مسافات أو لا تحتوي على محدد مثلا فعل أو ف، ع، ل أو ف ع ل.\"],\"AvErlv\":[\"تمت إضافة الكلمة إلى معجمك.\"],\"LbpyqF\":[\"حدثت الكلمة.\"],\"FEr96N\":[\"المظهر\"],\"uTlsP3\":[\"حدث خطأ أثناء إضافة كلمتك. حاول مرة اخرى.\"],\"boDfXQ\":[\"حدث خطأ أثناء مسح المتراكمات.\"],\"IOwnXs\":[\"حدث خطأ أثناء إنشاء المجموعة\"],\"AObMB6\":[\"حدث خطأ أثناء حذف معجمك. حاول مرة أخرى لاحقا من فضلك.\"],\"QPU+ph\":[\"حدث خطأ أثناء تصدير معجمك. حاول مرة أخرى لاحقا من فضلك.\"],\"+0R2Vl\":[\"حدث خطأ أثناء استيراد لمعجمك. حاول مرة أخرى لاحقا.\"],\"GrwZZY\":[\"حدث خطأ في مزامنة بياناتك. إذا استمرت المشكلة، حاول إعادة تعيين البيانات المحلية من الإعدادات.\"],\"1GLBeM\":[\"حدث خطأ في مزامنة بياناتك. حاول إعادة تعيين البيانات المحلية من الإعدادات.\"],\"Xs1nsK\":[\"حدث خطأ في مزامنة بياناتك. بياناتك المحلية لا تزال متاحة.\"],\"aUu2Qy\":[\"حدث خطأ أثناء تحديث المجموعة\"],\"jObkch\":[\"حدث خطأ أثناء تحديث إعدادات بطاقاتك.\"],\"DvuiAU\":[\"حدث خطأ أثناء تحديث كلمتك. حاول مرة أخرى.\"],\"n//cii\":[\"حدث خطأ أثناء تحميل ترحيل SQL الخاص بك\"],\"p0aTgS\":[\"حدث خطأ أثناء فهرسة بياناتك في محرك البحث.\"],\"7Eqx1H\":[\"حدث خطأ غير متوقع. حاول مرة أخرى من فضلك.\"],\"1hR1ca\":[\"هناك مشكلة مؤقتة في تحميل حسابك. حاول إعادة تحميل الصفحة من فضلك.\"],\"UwqoLj\":[\"هذه الخانة لازم.\"],\"oM4aHs\":[\"هذا حالة غير حساسة.\"],\"GoNjj1\":[\"هذا هو اسم مجموعتك.\"],\"e92j12\":[\"هذا هو إعراب الكلمة.\"],\"fxunD6\":[\"سيؤدي هذا إلى حذف النسخة المحلية من بياناتك المخزنة في هذا المتصفح وتنزيل نسخة جديدة من الخادم. لن تتأثر بياناتك على الخادم. استخدم هذا إذا كنت تواجه أخطاء في المزامنة أو ترى بيانات قديمة.\"],\"lpK0Kp\":[\"سيؤدي هذا إلى حذف جميع كلماتك وبطاقاتك ومجموعاتك نهائيًا. لا يمكن التراجع عن هذا الإجراء.\"],\"NVF43p\":[\"الوقت:\"],\"i1FCIq\":[\"للمراجعة\"],\"1Q2HRv\":[\"تبديل القائمة\"],\"inGj5T\":[\"ليلة طوكيو\"],\"72c5Qo\":[\"الإجمالي\"],\"wFcvZJ\":[\"الترجمة\"],\"/Onh8p\":[\"معرب\"],\"qlwLcm\":[\"استكشاف الأخطاء\"],\"jKoZME\":[\"جرب مصطلح بحث مختلف\"],\"+zy2Nq\":[\"الجنس\"],\"WtTYSX\":[\"أقسام\"],\"xlZRtS\":[\"آه! حدث خطأ ما!\"],\"6njDZ+\":[\"غير قادر على الاتصال بقاعدة البيانات البعيدة.\"],\"WRB75e\":[\"خطأ غير معروف.\"],\"IelE1h\":[\"الترقية إلى برو\"],\"1z3VP6\":[\"قم بالترقية إلى برو لتوليد الأمثلة.\"],\"pIqsHO\":[\"قم بالترقية إلى برو لاستخدام التعبئة التلقائية.\"],\"1ZR0xe\":[\"يجب أن تكون القيمة \",[\"0\"],\" أو أكبر\"],\"e5Ml90\":[\"يجب أن تكون القيمة \",[\"0\"],\" أو أقل\"],\"bwa0RV\":[\"فعل\"],\"LnBspw\":[\"صيغة الفعل\"],\"esQ1ry\":[\"صرف الفعل\"],\"WjcFrD\":[\"مصادر للفعل.\"],\"2oIAhB\":[\"المصادر\"],\"s6NYcb\":[\"المصادر\"],\"B4iZJX\":[\"انظر كل الألفاظ في معجمك الشخصي.\"],\"VvvGs4\":[\"لا يمكننا الوصول إلى خوادمنا الآن. تحقق من اتصالك وحاول مرة أخرى.\"],\"dHoQb8\":[\"نواجه مشكلة في إعداد حسابك. حاول مرة أخرى من فضلك.\"],\"eqpeYp\":[\"مرحباً بكم في بحر!\"],\"dZiBrj\":[\"الكلمة\"],\"MJ0gHH\":[\"تمت إضافة الكلمة بنجاح\"],\"wazgbb\":[\"تم حذف الكلمة بنجاح\"],\"2WVQNU\":[\"الكلمة غير موجودة\"],\"Xwf/Kn\":[\"تم تحديث الكلمة بنجاح\"],\"FVyDlC\":[\"الكلمات التي تحتوي على أي من هذه العلامات ستُدرج في المجموعة.\"],\"7niJN/\":[\"الكلمات التي لها معنى عكسي.\"],\"nTIiPJ\":[\"ليس لديك إذن لتحميل ترحيلات المخطط.\"],\"4eom/r\":[\"لديك \",[\"0\"],\" بطاقات متراكمة عندما تكون جاهزًا.\"],\"alITRb\":[\"ليس لديك أي مجموعات بعد.\"],\"XOUb7A\":[\"ليس لديك أي كلمات في قاموسك بعد.\"],\"voqWOr\":[\"أنت جاهز!\"],\"/dColV\":[\"حسابك يحتاج إلى صيانة. تم إخطارنا. حاول مرة أخرى لاحقا من فضلك.\"],\"a8jRIt\":[\"تمت إعادة مزامنة بياناتك من الخادم.\"],\"uRXiIT\":[\"لم يتم إنشاء مجموعتك. يرجى المحاولة مرة أخرى.\"],\"oz/nIQ\":[\"لم يتم تحديث مجموعتك. يرجى المحاولة مرة أخرى.\"],\"L1VLmw\":[\"معجمك\"],\"SB7dXw\":[\"حذف معجمك.\"],\"aQiurv\":[\"تم تحميل معجمك.\"],\"YAeum9\":[\"تم تحديث معجمك!\"],\"C0Fx9N\":[\"معجمك فارغ\"],\"3ma3fF\":[\"معجمك غير صالح. صوب الأخطاء و استورد مرة أخرى من فضلك.\"],\"4bRwmE\":[\"كلمة «محمد» هي معرب.\"],\"kkC1Qd\":[\"كلمة «موسى» هي مبنى.\"],\"jFIhM0\":[\"كلمة «يوسف» هي ممنوع من الصرف.\"]}")as Messages; \ No newline at end of file diff --git a/packages/i18n/locales/en.po b/packages/i18n/locales/en.po index 1eaafd52..3ba3a028 100644 --- a/packages/i18n/locales/en.po +++ b/packages/i18n/locales/en.po @@ -52,7 +52,7 @@ msgstr "{0} total" msgid "{hydrationSkippedCount, plural, one {# entry was skipped due to data issues. Your data is preserved, but you won't be able to search for the entry that wasn't loaded.} other {# entries were skipped due to data issues. Your data is preserved, but you won't be able to search for any entries that weren't loaded.}}" msgstr "{hydrationSkippedCount, plural, one {# entry was skipped due to data issues. Your data is preserved, but you won't be able to search for the entry that wasn't loaded.} other {# entries were skipped due to data issues. Your data is preserved, but you won't be able to search for any entries that weren't loaded.}}" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:123 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:130 msgid "{skippedCount} entries were skipped due to data corruption." msgstr "{skippedCount} entries were skipped due to data corruption." @@ -108,7 +108,7 @@ msgstr "Add a new SQL migration." msgid "Add a new word" msgstr "Add a new word" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:188 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:297 msgid "Add a new word to your dictionary" msgstr "Add a new word to your dictionary" @@ -121,7 +121,7 @@ msgstr "Add a tag and press enter" msgid "Add all" msgstr "Add all" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:355 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:440 msgid "Add antonym" msgstr "Add antonym" @@ -130,7 +130,7 @@ msgstr "Add antonym" msgid "Add Antonym" msgstr "Add Antonym" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:281 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:324 msgid "Add example" msgstr "Add example" @@ -184,13 +184,13 @@ msgid "Add tags to your word." msgstr "Add tags to your word." #: ../../apps/web/src/routes/_authorized-layout/_search-layout/index.lazy.tsx:113 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:48 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:56 #: ../../apps/mobile/src/app/(search)/(home)/index.tsx:156 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:71 msgid "Add word" msgstr "Add word" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:63 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:105 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:437 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:547 msgid "Additional Details" @@ -204,11 +204,11 @@ msgstr "Again" msgid "All done for today!" msgstr "All done for today!" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:95 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:137 msgid "An Arabic definition of the word." msgstr "An Arabic definition of the word." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:216 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:258 msgid "An English translation of the sentence." msgstr "An English translation of the sentence." @@ -220,7 +220,7 @@ msgstr "An English translation of the word." msgid "An unexpected error occurred. You can try reloading the page to fix it." msgstr "An unexpected error occurred. You can try reloading the page to fix it." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:99 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:101 msgid "Annual — $7/mo" msgstr "Annual — $7/mo" @@ -231,7 +231,7 @@ msgid "Answer" msgstr "Answer" #. placeholder {0}: index + 1 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:300 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:385 msgid "Antonym {0}" msgstr "Antonym {0}" @@ -240,7 +240,7 @@ msgstr "Antonym {0}" msgid "Antonym word" msgstr "Antonym word" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:288 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:373 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:555 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:665 msgid "Antonyms" @@ -255,7 +255,7 @@ msgstr "Any additional details about this form such as frequency of usage or con msgid "Any plural forms of the word." msgstr "Any plural forms of the word." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:419 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:426 msgid "Any words that have the same ID will be overwritten." msgstr "Any words that have the same ID will be overwritten." @@ -263,7 +263,7 @@ msgstr "Any words that have the same ID will be overwritten." msgid "App language" msgstr "App language" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:199 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:206 #: ../../apps/mobile/src/app/(search)/settings.tsx:236 msgid "Appearance" msgstr "Appearance" @@ -296,7 +296,7 @@ msgstr "Arabic word" msgid "Are you sure you want to delete \"{0}\"?" msgstr "Are you sure you want to delete \"{0}\"?" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:140 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:147 msgid "Are you sure you want to delete this word? It will be removed from your dictionary and its flashcards will be deleted.<0/><1/><2>This action cannot be undone." msgstr "Are you sure you want to delete this word? It will be removed from your dictionary and its flashcards will be deleted.<0/><1/><2>This action cannot be undone." @@ -304,16 +304,28 @@ msgstr "Are you sure you want to delete this word? It will be removed from your msgid "Are you sure you want to delete this word? This action cannot be undone." msgstr "Are you sure you want to delete this word? This action cannot be undone." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:496 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:503 msgid "Are you sure you want to delete your dictionary? All your words will be deleted permanently. This action cannot be undone. Please make sure to export your dictionary before deleting it." msgstr "Are you sure you want to delete your dictionary? All your words will be deleted permanently. This action cannot be undone. Please make sure to export your dictionary before deleting it." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:88 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:95 msgid "Are you sure you want to reset this flashcard's progress? The word entry in the dictionary will not be modified, but its corresponding flashcards will be treated as new ones.<0/><1/><2>This action cannot be undone." msgstr "Are you sure you want to reset this flashcard's progress? The word entry in the dictionary will not be modified, but its corresponding flashcards will be treated as new ones.<0/><1/><2>This action cannot be undone." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:216 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:74 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:485 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:538 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:325 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:382 +msgid "Autofill" +msgstr "Autofill" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:367 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:209 +msgid "Autofill failed" +msgstr "Autofill failed" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:223 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:82 msgid "Back" msgstr "Back" @@ -347,24 +359,24 @@ msgstr "Basic Details" msgid "BETA" msgstr "BETA" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:111 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:113 msgid "Billed $84/year" msgstr "Billed $84/year" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:86 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:88 msgid "Billed monthly" msgstr "Billed monthly" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:39 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:41 msgid "Billing" msgstr "Billing" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:159 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:164 msgid "By signing in, you agree to our <0>Privacy Policy" msgstr "By signing in, you agree to our <0>Privacy Policy" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:514 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:594 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:521 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:601 #: ../../apps/mobile/src/app/(search)/settings.tsx:128 #: ../../apps/mobile/src/app/(search)/decks.tsx:283 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:995 @@ -415,7 +427,7 @@ msgstr "Clear backlog" #~ msgid "Clearing..." #~ msgstr "Clearing..." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:217 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:224 msgid "Color theme" msgstr "Color theme" @@ -423,7 +435,7 @@ msgstr "Color theme" msgid "Contact support" msgstr "Contact support" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:231 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:273 msgid "Context" msgstr "Context" @@ -432,7 +444,7 @@ msgstr "Context" msgid "Continue" msgstr "Continue" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:137 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:142 #: ../../apps/mobile/src/app/(auth)/login.tsx:105 msgid "Continue with Email" msgstr "Continue with Email" @@ -478,7 +490,7 @@ msgstr "Create Deck" msgid "Create your first deck" msgstr "Create your first deck" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:51 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:53 msgid "Current plan" msgstr "Current plan" @@ -486,7 +498,7 @@ msgstr "Current plan" msgid "Customize how flashcards appear." msgstr "Customize how flashcards appear." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:203 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:210 msgid "Customize how the application looks for you." msgstr "Customize how the application looks for you." @@ -499,7 +511,7 @@ msgstr "Danger Zone" msgid "Dark" msgstr "Dark" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:530 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:537 msgid "Debugging" msgstr "Debugging" @@ -549,17 +561,17 @@ msgid "Default" msgstr "Default" #: ../../apps/web/src/components/search/InfiniteScroll.tsx:138 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:81 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:123 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:117 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:444 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:554 msgid "Definition" msgstr "Definition" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:485 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:508 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:129 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:161 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:492 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:515 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:136 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:168 #: ../../apps/web/src/routes/_authorized-layout/_app-layout/decks/route.lazy.tsx:207 #: ../../apps/mobile/src/app/(search)/decks.tsx:285 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:393 @@ -582,7 +594,7 @@ msgstr "Delete Dictionary" msgid "Delete Everything" msgstr "Delete Everything" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:136 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:143 msgid "Delete this word?" msgstr "Delete this word?" @@ -590,7 +602,7 @@ msgstr "Delete this word?" msgid "Delete word" msgstr "Delete word" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:492 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:499 msgid "Delete your dictionary?" msgstr "Delete your dictionary?" @@ -607,7 +619,7 @@ msgstr "Details" msgid "Details:" msgstr "Details:" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:234 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:241 msgid "Dictionary" msgstr "Dictionary" @@ -619,8 +631,8 @@ msgstr "Dictionary deleted" msgid "Diptote" msgstr "Diptote" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:194 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:221 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:348 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:420 msgid "Discard" msgstr "Discard" @@ -653,7 +665,7 @@ msgstr "Easy" msgid "Edit" msgstr "Edit" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:188 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:195 msgid "Edit {word}" msgstr "Edit {word}" @@ -674,7 +686,7 @@ msgstr "Edit your deck" msgid "Edit your deck by choosing filters. The deck will be composed of the cards that match the filters." msgstr "Edit your deck by choosing filters. The deck will be composed of the cards that match the filters." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:111 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:116 #: ../../apps/mobile/src/app/(auth)/login.tsx:68 msgid "Email" msgstr "Email" @@ -716,46 +728,46 @@ msgid "Entry {arrayIndex}" msgstr "Entry {arrayIndex}" #. placeholder {0}: index + 1 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:166 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:208 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:499 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:609 msgid "Example {0}" msgstr "Example {0}" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:158 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:200 msgid "Example usages of the word in different contexts." msgstr "Example usages of the word in different contexts." #: ../../apps/web/src/components/search/InfiniteScroll.tsx:292 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:154 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:196 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:262 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:490 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:600 msgid "Examples" msgstr "Examples" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:429 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:465 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:436 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:472 msgid "Export" msgstr "Export" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:122 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:129 msgid "Export completed with issues" msgstr "Export completed with issues" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:132 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:139 msgid "Export failed!" msgstr "Export failed!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:473 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:480 msgid "Export with flashcards" msgstr "Export with flashcards" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:436 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:443 msgid "Export your dictionary" msgstr "Export your dictionary" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:440 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:447 msgid "Exporting dictionary with flaschards will save your flashcard progress along with all the content in your dictionary. Use this option if you want to make a backup of your data.<0/><1/>Exporting your dictionary without flashcards will not save any flashcard progress. Use this option if you want to share your dictionary.<2/><3/><4>Warning: Importing your file without flashcards will reset all of your flashcards." msgstr "Exporting dictionary with flaschards will save your flashcard progress along with all the content in your dictionary. Use this option if you want to make a backup of your data.<0/><1/>Exporting your dictionary without flashcards will not save any flashcard progress. Use this option if you want to share your dictionary.<2/><3/><4>Warning: Importing your file without flashcards will reset all of your flashcards." @@ -771,7 +783,7 @@ msgstr "Expression" msgid "Failed to add word" msgstr "Failed to add word" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:165 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:177 msgid "Failed to add word!" msgstr "Failed to add word!" @@ -799,11 +811,15 @@ msgstr "Failed to delete dictionary" msgid "Failed to delete word" msgstr "Failed to delete word" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:172 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:179 msgid "Failed to delete!" msgstr "Failed to delete!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:581 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:90 +msgid "Failed to generate example" +msgstr "Failed to generate example" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:588 msgid "Failed to reset local data" msgstr "Failed to reset local data" @@ -827,7 +843,7 @@ msgstr "Failed to update flashcard settings." msgid "Failed to update settings" msgstr "Failed to update settings" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:330 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:341 msgid "Failed to update the word!" msgstr "Failed to update the word!" @@ -852,6 +868,13 @@ msgstr "Feminine" msgid "Fi'l" msgstr "Fi'l" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:498 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:551 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:338 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:395 +msgid "Fill in the word, translation, and type first." +msgstr "Fill in the word, translation, and type first." + #: ../../apps/web/src/components/features/dictionary/filters/TagsFilter.tsx:51 msgid "Filter by tags..." msgstr "Filter by tags..." @@ -888,7 +911,7 @@ msgstr "For example, the word" msgid "Form" msgstr "Form" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:25 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:30 msgid "Free" msgstr "Free" @@ -900,7 +923,19 @@ msgstr "Free" msgid "Gender" msgstr "Gender" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:155 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:355 +msgid "Generate example" +msgstr "Generate example" + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:483 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:536 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:323 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:380 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:353 +msgid "Generating..." +msgstr "Generating..." + +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:160 #: ../../apps/mobile/src/components/GithubLoginButton.tsx:24 msgid "GitHub" msgstr "GitHub" @@ -910,7 +945,7 @@ msgstr "GitHub" msgid "Go back" msgstr "Go back" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:36 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:44 msgid "Go to dictionary" msgstr "Go to dictionary" @@ -961,8 +996,8 @@ msgstr "Hide filters" msgid "Hint" msgstr "Hint" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:179 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:39 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:186 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:47 #: ../../apps/web/src/components/MobileHeader.tsx:154 #: ../../apps/web/src/components/DesktopNavigation.tsx:53 #: ../../apps/web/src/components/DesktopNavigation.tsx:59 @@ -992,7 +1027,7 @@ msgstr "ID:" msgid "if needed." msgstr "if needed." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:534 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:541 msgid "If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server." msgstr "If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server." @@ -1004,12 +1039,12 @@ msgstr "If you're experiencing sync issues or data not loading correctly, you ca msgid "Imperative" msgstr "Imperative" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:393 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:400 msgid "Import" msgstr "Import" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:365 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:371 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:372 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:378 msgid "Import failed!" msgstr "Import failed!" @@ -1017,7 +1052,7 @@ msgstr "Import failed!" msgid "Include English to Arabic flashcards" msgstr "Include English to Arabic flashcards" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:253 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:260 msgid "Incorrect file type" msgstr "Incorrect file type" @@ -1031,7 +1066,7 @@ msgstr "Indeclinable" msgid "Inflection" msgstr "Inflection" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:67 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:109 msgid "Information such as the word's root, meaning, and examples." msgstr "Information such as the word's root, meaning, and examples." @@ -1063,7 +1098,7 @@ msgstr "Invalid value. Expected one of: {0}" msgid "Ism" msgstr "Ism" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:224 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:231 #: ../../apps/mobile/src/app/(search)/settings.tsx:258 msgid "Language" msgstr "Language" @@ -1090,7 +1125,7 @@ msgstr "Loading..." #~ msgid "Local data reset successfully!" #~ msgstr "Local data reset successfully!" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:93 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:98 #: ../../apps/mobile/src/app/(auth)/login.tsx:63 msgid "Log in to your existing account or sign up for a new one" msgstr "Log in to your existing account or sign up for a new one" @@ -1101,7 +1136,7 @@ msgstr "Log in to your existing account or sign up for a new one" msgid "Logout" msgstr "Logout" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:61 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:63 msgid "Manage Subscription" msgstr "Manage Subscription" @@ -1109,11 +1144,11 @@ msgstr "Manage Subscription" msgid "Manage your decks and study them." msgstr "Manage your decks and study them." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:238 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:245 msgid "Manage your dictionary." msgstr "Manage your dictionary." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:43 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:45 msgid "Manage your subscription." msgstr "Manage your subscription." @@ -1154,7 +1189,7 @@ msgstr "Menu" msgid "Migration successfully registered." msgstr "Migration successfully registered." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:82 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:84 msgid "Monthly — $10/mo" msgstr "Monthly — $10/mo" @@ -1227,7 +1262,7 @@ msgstr "Noun" msgid "Noun Morphology" msgstr "Noun Morphology" -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:149 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:154 #: ../../apps/mobile/src/app/(auth)/login.tsx:111 msgid "Or continue with" msgstr "Or continue with" @@ -1272,11 +1307,11 @@ msgstr "Please contact <0>support with the following details:" msgid "Please enter a deck name" msgstr "Please enter a deck name" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:254 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:261 msgid "Please select a JSON file with your dictionary." msgstr "Please select a JSON file with your dictionary." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:582 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:589 msgid "Please try again or reload the page." msgstr "Please try again or reload the page." @@ -1287,6 +1322,12 @@ msgstr "Please try again or reload the page." msgid "Please try again." msgstr "Please try again." +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:364 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:206 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:87 +msgid "Please wait before trying again." +msgstr "Please wait before trying again." + #: ../../apps/web/src/components/search/InfiniteScroll.tsx:188 #: ../../apps/mobile/src/components/dictionary/DictionaryEntryCard.tsx:159 msgid "Plural" @@ -1337,10 +1378,16 @@ msgstr "Present tense" msgid "Present Tense" msgstr "Present Tense" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:23 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:27 msgid "Pro" msgstr "Pro" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:363 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:205 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:86 +msgid "Rate limit reached" +msgstr "Rate limit reached" + #: ../../apps/web/src/components/features/dictionary/filters/DictionaryFilters.tsx:36 msgid "Recently added" msgstr "Recently added" @@ -1364,8 +1411,8 @@ msgstr "Reload" #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:251 #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:408 #: ../../apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx:183 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:263 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:337 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:305 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:422 msgid "Remove" msgstr "Remove" @@ -1377,28 +1424,28 @@ msgstr "Required field" msgid "Reschedule all backlog cards by grading them as \"Hard\"." msgstr "Reschedule all backlog cards by grading them as \"Hard\"." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:588 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:595 msgid "Reset and re-sync" msgstr "Reset and re-sync" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:77 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:111 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:84 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:118 msgid "Reset flashcard" msgstr "Reset flashcard" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:84 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:91 msgid "Reset flashcard progress?" msgstr "Reset flashcard progress?" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:546 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:553 msgid "Reset local data" msgstr "Reset local data" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:553 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:560 msgid "Reset local data and re-sync?" msgstr "Reset local data and re-sync?" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:186 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:193 msgid "Resetting local data..." msgstr "Resetting local data..." @@ -1429,7 +1476,7 @@ msgstr "Review flashcards with spaced repetition" msgid "Review your Arabic flashcards and grade your understanding with Again, Hard, Good, or Easy options to adjust scheduling." msgstr "Review your Arabic flashcards and grade your understanding with Again, Hard, Good, or Easy options to adjust scheduling." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:120 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:162 msgid "Root letters" msgstr "Root letters" @@ -1438,17 +1485,17 @@ msgstr "Root letters" msgid "Root Letters" msgstr "Root Letters" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:356 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:385 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:199 -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:226 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:509 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:583 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:353 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:425 #: ../../apps/web/src/components/features/settings/FlashcardSettingsCardSection.tsx:232 #: ../../apps/web/src/components/features/settings/AdminSettingsCardSection.tsx:146 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:1005 msgid "Save" msgstr "Save" -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:105 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:107 msgid "Save 30%" msgstr "Save 30%" @@ -1504,7 +1551,7 @@ msgstr "Select the types of words that you want to include in the deck." msgid "Select type" msgstr "Select type" -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:176 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:218 msgid "Sentence" msgstr "Sentence" @@ -1513,7 +1560,7 @@ msgstr "Sentence" msgid "Separate letters with spaces or commas" msgstr "Separate letters with spaces or commas" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:193 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:200 #: ../../apps/web/src/components/MobileHeader.tsx:178 #: ../../apps/web/src/components/DesktopNavigation.tsx:107 #: ../../apps/mobile/src/app/(search)/settings.tsx:175 @@ -1569,6 +1616,12 @@ msgstr "Some dictionary entries couldn't be loaded" msgid "Something went wrong" msgstr "Something went wrong" +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:368 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:210 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:91 +msgid "Something went wrong. Please try again." +msgstr "Something went wrong. Please try again." + #: ../../apps/web/src/components/features/dictionary/filters/DictionaryFilters.tsx:161 msgid "Sort by" msgstr "Sort by" @@ -1585,27 +1638,27 @@ msgstr "Still not working?" msgid "Study" msgstr "Study" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:157 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:169 msgid "Successfully added word!" msgstr "Successfully added word!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:166 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:173 msgid "Successfully deleted!" msgstr "Successfully deleted!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:126 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:133 msgid "Successfully exported!" msgstr "Successfully exported!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:342 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:349 msgid "Successfully imported!" msgstr "Successfully imported!" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:106 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:113 msgid "Successfully reset the flashcard." msgstr "Successfully reset the flashcard." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:322 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:333 msgid "Successfully updated the word!" msgstr "Successfully updated the word!" @@ -1629,7 +1682,7 @@ msgstr "System" msgid "Tags" msgstr "Tags" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:26 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:34 msgid "Thank you for subscribing to Bahar Pro. You now have access to all Pro features." msgstr "Thank you for subscribing to Bahar Pro. You now have access to all Pro features." @@ -1652,7 +1705,7 @@ msgstr "That is not valid JSON." msgid "The app may be open in another tab. Try closing other tabs and refreshing this page." msgstr "The app may be open in another tab. Try closing other tabs and refreshing this page." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:245 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:287 msgid "The context of the sentence, ex. formal or colloquial." msgstr "The context of the sentence, ex. formal or colloquial." @@ -1681,24 +1734,24 @@ msgstr "The meaning of the verb when used with the harf." msgid "The morphological breakdown of the word." msgstr "The morphological breakdown of the word." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:135 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:177 msgid "The root letters of the word. The input can be separated by commas, spaces or have no delimeter ex. فعل or ف, ع, ل or ف ع ل." msgstr "The root letters of the word. The input can be separated by commas, spaces or have no delimeter ex. فعل or ف, ع, ل or ف ع ل." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:158 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:170 msgid "The word has been added to your dictionary." msgstr "The word has been added to your dictionary." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:323 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:334 msgid "The word has been updated." msgstr "The word has been updated." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:210 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:217 #: ../../apps/mobile/src/app/(search)/settings.tsx:243 msgid "Theme" msgstr "Theme" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:166 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:178 msgid "There was an error adding your word. Please try again." msgstr "There was an error adding your word. Please try again." @@ -1710,15 +1763,15 @@ msgstr "There was an error clearing your backlog." msgid "There was an error creating the deck" msgstr "There was an error creating the deck" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:173 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:180 msgid "There was an error deleting your dictionary. Please try again later." msgstr "There was an error deleting your dictionary. Please try again later." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:133 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:140 msgid "There was an error exporting your dictionary. Please try again later." msgstr "There was an error exporting your dictionary. Please try again later." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:372 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:379 msgid "There was an error importing your dictionary. Please try again later." msgstr "There was an error importing your dictionary. Please try again later." @@ -1742,7 +1795,7 @@ msgstr "There was an error updating the deck" msgid "There was an error updating your flashcard settings." msgstr "There was an error updating your flashcard settings." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:331 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:342 msgid "There was an error updating your word. Please try again." msgstr "There was an error updating your word. Please try again." @@ -1773,7 +1826,7 @@ msgstr "There's a temporary issue loading your account. Please try reloading the msgid "This field is required." msgstr "This field is required." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:119 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:124 #: ../../apps/mobile/src/app/(auth)/login.tsx:94 msgid "This is case insensitive." msgstr "This is case insensitive." @@ -1786,7 +1839,7 @@ msgstr "This is the name of your deck." msgid "This refers to how many case endings the word can take." msgstr "This refers to how many case endings the word can take." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:557 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:564 msgid "This will delete the local copy of your data stored in this browser and download a fresh copy from the server. Your data on the server will not be affected. Use this if you're experiencing sync errors or seeing outdated data." msgstr "This will delete the local copy of your data stored in this browser and download a fresh copy from the server. Your data on the server will not be affected. Use this if you're experiencing sync errors or seeing outdated data." @@ -1815,7 +1868,7 @@ msgid "Total" msgstr "Total" #: ../../apps/web/src/components/features/dictionary/add/BasicDetailsFormSection.tsx:64 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:202 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:244 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:381 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:491 msgid "Translation" @@ -1857,10 +1910,21 @@ msgstr "Unable to connect to remote database." msgid "Unknown error." msgstr "Unknown error." -#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:69 +#: ../../apps/web/src/components/features/settings/BillingSettingsCard.tsx:71 msgid "Upgrade to Pro" msgstr "Upgrade to Pro" +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:363 +msgid "Upgrade to Pro to generate examples." +msgstr "Upgrade to Pro to generate examples." + +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:493 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/edit/$wordId.tsx:546 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:333 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/dictionary/add/route.lazy.tsx:390 +msgid "Upgrade to Pro to use AI autofill." +msgstr "Upgrade to Pro to use AI autofill." + #. placeholder {0}: String(err.minimum) #: ../../apps/web/src/lib/error.ts:128 msgid "Value must be {0} or greater" @@ -1913,7 +1977,7 @@ msgstr "We can't reach our servers right now. Check your connection and try agai msgid "We're having trouble with your account setup. Please try again." msgstr "We're having trouble with your account setup. Please try again." -#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:89 +#: ../../apps/web/src/routes/_unauthorized-layout/login/route.lazy.tsx:94 #: ../../apps/mobile/src/app/(auth)/login.tsx:59 msgid "Welcome to Bahar!" msgstr "Welcome to Bahar!" @@ -1921,7 +1985,7 @@ msgstr "Welcome to Bahar!" #: ../../apps/web/src/components/features/dictionary/add/VerbMorphologyCardSection.tsx:192 #: ../../apps/web/src/components/features/dictionary/add/IsmMorphologyCardSection.tsx:125 #: ../../apps/web/src/components/features/dictionary/add/BasicDetailsFormSection.tsx:40 -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:310 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:395 #: ../../apps/mobile/src/app/(search)/(home)/add-word.tsx:357 #: ../../apps/mobile/src/app/(search)/(home)/edit-word/[id].tsx:467 msgid "Word" @@ -1947,7 +2011,7 @@ msgstr "Word updated successfully" msgid "Words that have any of these tags will be included in the deck." msgstr "Words that have any of these tags will be included in the deck." -#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:292 +#: ../../apps/web/src/components/features/dictionary/add/AdditionalDetailsFormSection.tsx:377 msgid "Words that have the opposite meaning." msgstr "Words that have the opposite meaning." @@ -1968,7 +2032,7 @@ msgstr "You have no decks yet." msgid "You have no words in your dictionary yet." msgstr "You have no words in your dictionary yet." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:22 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/checkout-success/route.lazy.tsx:30 msgid "You're all set!" msgstr "You're all set!" @@ -1993,15 +2057,15 @@ msgstr "Your deck was not updated. Please try again." msgid "Your Dictionary" msgstr "Your Dictionary" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:167 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:174 msgid "Your dictionary has been deleted." msgstr "Your dictionary has been deleted." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:127 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:134 msgid "Your dictionary has been downloaded." msgstr "Your dictionary has been downloaded." -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:343 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:350 msgid "Your dictionary has been updated!" msgstr "Your dictionary has been updated!" @@ -2009,7 +2073,7 @@ msgstr "Your dictionary has been updated!" msgid "Your dictionary is empty" msgstr "Your dictionary is empty" -#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:366 +#: ../../apps/web/src/routes/_authorized-layout/_app-layout/settings/route.lazy.tsx:373 msgid "Your dictionary is not valid. Please fix the errors and upload it again." msgstr "Your dictionary is not valid. Please fix the errors and upload it again." diff --git a/packages/i18n/locales/en.ts b/packages/i18n/locales/en.ts index 62333749..c4b08553 100644 --- a/packages/i18n/locales/en.ts +++ b/packages/i18n/locales/en.ts @@ -1 +1 @@ -/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"Wg0uLA\":[[\"0\",\"plural\",{\"one\":[\"#\",\" tag selected\"],\"other\":[\"#\",\" tags selected\"]}]],\"5rgLzy\":[[\"0\",\"plural\",{\"one\":[\"card left\"],\"other\":[\"cards left\"]}]],\"/hTM9k\":[[\"0\"],\" / \",[\"1\"],\" batches\"],\"mHye52\":[[\"0\"],\" / \",[\"1\"],\" cards\"],\"baIPh3\":[[\"0\"],\" cards due\"],\"beWT44\":[[\"0\"],\" cards have been rescheduled.\"],\"JJcBCm\":[[\"0\"],\" total\"],\"JtTuS0\":[[\"hydrationSkippedCount\",\"plural\",{\"one\":[\"#\",\" entry was skipped due to data issues. Your data is preserved, but you won't be able to search for the entry that wasn't loaded.\"],\"other\":[\"#\",\" entries were skipped due to data issues. Your data is preserved, but you won't be able to search for any entries that weren't loaded.\"]}]],\"UGMDWm\":[[\"skippedCount\"],\" entries were skipped due to data corruption.\"],\"gp8eDB\":[[\"totalHits\",\"plural\",{\"one\":[\"result\"],\"other\":[\"results\"]}]],\"QSRKsm\":[[\"totalResults\",\"plural\",{\"one\":[[\"totalResults\"],\" result\"],\"other\":[[\"totalResults\"],\" results\"]}]],\"gD09hk\":[[\"val\",\"plural\",{\"one\":[\"Cannot exceed \",\"#\",\" character\"],\"other\":[\"Cannot exceed \",\"#\",\" characters\"]}]],\"I1sa5o\":[[\"val\",\"plural\",{\"one\":[\"Must be at least \",\"#\",\" character\"],\"other\":[\"Must be at least \",\"#\",\" characters\"]}]],\"WWcbHw\":[\"A noun, adjective, adverb or pronoun, and anything that is not a verb or preposition.\"],\"ZQW2PY\":[\"A preposition or conjunction.\"],\"0iy5O2\":[\"A verb.\"],\"7L01XJ\":[\"Actions\"],\"DQqXHw\":[\"Active participle\"],\"AwJc6G\":[\"Active Participle\"],\"rJwPkp\":[\"Add a new SQL migration.\"],\"t89Ong\":[\"Add a new word\"],\"L18Pbl\":[\"Add a new word to your dictionary\"],\"TYPFtT\":[\"Add a tag and press enter\"],\"iJMhp0\":[\"Add all\"],\"nPm6bB\":[\"Add antonym\"],\"jVmrwy\":[\"Add Antonym\"],\"1x4W9u\":[\"Add example\"],\"nI3A8B\":[\"Add Example\"],\"gLlFHX\":[\"Add harf\"],\"aLEtgY\":[\"Add Harf\"],\"Tcbo6a\":[\"Add Masdar\"],\"vKbErK\":[\"Add plural\"],\"SNF/r2\":[\"Add Plural\"],\"cR1WUS\":[\"Add some to get started!\"],\"Oft+Pb\":[\"Add some words to get started!\"],\"Xls3A3\":[\"Add tag \",[\"inputValue\"]],\"VMjLu6\":[\"Add tag \",[\"value\"]],\"uF1GKn\":[\"Add tags to your word.\"],\"bDXmnN\":[\"Add word\"],\"p59pEv\":[\"Additional Details\"],\"b/7DUT\":[\"Again\"],\"KK8UsT\":[\"All done for today!\"],\"7Qi3W5\":[\"An Arabic definition of the word.\"],\"Y/gBMP\":[\"An English translation of the sentence.\"],\"jalxln\":[\"An English translation of the word.\"],\"hyC+qY\":[\"An unexpected error occurred. You can try reloading the page to fix it.\"],\"Fl8owW\":[\"Annual — $7/mo\"],\"4xBHUg\":[\"Answer\"],\"vQXp82\":[\"Antonym \",[\"0\"]],\"o9dJs3\":[\"Antonym word\"],\"Hvs4LI\":[\"Antonyms\"],\"p1Kh9a\":[\"Any additional details about this form such as frequency of usage or context.\"],\"9kni2/\":[\"Any plural forms of the word.\"],\"2PPE7k\":[\"Any words that have the same ID will be overwritten.\"],\"cnAqww\":[\"App language\"],\"aAIQg2\":[\"Appearance\"],\"8HV3WN\":[\"Arabic\"],\"LNIQwr\":[\"Arabic definition\"],\"uKmc5K\":[\"Arabic sentence\"],\"wxIhw3\":[\"Arabic verb form\"],\"071WZA\":[\"Arabic word\"],\"pkD36F\":[\"Are you sure you want to delete \\\"\",[\"0\"],\"\\\"?\"],\"DOiV7q\":[\"Are you sure you want to delete this word? It will be removed from your dictionary and its flashcards will be deleted.<0/><1/><2>This action cannot be undone.\"],\"2cZh44\":[\"Are you sure you want to delete this word? This action cannot be undone.\"],\"ikBPhc\":[\"Are you sure you want to delete your dictionary? All your words will be deleted permanently. This action cannot be undone. Please make sure to export your dictionary before deleting it.\"],\"IJr17L\":[\"Are you sure you want to reset this flashcard's progress? The word entry in the dictionary will not be modified, but its corresponding flashcards will be treated as new ones.<0/><1/><2>This action cannot be undone.\"],\"iH8pgl\":[\"Back\"],\"0MgdN+\":[\"Back to top\"],\"KNKCTb\":[\"Backlog\"],\"Fg+fNW\":[\"Backlog cleared!\"],\"vMebS2\":[\"Bahar\"],\"EOUool\":[\"Basic Details\"],\"cSCbv3\":[\"BETA\"],\"t/5uBV\":[\"Billed $84/year\"],\"aIkeAd\":[\"Billed monthly\"],\"R+w/Va\":[\"Billing\"],\"OKWk8n\":[\"By signing in, you agree to our <0>Privacy Policy\"],\"dEgA5A\":[\"Cancel\"],\"oySfhX\":[\"Cards due today or recently\"],\"uV52e1\":[\"Cards overdue by more than 7 days\"],\"zAwyRS\":[\"Cards to review today\"],\"K7tIrx\":[\"Category\"],\"qWRWG1\":[\"Cause:\"],\"+yPBXI\":[\"Choose file\"],\"xCJdfg\":[\"Clear\"],\"ot7qsv\":[\"Clear all filters\"],\"saoOio\":[\"Clear backlog\"],\"Oo39Ga\":[\"Clearing...\"],\"rFmBG3\":[\"Color theme\"],\"mpby9d\":[\"Contact support\"],\"M73whl\":[\"Context\"],\"xGVfLh\":[\"Continue\"],\"RvVi9c\":[\"Continue with Email\"],\"NMo6Pj\":[\"Control where antonyms appear during review\"],\"PiH3UR\":[\"Copied!\"],\"he3ygx\":[\"Copy\"],\"hYgDIe\":[\"Create\"],\"oJc/nD\":[\"Create a deck to organize your flashcard reviews\"],\"wxDqxy\":[\"Create a new deck\"],\"oQH8Kl\":[\"Create a new deck by choosing filters. The deck will be composed of the cards that match the filters.\"],\"l7kxcE\":[\"Create deck\"],\"g/Uxjl\":[\"Create Deck\"],\"1m75Ii\":[\"Create your first deck\"],\"A+zoTy\":[\"Current plan\"],\"PQ2zPy\":[\"Customize how flashcards appear.\"],\"P+gzBQ\":[\"Customize how the application looks for you.\"],\"ZQKLI1\":[\"Danger Zone\"],\"pvnfJD\":[\"Dark\"],\"Wf+eYa\":[\"Debugging\"],\"LUfCYM\":[\"Deck created\"],\"sHVysr\":[\"Deck deleted\"],\"UzOd8J\":[\"Deck Name\"],\"iJA/GX\":[\"Deck successfully created!\"],\"M+Nngk\":[\"Deck successfully deleted!\"],\"NVQRbB\":[\"Deck successfully updated!\"],\"WWDML8\":[\"Deck updated\"],\"9TyPfF\":[\"Decks\"],\"iUt5VS\":[\"Decks allow you to create subsets of your existing flashcards by using filters on your dictionary which you can then study individually.\"],\"ovBPCi\":[\"Default\"],\"MbRyzp\":[\"Definition\"],\"cnGeoo\":[\"Delete\"],\"CYf/wo\":[\"Delete All Data\"],\"G6sE0d\":[\"Delete Deck\"],\"fWNrfJ\":[\"Delete Dictionary\"],\"Xpcev7\":[\"Delete Everything\"],\"pe67wL\":[\"Delete this word?\"],\"VEQ9bX\":[\"Delete word\"],\"/GZNuU\":[\"Delete your dictionary?\"],\"Nu4oKW\":[\"Description\"],\"URmyfc\":[\"Details\"],\"wjSthp\":[\"Details:\"],\"VrH1k+\":[\"Dictionary\"],\"RPYrAz\":[\"Dictionary deleted\"],\"460RzB\":[\"Diptote\"],\"bzSI52\":[\"Discard\"],\"1QfxQT\":[\"Dismiss\"],\"Nwbs0q\":[\"Don't show\"],\"xifE4+\":[\"Dual\"],\"jSxAVI\":[\"e.g. ك ت ب\"],\"Pqhtap\":[\"Easy\"],\"ePK91l\":[\"Edit\"],\"nZQfan\":[\"Edit \",[\"word\"]],\"4cP5gy\":[\"Edit Deck\"],\"AN/oWt\":[\"Edit word\"],\"IQ6Efp\":[\"Edit your deck\"],\"FEct+T\":[\"Edit your deck by choosing filters. The deck will be composed of the cards that match the filters.\"],\"O3oNi5\":[\"Email\"],\"lYGfRP\":[\"English\"],\"7MHe6P\":[\"English translation\"],\"Ac92c9\":[\"Enter a deck name\"],\"ot6UAQ\":[\"Enter a description for your migration\"],\"shwNsK\":[\"Enter deck name\"],\"BTF0Gj\":[\"Enter your 6-digit code from your email\"],\"ojjQlT\":[\"Enter your SQL migration script here\"],\"CA1DlQ\":[\"Entry \",[\"arrayIndex\"]],\"Af6M/a\":[\"Example \",[\"0\"]],\"oea1as\":[\"Example usages of the word in different contexts.\"],\"hFthoo\":[\"Examples\"],\"GS+Mus\":[\"Export\"],\"Mk2MqX\":[\"Export completed with issues\"],\"XydOn5\":[\"Export failed!\"],\"FAMOg+\":[\"Export with flashcards\"],\"HynDdB\":[\"Export your dictionary\"],\"cQ+n9e\":[\"Exporting dictionary with flaschards will save your flashcard progress along with all the content in your dictionary. Use this option if you want to make a backup of your data.<0/><1/>Exporting your dictionary without flashcards will not save any flashcard progress. Use this option if you want to share your dictionary.<2/><3/><4>Warning: Importing your file without flashcards will reset all of your flashcards.\"],\"1JBTZV\":[\"Expression\"],\"GiPSsF\":[\"Failed to add word\"],\"zABpXD\":[\"Failed to add word!\"],\"NcBoUU\":[\"Failed to apply migration to local database.\"],\"eN1Tfn\":[\"Failed to clear backlog\"],\"7hUTxx\":[\"Failed to create deck\"],\"Fr4iT6\":[\"Failed to delete deck\"],\"GCd4Bz\":[\"Failed to delete dictionary\"],\"KLMMnR\":[\"Failed to delete word\"],\"cncTzY\":[\"Failed to delete!\"],\"usb0iv\":[\"Failed to reset local data\"],\"dCD/3a\":[\"Failed to retrieve data from local database.\"],\"btG7GG\":[\"Failed to retrieve database information.\"],\"CBm+/w\":[\"Failed to update deck\"],\"gw2VAF\":[\"Failed to update flashcard settings.\"],\"tOcErW\":[\"Failed to update settings\"],\"X/iINj\":[\"Failed to update the word!\"],\"cnYJdR\":[\"Failed to update word\"],\"ixyKje\":[\"Failed to upload migration\"],\"1B52uC\":[\"Feminine\"],\"TUSnpz\":[\"Fi'l\"],\"YCAFdN\":[\"Filter by tags...\"],\"cSev+j\":[\"Filters\"],\"wG1Flg\":[\"Flashcard settings updated!\"],\"EiJpdz\":[\"Flashcards\"],\"hpt1Ta\":[\"Follows your device language\"],\"tR/FIC\":[\"Follows your system settings\"],\"q1hBIe\":[\"For example, the word\"],\"QRAWTO\":[\"Form\"],\"2POOFK\":[\"Free\"],\"5iyJje\":[\"Gender\"],\"RkXlPZ\":[\"GitHub\"],\"CKyk7Q\":[\"Go back\"],\"lUTqcW\":[\"Go to dictionary\"],\"OEEQKT\":[\"Good\"],\"VOwQ6g\":[\"Great work on the backlog! You still have \",[\"0\"],\" regular reviews.\"],\"Xv6Pek\":[\"Great work! Come back later for more reviews.\"],\"g5Fk5U\":[\"Hard\"],\"h4MDwq\":[\"Harf\"],\"IzmuJh\":[\"Harf \",[\"0\"]],\"D+zLDD\":[\"Hidden\"],\"VMlRqi\":[\"Hide details\"],\"QWNZbK\":[\"Hide filters\"],\"f+BFfG\":[\"Hint\"],\"i0qMbr\":[\"Home\"],\"q0alPy\":[\"How should antonyms be shown in flashcards?\"],\"af2WMF\":[\"How the word is categorized based on its type or context.\"],\"qGZ1pF\":[\"Huroof\"],\"7fIUBE\":[\"ID:\"],\"mU4ZuB\":[\"if needed.\"],\"eQI7A0\":[\"If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server.\"],\"wqQIcr\":[\"Imperative\"],\"l3s5ri\":[\"Import\"],\"5LwmgO\":[\"Import failed!\"],\"X85Lgt\":[\"Include English to Arabic flashcards\"],\"O1SPgK\":[\"Incorrect file type\"],\"bjwx3z\":[\"Indeclinable\"],\"d7G5eB\":[\"Inflection\"],\"IaZUGL\":[\"Information such as the word's root, meaning, and examples.\"],\"FP8ELf\":[\"Invalid datetime format\"],\"LpHyjF\":[\"Invalid string format\"],\"xVH/JG\":[\"Invalid type. Expected \",[\"0\"]],\"lBmlgJ\":[\"Invalid type. Expected \",[\"0\"],\", received \",[\"1\"]],\"5R5T/G\":[\"Invalid value. Expected one of: \",[\"0\"]],\"SK5zz1\":[\"Ism\"],\"vXIe7J\":[\"Language\"],\"1njn7W\":[\"Light\"],\"CZOrLB\":[\"Loading details...\"],\"LioGSK\":[\"Loading your dictionary...\"],\"Z3FXyt\":[\"Loading...\"],\"1bAISV\":[\"Local data reset successfully!\"],\"Od5n57\":[\"Log in to your existing account or sign up for a new one\"],\"nOhz3x\":[\"Logout\"],\"L9IOec\":[\"Manage Subscription\"],\"c1DM+0\":[\"Manage your decks and study them.\"],\"QUTgGW\":[\"Manage your dictionary.\"],\"4zd4U3\":[\"Manage your subscription.\"],\"U60v+9\":[\"Masadir\"],\"IPJKNz\":[\"Masculine\"],\"dLgiXX\":[\"Masdar\"],\"SXYWd/\":[\"Masdar \",[\"0\"]],\"6URaYg\":[\"Meaning\"],\"MYTK2T\":[\"Meaning with this preposition\"],\"zucql+\":[\"Menu\"],\"qGioCB\":[\"Migration successfully registered.\"],\"O+YlVk\":[\"Monthly — $10/mo\"],\"QI9AZD\":[\"More than \",[\"0\"],\" cards to review\"],\"yf87+x\":[\"Morphology\"],\"60xV9Y\":[\"Morphology only applies to isms and fi'ls. This section will be hidden if the type of the word is set to anything else.\"],\"qhwV2C\":[\"My Account\"],\"6YtxFj\":[\"Name\"],\"TizFpt\":[\"Navigation menu\"],\"TQ5Es1\":[\"No backlog cards to clear.\"],\"WAQMrN\":[\"No cards due\"],\"TkUliY\":[\"No decks yet\"],\"7+IHTZ\":[\"No file chosen\"],\"AxPAXW\":[\"No results found\"],\"vLuosE\":[\"No tags found.\"],\"Utp0Ef\":[\"Nord\"],\"tTu2yx\":[\"Noun\"],\"KfoKzr\":[\"Noun Morphology\"],\"zW+FpA\":[\"Or continue with\"],\"PMqWHy\":[\"Particle\"],\"UIYada\":[\"Passive participle\"],\"9wi5te\":[\"Passive Participle\"],\"Ff0Dor\":[\"Past\"],\"KkgkHx\":[\"Past tense\"],\"uiVVIw\":[\"Past Tense\"],\"VHWIM2\":[\"Permanently delete all your data including words, flashcards, and decks.\"],\"1OB0cV\":[\"Please contact <0>support with the following details:\"],\"HsEwwb\":[\"Please enter a deck name\"],\"nqOcNX\":[\"Please select a JSON file with your dictionary.\"],\"AXJfF/\":[\"Please try again or reload the page.\"],\"fuwKpE\":[\"Please try again.\"],\"BPig2P\":[\"Plural\"],\"K5KP2J\":[\"Plural \",[\"0\"]],\"zt7UFB\":[\"Plural form\"],\"u5SHG2\":[\"Plurals\"],\"go9eTo\":[\"Preposition\"],\"JuM71B\":[\"Prepositions (Huroof)\"],\"0Of985\":[\"Prepositions (huroof) that can be used with the verb to change its meaning.\"],\"eZb+lw\":[\"Present\"],\"24cT5U\":[\"Present tense\"],\"6Kwq+n\":[\"Present Tense\"],\"3fPjUY\":[\"Pro\"],\"0DYtlD\":[\"Recently added\"],\"X5P6yv\":[\"Recently updated\"],\"uabU9X\":[\"Recently used\"],\"7dZnmw\":[\"Relevance\"],\"HpK/8d\":[\"Reload\"],\"t/YqKh\":[\"Remove\"],\"8dg+Yo\":[\"Required field\"],\"+7Cebq\":[\"Reschedule all backlog cards by grading them as \\\"Hard\\\".\"],\"ly/6zq\":[\"Reset and re-sync\"],\"vWTWiR\":[\"Reset flashcard\"],\"7HeQ9b\":[\"Reset flashcard progress?\"],\"2ma9vI\":[\"Reset local data\"],\"lLVyir\":[\"Reset local data and re-sync?\"],\"K/RS6y\":[\"Resetting local data...\"],\"QFtnWs\":[\"Reverse flashcards\"],\"5k0NLb\":[\"Review\"],\"nqtnG9\":[\"Review flashcards\"],\"HtzuX3\":[\"Review flashcards (\",[\"0\"],\" in backlog)\"],\"TbJrZ9\":[\"Review flashcards with spaced repetition\"],\"05OIsb\":[\"Review your Arabic flashcards and grade your understanding with Again, Hard, Good, or Easy options to adjust scheduling.\"],\"cbGyYK\":[\"Root letters\"],\"qMVAMv\":[\"Root Letters\"],\"tfDRzk\":[\"Save\"],\"JAxBTB\":[\"Save 30%\"],\"y3aU20\":[\"Save changes\"],\"IUwGEM\":[\"Save Changes\"],\"bf6lG0\":[\"Schema Migrations\"],\"BnCS55\":[\"Search for a tag...\"],\"VV6Aru\":[\"Search tag...\"],\"YIix5Y\":[\"Search...\"],\"Du+zn+\":[\"Searching...\"],\"hid6Sx\":[\"Select gender\"],\"NdMnnc\":[\"Select inflection\"],\"V/vqsf\":[\"Select the types of words that you want to include in the deck.\"],\"tXQ9KI\":[\"Select type\"],\"FDpH/H\":[\"Sentence\"],\"iw3JO4\":[\"Separate letters with spaces or commas\"],\"Tz0i8g\":[\"Settings\"],\"l8nxCn\":[\"Show after revealing the answer\"],\"r0Xcmy\":[\"Show answer\"],\"vDNaTX\":[\"Show antonyms\"],\"1H95wk\":[\"Show as a hint\"],\"BowKyI\":[\"Show details\"],\"C5SZax\":[\"Show English to Arabic flashcards.\"],\"+b9Ad2\":[\"Show filters\"],\"xzH3m9\":[\"Show reverse flashcards\"],\"maCaRp\":[\"Singular\"],\"vK/oE0\":[\"Some dictionary entries couldn't be loaded\"],\"nwtY4N\":[\"Something went wrong\"],\"/HgF9q\":[\"Sort by\"],\"r20wDW\":[\"SQL Script\"],\"ykSlaQ\":[\"Still not working?\"],\"pKr7ta\":[\"Study\"],\"+Env0D\":[\"Successfully added word!\"],\"NJp0hH\":[\"Successfully deleted!\"],\"z6XClS\":[\"Successfully exported!\"],\"1uuPpZ\":[\"Successfully imported!\"],\"/5ZZnV\":[\"Successfully reset the flashcard.\"],\"oEWC7j\":[\"Successfully updated the word!\"],\"QgnNyZ\":[\"Sync error\"],\"D+NlUC\":[\"System\"],\"OYHzN1\":[\"Tags\"],\"iEZ4Fc\":[\"Thank you for subscribing to Bahar Pro. You now have access to all Pro features.\"],\"hz39Yb\":[\"That code is invalid.\"],\"90dpv/\":[\"That email is invalid.\"],\"7X8sXq\":[\"That is not valid JSON.\"],\"P7iz9S\":[\"The app may be open in another tab. Try closing other tabs and refreshing this page.\"],\"Bm2B8s\":[\"The context of the sentence, ex. formal or colloquial.\"],\"MMs+Zk\":[\"The deck \\\"\",[\"0\"],\"\\\" has been deleted.\"],\"Gpyta0\":[\"The form of the verb ex. I, II, III, IV, etc...\"],\"OE9TJJ\":[\"The form of the verb in Arabic ex. فعل, أفعل, استفعل, etc...\"],\"4cDTK/\":[\"The local database is locked by another session.\"],\"EVX5FZ\":[\"The meaning of the verb when used with the harf.\"],\"bdFFEw\":[\"The morphological breakdown of the word.\"],\"nIdeZ6\":[\"The root letters of the word. The input can be separated by commas, spaces or have no delimeter ex. فعل or ف, ع, ل or ف ع ل.\"],\"AvErlv\":[\"The word has been added to your dictionary.\"],\"LbpyqF\":[\"The word has been updated.\"],\"FEr96N\":[\"Theme\"],\"uTlsP3\":[\"There was an error adding your word. Please try again.\"],\"boDfXQ\":[\"There was an error clearing your backlog.\"],\"IOwnXs\":[\"There was an error creating the deck\"],\"AObMB6\":[\"There was an error deleting your dictionary. Please try again later.\"],\"QPU+ph\":[\"There was an error exporting your dictionary. Please try again later.\"],\"+0R2Vl\":[\"There was an error importing your dictionary. Please try again later.\"],\"GrwZZY\":[\"There was an error syncing your data. If this persists, try resetting local data in Settings.\"],\"1GLBeM\":[\"There was an error syncing your data. Please try resetting local data in Settings.\"],\"Xs1nsK\":[\"There was an error syncing your data. Your local data is still available.\"],\"aUu2Qy\":[\"There was an error updating the deck\"],\"jObkch\":[\"There was an error updating your flashcard settings.\"],\"DvuiAU\":[\"There was an error updating your word. Please try again.\"],\"n//cii\":[\"There was an error uploading your SQL migration\"],\"p0aTgS\":[\"There was an error when indexing your data in the search engine.\"],\"7Eqx1H\":[\"There was an unexpected error. Please try again.\"],\"1hR1ca\":[\"There's a temporary issue loading your account. Please try reloading the page.\"],\"UwqoLj\":[\"This field is required.\"],\"oM4aHs\":[\"This is case insensitive.\"],\"GoNjj1\":[\"This is the name of your deck.\"],\"e92j12\":[\"This refers to how many case endings the word can take.\"],\"fxunD6\":[\"This will delete the local copy of your data stored in this browser and download a fresh copy from the server. Your data on the server will not be affected. Use this if you're experiencing sync errors or seeing outdated data.\"],\"lpK0Kp\":[\"This will permanently delete all your words, flashcards, and decks. This action cannot be undone.\"],\"NVF43p\":[\"Time:\"],\"i1FCIq\":[\"To review\"],\"1Q2HRv\":[\"Toggle Menu\"],\"inGj5T\":[\"Tokyo Night\"],\"72c5Qo\":[\"Total\"],\"wFcvZJ\":[\"Translation\"],\"/Onh8p\":[\"Triptote\"],\"qlwLcm\":[\"Troubleshooting\"],\"jKoZME\":[\"Try a different search term\"],\"+zy2Nq\":[\"Type\"],\"WtTYSX\":[\"Types\"],\"xlZRtS\":[\"Uh oh! Something went wrong :/\"],\"6njDZ+\":[\"Unable to connect to remote database.\"],\"WRB75e\":[\"Unknown error.\"],\"IelE1h\":[\"Upgrade to Pro\"],\"1ZR0xe\":[\"Value must be \",[\"0\"],\" or greater\"],\"e5Ml90\":[\"Value must be \",[\"0\"],\" or less\"],\"bwa0RV\":[\"Verb\"],\"LnBspw\":[\"Verb form\"],\"esQ1ry\":[\"Verb Morphology\"],\"WjcFrD\":[\"Verbal noun forms (masadir) of the verb.\"],\"2oIAhB\":[\"Verbal nouns\"],\"s6NYcb\":[\"Verbal Nouns (Masadir)\"],\"B4iZJX\":[\"View all the words in your personal dictionary.\"],\"VvvGs4\":[\"We can't reach our servers right now. Check your connection and try again.\"],\"dHoQb8\":[\"We're having trouble with your account setup. Please try again.\"],\"eqpeYp\":[\"Welcome to Bahar!\"],\"dZiBrj\":[\"Word\"],\"MJ0gHH\":[\"Word added successfully\"],\"wazgbb\":[\"Word deleted successfully\"],\"2WVQNU\":[\"Word not found\"],\"Xwf/Kn\":[\"Word updated successfully\"],\"FVyDlC\":[\"Words that have any of these tags will be included in the deck.\"],\"7niJN/\":[\"Words that have the opposite meaning.\"],\"nTIiPJ\":[\"You do not have access to upload schema migrations.\"],\"4eom/r\":[\"You have \",[\"0\"],\" cards in your backlog when you're ready.\"],\"alITRb\":[\"You have no decks yet.\"],\"XOUb7A\":[\"You have no words in your dictionary yet.\"],\"voqWOr\":[\"You're all set!\"],\"/dColV\":[\"Your account needs maintenance. We've been notified. Please try again later.\"],\"a8jRIt\":[\"Your data has been re-synced from the server.\"],\"uRXiIT\":[\"Your deck was not created. Please try again.\"],\"oz/nIQ\":[\"Your deck was not updated. Please try again.\"],\"L1VLmw\":[\"Your Dictionary\"],\"SB7dXw\":[\"Your dictionary has been deleted.\"],\"aQiurv\":[\"Your dictionary has been downloaded.\"],\"YAeum9\":[\"Your dictionary has been updated!\"],\"C0Fx9N\":[\"Your dictionary is empty\"],\"3ma3fF\":[\"Your dictionary is not valid. Please fix the errors and upload it again.\"],\"4bRwmE\":[\"محمد is a triptote;\"],\"kkC1Qd\":[\"موسى is indeclinable.\"],\"jFIhM0\":[\"يوسف is a diptote;\"]}")as Messages; \ No newline at end of file +/*eslint-disable*/import type{Messages}from"@lingui/core";export const messages=JSON.parse("{\"Wg0uLA\":[[\"0\",\"plural\",{\"one\":[\"#\",\" tag selected\"],\"other\":[\"#\",\" tags selected\"]}]],\"5rgLzy\":[[\"0\",\"plural\",{\"one\":[\"card left\"],\"other\":[\"cards left\"]}]],\"/hTM9k\":[[\"0\"],\" / \",[\"1\"],\" batches\"],\"mHye52\":[[\"0\"],\" / \",[\"1\"],\" cards\"],\"baIPh3\":[[\"0\"],\" cards due\"],\"beWT44\":[[\"0\"],\" cards have been rescheduled.\"],\"JJcBCm\":[[\"0\"],\" total\"],\"JtTuS0\":[[\"hydrationSkippedCount\",\"plural\",{\"one\":[\"#\",\" entry was skipped due to data issues. Your data is preserved, but you won't be able to search for the entry that wasn't loaded.\"],\"other\":[\"#\",\" entries were skipped due to data issues. Your data is preserved, but you won't be able to search for any entries that weren't loaded.\"]}]],\"UGMDWm\":[[\"skippedCount\"],\" entries were skipped due to data corruption.\"],\"gp8eDB\":[[\"totalHits\",\"plural\",{\"one\":[\"result\"],\"other\":[\"results\"]}]],\"QSRKsm\":[[\"totalResults\",\"plural\",{\"one\":[[\"totalResults\"],\" result\"],\"other\":[[\"totalResults\"],\" results\"]}]],\"gD09hk\":[[\"val\",\"plural\",{\"one\":[\"Cannot exceed \",\"#\",\" character\"],\"other\":[\"Cannot exceed \",\"#\",\" characters\"]}]],\"I1sa5o\":[[\"val\",\"plural\",{\"one\":[\"Must be at least \",\"#\",\" character\"],\"other\":[\"Must be at least \",\"#\",\" characters\"]}]],\"WWcbHw\":[\"A noun, adjective, adverb or pronoun, and anything that is not a verb or preposition.\"],\"ZQW2PY\":[\"A preposition or conjunction.\"],\"0iy5O2\":[\"A verb.\"],\"7L01XJ\":[\"Actions\"],\"DQqXHw\":[\"Active participle\"],\"AwJc6G\":[\"Active Participle\"],\"rJwPkp\":[\"Add a new SQL migration.\"],\"t89Ong\":[\"Add a new word\"],\"L18Pbl\":[\"Add a new word to your dictionary\"],\"TYPFtT\":[\"Add a tag and press enter\"],\"iJMhp0\":[\"Add all\"],\"nPm6bB\":[\"Add antonym\"],\"jVmrwy\":[\"Add Antonym\"],\"1x4W9u\":[\"Add example\"],\"nI3A8B\":[\"Add Example\"],\"gLlFHX\":[\"Add harf\"],\"aLEtgY\":[\"Add Harf\"],\"Tcbo6a\":[\"Add Masdar\"],\"vKbErK\":[\"Add plural\"],\"SNF/r2\":[\"Add Plural\"],\"cR1WUS\":[\"Add some to get started!\"],\"Oft+Pb\":[\"Add some words to get started!\"],\"Xls3A3\":[\"Add tag \",[\"inputValue\"]],\"VMjLu6\":[\"Add tag \",[\"value\"]],\"uF1GKn\":[\"Add tags to your word.\"],\"bDXmnN\":[\"Add word\"],\"p59pEv\":[\"Additional Details\"],\"b/7DUT\":[\"Again\"],\"KK8UsT\":[\"All done for today!\"],\"7Qi3W5\":[\"An Arabic definition of the word.\"],\"Y/gBMP\":[\"An English translation of the sentence.\"],\"jalxln\":[\"An English translation of the word.\"],\"hyC+qY\":[\"An unexpected error occurred. You can try reloading the page to fix it.\"],\"Fl8owW\":[\"Annual — $7/mo\"],\"4xBHUg\":[\"Answer\"],\"vQXp82\":[\"Antonym \",[\"0\"]],\"o9dJs3\":[\"Antonym word\"],\"Hvs4LI\":[\"Antonyms\"],\"p1Kh9a\":[\"Any additional details about this form such as frequency of usage or context.\"],\"9kni2/\":[\"Any plural forms of the word.\"],\"2PPE7k\":[\"Any words that have the same ID will be overwritten.\"],\"cnAqww\":[\"App language\"],\"aAIQg2\":[\"Appearance\"],\"8HV3WN\":[\"Arabic\"],\"LNIQwr\":[\"Arabic definition\"],\"uKmc5K\":[\"Arabic sentence\"],\"wxIhw3\":[\"Arabic verb form\"],\"071WZA\":[\"Arabic word\"],\"pkD36F\":[\"Are you sure you want to delete \\\"\",[\"0\"],\"\\\"?\"],\"DOiV7q\":[\"Are you sure you want to delete this word? It will be removed from your dictionary and its flashcards will be deleted.<0/><1/><2>This action cannot be undone.\"],\"2cZh44\":[\"Are you sure you want to delete this word? This action cannot be undone.\"],\"ikBPhc\":[\"Are you sure you want to delete your dictionary? All your words will be deleted permanently. This action cannot be undone. Please make sure to export your dictionary before deleting it.\"],\"IJr17L\":[\"Are you sure you want to reset this flashcard's progress? The word entry in the dictionary will not be modified, but its corresponding flashcards will be treated as new ones.<0/><1/><2>This action cannot be undone.\"],\"OsXw/g\":[\"Autofill\"],\"ujMTU0\":[\"Autofill failed\"],\"iH8pgl\":[\"Back\"],\"0MgdN+\":[\"Back to top\"],\"KNKCTb\":[\"Backlog\"],\"Fg+fNW\":[\"Backlog cleared!\"],\"vMebS2\":[\"Bahar\"],\"EOUool\":[\"Basic Details\"],\"cSCbv3\":[\"BETA\"],\"t/5uBV\":[\"Billed $84/year\"],\"aIkeAd\":[\"Billed monthly\"],\"R+w/Va\":[\"Billing\"],\"OKWk8n\":[\"By signing in, you agree to our <0>Privacy Policy\"],\"dEgA5A\":[\"Cancel\"],\"oySfhX\":[\"Cards due today or recently\"],\"uV52e1\":[\"Cards overdue by more than 7 days\"],\"zAwyRS\":[\"Cards to review today\"],\"K7tIrx\":[\"Category\"],\"qWRWG1\":[\"Cause:\"],\"+yPBXI\":[\"Choose file\"],\"xCJdfg\":[\"Clear\"],\"ot7qsv\":[\"Clear all filters\"],\"saoOio\":[\"Clear backlog\"],\"Oo39Ga\":[\"Clearing...\"],\"rFmBG3\":[\"Color theme\"],\"mpby9d\":[\"Contact support\"],\"M73whl\":[\"Context\"],\"xGVfLh\":[\"Continue\"],\"RvVi9c\":[\"Continue with Email\"],\"NMo6Pj\":[\"Control where antonyms appear during review\"],\"PiH3UR\":[\"Copied!\"],\"he3ygx\":[\"Copy\"],\"hYgDIe\":[\"Create\"],\"oJc/nD\":[\"Create a deck to organize your flashcard reviews\"],\"wxDqxy\":[\"Create a new deck\"],\"oQH8Kl\":[\"Create a new deck by choosing filters. The deck will be composed of the cards that match the filters.\"],\"l7kxcE\":[\"Create deck\"],\"g/Uxjl\":[\"Create Deck\"],\"1m75Ii\":[\"Create your first deck\"],\"A+zoTy\":[\"Current plan\"],\"PQ2zPy\":[\"Customize how flashcards appear.\"],\"P+gzBQ\":[\"Customize how the application looks for you.\"],\"ZQKLI1\":[\"Danger Zone\"],\"pvnfJD\":[\"Dark\"],\"Wf+eYa\":[\"Debugging\"],\"LUfCYM\":[\"Deck created\"],\"sHVysr\":[\"Deck deleted\"],\"UzOd8J\":[\"Deck Name\"],\"iJA/GX\":[\"Deck successfully created!\"],\"M+Nngk\":[\"Deck successfully deleted!\"],\"NVQRbB\":[\"Deck successfully updated!\"],\"WWDML8\":[\"Deck updated\"],\"9TyPfF\":[\"Decks\"],\"iUt5VS\":[\"Decks allow you to create subsets of your existing flashcards by using filters on your dictionary which you can then study individually.\"],\"ovBPCi\":[\"Default\"],\"MbRyzp\":[\"Definition\"],\"cnGeoo\":[\"Delete\"],\"CYf/wo\":[\"Delete All Data\"],\"G6sE0d\":[\"Delete Deck\"],\"fWNrfJ\":[\"Delete Dictionary\"],\"Xpcev7\":[\"Delete Everything\"],\"pe67wL\":[\"Delete this word?\"],\"VEQ9bX\":[\"Delete word\"],\"/GZNuU\":[\"Delete your dictionary?\"],\"Nu4oKW\":[\"Description\"],\"URmyfc\":[\"Details\"],\"wjSthp\":[\"Details:\"],\"VrH1k+\":[\"Dictionary\"],\"RPYrAz\":[\"Dictionary deleted\"],\"460RzB\":[\"Diptote\"],\"bzSI52\":[\"Discard\"],\"1QfxQT\":[\"Dismiss\"],\"Nwbs0q\":[\"Don't show\"],\"xifE4+\":[\"Dual\"],\"jSxAVI\":[\"e.g. ك ت ب\"],\"Pqhtap\":[\"Easy\"],\"ePK91l\":[\"Edit\"],\"nZQfan\":[\"Edit \",[\"word\"]],\"4cP5gy\":[\"Edit Deck\"],\"AN/oWt\":[\"Edit word\"],\"IQ6Efp\":[\"Edit your deck\"],\"FEct+T\":[\"Edit your deck by choosing filters. The deck will be composed of the cards that match the filters.\"],\"O3oNi5\":[\"Email\"],\"lYGfRP\":[\"English\"],\"7MHe6P\":[\"English translation\"],\"Ac92c9\":[\"Enter a deck name\"],\"ot6UAQ\":[\"Enter a description for your migration\"],\"shwNsK\":[\"Enter deck name\"],\"BTF0Gj\":[\"Enter your 6-digit code from your email\"],\"ojjQlT\":[\"Enter your SQL migration script here\"],\"CA1DlQ\":[\"Entry \",[\"arrayIndex\"]],\"Af6M/a\":[\"Example \",[\"0\"]],\"oea1as\":[\"Example usages of the word in different contexts.\"],\"hFthoo\":[\"Examples\"],\"GS+Mus\":[\"Export\"],\"Mk2MqX\":[\"Export completed with issues\"],\"XydOn5\":[\"Export failed!\"],\"FAMOg+\":[\"Export with flashcards\"],\"HynDdB\":[\"Export your dictionary\"],\"cQ+n9e\":[\"Exporting dictionary with flaschards will save your flashcard progress along with all the content in your dictionary. Use this option if you want to make a backup of your data.<0/><1/>Exporting your dictionary without flashcards will not save any flashcard progress. Use this option if you want to share your dictionary.<2/><3/><4>Warning: Importing your file without flashcards will reset all of your flashcards.\"],\"1JBTZV\":[\"Expression\"],\"GiPSsF\":[\"Failed to add word\"],\"zABpXD\":[\"Failed to add word!\"],\"NcBoUU\":[\"Failed to apply migration to local database.\"],\"eN1Tfn\":[\"Failed to clear backlog\"],\"7hUTxx\":[\"Failed to create deck\"],\"Fr4iT6\":[\"Failed to delete deck\"],\"GCd4Bz\":[\"Failed to delete dictionary\"],\"KLMMnR\":[\"Failed to delete word\"],\"cncTzY\":[\"Failed to delete!\"],\"RztBUK\":[\"Failed to generate example\"],\"usb0iv\":[\"Failed to reset local data\"],\"dCD/3a\":[\"Failed to retrieve data from local database.\"],\"btG7GG\":[\"Failed to retrieve database information.\"],\"CBm+/w\":[\"Failed to update deck\"],\"gw2VAF\":[\"Failed to update flashcard settings.\"],\"tOcErW\":[\"Failed to update settings\"],\"X/iINj\":[\"Failed to update the word!\"],\"cnYJdR\":[\"Failed to update word\"],\"ixyKje\":[\"Failed to upload migration\"],\"1B52uC\":[\"Feminine\"],\"TUSnpz\":[\"Fi'l\"],\"+6O2ek\":[\"Fill in the word, translation, and type first.\"],\"YCAFdN\":[\"Filter by tags...\"],\"cSev+j\":[\"Filters\"],\"wG1Flg\":[\"Flashcard settings updated!\"],\"EiJpdz\":[\"Flashcards\"],\"hpt1Ta\":[\"Follows your device language\"],\"tR/FIC\":[\"Follows your system settings\"],\"q1hBIe\":[\"For example, the word\"],\"QRAWTO\":[\"Form\"],\"2POOFK\":[\"Free\"],\"5iyJje\":[\"Gender\"],\"2Pl4DZ\":[\"Generate example\"],\"NOdFZR\":[\"Generating...\"],\"RkXlPZ\":[\"GitHub\"],\"CKyk7Q\":[\"Go back\"],\"lUTqcW\":[\"Go to dictionary\"],\"OEEQKT\":[\"Good\"],\"VOwQ6g\":[\"Great work on the backlog! You still have \",[\"0\"],\" regular reviews.\"],\"Xv6Pek\":[\"Great work! Come back later for more reviews.\"],\"g5Fk5U\":[\"Hard\"],\"h4MDwq\":[\"Harf\"],\"IzmuJh\":[\"Harf \",[\"0\"]],\"D+zLDD\":[\"Hidden\"],\"VMlRqi\":[\"Hide details\"],\"QWNZbK\":[\"Hide filters\"],\"f+BFfG\":[\"Hint\"],\"i0qMbr\":[\"Home\"],\"q0alPy\":[\"How should antonyms be shown in flashcards?\"],\"af2WMF\":[\"How the word is categorized based on its type or context.\"],\"qGZ1pF\":[\"Huroof\"],\"7fIUBE\":[\"ID:\"],\"mU4ZuB\":[\"if needed.\"],\"eQI7A0\":[\"If you're experiencing sync issues or data not loading correctly, you can reset your local data and re-sync from the server.\"],\"wqQIcr\":[\"Imperative\"],\"l3s5ri\":[\"Import\"],\"5LwmgO\":[\"Import failed!\"],\"X85Lgt\":[\"Include English to Arabic flashcards\"],\"O1SPgK\":[\"Incorrect file type\"],\"bjwx3z\":[\"Indeclinable\"],\"d7G5eB\":[\"Inflection\"],\"IaZUGL\":[\"Information such as the word's root, meaning, and examples.\"],\"FP8ELf\":[\"Invalid datetime format\"],\"LpHyjF\":[\"Invalid string format\"],\"xVH/JG\":[\"Invalid type. Expected \",[\"0\"]],\"lBmlgJ\":[\"Invalid type. Expected \",[\"0\"],\", received \",[\"1\"]],\"5R5T/G\":[\"Invalid value. Expected one of: \",[\"0\"]],\"SK5zz1\":[\"Ism\"],\"vXIe7J\":[\"Language\"],\"1njn7W\":[\"Light\"],\"CZOrLB\":[\"Loading details...\"],\"LioGSK\":[\"Loading your dictionary...\"],\"Z3FXyt\":[\"Loading...\"],\"1bAISV\":[\"Local data reset successfully!\"],\"Od5n57\":[\"Log in to your existing account or sign up for a new one\"],\"nOhz3x\":[\"Logout\"],\"L9IOec\":[\"Manage Subscription\"],\"c1DM+0\":[\"Manage your decks and study them.\"],\"QUTgGW\":[\"Manage your dictionary.\"],\"4zd4U3\":[\"Manage your subscription.\"],\"U60v+9\":[\"Masadir\"],\"IPJKNz\":[\"Masculine\"],\"dLgiXX\":[\"Masdar\"],\"SXYWd/\":[\"Masdar \",[\"0\"]],\"6URaYg\":[\"Meaning\"],\"MYTK2T\":[\"Meaning with this preposition\"],\"zucql+\":[\"Menu\"],\"qGioCB\":[\"Migration successfully registered.\"],\"O+YlVk\":[\"Monthly — $10/mo\"],\"QI9AZD\":[\"More than \",[\"0\"],\" cards to review\"],\"yf87+x\":[\"Morphology\"],\"60xV9Y\":[\"Morphology only applies to isms and fi'ls. This section will be hidden if the type of the word is set to anything else.\"],\"qhwV2C\":[\"My Account\"],\"6YtxFj\":[\"Name\"],\"TizFpt\":[\"Navigation menu\"],\"TQ5Es1\":[\"No backlog cards to clear.\"],\"WAQMrN\":[\"No cards due\"],\"TkUliY\":[\"No decks yet\"],\"7+IHTZ\":[\"No file chosen\"],\"AxPAXW\":[\"No results found\"],\"vLuosE\":[\"No tags found.\"],\"Utp0Ef\":[\"Nord\"],\"tTu2yx\":[\"Noun\"],\"KfoKzr\":[\"Noun Morphology\"],\"zW+FpA\":[\"Or continue with\"],\"PMqWHy\":[\"Particle\"],\"UIYada\":[\"Passive participle\"],\"9wi5te\":[\"Passive Participle\"],\"Ff0Dor\":[\"Past\"],\"KkgkHx\":[\"Past tense\"],\"uiVVIw\":[\"Past Tense\"],\"VHWIM2\":[\"Permanently delete all your data including words, flashcards, and decks.\"],\"1OB0cV\":[\"Please contact <0>support with the following details:\"],\"HsEwwb\":[\"Please enter a deck name\"],\"nqOcNX\":[\"Please select a JSON file with your dictionary.\"],\"AXJfF/\":[\"Please try again or reload the page.\"],\"fuwKpE\":[\"Please try again.\"],\"6hUL0D\":[\"Please wait before trying again.\"],\"BPig2P\":[\"Plural\"],\"K5KP2J\":[\"Plural \",[\"0\"]],\"zt7UFB\":[\"Plural form\"],\"u5SHG2\":[\"Plurals\"],\"go9eTo\":[\"Preposition\"],\"JuM71B\":[\"Prepositions (Huroof)\"],\"0Of985\":[\"Prepositions (huroof) that can be used with the verb to change its meaning.\"],\"eZb+lw\":[\"Present\"],\"24cT5U\":[\"Present tense\"],\"6Kwq+n\":[\"Present Tense\"],\"3fPjUY\":[\"Pro\"],\"zbzsUz\":[\"Rate limit reached\"],\"0DYtlD\":[\"Recently added\"],\"X5P6yv\":[\"Recently updated\"],\"uabU9X\":[\"Recently used\"],\"7dZnmw\":[\"Relevance\"],\"HpK/8d\":[\"Reload\"],\"t/YqKh\":[\"Remove\"],\"8dg+Yo\":[\"Required field\"],\"+7Cebq\":[\"Reschedule all backlog cards by grading them as \\\"Hard\\\".\"],\"ly/6zq\":[\"Reset and re-sync\"],\"vWTWiR\":[\"Reset flashcard\"],\"7HeQ9b\":[\"Reset flashcard progress?\"],\"2ma9vI\":[\"Reset local data\"],\"lLVyir\":[\"Reset local data and re-sync?\"],\"K/RS6y\":[\"Resetting local data...\"],\"QFtnWs\":[\"Reverse flashcards\"],\"5k0NLb\":[\"Review\"],\"nqtnG9\":[\"Review flashcards\"],\"HtzuX3\":[\"Review flashcards (\",[\"0\"],\" in backlog)\"],\"TbJrZ9\":[\"Review flashcards with spaced repetition\"],\"05OIsb\":[\"Review your Arabic flashcards and grade your understanding with Again, Hard, Good, or Easy options to adjust scheduling.\"],\"cbGyYK\":[\"Root letters\"],\"qMVAMv\":[\"Root Letters\"],\"tfDRzk\":[\"Save\"],\"JAxBTB\":[\"Save 30%\"],\"y3aU20\":[\"Save changes\"],\"IUwGEM\":[\"Save Changes\"],\"bf6lG0\":[\"Schema Migrations\"],\"BnCS55\":[\"Search for a tag...\"],\"VV6Aru\":[\"Search tag...\"],\"YIix5Y\":[\"Search...\"],\"Du+zn+\":[\"Searching...\"],\"hid6Sx\":[\"Select gender\"],\"NdMnnc\":[\"Select inflection\"],\"V/vqsf\":[\"Select the types of words that you want to include in the deck.\"],\"tXQ9KI\":[\"Select type\"],\"FDpH/H\":[\"Sentence\"],\"iw3JO4\":[\"Separate letters with spaces or commas\"],\"Tz0i8g\":[\"Settings\"],\"l8nxCn\":[\"Show after revealing the answer\"],\"r0Xcmy\":[\"Show answer\"],\"vDNaTX\":[\"Show antonyms\"],\"1H95wk\":[\"Show as a hint\"],\"BowKyI\":[\"Show details\"],\"C5SZax\":[\"Show English to Arabic flashcards.\"],\"+b9Ad2\":[\"Show filters\"],\"xzH3m9\":[\"Show reverse flashcards\"],\"maCaRp\":[\"Singular\"],\"vK/oE0\":[\"Some dictionary entries couldn't be loaded\"],\"nwtY4N\":[\"Something went wrong\"],\"fWsBTs\":[\"Something went wrong. Please try again.\"],\"/HgF9q\":[\"Sort by\"],\"r20wDW\":[\"SQL Script\"],\"ykSlaQ\":[\"Still not working?\"],\"pKr7ta\":[\"Study\"],\"+Env0D\":[\"Successfully added word!\"],\"NJp0hH\":[\"Successfully deleted!\"],\"z6XClS\":[\"Successfully exported!\"],\"1uuPpZ\":[\"Successfully imported!\"],\"/5ZZnV\":[\"Successfully reset the flashcard.\"],\"oEWC7j\":[\"Successfully updated the word!\"],\"QgnNyZ\":[\"Sync error\"],\"D+NlUC\":[\"System\"],\"OYHzN1\":[\"Tags\"],\"iEZ4Fc\":[\"Thank you for subscribing to Bahar Pro. You now have access to all Pro features.\"],\"hz39Yb\":[\"That code is invalid.\"],\"90dpv/\":[\"That email is invalid.\"],\"7X8sXq\":[\"That is not valid JSON.\"],\"P7iz9S\":[\"The app may be open in another tab. Try closing other tabs and refreshing this page.\"],\"Bm2B8s\":[\"The context of the sentence, ex. formal or colloquial.\"],\"MMs+Zk\":[\"The deck \\\"\",[\"0\"],\"\\\" has been deleted.\"],\"Gpyta0\":[\"The form of the verb ex. I, II, III, IV, etc...\"],\"OE9TJJ\":[\"The form of the verb in Arabic ex. فعل, أفعل, استفعل, etc...\"],\"4cDTK/\":[\"The local database is locked by another session.\"],\"EVX5FZ\":[\"The meaning of the verb when used with the harf.\"],\"bdFFEw\":[\"The morphological breakdown of the word.\"],\"nIdeZ6\":[\"The root letters of the word. The input can be separated by commas, spaces or have no delimeter ex. فعل or ف, ع, ل or ف ع ل.\"],\"AvErlv\":[\"The word has been added to your dictionary.\"],\"LbpyqF\":[\"The word has been updated.\"],\"FEr96N\":[\"Theme\"],\"uTlsP3\":[\"There was an error adding your word. Please try again.\"],\"boDfXQ\":[\"There was an error clearing your backlog.\"],\"IOwnXs\":[\"There was an error creating the deck\"],\"AObMB6\":[\"There was an error deleting your dictionary. Please try again later.\"],\"QPU+ph\":[\"There was an error exporting your dictionary. Please try again later.\"],\"+0R2Vl\":[\"There was an error importing your dictionary. Please try again later.\"],\"GrwZZY\":[\"There was an error syncing your data. If this persists, try resetting local data in Settings.\"],\"1GLBeM\":[\"There was an error syncing your data. Please try resetting local data in Settings.\"],\"Xs1nsK\":[\"There was an error syncing your data. Your local data is still available.\"],\"aUu2Qy\":[\"There was an error updating the deck\"],\"jObkch\":[\"There was an error updating your flashcard settings.\"],\"DvuiAU\":[\"There was an error updating your word. Please try again.\"],\"n//cii\":[\"There was an error uploading your SQL migration\"],\"p0aTgS\":[\"There was an error when indexing your data in the search engine.\"],\"7Eqx1H\":[\"There was an unexpected error. Please try again.\"],\"1hR1ca\":[\"There's a temporary issue loading your account. Please try reloading the page.\"],\"UwqoLj\":[\"This field is required.\"],\"oM4aHs\":[\"This is case insensitive.\"],\"GoNjj1\":[\"This is the name of your deck.\"],\"e92j12\":[\"This refers to how many case endings the word can take.\"],\"fxunD6\":[\"This will delete the local copy of your data stored in this browser and download a fresh copy from the server. Your data on the server will not be affected. Use this if you're experiencing sync errors or seeing outdated data.\"],\"lpK0Kp\":[\"This will permanently delete all your words, flashcards, and decks. This action cannot be undone.\"],\"NVF43p\":[\"Time:\"],\"i1FCIq\":[\"To review\"],\"1Q2HRv\":[\"Toggle Menu\"],\"inGj5T\":[\"Tokyo Night\"],\"72c5Qo\":[\"Total\"],\"wFcvZJ\":[\"Translation\"],\"/Onh8p\":[\"Triptote\"],\"qlwLcm\":[\"Troubleshooting\"],\"jKoZME\":[\"Try a different search term\"],\"+zy2Nq\":[\"Type\"],\"WtTYSX\":[\"Types\"],\"xlZRtS\":[\"Uh oh! Something went wrong :/\"],\"6njDZ+\":[\"Unable to connect to remote database.\"],\"WRB75e\":[\"Unknown error.\"],\"IelE1h\":[\"Upgrade to Pro\"],\"1z3VP6\":[\"Upgrade to Pro to generate examples.\"],\"pIqsHO\":[\"Upgrade to Pro to use AI autofill.\"],\"1ZR0xe\":[\"Value must be \",[\"0\"],\" or greater\"],\"e5Ml90\":[\"Value must be \",[\"0\"],\" or less\"],\"bwa0RV\":[\"Verb\"],\"LnBspw\":[\"Verb form\"],\"esQ1ry\":[\"Verb Morphology\"],\"WjcFrD\":[\"Verbal noun forms (masadir) of the verb.\"],\"2oIAhB\":[\"Verbal nouns\"],\"s6NYcb\":[\"Verbal Nouns (Masadir)\"],\"B4iZJX\":[\"View all the words in your personal dictionary.\"],\"VvvGs4\":[\"We can't reach our servers right now. Check your connection and try again.\"],\"dHoQb8\":[\"We're having trouble with your account setup. Please try again.\"],\"eqpeYp\":[\"Welcome to Bahar!\"],\"dZiBrj\":[\"Word\"],\"MJ0gHH\":[\"Word added successfully\"],\"wazgbb\":[\"Word deleted successfully\"],\"2WVQNU\":[\"Word not found\"],\"Xwf/Kn\":[\"Word updated successfully\"],\"FVyDlC\":[\"Words that have any of these tags will be included in the deck.\"],\"7niJN/\":[\"Words that have the opposite meaning.\"],\"nTIiPJ\":[\"You do not have access to upload schema migrations.\"],\"4eom/r\":[\"You have \",[\"0\"],\" cards in your backlog when you're ready.\"],\"alITRb\":[\"You have no decks yet.\"],\"XOUb7A\":[\"You have no words in your dictionary yet.\"],\"voqWOr\":[\"You're all set!\"],\"/dColV\":[\"Your account needs maintenance. We've been notified. Please try again later.\"],\"a8jRIt\":[\"Your data has been re-synced from the server.\"],\"uRXiIT\":[\"Your deck was not created. Please try again.\"],\"oz/nIQ\":[\"Your deck was not updated. Please try again.\"],\"L1VLmw\":[\"Your Dictionary\"],\"SB7dXw\":[\"Your dictionary has been deleted.\"],\"aQiurv\":[\"Your dictionary has been downloaded.\"],\"YAeum9\":[\"Your dictionary has been updated!\"],\"C0Fx9N\":[\"Your dictionary is empty\"],\"3ma3fF\":[\"Your dictionary is not valid. Please fix the errors and upload it again.\"],\"4bRwmE\":[\"محمد is a triptote;\"],\"kkC1Qd\":[\"موسى is indeclinable.\"],\"jFIhM0\":[\"يوسف is a diptote;\"]}")as Messages; \ No newline at end of file diff --git a/packages/search/src/database.ts b/packages/search/src/database.ts index 5b71188f..8cc626a4 100644 --- a/packages/search/src/database.ts +++ b/packages/search/src/database.ts @@ -14,13 +14,13 @@ import { update, } from "@orama/orama"; import { pluginQPS } from "@orama/plugin-qps"; -import { stripArabicDiacritics } from "./arabic"; +import { normalizeArabicForSearch, stripArabicDiacritics } from "./arabic"; import { type DictionaryDocument, type DictionaryOrama, dictionarySchema, } from "./schema"; -import { multiLanguageTokenizer } from "./tokenizer"; +import { arabicTokenizer, multiLanguageTokenizer } from "./tokenizer"; type SearchResults = Results>; @@ -159,12 +159,26 @@ export const searchDictionary = ( ); } - const termLen = stripArabicDiacritics(term).length; + // Use the stemmed token length for tolerance calculation, since Orama + // applies tolerance against stemmed tokens in the index. Using the raw + // input length causes over-broad matching for words that stem shorter + // (e.g. مهرجان stems to مهرج, so tolerance should be based on 4 chars, not 6). + const stemmedTokens = + language === "arabic" + ? arabicTokenizer.tokenize( + normalizeArabicForSearch(term), + "arabic", + "word" + ) + : [stripArabicDiacritics(term)]; + const stemmedLen = Math.max(...stemmedTokens.map((t) => t.length), 1); // Fetch enough results to cover offset + limit for proper pagination const fetchLimit = offset + limit; - // Pass 1: Exact match search + // Pass 1: Stemmed exact match (tolerance=0 instead of exact:true, + // because exact:true bypasses stemming on the query and never matches + // stemmed index tokens) const exactResults = search( db, { @@ -174,13 +188,13 @@ export const searchDictionary = ( properties: PROPERTIES, where: options?.where, sortBy: options?.sortBy, - exact: true, + tolerance: 0, }, language ) as SearchResults; // Pass 2: Fuzzy search on normalized fields - const fuzzyTolerance = termLen <= 2 ? 0 : termLen <= 4 ? 1 : 2; + const fuzzyTolerance = stemmedLen <= 2 ? 0 : stemmedLen <= 4 ? 1 : 2; const fuzzyResults = search( db, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ad279eb5..3dfef7b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,21 +29,27 @@ importers: '@better-auth/expo': specifier: 1.4.19 version: 1.4.19(@better-auth/core@1.4.19)(better-auth@1.4.19) + '@cloudflare/tanstack-ai': + specifier: ^0.1.5 + version: 0.1.5(@tanstack/ai@0.6.1)(zod@4.3.6) '@elysiajs/cors': specifier: ^1.4.0 - version: 1.4.0(elysia@1.4.19) + version: 1.4.0(elysia@1.4.27) '@libsql/client': specifier: ^0.10.0 version: 0.10.0 '@polar-sh/better-auth': specifier: ^1.8.1 - version: 1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(better-auth@1.4.19)(react-dom@19.1.0)(react-is@19.2.4)(react@19.1.0)(redux@5.0.1)(zod@4.0.17) + version: 1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(better-auth@1.4.19)(react-dom@19.1.0)(react-is@19.2.4)(react@19.1.0)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.1 version: 0.42.5 '@sentry/bun': specifier: ^10.32.1 version: 10.32.1 + '@tanstack/ai': + specifier: ^0.6.1 + version: 0.6.1 '@tursodatabase/api': specifier: ^1.9.0 version: 1.9.0 @@ -61,10 +67,10 @@ importers: version: 0.45.1(@libsql/client@0.10.0)(@opentelemetry/api@1.9.0)(@upstash/redis@1.36.0)(bun-types@1.3.5)(kysely@0.28.5) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1)(zod@4.0.17) + version: 0.8.3(drizzle-orm@0.45.1)(zod@4.3.6) elysia: - specifier: ^1.4.19 - version: 1.4.19(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3) + specifier: 1.4.27 + version: 1.4.27(@sinclair/typebox@0.34.48)(@types/bun@1.3.11)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3) jose: specifier: ^6.1.3 version: 6.1.3 @@ -81,9 +87,12 @@ importers: specifier: ^4.7.1 version: 4.7.1 zod: - specifier: 4.0.17 - version: 4.0.17 + specifier: 4.3.6 + version: 4.3.6 devDependencies: + '@bahar/drizzle-user-db-schemas': + specifier: workspace:* + version: link:../../packages/drizzle-user-db-schemas '@bahar/typescript-config': specifier: workspace:* version: link:../../packages/config-typescript @@ -171,7 +180,7 @@ importers: version: 3.0.0(expo@54.0.25) '@elysiajs/eden': specifier: ^1.4.6 - version: 1.4.6(elysia@1.4.26) + version: 1.4.6(elysia@1.4.27) '@expo/vector-icons': specifier: ^15.0.3 version: 15.0.3(expo-font@14.0.9)(react-native@0.81.5)(react@19.1.0) @@ -323,8 +332,8 @@ importers: specifier: ^1.2.2 version: 1.2.2(react-native@0.81.5)(react@19.1.0)(tailwindcss@4.1.17) zod: - specifier: 4.0.17 - version: 4.0.17 + specifier: 4.3.6 + version: 4.3.6 devDependencies: '@babel/core': specifier: ^7.25.2 @@ -361,7 +370,7 @@ importers: version: 5.3.2(@lingui/babel-plugin-lingui-macro@5.3.2)(react@19.1.0) '@lingui/metro-transformer': specifier: ^5.3.2 - version: 5.3.2(expo@54.0.25)(metro@0.84.0)(react-native@0.81.5)(typescript@5.9.2) + version: 5.3.2(expo@54.0.25)(metro@0.84.2)(react-native@0.81.5)(typescript@5.9.2) '@tailwindcss/postcss': specifier: ^4.1.7 version: 4.1.17 @@ -382,7 +391,7 @@ importers: version: 29.7.0 jest-expo: specifier: ~54.0.13 - version: 54.0.13(@babel/core@7.26.0)(expo@54.0.25)(jest@29.7.0)(react-dom@19.1.0)(react-native@0.81.5)(react@19.1.0)(webpack@5.105.2) + version: 54.0.13(@babel/core@7.26.0)(expo@54.0.25)(jest@29.7.0)(react-dom@19.1.0)(react-native@0.81.5)(react@19.1.0)(webpack@5.105.3) postcss: specifier: ^8.5.0 version: 8.5.3 @@ -415,7 +424,7 @@ importers: version: link:../../packages/web-ui '@elysiajs/eden': specifier: ^1.4.6 - version: 1.4.6(elysia@1.4.26) + version: 1.4.6(elysia@1.4.27) '@hookform/resolvers': specifier: ^5.2.2 version: 5.2.2(react-hook-form@7.56.4) @@ -448,7 +457,7 @@ importers: version: 3.1.16 '@polar-sh/better-auth': specifier: ^1.8.1 - version: 1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(@types/react-dom@19.0.0)(@types/react@19.1.17)(better-auth@1.4.19)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1)(zod@4.0.17) + version: 1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(@types/react-dom@19.0.0)(@types/react@19.1.17)(better-auth@1.4.19)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1)(zod@4.3.6) '@sentry/react': specifier: ^10.25.0 version: 10.25.0(react@19.0.0) @@ -461,6 +470,9 @@ importers: '@tailwindcss/vite': specifier: 4.1.7 version: 4.1.7(vite@6.4.1) + '@tanstack/ai-react': + specifier: ^0.6.1 + version: 0.6.1(@tanstack/ai@0.6.1)(@types/react@19.1.17)(react@19.0.0) '@tanstack/pacer': specifier: ^0.16.3 version: 0.16.3 @@ -475,7 +487,7 @@ importers: version: 1.120.13(react-dom@19.0.0)(react@19.0.0) '@tanstack/zod-adapter': specifier: ^1.150.0 - version: 1.150.0(@tanstack/react-router@1.120.13)(zod@4.0.17) + version: 1.150.0(@tanstack/react-router@1.120.13)(zod@4.3.6) '@tursodatabase/sync-wasm': specifier: ^0.3.2 version: 0.3.2 @@ -522,8 +534,8 @@ importers: specifier: ^5.2.3 version: 5.2.3 zod: - specifier: 4.0.17 - version: 4.0.17 + specifier: 4.3.6 + version: 4.3.6 devDependencies: '@bahar/design-system': specifier: workspace:* @@ -558,6 +570,9 @@ importers: '@tanstack/router-plugin': specifier: ^1.91.1 version: 1.91.1(vite@6.4.1) + '@types/bun': + specifier: ^1.3.11 + version: 1.3.11 '@types/node': specifier: ^20.10.6 version: 20.10.6 @@ -604,8 +619,8 @@ importers: specifier: workspace:* version: link:../config-typescript zod: - specifier: 4.0.17 - version: 4.0.17 + specifier: 4.3.6 + version: 4.3.6 packages/design-system: dependencies: @@ -633,10 +648,10 @@ importers: version: 0.45.1(@libsql/client@0.10.0)(@opentelemetry/api@1.9.0)(@upstash/redis@1.36.0)(bun-types@1.3.5)(kysely@0.28.5) drizzle-zod: specifier: ^0.8.3 - version: 0.8.3(drizzle-orm@0.45.1)(zod@4.0.17) + version: 0.8.3(drizzle-orm@0.45.1)(zod@4.3.6) zod: - specifier: 4.0.17 - version: 4.0.17 + specifier: '>=4.0.0' + version: 4.3.6 devDependencies: '@bahar/typescript-config': specifier: workspace:* @@ -805,6 +820,36 @@ packages: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.30 + /@anthropic-ai/sdk@0.71.2(zod@4.3.6): + resolution: {integrity: sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ==} + hasBin: true + requiresBuild: true + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + peerDependenciesMeta: + zod: + optional: true + dependencies: + json-schema-to-ts: 3.1.1 + zod: 4.3.6 + dev: false + optional: true + + /@anthropic-ai/sdk@0.78.0(zod@4.3.6): + resolution: {integrity: sha512-PzQhR715td/m1UaaN5hHXjYB8Gl2lF9UVhrrGrZeysiF6Rb74Wc9GCB8hzLdzmQtBd1qe89F9OptgB9Za1Ib5w==} + hasBin: true + requiresBuild: true + peerDependencies: + zod: ^3.25.0 || ^4.0.0 + peerDependenciesMeta: + zod: + optional: true + dependencies: + json-schema-to-ts: 3.1.1 + zod: 4.3.6 + dev: false + optional: true + /@apideck/better-ajv-errors@0.3.6(ajv@8.18.0): resolution: {integrity: sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==} engines: {node: '>=10'} @@ -1329,7 +1374,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/traverse': 7.28.3 - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -1448,7 +1493,7 @@ packages: resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 /@babel/helper-optimise-call-expression@7.27.1: resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} @@ -1602,9 +1647,9 @@ packages: resolution: {integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.27.2 + '@babel/template': 7.28.6 '@babel/traverse': 7.28.3 - '@babel/types': 7.28.5 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -3478,7 +3523,7 @@ packages: '@better-auth/utils': 0.3.0 '@better-fetch/fetch': 1.1.21 '@standard-schema/spec': 1.1.0 - better-call: 1.1.8(zod@4.0.17) + better-call: 1.1.8(zod@4.3.6) jose: 6.1.3 kysely: 0.28.5 nanostores: 1.1.0 @@ -3498,11 +3543,11 @@ packages: '@better-auth/utils': 0.3.0 '@better-fetch/fetch': 1.1.21 '@standard-schema/spec': 1.1.0 - better-call: 1.1.7(zod@4.0.17) + better-call: 1.1.7(zod@4.3.6) jose: 6.1.3 kysely: 0.28.5 nanostores: 1.1.0 - zod: 4.2.1 + zod: 4.3.6 dev: false /@better-auth/expo@1.4.19(@better-auth/core@1.4.19)(better-auth@1.4.19): @@ -3553,11 +3598,11 @@ packages: '@better-auth/core': 1.4.9(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.7)(jose@6.1.3)(kysely@0.28.5)(nanostores@1.1.0) '@better-fetch/fetch': 1.1.21 better-auth: 1.4.9(react-dom@19.1.0)(react@19.1.0) - better-call: 1.1.7(zod@4.2.1) + better-call: 1.1.7(zod@4.3.6) expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.5) expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.5)(react@19.1.0) expo-web-browser: 15.0.9(expo@54.0.25)(react-native@0.81.5) - zod: 4.2.1 + zod: 4.3.6 dev: false /@better-auth/telemetry@1.4.19(@better-auth/core@1.4.19): @@ -3715,6 +3760,31 @@ packages: mime: 3.0.0 dev: true + /@cloudflare/tanstack-ai@0.1.5(@tanstack/ai@0.6.1)(zod@4.3.6): + resolution: {integrity: sha512-/HOsjZyXd7BZ5IGagaOWSB5kT/Shuc3dyLezIXkiiiL0sgP5ags6IAh0HAILmguIpPC7KyK0o6A1SjDQPrIv6g==} + peerDependencies: + '@tanstack/ai': ^0.5.0 + dependencies: + '@tanstack/ai': 0.6.1 + openai: 6.25.0(zod@4.3.6) + optionalDependencies: + '@anthropic-ai/sdk': 0.78.0(zod@4.3.6) + '@google/genai': 1.43.0 + '@openrouter/sdk': 0.8.0 + '@tanstack/ai-anthropic': 0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6) + '@tanstack/ai-gemini': 0.5.0(@tanstack/ai@0.6.1) + '@tanstack/ai-grok': 0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6) + '@tanstack/ai-openai': 0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6) + '@tanstack/ai-openrouter': 0.5.1(@tanstack/ai@0.6.1) + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + - ws + - zod + dev: false + /@cloudflare/unenv-preset@2.0.2(unenv@2.0.0-rc.14)(workerd@1.20250718.0): resolution: {integrity: sha512-nyzYnlZjjV5xT3LizahG1Iu6mnrCaxglJ04rZLpDwlDVDZ7v46lNsfxhV3A/xtfgQuSHmLnc6SVI+KwBpc3Lwg==} peerDependencies: @@ -3862,20 +3932,20 @@ packages: dependencies: '@types/hammerjs': 2.0.46 - /@elysiajs/cors@1.4.0(elysia@1.4.19): + /@elysiajs/cors@1.4.0(elysia@1.4.27): resolution: {integrity: sha512-pb0SCzBfFbFSYA/U40HHO7R+YrcXBJXOWgL20eSViK33ol1e20ru2/KUaZYo5IMUn63yaTJI/bQERuQ+77ND8g==} peerDependencies: elysia: '>= 1.4.0' dependencies: - elysia: 1.4.19(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3) + elysia: 1.4.27(@sinclair/typebox@0.34.48)(@types/bun@1.3.11)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3) dev: false - /@elysiajs/eden@1.4.6(elysia@1.4.26): + /@elysiajs/eden@1.4.6(elysia@1.4.27): resolution: {integrity: sha512-Tsa4NwXEWg/u73vWiYZQ3L5/ecgZSxqiEjYwpS+4qBKXeTZqZKl2hcgHJSVBL+InEDMi35Xugct7qyAXE5oM4Q==} peerDependencies: elysia: '>=1.4.19' dependencies: - elysia: 1.4.26(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.9.2) + elysia: 1.4.27(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.9.2) dev: false /@emmetio/abbreviation@2.3.3: @@ -5887,6 +5957,27 @@ packages: tslib: 2.8.1 dev: false + /@google/genai@1.43.0: + resolution: {integrity: sha512-hklCsJNdMlDM1IwcCVcGQFBg2izY0+t5BIGbRsxi2UnKi6AGKL7pqJqmBDNRbw0bYCs4y3NA7TB+fkKfP/Nrdw==} + engines: {node: '>=20.0.0'} + requiresBuild: true + peerDependencies: + '@modelcontextprotocol/sdk': ^1.25.2 + peerDependenciesMeta: + '@modelcontextprotocol/sdk': + optional: true + dependencies: + google-auth-library: 10.6.1 + p-retry: 4.6.2 + protobufjs: 7.5.4 + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: false + optional: true + /@hookform/resolvers@5.2.2(react-hook-form@7.56.4): resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} peerDependencies: @@ -7163,7 +7254,7 @@ packages: bundledDependencies: - '@messageformat/date-skeleton' - /@lingui/metro-transformer@5.3.2(expo@54.0.25)(metro@0.84.0)(react-native@0.81.5)(typescript@5.9.2): + /@lingui/metro-transformer@5.3.2(expo@54.0.25)(metro@0.84.2)(react-native@0.81.5)(typescript@5.9.2): resolution: {integrity: sha512-wUnTwPauS1+9Vcy86GbUvxwS0nxfLlDVnN/UIZQhXbW5xsfTikXwifUvFd8RoaaUad9OGSo9NWZcX+QVCfsebg==} engines: {node: '>=16.0.0'} peerDependencies: @@ -7185,7 +7276,7 @@ packages: '@lingui/conf': 5.3.2(typescript@5.9.2) expo: 54.0.25(@babel/core@7.26.0)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.15.0)(react-native@0.81.5)(react@19.1.0) memoize-one: 6.0.0 - metro: 0.84.0 + metro: 0.84.2 react-native: 0.81.5(@babel/core@7.26.0)(@types/react@19.1.17)(react@19.1.0) transitivePeerDependencies: - supports-color @@ -7338,6 +7429,22 @@ packages: fastq: 1.16.0 dev: true + /@openrouter/sdk@0.3.15: + resolution: {integrity: sha512-tmiMQGu6L1fHD9NpIABN9LALEZitqM27CFebSVyJTQDcxCcR3m1F6v1O1MnOlLmedCFU+/BojniRGFAXo1F3Bw==} + requiresBuild: true + dependencies: + zod: 4.3.6 + dev: false + optional: true + + /@openrouter/sdk@0.8.0: + resolution: {integrity: sha512-hmCY5CE/adBmwZmrwuSx7Pw5UngcyuA9FvgpouyWEX8m283omLD1BqJlYYkLdVoUdI8iGNFHKezH2CeJqsVymw==} + requiresBuild: true + dependencies: + zod: 4.3.6 + dev: false + optional: true + /@opentelemetry/api-logs@0.208.0: resolution: {integrity: sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==} engines: {node: '>=8.0.0'} @@ -7753,7 +7860,7 @@ packages: requiresBuild: true optional: true - /@polar-sh/better-auth@1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(@types/react-dom@19.0.0)(@types/react@19.1.17)(better-auth@1.4.19)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1)(zod@4.0.17): + /@polar-sh/better-auth@1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(@types/react-dom@19.0.0)(@types/react@19.1.17)(better-auth@1.4.19)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1)(zod@4.3.6): resolution: {integrity: sha512-wZjF1xcxw1+blnR8JspPwZ0WhwoHkG4C2oFhVzb1RJKQfwTBjSmnrBftjaV6D3WFHDnrs0wFPnW/YHXzg8paOA==} engines: {node: '>=16'} peerDependencies: @@ -7764,7 +7871,7 @@ packages: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(@types/react-dom@19.0.0)(@types/react@19.1.17)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 better-auth: 1.4.19(drizzle-orm@0.45.1)(react-dom@19.0.0)(react@19.0.0) - zod: 4.0.17 + zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' - '@stripe/stripe-js' @@ -7776,7 +7883,7 @@ packages: - redux dev: false - /@polar-sh/better-auth@1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(better-auth@1.4.19)(react-dom@19.1.0)(react-is@19.2.4)(react@19.1.0)(redux@5.0.1)(zod@4.0.17): + /@polar-sh/better-auth@1.8.1(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(better-auth@1.4.19)(react-dom@19.1.0)(react-is@19.2.4)(react@19.1.0)(redux@5.0.1)(zod@4.3.6): resolution: {integrity: sha512-wZjF1xcxw1+blnR8JspPwZ0WhwoHkG4C2oFhVzb1RJKQfwTBjSmnrBftjaV6D3WFHDnrs0wFPnW/YHXzg8paOA==} engines: {node: '>=16'} peerDependencies: @@ -7787,7 +7894,7 @@ packages: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2)(@stripe/stripe-js@7.9.0)(react-dom@19.1.0)(react-is@19.2.4)(react@19.1.0)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 better-auth: 1.4.19(drizzle-kit@0.31.9)(drizzle-orm@0.45.1)(react-dom@19.1.0)(react@19.1.0) - zod: 4.0.17 + zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' - '@stripe/stripe-js' @@ -7851,7 +7958,7 @@ packages: resolution: {integrity: sha512-GzC3/ElCtMO55+KeXwFTANlydZzw5qI3DU/F9vAFIsUKuegSmh+Xu03KCL+ct9/imJOvLUQucYhUSsNKqo2j2Q==} dependencies: standardwebhooks: 1.0.0 - zod: 4.0.17 + zod: 4.3.6 dev: false /@polar-sh/ui@0.1.2(@types/react-dom@19.0.0)(@types/react@19.1.17)(react-dom@19.0.0)(react-is@19.2.4)(react@19.0.0)(redux@5.0.1): @@ -7973,6 +8080,69 @@ packages: - supports-color dev: false + /@protobufjs/aspromise@1.1.2: + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/base64@1.1.2: + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/codegen@2.0.4: + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/eventemitter@1.1.0: + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/fetch@1.1.0: + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + dev: false + optional: true + + /@protobufjs/float@1.0.2: + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/inquire@1.1.0: + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/path@1.1.2: + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/pool@1.1.0: + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + requiresBuild: true + dev: false + optional: true + + /@protobufjs/utf8@1.1.0: + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + requiresBuild: true + dev: false + optional: true + /@radix-ui/number@1.1.1: resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} dev: false @@ -12621,11 +12791,113 @@ packages: vite: 6.4.1(@types/node@20.10.6) dev: false + /@tanstack/ai-anthropic@0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6): + resolution: {integrity: sha512-PiQx4Kpw+NNjXvVhes29LoO/IvD8M9GGQsNvtLCd+dDhZt3FzdNwHWMZBCpaQWPW142iuhowagh79X//onNjDw==} + requiresBuild: true + peerDependencies: + '@tanstack/ai': ^0.5.0 + zod: ^4.0.0 + dependencies: + '@anthropic-ai/sdk': 0.71.2(zod@4.3.6) + '@tanstack/ai': 0.6.1 + zod: 4.3.6 + dev: false + optional: true + + /@tanstack/ai-client@0.5.1: + resolution: {integrity: sha512-96Qm8sQYBgfLIUR3f09aaLERsNtg+lpZ1J2jiqFTc8YiL+21Ya2Q1JDU3Opd8nNDIhvjwv1tdNxXAsZnwGKKKQ==} + dependencies: + '@tanstack/ai': 0.6.1 + dev: false + + /@tanstack/ai-gemini@0.5.0(@tanstack/ai@0.6.1): + resolution: {integrity: sha512-gunJgwRG+38fbYSE83/XJMHFy/7hDN4Fb91vAAZLK3nh4DoN0ReVbRB4BK9cY9iVYQqGq2PA8d5ruDgfcKO2hQ==} + requiresBuild: true + peerDependencies: + '@tanstack/ai': ^0.5.0 + dependencies: + '@google/genai': 1.43.0 + '@tanstack/ai': 0.6.1 + transitivePeerDependencies: + - '@modelcontextprotocol/sdk' + - bufferutil + - supports-color + - utf-8-validate + dev: false + optional: true + + /@tanstack/ai-grok@0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6): + resolution: {integrity: sha512-X2ix/NmAXC1EyE3UIDSdX+T9A3VwWvQrnAomMyxqGDbDHHm+yQbjioloGOcwQ6Z3yzONeVcO36T6apoX2UPLsw==} + requiresBuild: true + peerDependencies: + '@tanstack/ai': ^0.5.0 + zod: ^4.0.0 + dependencies: + '@tanstack/ai': 0.6.1 + openai: 6.25.0(zod@4.3.6) + zod: 4.3.6 + transitivePeerDependencies: + - ws + dev: false + optional: true + + /@tanstack/ai-openai@0.5.0(@tanstack/ai@0.6.1)(zod@4.3.6): + resolution: {integrity: sha512-0xJg+BkqVgIRbl4LyiPQWCLOapfGpK4lSzqjaWRkz2Hf1C3m4exg76rBuv1mvr4G3XAR5SnMRSj3XxlWMuRImA==} + requiresBuild: true + peerDependencies: + '@tanstack/ai': ^0.5.0 + zod: ^4.0.0 + dependencies: + '@tanstack/ai': 0.6.1 + openai: 6.25.0(zod@4.3.6) + zod: 4.3.6 + transitivePeerDependencies: + - ws + dev: false + optional: true + + /@tanstack/ai-openrouter@0.5.1(@tanstack/ai@0.6.1): + resolution: {integrity: sha512-kdv091+tDafNc1V+B4FG0n7sDa49Y2Uqxg3CrXGMR5sdpu5sT4zhg98UJMqK0asdq80ZNwSL8IgyhbStPLcCMQ==} + requiresBuild: true + peerDependencies: + '@tanstack/ai': 0.5.1 + dependencies: + '@openrouter/sdk': 0.3.15 + '@tanstack/ai': 0.6.1 + dev: false + optional: true + + /@tanstack/ai-react@0.6.1(@tanstack/ai@0.6.1)(@types/react@19.1.17)(react@19.0.0): + resolution: {integrity: sha512-9cGHe1z5NSV5QpFRV5CX2CBXco393JfVxEl4DbGkO9bHsc4cHOUm3sglYZ01Ebcq/pDVoUFDrkHaBxn511GrxA==} + peerDependencies: + '@tanstack/ai': ^0.6.1 + '@types/react': '>=18.0.0' + react: '>=18.0.0' + dependencies: + '@tanstack/ai': 0.6.1 + '@tanstack/ai-client': 0.5.1 + '@types/react': 19.1.17 + react: 19.0.0 + dev: false + + /@tanstack/ai@0.6.1: + resolution: {integrity: sha512-k+4JrjBm5O1j5ccxErlUVC2IC2rJIqQCK45loLckeLow0cJ5rWdKtG03UwR+9VjppDdL6oO27jyk5CzU6ym+HQ==} + engines: {node: '>=18'} + dependencies: + '@tanstack/devtools-event-client': 0.4.0 + partial-json: 0.1.7 + dev: false + /@tanstack/devtools-event-client@0.3.5: resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} engines: {node: '>=18'} dev: false + /@tanstack/devtools-event-client@0.4.0: + resolution: {integrity: sha512-RPfGuk2bDZgcu9bAJodvO2lnZeHuz4/71HjZ0bGb/SPg8+lyTA+RLSKQvo7fSmPSi8/vcH3aKQ8EM9ywf1olaw==} + engines: {node: '>=18'} + dev: false + /@tanstack/history@1.115.0: resolution: {integrity: sha512-K7JJNrRVvyjAVnbXOH2XLRhFXDkeP54Kt2P4FR1Kl2KDGlIbkua5VqZQD2rot3qaDrpufyUa63nuLai1kOLTsQ==} engines: {node: '>=12'} @@ -12758,7 +13030,7 @@ packages: '@tanstack/virtual-file-routes': 1.87.6 prettier: 3.4.2 tsx: 4.19.2 - zod: 3.24.1 + zod: 3.25.76 dev: true /@tanstack/router-plugin@1.91.1(vite@6.4.1): @@ -12794,7 +13066,7 @@ packages: chokidar: 3.6.0 unplugin: 1.16.0 vite: 6.4.1(@types/node@20.10.6) - zod: 3.24.1 + zod: 3.25.76 transitivePeerDependencies: - supports-color dev: true @@ -12816,7 +13088,7 @@ packages: engines: {node: '>=12'} dev: true - /@tanstack/zod-adapter@1.150.0(@tanstack/react-router@1.120.13)(zod@4.0.17): + /@tanstack/zod-adapter@1.150.0(@tanstack/react-router@1.120.13)(zod@4.3.6): resolution: {integrity: sha512-MdkmF6tqxxskG3K3LHVN+PAj8m7kHMhlArDcI4Mi+Fx5CG3BCJcpYGv4aZJhvL0CxHw3N6qyn6SIzG9FraXhWA==} engines: {node: '>=12'} peerDependencies: @@ -12824,7 +13096,7 @@ packages: zod: ^3.23.8 dependencies: '@tanstack/react-router': 1.120.13(react-dom@19.0.0)(react@19.0.0) - zod: 4.0.17 + zod: 4.3.6 dev: false /@tokenizer/inflate@0.4.1: @@ -12915,6 +13187,11 @@ packages: dependencies: '@babel/types': 7.26.3 + /@types/bun@1.3.11: + resolution: {integrity: sha512-5vPne5QvtpjGpsGYXiFyycfpDF2ECyPcTSsFBMa0fraoxiQyMJ3SmuQIGhzPg2WJuWxVBoxWJ2kClYTcw/4fAg==} + dependencies: + bun-types: 1.3.11 + /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: @@ -13083,12 +13360,6 @@ packages: dependencies: undici-types: 5.26.5 - /@types/node@20.19.33: - resolution: {integrity: sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==} - dependencies: - undici-types: 6.21.0 - dev: true - /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -13150,6 +13421,12 @@ packages: resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} dev: true + /@types/retry@0.12.0: + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + requiresBuild: true + dev: false + optional: true + /@types/sax@1.2.7: resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} dependencies: @@ -14240,7 +14517,7 @@ packages: '@better-fetch/fetch': 1.1.21 '@noble/ciphers': 2.1.1 '@noble/hashes': 2.0.1 - better-call: 1.1.8(zod@4.0.17) + better-call: 1.1.8(zod@4.3.6) defu: 6.1.4 drizzle-kit: 0.31.9 drizzle-orm: 0.45.1(@libsql/client@0.10.0)(@opentelemetry/api@1.9.0)(@upstash/redis@1.36.0)(bun-types@1.3.5)(kysely@0.28.5) @@ -14320,7 +14597,7 @@ packages: '@better-fetch/fetch': 1.1.21 '@noble/ciphers': 2.1.1 '@noble/hashes': 2.0.1 - better-call: 1.1.8(zod@4.0.17) + better-call: 1.1.8(zod@4.3.6) defu: 6.1.4 drizzle-orm: 0.45.1(@libsql/client@0.10.0)(@opentelemetry/api@1.9.0)(@upstash/redis@1.36.0)(bun-types@1.3.5)(kysely@0.28.5) jose: 6.1.3 @@ -14396,32 +14673,17 @@ packages: '@better-fetch/fetch': 1.1.21 '@noble/ciphers': 2.1.1 '@noble/hashes': 2.0.1 - better-call: 1.1.7(zod@4.0.17) + better-call: 1.1.7(zod@4.3.6) defu: 6.1.4 jose: 6.1.3 kysely: 0.28.5 nanostores: 1.1.0 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - zod: 4.2.1 - dev: false - - /better-call@1.1.7(zod@4.0.17): - resolution: {integrity: sha512-6gaJe1bBIEgVebQu/7q9saahVzvBsGaByEnE8aDVncZEDiJO7sdNB28ot9I6iXSbR25egGmmZ6aIURXyQHRraQ==} - peerDependencies: - zod: ^4.0.0 - peerDependenciesMeta: - zod: - optional: true - dependencies: - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.21 - rou3: 0.7.12 - set-cookie-parser: 2.7.1 - zod: 4.0.17 + zod: 4.3.6 dev: false - /better-call@1.1.7(zod@4.2.1): + /better-call@1.1.7(zod@4.3.6): resolution: {integrity: sha512-6gaJe1bBIEgVebQu/7q9saahVzvBsGaByEnE8aDVncZEDiJO7sdNB28ot9I6iXSbR25egGmmZ6aIURXyQHRraQ==} peerDependencies: zod: ^4.0.0 @@ -14433,22 +14695,7 @@ packages: '@better-fetch/fetch': 1.1.21 rou3: 0.7.12 set-cookie-parser: 2.7.1 - zod: 4.2.1 - dev: false - - /better-call@1.1.8(zod@4.0.17): - resolution: {integrity: sha512-XMQ2rs6FNXasGNfMjzbyroSwKwYbZ/T3IxruSS6U2MJRsSYh3wYtG3o6H00ZlKZ/C/UPOAD97tqgQJNsxyeTXw==} - peerDependencies: - zod: ^4.0.0 - peerDependenciesMeta: - zod: - optional: true - dependencies: - '@better-auth/utils': 0.3.0 - '@better-fetch/fetch': 1.1.21 - rou3: 0.7.12 - set-cookie-parser: 2.7.1 - zod: 4.0.17 + zod: 4.3.6 dev: false /better-call@1.1.8(zod@4.3.6): @@ -14476,6 +14723,12 @@ packages: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} + /bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + requiresBuild: true + dev: false + optional: true + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -14541,10 +14794,9 @@ packages: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} dependencies: balanced-match: 1.0.2 - dev: false - /brace-expansion@5.0.3: - resolution: {integrity: sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==} + /brace-expansion@5.0.4: + resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} engines: {node: 18 || 20 || >=22} dependencies: balanced-match: 4.0.4 @@ -14594,7 +14846,7 @@ packages: hasBin: true dependencies: baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001774 + caniuse-lite: 1.0.30001775 electron-to-chromium: 1.5.302 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -14604,6 +14856,12 @@ packages: dependencies: node-int64: 0.4.0 + /buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + requiresBuild: true + dev: false + optional: true + /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -14613,6 +14871,11 @@ packages: base64-js: 1.5.1 ieee754: 1.2.1 + /bun-types@1.3.11: + resolution: {integrity: sha512-1KGPpoxQWl9f6wcZh57LvrPIInQMn2TQ7jsgxqpRzg+l0QPOFvJVH7HmvHo/AiPgwXy+/Thf6Ov3EdVn1vOabg==} + dependencies: + '@types/node': 20.10.6 + /bun-types@1.3.5: resolution: {integrity: sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw==} dependencies: @@ -14671,8 +14934,8 @@ packages: /caniuse-lite@1.0.30001737: resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==} - /caniuse-lite@1.0.30001774: - resolution: {integrity: sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==} + /caniuse-lite@1.0.30001775: + resolution: {integrity: sha512-s3Qv7Lht9zbVKE9XoTyRG6wVDCKdtOFIjBGg3+Yhn6JaytuNKPIjBMTMIY1AnOH3seL5mvF+x33oGAyK3hVt3A==} /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -15790,14 +16053,14 @@ packages: kysely: 0.28.5 dev: false - /drizzle-zod@0.8.3(drizzle-orm@0.45.1)(zod@4.0.17): + /drizzle-zod@0.8.3(drizzle-orm@0.45.1)(zod@4.3.6): resolution: {integrity: sha512-66yVOuvGhKJnTdiqj1/Xaaz9/qzOdRJADpDa68enqS6g3t0kpNkwNYjUuaeXgZfO/UWuIM9HIhSlJ6C5ZraMww==} peerDependencies: drizzle-orm: '>=0.36.0' zod: ^3.25.0 || ^4.0.0 dependencies: drizzle-orm: 0.45.1(@libsql/client@0.10.0)(@opentelemetry/api@1.9.0)(@upstash/redis@1.36.0)(bun-types@1.3.5)(kysely@0.28.5) - zod: 4.0.17 + zod: 4.3.6 dev: false /dset@3.1.4: @@ -15817,6 +16080,14 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + /ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + requiresBuild: true + dependencies: + safe-buffer: 5.2.1 + dev: false + optional: true + /ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -15837,8 +16108,8 @@ packages: /electron-to-chromium@1.5.75: resolution: {integrity: sha512-Lf3++DumRE/QmweGjU+ZcKqQ+3bKkU/qjaKYhIJKEOhgIO9Xs6IiAQFkfFoj+RhgDk4LUeNsLo6plExHqSyu6Q==} - /elysia@1.4.19(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3): - resolution: {integrity: sha512-DZb9y8FnWyX5IuqY44SvqAV0DjJ15NeCWHrLdgXrKgTPDPsl3VNwWHqrEr9bmnOCpg1vh6QUvAX/tcxNj88jLA==} + /elysia@1.4.27(@sinclair/typebox@0.34.48)(@types/bun@1.3.11)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.8.3): + resolution: {integrity: sha512-2UlmNEjPJVA/WZVPYKy+KdsrfFwwNlqSBW1lHz6i2AHc75k7gV4Rhm01kFeotH7PDiHIX2G8X3KnRPc33SGVIg==} peerDependencies: '@sinclair/typebox': '>= 0.34.0 < 1' '@types/bun': '>= 1.2.0' @@ -15853,6 +16124,7 @@ packages: optional: true dependencies: '@sinclair/typebox': 0.34.48 + '@types/bun': 1.3.11 cookie: 1.1.1 exact-mirror: 0.2.7(@sinclair/typebox@0.34.48) fast-decode-uri-component: 1.0.1 @@ -15862,8 +16134,8 @@ packages: typescript: 5.8.3 dev: false - /elysia@1.4.26(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.9.2): - resolution: {integrity: sha512-oGhEFYwt+4M/U9w34XTdBen2KOQIa/PXne40zUkTWRgJlVJNBhepxOdjWeY1U0CbYoEOyZaj1tc79wOsuCxMYw==} + /elysia@1.4.27(@sinclair/typebox@0.34.48)(exact-mirror@0.2.7)(file-type@21.3.0)(openapi-types@12.1.3)(typescript@5.9.2): + resolution: {integrity: sha512-2UlmNEjPJVA/WZVPYKy+KdsrfFwwNlqSBW1lHz6i2AHc75k7gV4Rhm01kFeotH7PDiHIX2G8X3KnRPc33SGVIg==} peerDependencies: '@sinclair/typebox': '>= 0.34.0 < 1' '@types/bun': '>= 1.2.0' @@ -15930,8 +16202,8 @@ packages: graceful-fs: 4.2.11 tapable: 2.2.3 - /enhanced-resolve@5.19.0: - resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} + /enhanced-resolve@5.20.0: + resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 @@ -17063,11 +17335,10 @@ packages: - supports-color dev: false - /filelist@1.0.5: - resolution: {integrity: sha512-ct/ckWBV/9Dg3MlvCXsLcSUyoWwv9mCKqlhLNB2DAuXR/NZolSXlQqP5dyy6guWlPXBhodZyZ5lGPQcbQDxrEQ==} - engines: {node: 20 || >=22} + /filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} dependencies: - minimatch: 10.2.3 + minimatch: 5.1.9 dev: true /fill-range@7.0.1: @@ -17262,6 +17533,33 @@ packages: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} dev: true + /gaxios@7.1.3: + resolution: {integrity: sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==} + engines: {node: '>=18'} + requiresBuild: true + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + node-fetch: 3.3.2 + rimraf: 5.0.10 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /gcp-metadata@8.1.2: + resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} + engines: {node: '>=18'} + requiresBuild: true + dependencies: + gaxios: 7.1.3 + google-logging-utils: 1.1.3 + json-bigint: 1.0.0 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + /generator-function@2.0.1: resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} engines: {node: '>= 0.4'} @@ -17407,7 +17705,7 @@ packages: dependencies: foreground-child: 3.3.1 jackspeak: 4.2.3 - minimatch: 10.2.3 + minimatch: 10.2.4 minipass: 7.1.3 package-json-from-dist: 1.0.1 path-scurry: 2.0.2 @@ -17469,6 +17767,29 @@ packages: csstype: 3.2.3 dev: true + /google-auth-library@10.6.1: + resolution: {integrity: sha512-5awwuLrzNol+pFDmKJd0dKtZ0fPLAtoA5p7YO4ODsDu6ONJUVqbYwvv8y2ZBO5MBNp9TJXigB19710kYpBPdtA==} + engines: {node: '>=18'} + requiresBuild: true + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 7.1.3 + gcp-metadata: 8.1.2 + google-logging-utils: 1.1.3 + jws: 4.0.1 + transitivePeerDependencies: + - supports-color + dev: false + optional: true + + /google-logging-utils@1.1.3: + resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + /gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -18365,7 +18686,7 @@ packages: hasBin: true dependencies: async: 3.2.6 - filelist: 1.0.5 + filelist: 1.0.6 picocolors: 1.1.1 dev: true @@ -18537,7 +18858,7 @@ packages: jest-mock: 29.7.0 jest-util: 29.7.0 - /jest-expo@54.0.13(@babel/core@7.26.0)(expo@54.0.25)(jest@29.7.0)(react-dom@19.1.0)(react-native@0.81.5)(react@19.1.0)(webpack@5.105.2): + /jest-expo@54.0.13(@babel/core@7.26.0)(expo@54.0.25)(jest@29.7.0)(react-dom@19.1.0)(react-native@0.81.5)(react@19.1.0)(webpack@5.105.3): resolution: {integrity: sha512-V0xefV7VJ9RD6v6Jo64I8RzQCchgEWVn6ip5r+u4TlgsGau0DA8CAqzitn4ShoSKlmjmpuaMqcGxeCz1p9Cfvg==} hasBin: true peerDependencies: @@ -18557,7 +18878,7 @@ packages: json5: 2.2.3 lodash: 4.17.21 react-native: 0.81.5(@babel/core@7.26.0)(@types/react@19.1.17)(react@19.1.0) - react-server-dom-webpack: 19.0.0(react-dom@19.1.0)(react@19.1.0)(webpack@5.105.2) + react-server-dom-webpack: 19.0.0(react-dom@19.1.0)(react@19.1.0)(webpack@5.105.3) react-test-renderer: 19.1.0(react@19.1.0) server-only: 0.0.1 stacktrace-js: 2.0.2 @@ -18827,7 +19148,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.19.33 + '@types/node': 20.10.6 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true @@ -18996,9 +19317,27 @@ packages: engines: {node: '>=6'} hasBin: true + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + requiresBuild: true + dependencies: + bignumber.js: 9.3.1 + dev: false + optional: true + /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + /json-schema-to-ts@3.1.1: + resolution: {integrity: sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==} + engines: {node: '>=16'} + requiresBuild: true + dependencies: + '@babel/runtime': 7.28.6 + ts-algebra: 2.0.0 + dev: false + optional: true + /json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} dev: true @@ -19033,6 +19372,25 @@ packages: engines: {node: '>=0.10.0'} dev: true + /jwa@2.0.1: + resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==} + requiresBuild: true + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + dev: false + optional: true + + /jws@4.0.1: + resolution: {integrity: sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==} + requiresBuild: true + dependencies: + jwa: 2.0.1 + safe-buffer: 5.2.1 + dev: false + optional: true + /kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -19372,6 +19730,12 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 + /long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + requiresBuild: true + dev: false + optional: true + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: false @@ -19766,8 +20130,8 @@ packages: transitivePeerDependencies: - supports-color - /metro-babel-transformer@0.84.0: - resolution: {integrity: sha512-91uPQECjnYBNwyCJwsriG18N9HaQ0VcxGb7A0iWBsrNF49wbRblokm7YBz31O5r9cix0DxH2BiwreNWPP5q65w==} + /metro-babel-transformer@0.84.2: + resolution: {integrity: sha512-UZqjh1VMRDm0WasifM0aN+JreCn3CW0BaPoZgDXb0xOMFSF9dKZJsKhcrpzkjL1+qwmHFYjlhGiQ+tvXdSx+OQ==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: '@babel/core': 7.29.0 @@ -19784,8 +20148,8 @@ packages: dependencies: flow-enums-runtime: 0.0.6 - /metro-cache-key@0.84.0: - resolution: {integrity: sha512-hREMJDJQ3MZW8dXco06HcmhoET6eJjvaPAml3eScTZsp5XBWhknocEiR5zlqx3zKhs3x3K7DK2C8f0uf9X3h0A==} + /metro-cache-key@0.84.2: + resolution: {integrity: sha512-+yJxLYu5nhKp7jZD6wtx4dMoSqLzK6MeYVkjMaUgjuh2Lu8DwGrxRnbmIVnn5Z9AQOs/K4eOWmuD7N2p64UCMw==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: flow-enums-runtime: 0.0.6 @@ -19802,14 +20166,14 @@ packages: transitivePeerDependencies: - supports-color - /metro-cache@0.84.0: - resolution: {integrity: sha512-qIjsTdzWDZMJrztup4u0AnokxIee73fbti2MkV7MgSQ85zSIUSgjV3++oCaQ2m+qzhy+XCasG3n51B+avVDMhw==} + /metro-cache@0.84.2: + resolution: {integrity: sha512-jPX2fwOc/MmP2KRScSg2jFtVN9BTd+QN6j/3qZ+HIbEAsePLONozbKR2kCIBGvVeBTe7js48WXziI4+AdfwfFQ==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: exponential-backoff: 3.1.3 flow-enums-runtime: 0.0.6 https-proxy-agent: 7.0.6 - metro-core: 0.84.0 + metro-core: 0.84.2 transitivePeerDependencies: - supports-color dev: true @@ -19831,17 +20195,17 @@ packages: - supports-color - utf-8-validate - /metro-config@0.84.0: - resolution: {integrity: sha512-wXhIQebmW8jyNr2xht1tKFRio9hSThpYzkiDBBMggk/LYw/6KbaUyl1EKJmpm5M/KJ4XwrhL3yTTMi2MqfWaDw==} + /metro-config@0.84.2: + resolution: {integrity: sha512-ze7IgJwLJoXoTxeXW86xqqKoxXjE0gZg5w8kW2mawaWLSfuvI0KgVaaERXgoVuWl+DQU2q22tIeAEdsCyUZvBQ==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: connect: 3.7.0 flow-enums-runtime: 0.0.6 jest-validate: 29.7.0 - metro: 0.84.0 - metro-cache: 0.84.0 - metro-core: 0.84.0 - metro-runtime: 0.84.0 + metro: 0.84.2 + metro-cache: 0.84.2 + metro-core: 0.84.2 + metro-runtime: 0.84.2 yaml: 2.8.2 transitivePeerDependencies: - bufferutil @@ -19857,13 +20221,13 @@ packages: lodash.throttle: 4.1.1 metro-resolver: 0.83.2 - /metro-core@0.84.0: - resolution: {integrity: sha512-HWDvRDFTNcNZqgSs2DQX379BAJHYdE6bsX4SNQztz9KUqDx5egrQPzIahtYP5irP/RbksTqKbGeXtJxVz2557A==} + /metro-core@0.84.2: + resolution: {integrity: sha512-s9Ko372nzfbu5Y2uhWDlB/g3E6mba3Es95QzF/8IwNM4ynZgqM9rfnU0PR54onGvDGDfj44jbooSxaA1D09rDA==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: flow-enums-runtime: 0.0.6 lodash.throttle: 4.1.1 - metro-resolver: 0.84.0 + metro-resolver: 0.84.2 dev: true /metro-file-map@0.83.2: @@ -19882,8 +20246,8 @@ packages: transitivePeerDependencies: - supports-color - /metro-file-map@0.84.0: - resolution: {integrity: sha512-euSnhAgRaaZdK1bdcPiez0MPErg+a0h6rrop+xcQI0mNQEm1GT6R5h+yycfMMQvPkZnfzpPkhjH+pr/x7BK4WQ==} + /metro-file-map@0.84.2: + resolution: {integrity: sha512-ZgX1lXO9YJCgTY6OSuwvRcHdhXjAFd1DdYC4g2B+d7yAtLUW1/OqwTLpW6ixl1zqZDDQSDSYZXDsN7DL2IumBw==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: debug: 4.4.3 @@ -19906,8 +20270,8 @@ packages: flow-enums-runtime: 0.0.6 terser: 5.43.1 - /metro-minify-terser@0.84.0: - resolution: {integrity: sha512-STWICiHB3Lywl+K5eOl7Xm8/5+S9ch1YLXinXN0hDijq3SOh2UTGspxUZhWmqOvkDt/nd8dG/zSJO7JfcisV5A==} + /metro-minify-terser@0.84.2: + resolution: {integrity: sha512-1TNGPN4oUose+XSHsdDUvcvPHQxKP5lZNbiS6UteTXX+6zFNu+IzxqSokyrDoj9BSjVbdClrB3okuI+Fpls3LA==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: flow-enums-runtime: 0.0.6 @@ -19920,8 +20284,8 @@ packages: dependencies: flow-enums-runtime: 0.0.6 - /metro-resolver@0.84.0: - resolution: {integrity: sha512-RTzim9q3rTz5AsRB/RBsTvy+GqHt6LzlIHx8YERv7eGDLjjr291tX2+2g//wbn/uNR/nLtdzJ08FfW1s6qZo/Q==} + /metro-resolver@0.84.2: + resolution: {integrity: sha512-2i6OQJIv18+olvLnmcM20uhi1T729+25izZozqOugSaV0YGzMV/EXkYFqxkXC9iNsantGcI/w9PgaI89wLK6JQ==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: flow-enums-runtime: 0.0.6 @@ -19934,8 +20298,8 @@ packages: '@babel/runtime': 7.28.3 flow-enums-runtime: 0.0.6 - /metro-runtime@0.84.0: - resolution: {integrity: sha512-PJfD4arkFJrdnmJwrela+my+IgJIXSshA2gI3QiOWCzujBZX6XvsT0tKSwzw3FNMfU10OllO0X5tPcdTGTesjg==} + /metro-runtime@0.84.2: + resolution: {integrity: sha512-NzzORY2+mmN3tLhsZ7N4GDOBERusalyM1o1k36euulUIEe8UkDhwzcsRexvxKaSkrGLiRQ9PYDLp9uxPkQ+A0Q==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: '@babel/runtime': 7.28.6 @@ -19959,17 +20323,17 @@ packages: transitivePeerDependencies: - supports-color - /metro-source-map@0.84.0: - resolution: {integrity: sha512-09CAPDBWO7gveW4GdLbWQJObxNrkElL5LQATG2xsU8wE7/TZgHc/MhEs8hm73ZC8lnIvCn5V7VS5lNlE6Od+Ww==} + /metro-source-map@0.84.2: + resolution: {integrity: sha512-m6rRVBefzaAyn6dBk5GOabVchCQ3VIS1/MhCj61dJB5cqLOOx34BV3DRFwnDBkuPw2RR/LUoul0U1sixlS9VQg==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-symbolicate: 0.84.0 + metro-symbolicate: 0.84.2 nullthrows: 1.1.1 - ob1: 0.84.0 + ob1: 0.84.2 source-map: 0.5.7 vlq: 1.0.1 transitivePeerDependencies: @@ -19990,14 +20354,14 @@ packages: transitivePeerDependencies: - supports-color - /metro-symbolicate@0.84.0: - resolution: {integrity: sha512-JehuiPnqtS5I2luZdk7UHUY7bjNY/4xX1cJ8ezXWutTitiLp489Fsx+aErDTVoWcAx15lrjWa8IpTwoR0JLtZg==} + /metro-symbolicate@0.84.2: + resolution: {integrity: sha512-o0RY49012YcGE1E4GsZtgzFCBPeoxlASzIsD5CNOTmAoKDIroHfTFFiYCGPLCGwRwQjMaCChhoH0TZCjAyyCKA==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true dependencies: flow-enums-runtime: 0.0.6 invariant: 2.2.4 - metro-source-map: 0.84.0 + metro-source-map: 0.84.2 nullthrows: 1.1.1 source-map: 0.5.7 vlq: 1.0.1 @@ -20018,8 +20382,8 @@ packages: transitivePeerDependencies: - supports-color - /metro-transform-plugins@0.84.0: - resolution: {integrity: sha512-B/5eGY4w9YA7wZ5DkWYsW4ZQ/6KkPH97A/F9s6Jj2s9f586p3tGa2sbsm8WXFXNk26tprHda8EOaO6dNSw/TmA==} + /metro-transform-plugins@0.84.2: + resolution: {integrity: sha512-/821YLQv4PgD1NOruzPkr0r3HDALXqwCEECewyEQZ5hmSb8jzf1VdEpf3F8fx8zI4/5dHY/rARDVVuHCEb/Xrg==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: '@babel/core': 7.29.0 @@ -20054,8 +20418,8 @@ packages: - supports-color - utf-8-validate - /metro-transform-worker@0.84.0: - resolution: {integrity: sha512-5fwkH5SrrM4RvASbZMQmA0SCiSWeseNbOE99etYjGrns/yFLxO7+oyGPQcoMNo3hMQlQ2Vyd2UcKNc+D81xSew==} + /metro-transform-worker@0.84.2: + resolution: {integrity: sha512-aR09svo3WC7OTYk5YB0VY0iSXOGrPdfmQWIxG8ADD2cKf/B95VR+y4GgVUbqB31buNvgtU+iCx9186i/YaNGlw==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: '@babel/core': 7.29.0 @@ -20063,13 +20427,13 @@ packages: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 flow-enums-runtime: 0.0.6 - metro: 0.84.0 - metro-babel-transformer: 0.84.0 - metro-cache: 0.84.0 - metro-cache-key: 0.84.0 - metro-minify-terser: 0.84.0 - metro-source-map: 0.84.0 - metro-transform-plugins: 0.84.0 + metro: 0.84.2 + metro-babel-transformer: 0.84.2 + metro-cache: 0.84.2 + metro-cache-key: 0.84.2 + metro-minify-terser: 0.84.2 + metro-source-map: 0.84.2 + metro-transform-plugins: 0.84.2 nullthrows: 1.1.1 transitivePeerDependencies: - bufferutil @@ -20127,8 +20491,8 @@ packages: - supports-color - utf-8-validate - /metro@0.84.0: - resolution: {integrity: sha512-Dy3KZphEH0xUO3rxRSwrCdge2vVjBAbSlPAKcL8qRnNEBlHz/3jPbmbb2fs9BVOrqBTi8EVDu/jdpCdWvg1ygA==} + /metro@0.84.2: + resolution: {integrity: sha512-Qw7sl+e34cf/0LYEvDfVPiWvXmkvpuVgFqjzhPCc9Mw30NsvRFYZEH6I9zEHlpjugIveV+Jzdqt3YSPMU+Hx/w==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} hasBin: true dependencies: @@ -20153,18 +20517,18 @@ packages: jest-worker: 29.7.0 jsc-safe-url: 0.2.4 lodash.throttle: 4.1.1 - metro-babel-transformer: 0.84.0 - metro-cache: 0.84.0 - metro-cache-key: 0.84.0 - metro-config: 0.84.0 - metro-core: 0.84.0 - metro-file-map: 0.84.0 - metro-resolver: 0.84.0 - metro-runtime: 0.84.0 - metro-source-map: 0.84.0 - metro-symbolicate: 0.84.0 - metro-transform-plugins: 0.84.0 - metro-transform-worker: 0.84.0 + metro-babel-transformer: 0.84.2 + metro-cache: 0.84.2 + metro-cache-key: 0.84.2 + metro-config: 0.84.2 + metro-core: 0.84.2 + metro-file-map: 0.84.2 + metro-resolver: 0.84.2 + metro-runtime: 0.84.2 + metro-source-map: 0.84.2 + metro-symbolicate: 0.84.2 + metro-transform-plugins: 0.84.2 + metro-transform-worker: 0.84.2 mime-types: 3.0.2 nullthrows: 1.1.1 serialize-error: 2.1.0 @@ -20623,11 +20987,11 @@ packages: '@isaacs/brace-expansion': 5.0.0 dev: true - /minimatch@10.2.3: - resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + /minimatch@10.2.4: + resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} dependencies: - brace-expansion: 5.0.3 + brace-expansion: 5.0.4 dev: true /minimatch@3.1.2: @@ -20635,6 +20999,13 @@ packages: dependencies: brace-expansion: 1.1.11 + /minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.2 + dev: true + /minimatch@8.0.4: resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} engines: {node: '>=16 || 14 >=14.17'} @@ -20916,8 +21287,8 @@ packages: dependencies: flow-enums-runtime: 0.0.6 - /ob1@0.84.0: - resolution: {integrity: sha512-NBpmKuboMBiWd1V6U6ISIqLg8Az5BHARnKdS/k8IS7spNt931++4BflqI/TMt4otQ387Q5PFB1fzSLRNPC3HZA==} + /ob1@0.84.2: + resolution: {integrity: sha512-JID0ti8tDRQZJdQ3l+UeVAsKP+dW5Ucmktes/J9FwqP5KarafoTMqWvw4LRKrMtA7yWT3r/+E2w5wapd89GToA==} engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0} dependencies: flow-enums-runtime: 0.0.6 @@ -21024,6 +21395,21 @@ packages: is-docker: 2.2.1 is-wsl: 2.2.0 + /openai@6.25.0(zod@4.3.6): + resolution: {integrity: sha512-mEh6VZ2ds2AGGokWARo18aPISI1OhlgdEIC1ewhkZr8pSIT31dec0ecr9Nhxx0JlybyOgoAT1sWeKtwPZzJyww==} + hasBin: true + peerDependencies: + ws: ^8.18.0 + zod: ^3.25 || ^4.0 + peerDependenciesMeta: + ws: + optional: true + zod: + optional: true + dependencies: + zod: 4.3.6 + dev: false + /openapi-types@12.1.3: resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} dev: false @@ -21111,6 +21497,16 @@ packages: p-timeout: 6.1.4 dev: false + /p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + requiresBuild: true + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + dev: false + optional: true + /p-timeout@6.1.4: resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==} engines: {node: '>=14.16'} @@ -21191,6 +21587,10 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + /partial-json@0.1.7: + resolution: {integrity: sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA==} + dev: false + /password-prompt@1.1.3: resolution: {integrity: sha512-HkrjG2aJlvF0t2BMH0e2LB/EHf3Lcq3fNMzy4GYHcQblAvOl+QQji1Lx7WRBMqpVK8p+KR7bCg7oqAMXtdgqyw==} dependencies: @@ -21525,6 +21925,26 @@ packages: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} dev: false + /protobufjs@7.5.4: + resolution: {integrity: sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.10.6 + long: 5.3.2 + dev: false + optional: true + /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: false @@ -22085,7 +22505,7 @@ packages: use-sidecar: 1.1.3(@types/react@19.1.17)(react@19.1.0) dev: false - /react-server-dom-webpack@19.0.0(react-dom@19.1.0)(react@19.1.0)(webpack@5.105.2): + /react-server-dom-webpack@19.0.0(react-dom@19.1.0)(react@19.1.0)(webpack@5.105.3): resolution: {integrity: sha512-hLug9KEXLc8vnU9lDNe2b2rKKDaqrp5gNiES4uyu2Up3FZfZJZmdwLFXlWzdA9gTB/6/cWduSB2K1Lfag2pSvw==} engines: {node: '>=0.10.0'} peerDependencies: @@ -22097,7 +22517,7 @@ packages: neo-async: 2.6.2 react: 19.1.0 react-dom: 19.1.0(react@19.1.0) - webpack: 5.105.2 + webpack: 5.105.3 webpack-sources: 3.3.3 dev: true @@ -22688,6 +23108,13 @@ packages: unified: 11.0.5 dev: false + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + requiresBuild: true + dev: false + optional: true + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -22698,6 +23125,15 @@ packages: dependencies: glob: 7.2.3 + /rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + requiresBuild: true + dependencies: + glob: 10.4.5 + dev: false + optional: true + /rollup-plugin-inject@3.0.2: resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. @@ -23686,7 +24122,7 @@ packages: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - /terser-webpack-plugin@5.3.16(webpack@5.105.2): + /terser-webpack-plugin@5.3.16(webpack@5.105.3): resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -23707,7 +24143,7 @@ packages: schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.46.0 - webpack: 5.105.2 + webpack: 5.105.3 dev: true /terser@5.43.1: @@ -23844,7 +24280,7 @@ packages: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} dev: false - /trpc-cli@0.12.1(@trpc/server@11.8.1)(zod@4.2.1): + /trpc-cli@0.12.1(@trpc/server@11.8.1)(zod@4.3.6): resolution: {integrity: sha512-/D/mIQf3tUrS7ZKJZ1gmSPJn2psAABJfkC5Eevm55SZ4s6KwANOUNlwhAGXN9HT4VSJVfoF2jettevE9vHPQlg==} engines: {node: '>=18'} hasBin: true @@ -23871,9 +24307,15 @@ packages: dependencies: '@trpc/server': 11.8.1(typescript@5.9.3) commander: 14.0.2 - zod: 4.2.1 + zod: 4.3.6 dev: true + /ts-algebra@2.0.0: + resolution: {integrity: sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==} + requiresBuild: true + dev: false + optional: true + /ts-fsrs@5.2.3: resolution: {integrity: sha512-R3IjceC9WfnvUin6Nx+DwqEzh3Qil6Gg2yEHqvocUcC7Nbi+xDrFg/1fKaYBT0tJedDnDAguXMSX0hijhi859w==} engines: {node: '>=18.0.0'} @@ -24097,8 +24539,8 @@ packages: jsonc-parser: 3.3.1 nypm: 0.6.2 picocolors: 1.1.1 - trpc-cli: 0.12.1(@trpc/server@11.8.1)(zod@4.2.1) - zod: 4.2.1 + trpc-cli: 0.12.1(@trpc/server@11.8.1)(zod@4.3.6) + zod: 4.3.6 transitivePeerDependencies: - '@orpc/server' - '@valibot/to-json-schema' @@ -24128,10 +24570,6 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - /undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - dev: true - /undici@5.29.0: resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==} engines: {node: '>=14.0'} @@ -24966,8 +25404,8 @@ packages: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} dev: true - /webpack@5.105.2: - resolution: {integrity: sha512-dRXm0a2qcHPUBEzVk8uph0xWSjV/xZxenQQbLwnwP7caQCYpqG1qddwlyEkIDkYn0K8tvmcrZ+bOrzoQ3HxCDw==} + /webpack@5.105.3: + resolution: {integrity: sha512-LLBBA4oLmT7sZdHiYE/PeVuifOxYyE2uL/V+9VQP7YSYdJU7bSf7H8bZRRxW8kEPMkmVjnrXmoR3oejIdX0xbg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -24986,7 +25424,7 @@ packages: acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.19.0 + enhanced-resolve: 5.20.0 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -24998,7 +25436,7 @@ packages: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(webpack@5.105.2) + terser-webpack-plugin: 5.3.16(webpack@5.105.3) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: @@ -25621,22 +26059,11 @@ packages: resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} dev: true - /zod@3.24.1: - resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==} - dev: true - /zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - /zod@4.0.17: - resolution: {integrity: sha512-1PHjlYRevNxxdy2JZ8JcNAw7rX8V9P1AKkP+x/xZfxB0K5FYfuV+Ug6P/6NVSR2jHQ+FzDDoDHS04nYUsOIyLQ==} - - /zod@4.2.1: - resolution: {integrity: sha512-0wZ1IRqGGhMP76gLqz8EyfBXKk0J2qo2+H3fi4mcUP/KtTocoX08nmIAHl1Z2kJIZbZee8KOpBCSNPRgauucjw==} - /zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - dev: false /zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}