{"_id":"@bloomlabs/permission-calculator-react","name":"@bloomlabs/permission-calculator-react","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@bloomlabs/permission-calculator-react","version":"0.0.1","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"require":"./dist/index.js","import":"./dist/index.mjs","types":"./dist/index.d.ts"}},"description":"React hook for managing permissions using the [@bloomlabs/permission-calculator](https://www.npmjs.com/package/@bloomlabs/permission-calculator) library.","scripts":{"dev":"bun --watch src/index.ts","start":"bun src/index.ts","build":"tsup","prepublishOnly":"bun run build","test":"bun test"},"keywords":["bloomlabs","discord","permissions","discord-permissions","permission-calculator"],"license":"MIT","homepage":"https://github.com/Bloom-Labs-Tech/permissions-calculator-react#readme","repository":{"type":"git","url":"git+https://github.com/Bloom-Labs-Tech/permissions-calculator-react.git"},"bugs":{"url":"https://github.com/Bloom-Labs-Tech/permissions-calculator-react/issues"},"author":{"name":"Bloomlabs","email":"support@bloomlabs.me"},"devDependencies":{"@biomejs/biome":"1.4.1","@types/bun":"latest","@types/react":"^18.3.9","dts-bundle-generator":"^9.5.1","semantic-release":"^22.0.12","tsup":"^8.2.3","typescript":"^5.5.4"},"release":{"branches":["main"]},"dependencies":{"@bloomlabs/permission-calculator":"^0.0.1","react":"^18.3.1"},"_id":"@bloomlabs/permission-calculator-react@0.0.1","_nodeVersion":"20.15.1","_npmVersion":"10.7.0","dist":{"integrity":"sha512-D1NRP5ol/u/wRfoyEIZATRCQmfjbewx8R3eKP2KwSAjk3cE20ILUgorDDRG4AoN8gu8AtVYJ0NHsuhnk28fr3Q==","shasum":"9f39fae8462f41709d5fc61d4b44bfb5aa650ea5","tarball":"https://registry.npmjs.org/@bloomlabs/permission-calculator-react/-/permission-calculator-react-0.0.1.tgz","fileCount":7,"unpackedSize":11329,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCSH4pclI9/Eal7/C+D1LviV2NTMDQKomzmSTAJZ9axUQIgUMWPDYkIeTcs4WK7N+7LWchbrtJcAYY3bOqDBwK23t8="}]},"_npmUser":{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"},"directories":{},"maintainers":[{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/permission-calculator-react_0.0.1_1727195880358_0.19492657771226884"},"_hasShrinkwrap":false}},"time":{"created":"2024-09-24T16:38:00.233Z","0.0.1":"2024-09-24T16:38:00.562Z","modified":"2024-09-24T16:38:00.901Z"},"maintainers":[{"name":"ivanoliverfabra","email":"fabra.ivanoliver@gmail.com"}],"description":"React hook for managing permissions using the [@bloomlabs/permission-calculator](https://www.npmjs.com/package/@bloomlabs/permission-calculator) library.","homepage":"https://github.com/Bloom-Labs-Tech/permissions-calculator-react#readme","keywords":["bloomlabs","discord","permissions","discord-permissions","permission-calculator"],"repository":{"type":"git","url":"git+https://github.com/Bloom-Labs-Tech/permissions-calculator-react.git"},"author":{"name":"Bloomlabs","email":"support@bloomlabs.me"},"bugs":{"url":"https://github.com/Bloom-Labs-Tech/permissions-calculator-react/issues"},"license":"MIT","readme":"# @bloomlabs/permission-calculator-react\n\nReact hook for managing permissions using the [@bloomlabs/permission-calculator](https://www.npmjs.com/package/@bloomlabs/permission-calculator) library.\n\nThis package provides a simple React hook, `usePermissionCalculator`, that allows you to manage permission flags in your React applications with ease. Additionally, a `PermissionCalculatorComponent` is included for easy permission management in UI components.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Usage](#usage)\n- [API](#api)\n- [Example](#example)\n- [License](#license)\n\n## Installation\n\nYou can install this package using your favorite package manager:\n\n```bash\nnpm install @bloomlabs/permission-calculator-react\n```\n\n```bash\nyarn add @bloomlabs/permission-calculator-react\n```\n\n```bash\npnpm add @bloomlabs/permission-calculator-react\n```\n\n```bash\nbun add @bloomlabs/permission-calculator-react\n```\n\n## Usage\n\nThis package exports a `usePermissionCalculator` React hook for managing permissions and a `PermissionCalculatorComponent` that provides an interactive UI for toggling permissions.\n\n### Basic Setup (Hook Usage)\n\n```tsx\n\"use client\";\n\nimport { usePermissionCalculator } from \"@bloomlabs/permission-calculator-react\";\nimport { PermissionFlags } from \"@bloomlabs/permission-calculator\";\n\nfunction App() {\n  const {\n    permissions,\n    permissionsList,\n    addPermission,\n    removePermission,\n    hasPermission,\n    setPermissions,\n  } = usePermissionCalculator(0n | undefined); // Initialize with no permissions\n\n  return (\n    <div>\n      <h1>Permissions</h1>\n      <p>Current permissions: {permissions.toString()}</p>\n      <p>Permissions List: {permissionsList.join(\", \")}</p>\n\n      <button onClick={() => addPermission(PermissionFlags.ADMINISTRATOR)}>\n        Add Administrator\n      </button>\n\n      <button onClick={() => removePermission(PermissionFlags.ADMINISTRATOR)}>\n        Remove Administrator\n      </button>\n\n      <p>\n        Has Administrator permission:{\" \"}\n        {hasPermission(PermissionFlags.ADMINISTRATOR).toString()}\n      </p>\n    </div>\n  );\n}\n```\n\n## API\n\n### `usePermissionCalculator`\n\n```ts\nusePermissionCalculator(initialPermissions?: bigint): {\n  permissions: bigint;\n  permissionsList: string[];\n  addPermission: (permission: PermissionFlagResolvable) => void;\n  removePermission: (permission: PermissionFlagResolvable) => void;\n  hasPermission: (permission: PermissionFlagResolvable) => boolean;\n  setPermissions: (permissions: PermissionFlagResolvable) => void;\n}\n```\n\n#### Parameters\n\n- **`initialPermissions`** (`bigint`) - The initial permissions value. Defaults to `0n` if not provided.\n\n#### Returns\n\n- **`permissions`** (`bigint`): The current permissions value.\n- **`permissionsList`** (`string[]`): The list of permissions based on the current permissions value.\n- **`addPermission`** (`(permission: PermissionFlagResolvable) => void`): Adds a permission to the current permissions.\n- **`removePermission`** (`(permission: PermissionFlagResolvable) => void`): Removes a permission from the current permissions.\n- **`hasPermission`** (`(permission: PermissionFlagResolvable) => boolean`): Checks if a specific permission is present.\n- **`setPermissions`** (`(permissions: PermissionFlagResolvable) => void`): Sets a new set of permissions.\n\n## License\n\nThis project is licensed under the [MIT License](./LICENSE).\n\n---\n\nFor more details, check out the [Permission Calculator GitHub repository](https://github.com/bloom-labs-tech/permissions-calculator).\n","readmeFilename":"README.md"}