{"_id":"@baklavue/composables","_rev":"4-77bdc605857b73a1fc9427f1dac0c34b","name":"@baklavue/composables","dist-tags":{"latest":"1.0.0","beta":"1.0.0-preview.3"},"versions":{"1.0.0-preview.1":{"name":"@baklavue/composables","version":"1.0.0-preview.1","keywords":["vue","vue3","baklava","trendyol","design-system","composables"],"author":{"name":"erbilnas"},"license":"MIT","_id":"@baklavue/composables@1.0.0-preview.1","maintainers":[{"name":"erbilnas","email":"erbilnas071@gmail.com"}],"homepage":"https://github.com/erbilnas/baklavue/tree/main/packages/composables#readme","bugs":{"url":"https://github.com/erbilnas/baklavue/issues"},"dist":{"shasum":"223c976ab445d335b3f1d4f2e4034e8b77ee8d27","tarball":"https://registry.npmjs.org/@baklavue/composables/-/composables-1.0.0-preview.1.tgz","fileCount":10,"integrity":"sha512-3fnj3+nsqGO+xt/JMbg8/030Y+NlleXKP69lO5M1bRMUfcqpAjnSFv5vSIlmA1h8u8RlIAzvUIGiEIwYCqrXsw==","signatures":[{"sig":"MEUCIADAVNPdG/4DCSmq1BtrmJTf/w+myBl6Xdc/X2KvMj9JAiEAvYikjZfCQKW4ayK0rLgaKXAjIEcMGQ0BUUAkJipWhE8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32775},"type":"module","module":"index.ts","gitHead":"b3ad12cf14e72fbc67fcb39ebb7d8b56683bbb97","scripts":{"release":"semantic-release -e semantic-release-monorepo","release:dry-run":"semantic-release --dry-run -e semantic-release-monorepo"},"_npmUser":{"name":"erbilnas","email":"erbilnas071@gmail.com"},"repository":{"url":"git+https://github.com/erbilnas/baklavue.git","type":"git","directory":"packages/composables"},"_npmVersion":"10.9.4","description":"Vue 3 composables for Trendyol Baklava Design System","directories":{},"_nodeVersion":"22.22.0","dependencies":{"papaparse":"^5.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","@types/papaparse":"^5.5.2","@trendyol/baklava":"^3.4.2"},"peerDependencies":{"vue":">=3.0.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/composables_1.0.0-preview.1_1770826045790_0.09394150867145301","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-preview.2":{"name":"@baklavue/composables","version":"1.0.0-preview.2","keywords":["vue","vue3","baklava","trendyol","design-system","composables"],"author":{"name":"erbilnas"},"license":"MIT","_id":"@baklavue/composables@1.0.0-preview.2","maintainers":[{"name":"erbilnas","email":"erbilnas071@gmail.com"}],"homepage":"https://github.com/erbilnas/baklavue/tree/main/packages/composables#readme","bugs":{"url":"https://github.com/erbilnas/baklavue/issues"},"dist":{"shasum":"54164831462ebd8e96a4691923c9a3e7e35da0de","tarball":"https://registry.npmjs.org/@baklavue/composables/-/composables-1.0.0-preview.2.tgz","fileCount":22,"integrity":"sha512-xd/NFmbjVPSQNDT0mMNPI5njXxtcBlf6ktnJ6DO3d+gOsuT6Im3mZqyjZLPzY6YsfkALn8jgj4PKLtIsOTEj1A==","signatures":[{"sig":"MEQCICiRhTQkBnYgNMc5GITd2uS+jMnEcaOMSsG+zIPkSj8kAiAJDq3A1ONECvwLh+UudUat0XgsGURrbdQRg7lssHqDeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67098},"type":"module","module":"index.ts","gitHead":"5e8bd832375f0f558f056222fb2dc071749c0696","scripts":{"release":"semantic-release -e semantic-release-monorepo","release:dry-run":"semantic-release --dry-run -e semantic-release-monorepo"},"_npmUser":{"name":"erbilnas","email":"erbilnas071@gmail.com"},"repository":{"url":"git+https://github.com/erbilnas/baklavue.git","type":"git","directory":"packages/composables"},"_npmVersion":"10.9.4","description":"Vue 3 composables for Trendyol Baklava Design System","directories":{},"_nodeVersion":"22.22.0","dependencies":{"papaparse":"^5.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"@types/bun":"latest","@types/papaparse":"^5.5.2","@trendyol/baklava":"^3.4.2"},"peerDependencies":{"vue":">=3.0.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/composables_1.0.0-preview.2_1770829026303_0.1930438396774694","host":"s3://npm-registry-packages-npm-production"}},"1.0.0-preview.3":{"name":"@baklavue/composables","version":"1.0.0-preview.3","keywords":["vue","vue3","baklava","trendyol","design-system","composables"],"author":{"name":"erbilnas"},"license":"MIT","_id":"@baklavue/composables@1.0.0-preview.3","maintainers":[{"name":"erbilnas","email":"erbilnas071@gmail.com"}],"homepage":"https://github.com/erbilnas/baklavue/tree/main/packages/composables#readme","bugs":{"url":"https://github.com/erbilnas/baklavue/issues"},"dist":{"shasum":"b083e482fa6bd6bfb1f281fa529f31a0f6a8b141","tarball":"https://registry.npmjs.org/@baklavue/composables/-/composables-1.0.0-preview.3.tgz","fileCount":100,"integrity":"sha512-+Yq2qrjZ2TWkRu8fMzJGwLPda32tfdYwuONXDr7QxQ7OwrPkGWuiwq1HgHc87e71wmh6zxVDuLT4c9YlxRh7XQ==","signatures":[{"sig":"MEUCIQDlhu6j/oVPNcKyuyf3W0/UOkFS/9paQG81G+sp8GWc9AIgY0I+dme/i+BFho6vyk1QJ1xrRl0xRcxb43ss26VgGDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":473384},"type":"module","module":"index.ts","gitHead":"68391589b16c8d623dfb7e36ecf1fccc0f589d2c","scripts":{"test":"vitest","release":"semantic-release -e semantic-release-monorepo","test:run":"vitest run","test:coverage":"vitest run --coverage","release:dry-run":"semantic-release --dry-run -e semantic-release-monorepo"},"_npmUser":{"name":"erbilnas","email":"erbilnas071@gmail.com"},"repository":{"url":"git+https://github.com/erbilnas/baklavue.git","type":"git","directory":"packages/composables"},"_npmVersion":"10.9.4","description":"Vue 3 composables for Trendyol Baklava Design System","directories":{},"_nodeVersion":"22.22.0","dependencies":{"xlsx":"^0.18.5","papaparse":"^5.5.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"^4.3.6","vitest":"^4.0.18","happy-dom":"^20.6.1","@types/bun":"latest","@vue/test-utils":"^2.4.6","@types/papaparse":"^5.5.2","@trendyol/baklava":"^3.4.2","@vitest/coverage-v8":"^4.0.18"},"peerDependencies":{"vue":"^3.5.28","zod":"^3.23.0 || ^4.0.0","typescript":"^5.9.2"},"_npmOperationalInternal":{"tmp":"tmp/composables_1.0.0-preview.3_1770897479976_0.8111111368533148","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@baklavue/composables","version":"1.0.0","description":"Vue 3 composables for Trendyol Baklava Design System","author":{"name":"erbilnas"},"license":"MIT","homepage":"https://github.com/erbilnas/baklavue/tree/main/packages/composables#readme","repository":{"type":"git","url":"git+https://github.com/erbilnas/baklavue.git","directory":"packages/composables"},"bugs":{"url":"https://github.com/erbilnas/baklavue/issues"},"keywords":["vue","vue3","baklava","trendyol","design-system","composables"],"module":"index.ts","type":"module","scripts":{"release":"semantic-release -e semantic-release-monorepo","release:dry-run":"semantic-release --dry-run -e semantic-release-monorepo","test":"vitest","test:run":"vitest run","test:coverage":"vitest run --coverage"},"devDependencies":{"@trendyol/baklava":"^3.4.2","@types/bun":"latest","@types/papaparse":"^5.5.2","@vitest/coverage-v8":"^4.0.18","@vue/test-utils":"^2.4.6","happy-dom":"^20.6.1","vitest":"^4.0.18","zod":"^4.3.6"},"peerDependencies":{"typescript":"^5.9.2","vue":"^3.5.28","zod":"^3.23.0 || ^4.0.0"},"publishConfig":{"access":"public"},"dependencies":{"papaparse":"^5.5.3","xlsx":"^0.18.5"},"_id":"@baklavue/composables@1.0.0","gitHead":"8b3ddce8830d5f88efab69d54ad2993e36bdb348","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-qQE9ZRMdtRwvPf48ySkd1MLCtB0Z5yQuiVw/MOUtF9ql9PQC2xBx/WWKeUdDce9sPMUEylUmY7fZ1U0Yr8dXSg==","shasum":"60d79fbc59a87c81c9b92db56efed9673b718aa9","tarball":"https://registry.npmjs.org/@baklavue/composables/-/composables-1.0.0.tgz","fileCount":100,"unpackedSize":475565,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCmOuu1PZXRJjgJXc6uleU9/xJLaoRbo0lzCQ11M18UsAIgHiuxD6oWZKAKIp2NNxNDdLDS7SWUSVr8X2D0qpIrD8M="}]},"_npmUser":{"name":"erbilnas","email":"erbilnas071@gmail.com"},"directories":{},"maintainers":[{"name":"erbilnas","email":"erbilnas071@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/composables_1.0.0_1770901784855_0.8668096961027989"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-11T16:07:25.681Z","modified":"2026-02-12T13:09:45.145Z","1.0.0-preview.1":"2026-02-11T16:07:25.938Z","1.0.0-preview.2":"2026-02-11T16:57:06.450Z","1.0.0-preview.3":"2026-02-12T11:58:00.216Z","1.0.0":"2026-02-12T13:09:44.987Z"},"bugs":{"url":"https://github.com/erbilnas/baklavue/issues"},"author":{"name":"erbilnas"},"license":"MIT","homepage":"https://github.com/erbilnas/baklavue/tree/main/packages/composables#readme","keywords":["vue","vue3","baklava","trendyol","design-system","composables"],"repository":{"type":"git","url":"git+https://github.com/erbilnas/baklavue.git","directory":"packages/composables"},"description":"Vue 3 composables for Trendyol Baklava Design System","maintainers":[{"name":"erbilnas","email":"erbilnas071@gmail.com"}],"readme":"# @baklavue/composables\n\nA collection of Vue 3 composables for seamless integration with Baklava UI components. This package provides convenient utilities and hooks to enhance your Vue applications with Baklava's design system.\n\n## 🚀 Features\n\n- **Vue 3 Composition API**: Built with modern Vue 3 composables\n- **TypeScript Support**: Full TypeScript support with proper type definitions\n- **Baklava Integration**: Seamlessly works with Baklava UI components\n- **Lightweight**: Minimal bundle size with no unnecessary dependencies\n- **Tree-shakable**: Only import what you need\n\n## 📦 Installation\n\n```bash\n# Using npm\nnpm install @baklavue/composables\n\n# Using yarn\nyarn add @baklavue/composables\n\n# Using pnpm\npnpm add @baklavue/composables\n\n# Using bun\nbun add @baklavue/composables\n```\n\n## 🔧 Prerequisites\n\n- Vue 3.x\n- TypeScript 5.9.2+ (peer dependency)\n- Baklava UI components installed in your project\n\n## 📚 Available Composables\n\n### `useFile`\n\nA composable for file parsing, creating, and downloading. Supports CSV, TSV, and JSON formats with streaming, Zod validation, transforms, and preview. Uses PapaParse for RFC 4180-compliant CSV/TSV handling.\n\n#### Basic Usage\n\n```vue\n<script setup lang=\"ts\">\nimport { useFile } from \"@baklavue/composables\";\n\nconst { parse, parseFile, create, download } = useFile();\n\n// Parse CSV string\nconst result = parse(\"name,age\\nAlice,30\\nBob,25\", { format: \"csv\", header: true });\nconsole.log(result.data); // [{ name: \"Alice\", age: \"30\" }, ...]\n\n// Parse file (async), format auto-detected from filename\nconst handleFileUpload = async (event: Event) => {\n  const file = (event.target as HTMLInputElement).files?.[0];\n  if (file) {\n    const fileResult = await parseFile(file, { header: true });\n    console.log(fileResult.data);\n  }\n};\n\n// Create CSV from array of objects\nconst csv = create(\n  [\n    { name: \"Alice\", age: 30 },\n    { name: \"Bob\", age: 25 },\n  ]\n);\n\n// Download CSV file\nconst exportData = () => {\n  download(\n    [{ name: \"Alice\", age: 30 }, { name: \"Bob\", age: 25 }],\n    \"export.csv\"\n  );\n};\n</script>\n```\n\n#### API Reference\n\nThe `useFile` composable returns an object with the following methods:\n\n##### `parse(content: string, options?: FileParseOptions<T>)`\n\nParses a string (CSV, TSV, or JSON) and returns `{ data, errors, meta }`. Synchronous.\n\n##### `parseFile(file: File, options?: FileParseOptions<T>)`\n\nParses a File asynchronously. Format auto-detected from filename when omitted.\n\n##### `parseStream(file: File, options)` \n\nChunked parsing for large CSV/TSV files. Returns `{ abort }`. Use `step` or `chunk` callbacks.\n\n##### `preview(file: File, options?)`\n\nParses only the first N rows. Returns `Promise<{ data, meta?, truncated }>`.\n\n##### `create(data: FileData, options?: FileCreateOptions)`\n\nCreates a string from an array of objects, array of arrays, or `{ fields, data }` object. Supports CSV, TSV, JSON.\n\n##### `download(data: FileData, filename?: string, options?: FileCreateOptions)`\n\nCreates a string and triggers a browser download. Adds UTF-8 BOM for CSV/TSV (Excel compatibility).\n\n#### Options\n\n**CsvParseOptions:**\n\n- `delimiter` – Delimiter character (default: auto-detect)\n- `header` – If true, first row is header (returns array of objects)\n- `dynamicTyping` – If true, numbers and booleans are converted\n- `skipEmptyLines` – Skip empty lines (`true` or `'greedy'`)\n\n**CsvCreateOptions:**\n\n- `delimiter` – Delimiter character (default: comma)\n- `header` – Include header row (default: true)\n- `columns` – Column order for array of objects\n- `escapeFormulae` – Escape leading `=`, `+`, `-`, `@` to prevent CSV injection\n\n### `useNotification`\n\nA composable for managing Baklava notification system with a simple and intuitive API.\n\n#### Basic Usage\n\n```vue\n<template>\n  <div>\n    <button @click=\"showSuccess\">Show Success</button>\n    <button @click=\"showError\">Show Error</button>\n    <button @click=\"showWarning\">Show Warning</button>\n    <button @click=\"showInfo\">Show Info</button>\n\n    <!-- Required: Add the notification element to your template -->\n    <bl-notification />\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useNotification } from \"@baklavue/composables\";\n\nconst { success, error, warning, info } = useNotification();\n\nconst showSuccess = () => {\n  success({\n    caption: \"Success!\",\n    description: \"Operation completed successfully.\",\n    duration: 5,\n  });\n};\n\nconst showError = () => {\n  error({\n    caption: \"Error!\",\n    description: \"Something went wrong. Please try again.\",\n    duration: 8,\n  });\n};\n\nconst showWarning = () => {\n  warning({\n    caption: \"Warning!\",\n    description: \"Please review your input before proceeding.\",\n    duration: 6,\n  });\n};\n\nconst showInfo = () => {\n  info({\n    caption: \"Information\",\n    description: \"Here is some useful information for you.\",\n    duration: 4,\n  });\n};\n</script>\n```\n\n#### API Reference\n\nThe `useNotification` composable returns an object with the following methods:\n\n##### `success(notification: NotificationProps)`\n\nShows a success notification with green styling.\n\n##### `error(notification: NotificationProps)`\n\nShows an error notification with red styling.\n\n##### `warning(notification: NotificationProps)`\n\nShows a warning notification with orange styling.\n\n##### `info(notification: NotificationProps)`\n\nShows an info notification with blue styling.\n\n#### Notification Props\n\nAll notification methods accept a `NotificationProps` object with the following properties:\n\n```typescript\ninterface NotificationProps {\n  caption?: string;    // Notification title\n  description: string; // Notification message (required)\n  duration?: number;  // Duration in seconds (optional)\n  permanent?: boolean; // Prevent auto-close\n  // ... other Baklava notification properties\n}\n```\n\n#### Important Notes\n\n- **Required DOM Element**: You must include `<bl-notification>` in your template for notifications to work\n- **Auto-icon**: All notifications automatically include appropriate icons based on their variant\n- **Duration**: If no duration is specified, notifications will use Baklava's default duration\n- **Error Handling**: The composable includes built-in error handling and will warn if the notification element is not found\n\n### `useScrollToError`\n\nScroll to an element with validation error. Scrolls into view, optionally applies a highlight effect, and focuses the first focusable control. Works with `input`, `select`, `textarea`, `bl-select`, `bl-input`.\n\n```ts\nconst { scrollToError } = useScrollToError();\nscrollToError('[data-field=\"tags\"]');\nscrollToError(validationError); // when error has scrollTarget\n```\n\n### `useBaklavaTheme`\n\nOverwrite Baklava design system colors and tokens. Use the Vue preset, pass a custom preset object, or override specific colors, border radius, size, typography, or z-index.\n\n```ts\nconst { applyTheme } = useBaklavaTheme();\napplyTheme({ preset: 'vue' });\napplyTheme({ colors: { primary: '#41B883' } });\n```\n\n### `useDisclosure`\n\nOpen/close state for Dialog, Drawer, Dropdown, Accordion, and Tooltip. Avoids repetitive `ref(false)`, `open()`, `close()`, `toggle()`.\n\n```ts\nconst { isOpen, open, close, toggle } = useDisclosure(false);\n// Use with v-model:open on BvDialog, BvDrawer, BvDropdown\n```\n\n### `usePagination`\n\nPagination state for tables and lists. Provides `currentPage`, `pageSize`, `totalItems`, `totalPages`, `offset`, `slice` helper.\n\n```ts\nconst { currentPage, pageSize, totalItems, totalPages, setPage, setPageSize, slice } = usePagination({ totalItems: 100, pageSize: 10 });\n```\n\n### `useConfirmDialog`\n\nDrive BvDialog for confirm/cancel flows. Returns a promise that resolves to `true` when confirmed, `false` when cancelled.\n\n```ts\nconst { confirm, isOpen, caption, description, handleConfirm, handleCancel } = useConfirmDialog();\nconst ok = await confirm({ caption: \"Delete?\", description: \"Sure?\" });\n```\n\n### `useClipboard`\n\nCopy text to clipboard. Integrates well with `useNotification`.\n\n```ts\nconst { copy, copied } = useClipboard();\nawait copy(\"token\");\n```\n\n### `useBreakpoints` / `useMediaQuery`\n\nResponsive breakpoints. `useBreakpoints` provides `isMobile`, `isTablet`, `isDesktop`. `useMediaQuery` for custom queries.\n\n```ts\nconst { isMobile, isTablet, isDesktop } = useBreakpoints();\nconst matches = useMediaQuery(\"(max-width: 768px)\");\n```\n\n### `useLocalStorage` / `useSessionStorage`\n\nReactive sync with `localStorage` and `sessionStorage`. Works well with `useBaklavaTheme` and `usePagination` for persisting preferences.\n\n```ts\nconst pageSize = useLocalStorage(\"table-page-size\", 10);\nconst draft = useSessionStorage(\"form-draft\", null);\n```\n\n### `useCookie`\n\nReactive sync with `document.cookie`. Returns `{ value, get, set, remove }`. Use for auth tokens or when values must be sent to the server.\n\n```ts\nconst { value: token, set, remove } = useCookie(\"auth-token\", \"\", { path: \"/\", maxAge: 86400 });\nset(\"new-token\");\nremove();\n```\n\n### `useDebounceFn` / `useDebouncedRef`\n\nDebounce function execution or ref value. `useDebounceFn` returns a debounced function. `useDebouncedRef` returns a ref that updates after the delay. Useful for search inputs, autocomplete.\n\n```ts\nconst debouncedSearch = useDebounceFn((q: string) => fetchResults(q), 300);\nconst searchQuery = ref(\"\");\nconst debouncedQuery = useDebouncedRef(searchQuery, 300);\n```\n\n### `useThrottleFn` / `useThrottledRef`\n\nThrottle function execution or ref value. Useful for scroll, resize, mousemove handlers.\n\n```ts\nconst throttledHandler = useThrottleFn(() => updateScroll(), 100);\nconst throttledScrollY = useThrottledRef(scrollY, 100);\n```\n\n### `useIntervalFn` / `useTimeoutFn`\n\nPausable interval and cancellable timeout. `useIntervalFn` returns `{ pause, resume, isActive }`. `useTimeoutFn` returns `{ run, cancel, isPending }`.\n\n```ts\nconst { pause, resume } = useIntervalFn(() => fetchData(), 5000);\nconst { run, cancel } = useTimeoutFn(() => showToast(\"Saved!\"), 2000);\n```\n\n### `useFetch`\n\nReactive fetch with loading/error/data. Supports abort, timeout, and manual execute.\n\n```ts\nconst { data, error, isFetching, execute } = useFetch<User>(\n  () => `https://api.example.com/users/${id.value}`,\n  { immediate: true }\n);\n```\n\n### `useIntersectionObserver`\n\nDetects when a target element enters or leaves the viewport. Useful for lazy loading, scroll-triggered animations.\n\n```ts\nconst target = ref<HTMLElement | null>(null);\nconst isVisible = useIntersectionObserver(target, { threshold: 0.5 });\n```\n\n### `useRafFn`\n\nCalls a function on every requestAnimationFrame. Returns `{ pause, resume, isActive }`. Useful for animation loops.\n\n```ts\nconst { pause, resume } = useRafFn(({ delta }) => {\n  position.value += velocity * (delta / 1000);\n});\n```\n\n## 🏗️ Project Structure\n\n```\npackages/composables/\n├── index.ts              # Main export file\n├── file.ts               # File parsing, creating, download (CSV, TSV, JSON) composable\n├── notification.ts       # Notification composable\n├── scrollToError.ts      # Scroll to validation error composable\n├── theme.ts              # Baklava theme composable\n├── disclosure.ts         # Open/close state composable\n├── pagination.ts         # Pagination state composable\n├── confirmDialog.ts      # Confirm dialog composable\n├── clipboard.ts          # Clipboard composable\n├── cookie.ts             # useCookie composable\n├── breakpoints.ts        # Responsive breakpoints composable\n├── storage.ts            # useLocalStorage, useSessionStorage composables\n├── debounce.ts           # useDebounceFn, useDebouncedRef\n├── throttle.ts           # useThrottleFn, useThrottledRef\n├── timer.ts              # useIntervalFn, useTimeoutFn\n├── fetch.ts              # useFetch composable\n├── intersectionObserver.ts  # useIntersectionObserver\n├── raf.ts                # useRafFn composable\n├── package.json          # Package configuration\n├── tsconfig.json         # TypeScript configuration\n└── README.md             # This file\n```\n\n## 🔧 Development\n\n### Prerequisites\n\n- [Bun](https://bun.sh) (recommended) or Node.js\n- TypeScript 5.9.2+\n\n### Setup\n\n```bash\n# Install dependencies\nbun install\n\n# Run the package\nbun run index.ts\n```\n\n### TypeScript Configuration\n\nThis package uses strict TypeScript configuration with:\n\n- ESNext target and modules\n- Strict type checking\n- Bundler-friendly module resolution\n- Unused variable/parameter detection\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests if applicable\n5. Submit a pull request\n\n## 📄 License\n\nThis project is part of the Baklavue ecosystem. See the main project for license information.\n\n## 🔗 Related Packages\n\n- `@baklavue/ui` - Baklava UI components for Vue\n- `@trendyol/baklava` - Core Baklava design system\n\n## 📞 Support\n\nFor issues and questions:\n\n- Check the [Baklava documentation](https://baklava.trendyol.com/)\n- Open an issue in the project repository\n- Review the examples in the playground directory\n","readmeFilename":"README.md"}