[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "content": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Smartphone (please complete the following information):**\n - Device: [e.g. iPhone6]\n - OS: [e.g. iOS8.1]\n - Browser [e.g. stock browser, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/custom.md",
    "content": "---\nname: Custom issue template\nabout: Describe this issue template's purpose here.\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "content": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/workflows/docs-deploy.yml",
    "content": "name: Deploy Next.js SSG site to Pages\r\n\r\non:\r\n  # Runs on pushes targeting the default branch\r\n  push:\r\n    branches: ['main']\r\n\r\n  # Allows you to run this workflow manually from the Actions tab\r\n  workflow_dispatch:\r\n\r\n# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages\r\npermissions:\r\n  contents: read\r\n  pages: write\r\n  id-token: write\r\n\r\n# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.\r\n# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.\r\nconcurrency:\r\n  group: 'pages'\r\n  cancel-in-progress: false\r\n\r\njobs:\r\n  # Build job\r\n  build:\r\n    runs-on: ubuntu-latest\r\n    steps:\r\n      - name: Checkout\r\n        uses: actions/checkout@v4\r\n      - name: Setup pnpm\r\n        uses: pnpm/action-setup@v4\r\n        with:\r\n          version: 9.5.0\r\n      - name: Setup Node\r\n        uses: actions/setup-node@v4\r\n        with:\r\n          node-version: '20'\r\n          cache: 'pnpm'\r\n      - name: Setup Pages\r\n        uses: actions/configure-pages@v5\r\n      - name: Install dependencies\r\n        run: pnpm install\r\n      - name: Build Next.js\r\n        run: |\r\n          cd apps/docs \r\n          pnpm build\r\n      - name: Upload artifact\r\n        uses: actions/upload-pages-artifact@v3\r\n        with:\r\n          path: ./apps/docs/dist\r\n      - name: Deploy to GitHub Pages\r\n        id: deployment\r\n        uses: actions/deploy-pages@v4\r\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\ndist\ndist-ssr\n*.local\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n.DS_Store\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n.next\n.turbo\n\n\n# Contentlayer\n.contentlayer\n"
  },
  {
    "path": ".npmrc",
    "content": "auto-install-peers = true\r\nnode-linker=hoisted"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"tabWidth\": 2,\n  \"semi\": false,\n  \"printWidth\": 80,\n  \"singleQuote\": true,\n  \"trailingComma\": \"none\",\n  \"bracketSameLine\": false\n}\n"
  },
  {
    "path": "LICENSE.md",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2023 Lerte Smith\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE."
  },
  {
    "path": "README.md",
    "content": "<p align=\"center\">\n  <a href=\"https://actifyjs.com\">\n    <img alt=\"Actify Logo\" width=\"100\" src=\"https://actifyjs.com/actify.svg\">\n  </a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/actifyjs/actify/blob/master/LICENSE.md\">\n    <img src=\"https://badgen.net/github/license/actifyjs/actify?color=green\" alt=\"License\">\n  </a>\n  <img src=\"https://visitor-badge.laobi.icu/badge?page_id=actifyjs.actify\" alt=\"visitors\" />\n</p>\n\n---\n\n## 🌟Overview\n\nWelcome to Actify, an open-source React Components Library designed to accelerate your React application development. Actify leverages TypeScript, Tailwind CSS, Reat-Aria, Framer Motion, Material Design 3, and more to provide a comprehensive set of modern and customizable UI components.\n\n## ✨ Features\n\n- **TypeScript**: Benefit from enhanced developer experience and static typing.\n- **Tailwind CSS**: Embrace a utility-first CSS framework for effortless and flexible styling.\n- **React-Aria**: React Aria implements accessibility support according to the WAI-ARIA specification, published by the W3C.\n- **Framer Motion**: Bring fluid animations and transitions to your components with Framer Motion.\n- **Material Design 3**: Implement the latest Material Design principles for a cohesive and visually appealing interface.\n\n## 🚀 Getting Started\n\n### 📦 Installation\n\n```bash\n# with pnpm\npnpm add actify\n# with yarn\nyarn add actify\n# with npm\nnpm install actify\n```\n\n### 💻 Usage\n\n```jsx\nimport { Button } from 'actify'\n\nexport default () => {\n  return <Button>Hello Actify</Button>\n}\n```\n\nRefer to the [documentation](https://actifyjs.com/getting-started/installation) for in-depth information on each component and their usage.\n\n## 📚 Documentation\n\nExplore our [documentation](https://actifyjs.com/getting-started/installation) for detailed insights, examples, and customization options for each component in the Actify library.\n\n## 🚥 Roadmap\n\nOur goals is convert all [Material Web](https://github.com/material-components/material-web) components to React Components, not just a React wrapped components.\n\n| Component           | Web component | React Component |\n| ------------------- | ------------- | --------------- |\n| Ripple              |               | ✅              |\n| Elevation           |               | ✅              |\n| Focus ring          |               | ✅              |\n| Icon                |               | ✅              |\n| Button              |               | ✅              |\n| Icon button         |               | ✅              |\n| Checkbox            |               | ✅              |\n| Slider              |               | ✅              |\n| Switch              |               | ✅              |\n| TextField           |               | ✅              |\n| Progress indicators |               | ✅              |\n| Radio               |               | ✅              |\n| Divider             |               | ✅              |\n| Menu                |               | ✅              |\n| Dialog              |               | ✅              |\n| Select              |               | ✅              |\n| SegmentedButton     |               | ✅              |\n| SegmentedButtonSet  |               | ✅              |\n\n## 🤝 Contributing\n\nContributions are always welcome!\nThanks to everyone who has already contributed to `actify` !\n\n<a href=\"https://github.com/actifyjs/actify/graphs/contributors\"><img src=\"https://contributors.nn.ci/api?repo=actifyjs/actify\" /></a>\n\n## 📜 License\n\nActify React Components Library is licensed under the MIT License - see the [MIT licensed](./LICENSE.md) file for details..\n\n## 🙏 Acknowledgments\n\n- Special thanks to our contributors and the open-source community for making Actify possible.\n- Highly inspired by [Vuetify](https://vuetifyjs.com) for its impactful contributions to UI design and development trends.\n\n## 📧 Support\n\nIf you have any questions or need assistance, feel free to reach out to us at [hello@actifyjs.com](mailto:hello@actifyjs.com).\n\nHappy coding with Actify! 🚀\n"
  },
  {
    "path": "apps/docs/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n.yarn/install-state.gz\n\n# testing\n/coverage\n\n# next.js\n/.next/\n/out/\n/dist/\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env*.local\n\n# vercel\n.vercel\n\n# typescript\n*.tsbuildinfo\nnext-env.d.ts\n"
  },
  {
    "path": "apps/docs/content/components/accordion.md",
    "content": "---\r\ntitle: Accordion\r\ndescription: Accordion display a list of high-level options that can expand/collapse to reveal more information.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Tips\r\n\r\n`asChild` prop can use to override `Header` style and `Content` style\r\n\r\n## Props\r\n\r\n| Props      | Type      | Description                                                                  | Default     |\r\n| ---------- | --------- | ---------------------------------------------------------------------------- | ----------- |\r\n| `open`     | `array`   | Set which index item is open. eg. [,true] stands for the second item is open | `[]`        |\r\n| `multiple` | `boolean` | Allow multiple items to be expanded at the same time.                        | `undefined` |\r\n"
  },
  {
    "path": "apps/docs/content/components/app-bars/bottom-app-bar.md",
    "content": "---\r\ntitle: Bottom app bar\r\ndescription: Bottom app bars display navigation and key actions at the bottom of mobile and tablet screens\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/app-bars/top-app-bar.md",
    "content": "---\r\ntitle: Top app bars\r\ndescription: The top app bar displays information and actions relating to the current screen.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/autocomplete.md",
    "content": "---\ntitle: Autocomplete\ndescription: Autocomplete component offers simple and flexible type-ahead functionality. This is useful when searching large sets of data or even dynamically requesting information from an API.\n---\n\n## Usage\n\n<usage></usage>\n"
  },
  {
    "path": "apps/docs/content/components/avatar.md",
    "content": "---\r\ntitle: Avatar\r\ndescription: Avatar is a component that can be used to display a user's avatar.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/badges.md",
    "content": "---\r\ntitle: Badge\r\ndescription: Badges show notifications, counts, or status information on navigation items and icons\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props   | Type              | Description               | Default |\r\n| ------- | ----------------- | ------------------------- | ------- |\r\n| `value` | `string` `number` | The content of the badge. | `null`  |\r\n| `color` | `string`          | The color of the badge.   | `error` |\r\n"
  },
  {
    "path": "apps/docs/content/components/before-after.md",
    "content": "---\r\ntitle: Before After\r\ndescription: Before after show a before and after image of a product.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props     | Type  | Description                  | Default                                                                                                                  |\r\n| --------- | ----- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------ |\r\n| `before`  | `url` | original image url           | `null`                                                                                                                   |\r\n| `after`   | `url` | after image url              | `null`                                                                                                                   |\r\n| `bgImage` | `url` | after image background image | <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"%23dedede\" d=\"M0 0h8v8H0zM8 8h8v8H8z\"/></svg> |\r\n"
  },
  {
    "path": "apps/docs/content/components/buttons/button.md",
    "content": "---\r\ntitle: Button\r\ndescription: Buttons have label text that describes the action that will occur if a user taps a button.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n> Notice! Button component under react-router Link component will cause refresh page.\r\n\r\n- Solution 1: add onPress(e=>e.preventDefault()) to Button component\r\n- Solution 2: put Link component under Button component\r\n\r\n## Props\r\n\r\n| Name                | Type                                          | Default   | Description                                                                                                                                                     |\r\n| ------------------- | --------------------------------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| form                | `string`                                      | —         | The <form> element to associate the button with. The value of this attribute must be the id of a <form> in the same document.                                   |\r\n| formAction          | `string`                                      | —         | The URL that processes the information submitted by the button. Overrides the action attribute of the button's form owner.                                      |\r\n| formEncType         | `string`                                      | —         | Indicates how to encode the form data that is submitted.                                                                                                        |\r\n| formMethod          | `string`                                      | —         | Indicates the HTTP method used to submit the form.                                                                                                              |\r\n| formNoValidate      | `boolean`                                     | —         | Indicates that the form is not to be validated when it is submitted.                                                                                            |\r\n| formTarget          | `string`                                      | —         | Overrides the target attribute of the button's form owner.                                                                                                      |\r\n| name                | `string`                                      | —         | Submitted as a pair with the button's value as part of the form data.                                                                                           |\r\n| value               | `string`                                      | —         | The value associated with the button's name when it's submitted with the form data.                                                                             |\r\n| isPending           | `boolean`                                     | —         | Whether the button is in a pending state. This disables press and hover events while retaining focusability, and announces the pending state to screen readers. |\r\n| isDisabled          | `boolean`                                     | —         | Whether the button is disabled.                                                                                                                                 |\r\n| autoFocus           | `boolean`                                     | —         | Whether the element should receive focus on render.                                                                                                             |\r\n| type                | `button` `submit` `reset`                     | 'button'  | The behavior of the button when used in an HTML form.                                                                                                           |\r\n| preventFocusOnPress | `boolean`                                     | —         | Whether to prevent focus from moving to the button when pressing it.                                                                                            |\r\n| children            | `React.ReactNode`                             | —         | The children of the component. A function may be provided to alter the children based on component state.                                                       |\r\n| className           | `string`                                      | —         | The CSS className for the element. A function may be provided to compute the class based on component state.                                                    |\r\n| style               | `React.CSSProperties`                         | —         | The inline style for the element. A function may be provided to compute the style based on component state.                                                     |\r\n| color               | `primary` `secondary` `tertiary` `error`      | 'primary' |                                                                                                                                                                 |\r\n| variant             | `elevated` `filled` `tonal` `outlined` `text` | 'filled'  |                                                                                                                                                                 |\r\n\r\n## Events\r\n\r\n| Name            | Type                              | Description                                                                                                             |\r\n| --------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |\r\n| `onPress`       | `(e: PressEvent) => void`         | Handler that is called when the press is released over the target.                                                      |\r\n| `onPressStart`  | `(e: PressEvent) => void`         | Handler that is called when a press interaction starts.                                                                 |\r\n| `onPressEnd`    | `(e: PressEvent) => void`         | Handler that is called when a press interaction ends, either over the target or when the pointer leaves the target.     |\r\n| `onPressChange` | `(e: PressEvent) => void`         | Handler that is called when the press state changes.                                                                    |\r\n| `onPressUp`     | `(e: PressEvent) => void`         | Handler that is called when a press is released over the target, regardless of whether it started on the target or not. |\r\n| `onFocus`       | `(e: FocusEvent<Target>) => void` | Handler that is called when the element receives focus.                                                                 |\r\n| `onBlur`        | `(e: FocusEvent<Target>) => void` | Handler that is called when the element loses focus.                                                                    |\r\n| `onFocusChange` | `(isFocused: boolean) => void`    | Handler that is called when the element's focus status changes.                                                         |\r\n| `onKeyDown`     | `(e: KeyboardEvent) => void`      | Handler that is called when a key is pressed.                                                                           |\r\n| `onKeyUp`       | `(e: KeyboardEvent) => void`      | Handler that is called when a key is released.                                                                          |\r\n| `onHoverStart`  | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction starts.                                                                 |\r\n| `onHoverEnd`    | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction ends.                                                                   |\r\n| `onHoverChange` | `(isHovering: boolean) => void`   | Handler that is called when the hover state changes.                                                                    |\r\n\r\n### Layout\r\n\r\n| Name   | Type            | Description                                                                                                                                                                                                    |\r\n| ------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `slot` | `string` `null` | A slot name for the component. Slots allow the component to receive props from a parent component. An explicit null value indicates that the local props completely override all props received from a parent. |\r\n"
  },
  {
    "path": "apps/docs/content/components/buttons/fab.md",
    "content": "---\r\ntitle: Floating action buttons\r\ndescription: Floating action buttons (FABs) help people take primary actions\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/buttons/icon-button.md",
    "content": "---\r\ntitle: Icon buttons\r\ndescription: Icon buttons help people take minor actions with one tap\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/buttons/segmented-button.md",
    "content": "---\r\ntitle: Segmented button\r\ndescription: Segmented buttons help people select options, switch views, or sort elements\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props    | Type      | Description | Default |\r\n| -------- | --------- | ----------- | ------- |\r\n| selected | `boolean` |             | `false` |\r\n"
  },
  {
    "path": "apps/docs/content/components/cards.md",
    "content": "---\r\ntitle: Cards\r\ndescription: Cards display content and actions about a single subject\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## With Ripple\r\n\r\n<preview code='<Card ripple>\r\n    <img\r\n      alt=\"\"\r\n      className=\"w-full object-fit\"\r\n      src=\"https://images.unsplash.com/photo-1694736301344-0a2e4b5f51c6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1780&q=80\"\r\n    />\r\n    <div className=\"block flex-grow flex-shrink p-5 text-on-surface\">\r\n      <div className=\"font-medium mb-3\">card with ripple</div>\r\n      <p>\r\n        Tempore rem numquam qui quae placeat, enim ut temporibus inventore\r\n        architecto eaque.\r\n      </p>\r\n    </div>\r\n  </Card>'></preview>\r\n\r\n## Props\r\n\r\n| Props  | Type                | Description           | Default |\r\n| ------ | ------------------- | --------------------- | ------- |\r\n| `type` | `filled` `outlined` | The type of the Card. | null    |\r\n"
  },
  {
    "path": "apps/docs/content/components/carousel.md",
    "content": "---\r\ntitle: Carousel\r\ndescription: Carousels show a collection of items that can be scrolled on and off the screen\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props      | Type               | Description                                                 | Default |\r\n| ---------- | ------------------ | ----------------------------------------------------------- | ------- |\r\n| autoPlay   | `boolean`          | Sets the autoplay mode for carousel                         | `false` |\r\n| control    | `boolean`          | Show prev and next button for carousel                      | `false` |\r\n| current    | `number`           | Sets carousel start play index                              | `0`     |\r\n| indicator  | `boolean`          | Show the indicator for carousel                             | `false` |\r\n| infinite   | `boolean`          | Sets the infinite mode for carousel                         | `false` |\r\n| interval   | `number`           | Sets the interval duration for autoplay mode in miliseconds | `3000`  |\r\n| `children` | `React.React.Node` |                                                             | `null`  |\r\n"
  },
  {
    "path": "apps/docs/content/components/checkbox.md",
    "content": "---\r\ntitle: Checkbox\r\ndescription: Checkboxes let users select one or more items from a list, or turn an item on or off\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props             | Type                                      | Description                              | Default |\r\n| ----------------- | ----------------------------------------- | ---------------------------------------- | ------- |\r\n| `color`           | `primary` `secondary` `tertiaray` `error` | The color of the checkbox                | `null`  |\r\n| `value`           | `boolean`                                 | Checkbox value                           | `null`  |\r\n| `isDisabled`      | `boolean`                                 | Whether the checkbox is disabled         | `false` |\r\n| `isSelected`      | `boolean`                                 | whether the checkbox is selected         | `false` |\r\n| `isIndeterminate` | `boolean`                                 | whether the item is toggled on or off.   | `false` |\r\n| `defaultSelected` | `boolean`                                 | whether the checkbox is default selected | `false` |\r\n\r\n## Events\r\n\r\n| Events     | Description              |\r\n| ---------- | ------------------------ |\r\n| `onChange` | fired when value changed |\r\n"
  },
  {
    "path": "apps/docs/content/components/chips.md",
    "content": "---\r\ntitle: Chips\r\ndescription: Chips help people enter information, make selections, filter content, or trigger actions\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Prop     | Type     | Description            | Default |\r\n| -------- | -------- | ---------------------- | ------- |\r\n| `lable`  | `string` | The label of the chip  | `null`  |\r\n| `type`   | `string` | The type of the chip   | `null`  |\r\n| `href`   | `string` | The href of the chip   | `null`  |\r\n| `target` | `string` | The target of the chip | `null`  |\r\n"
  },
  {
    "path": "apps/docs/content/components/date-pickers.md",
    "content": "---\r\ntitle: Date pickers\r\ndescription: Date pickers let people select a date, or a range of dates\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props            | Type      | Description                  | Default      |\r\n| ---------------- | --------- | ---------------------------- | ------------ |\r\n| `asSingle`       | `boolean` | render as single date picker | `false`      |\r\n| `useRange`       | `boolean` | use range mode               | `true`       |\r\n| `placeholder`    | `string`  | placeholder text             | `null`       |\r\n| `separator`      | `string`  | separator between range date | `~`          |\r\n| `showShortcuts`  | `boolean` | show left shortcuts date     | `false`      |\r\n| `showFooter`     | `boolean` | show footer actions          | `false`      |\r\n| `displayFormat`  | `string`  | display format of date       | `DD/MM/YYYY` |\r\n| `readOnly`       | `boolean` | readonly mode                | `false`      |\r\n| `disabled`       | `boolean` | disabled mode                | `false`      |\r\n| `inputClassName` | `string`  | input class name             | `null`       |\r\n| `startFrom`      | `Date`    | start date for range mode    | `new Date()` |\r\n| `minDate`        | `Date`    | min date                     | `null`       |\r\n| `maxDate`        | `Date`    | max date                     | `null`       |\r\n"
  },
  {
    "path": "apps/docs/content/components/dialogs.md",
    "content": "---\r\ntitle: Dialogs\r\ndescription: Dialogs provide important prompts in a user flow\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/divider.md",
    "content": "---\r\ntitle: Divider\r\ndescription: Dividers are thin lines that group content in lists or other containers\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name         | Type      | Description                                             | Default     |\r\n| ------------ | --------- | ------------------------------------------------------- | ----------- |\r\n| `inset`      | `boolean` | add 16px to padding-inline-start and padding-inline-end | `undefined` |\r\n| `insetStart` | `boolean` | add 16px to padding-inline-start                        | `undefined` |\r\n| `insetEnd`   | `boolean` | add 16px to padding-inline-end                          | `undefined` |\r\n"
  },
  {
    "path": "apps/docs/content/components/focus-ring.md",
    "content": "---\r\ntitle: Focus Ring\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n| Name      | Type                                              | Description                                                                               | Default   |\r\n| --------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------- | --------- |\r\n| type      | `outward` `inward`                                | The way the focus ring is animated and positioned.                                        | `outward` |\r\n| as        | `keyof HTMLElementTagNameMap` `React.ElementType` | Allows for more flexibility when supporting different elements that can act as a FocusRing. | `span`    |\r\n| style     | `React.CSSProperties`                             | —                                                                                         | —         |\r\n| className | `string`                                          | —                                                                                         | —         |"
  },
  {
    "path": "apps/docs/content/components/label.md",
    "content": "---\r\ntitle: Label\r\ndescription: Use original html label tag, but prevented text selection when double clicked\r\n---\r\n\r\n## Usage with Checkbox\r\n\r\n<preview code='<Label className=\"flex items-center\">with checkbox <Checkbox aria-label=\"with checkbox\" /></Label>'></preview>\r\n\r\n## Usage with Raido\r\n\r\n<preview code='<RadioGroup label=\"with radio\"><Radio value=\"actify\">actify</Radio></RadioGroup>'>\r\n</preview>\r\n"
  },
  {
    "path": "apps/docs/content/components/lists.md",
    "content": "---\r\ntitle: Lists\r\ndescription: Lists are continuous, vertical indexes of text and images\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name         | Type              | Description                                                                                                                 | Default |\r\n| ------------ | ----------------- | --------------------------------------------------------------------------------------------------------------------------- | ------- |\r\n| `transition` | `Object`          | Item hover trantisition is framer motion <a target=\"_blank\" href=\"https://www.framer.com/motion/transition/\">transition</a> | `null`  |\r\n| `children`   | `React.ReactNode` | children                                                                                                                    | `null`  |\r\n\r\n## Child\r\n\r\n| Name      | Description |\r\n| --------- | ----------- |\r\n| ListItem  | List item   |\r\n| ListGroup | List group  |\r\n"
  },
  {
    "path": "apps/docs/content/components/menus.md",
    "content": "---\r\ntitle: Menus\r\ndescription: Menus display a list of choices on a temporary surface\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n### MenuButton\r\n\r\n| Name                | Type                | Description                                                                 | Default |\r\n| ------------------- | ------------------- | --------------------------------------------------------------------------- | ------- |\r\n| `label`             | `React.ReactNode`   | The text to show on the menu button.                                        | —       |\r\n| `popoverProps`      | `PopoverProps`      | Props that allow changing the popover placement, flip behavior, style etc.  | —       |\r\n\r\n### MenuItem\r\n\r\n| Name                | Type                  | Description                                                                       | Default |\r\n| ------------------- | --------------------- | --------------------------------------------------------------------------------- | ------- |\r\n| `textValue`         | `string`              | A string representation of the item's contents, used for features like typeahead. | —       |\r\n| `isDisabled`        | `boolean`             | Whether the item is disabled.                                                     | `false` |\r\n| `className`         | `string`              | —                                                                                 | —       |\r\n| `style`             | `React.CSSProperties` | —                                                                                 | —       |\r\n\r\n## Events\r\n### MenuItem\r\n\r\n| Name              | Type                              | Description                                              |\r\n| ----------------- | --------------------------------- | -------------------------------------------------------- |\r\n| `onAction`        | `() => void`                      | Handler that is called when the item is selected.        |\r\n| `onHoverChange`   | `(isHovering: boolean) => void`   | Handler that is called when the hover state changes.     |\r\n| `onHoverStart`    | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction starts.  |\r\n| `onHoverEnd`      | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction ends.    |"
  },
  {
    "path": "apps/docs/content/components/navigation/navigation-bar.md",
    "content": "---\r\ntitle: Navigation bar\r\ndescription: Navigation bars let people switch between UI views on smaller devices\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/navigation/navigation-drawer.md",
    "content": "---\r\ntitle: Navigation drawer\r\ndescription: Navigation drawers let people switch between UI views on larger devices\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props       | Type                          | Description                                | Default |\r\n| ----------- | ----------------------------- | ------------------------------------------ | ------- |\r\n| `open`      | `boolean`                     | Whether the drawer is open or not          | `false` |\r\n| `placement` | `top` `right` `bottom` `left` | Where the drawer should be placed          | `left`  |\r\n| `asChild`   | `boolean`                     | set true pass any element as the activator | `false` |\r\n"
  },
  {
    "path": "apps/docs/content/components/navigation/navigation-rail.md",
    "content": "---\r\ntitle: Navigation rail\r\ndescription: Navigation rails let people switch between UI views on mid-sized devices\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/pagination.md",
    "content": "---\r\ntitle: Pagination\r\ndescription: Pagination is a component that allows users to navigate between multiple pages.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props         | Type     | Description  | Default     |\r\n| ------------- | -------- | ------------ | ----------- |\r\n| `currentPage` | `number` | current page | `undefined` |\r\n| `totalPages`  | `number` | total page   | `undefined` |\r\n\r\n## Events\r\n\r\n| Events         | Description                     |\r\n| -------------- | ------------------------------- |\r\n| `onPageChange` | fired when current page changed |\r\n"
  },
  {
    "path": "apps/docs/content/components/progress/circular-progress.md",
    "content": "---\r\ntitle: CircularProgress\r\ndescription: Circular progress is a visual indicator that communicates the status of a process.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name              | Type                                      | Description                                     | Default     |\r\n| ----------------- | ----------------------------------------- | ----------------------------------------------- | ----------- |\r\n| `size`            | `xs` `sm` `md` `lg` `xl` `2xl`            | The size of the circle                          | `sm`        |\r\n| `value`           | `number`                                  | set the value of progress 0-100                 | `undefined` |\r\n| `color`           | `primary` `secondary` `tertiaray` `error` | set the color of progress circle                | `primary`   |\r\n| `isIndeterminate` | `boolean`                                 | whether determinate circular progress indicator | `false`     |\r\n"
  },
  {
    "path": "apps/docs/content/components/progress/linear-progress.md",
    "content": "---\r\ntitle: LinearProgress\r\ndescription: Linear progress indicators visualize the linear progress of a task, where the progress is displayed as a bar.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name              | Type                                      | Description                                   | Default     |\r\n| ----------------- | ----------------------------------------- | --------------------------------------------- | ----------- |\r\n| `value`           | `number`                                  | set the value of progress 0-100               | `undefined` |\r\n| `color`           | `primary` `secondary` `tertiaray` `error` | set the color of progress bar                 | `primary`   |\r\n| `isIndeterminate` | `boolean`                                 | whether determinate linear progress indicator | `false`     |\r\n"
  },
  {
    "path": "apps/docs/content/components/radio.md",
    "content": "---\r\ntitle: Radio button\r\ndescription: Radio buttons let people select one option from a set of options\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props         | Type                    | Description                                                       | Default     |\r\n| ------------- | ----------------------- | ----------------------------------------------------------------- | ----------- |\r\n| `value`       | `string`                | The value of the radio button, used when submitting an HTML form. | `null`      |\r\n| `children`    | `ReactNode`             | The label for the Radio. Accepts any renderable node.             | `undefined` |\r\n| `isDisabled`  | `boolean`               | Whether the radio button is disabled or not.                      | `undefined` |\r\n| `orientation` | `horizontal` `vertical` | The axis the Radio should align with.                             | `vertical`  |\r\n"
  },
  {
    "path": "apps/docs/content/components/ripple.md",
    "content": "---\r\ntitle: Ripple\r\ndescription: Ripples are state layers used to communicate the status of a component or interactive element.\r\n---\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/select.md",
    "content": "---\r\ntitle: Select\r\ndescription: Select fields components are used for collecting user provided information from a list of options.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name                  | Type                  | Default        | Description                                                                                                   |\r\n| --------------------- | --------------------- | -------------- | ------------------------------------------------------------------------------------------------------------- |\r\n| `label`               | `React.ReactNode`     | —              | The content to display as the label.                                                                          |\r\n| `selectedKey`         | `Key`                 | —              | The currently selected key in the collection (controlled).                                                    |\r\n| `disabledKeys`        | `Iterable<Key>`       | —              | The item keys that are disabled. These items cannot be selected, focused, or otherwise interacted with.       |\r\n| `isOpen`              | `boolean`             | `false`        | Sets the open state of the menu.                                                                              |\r\n| `isDisabled`          | `boolean`             | `false`        | Whether the input is disabled.                                                                                |\r\n| `isRequired`          | `boolean`             | `false`        | Whether user input is required on the input before form submission.                                           |\r\n| `isInvalid`           | `boolean`             | `false`        | Whether the input value is invalid.                                                                           |\r\n| `validationBehavior`  | `aria` `native`       | `aria`         | Whether to use native HTML form validation to prevent form submission when the value is missing or invalid, or mark the field as required or invalid via ARIA. |\r\n| `validate`            | `(value: Key) => ValidationError` `true` | — | A function that returns an error message if a given value is invalid. Validation errors are displayed to the user when the form is submitted if validationBehavior=\"native\". For realtime validation, use the isInvalid prop instead. |\r\n| `variant`             | `filled` `outlined`   | `filled`       | The type of the Select.                                                                                       |\r\n| `popoverProps`        | `PopoverProps`        | —              | Props that allow changing the popover placement, flip behavior, style etc.                                    |\r\n| `className`           | `string`              | —              | —                                                                                                             |\r\n| `style`               | `React.CSSProperties` | —              | —                                                                                                             |\r\n\r\n## Events\r\n\r\n| Name                | Type                            | Description                                                       |\r\n| ------------------- | ------------------------------- | ----------------------------------------------------------------- |\r\n| `onSelectionChange` | `(key: Key) => void`            | Handler that is called when the selection changes.                |\r\n| `onBlur`            | `(e: React.FocusEvent) => void` | Handler that is called when the element loses focus.              |\r\n| `onFocus`           | `(e: React.FocusEvent) => void` | Handler that is called when the element receives focus.           |\r\n| `onFocusChange`     | `(isFocused: boolean) => void`  | Handler that is called when the element's focus status changes.   |\r\n| `onOpenChange`      | `(isOpened: boolean) => void`   | Method that is called when the open state of the menu changes.    |\r\n"
  },
  {
    "path": "apps/docs/content/components/sheets/bottom-sheets.md",
    "content": "---\r\ntitle: Bottom sheets\r\ndescription: Bottom sheets show secondary content anchored to the bottom of the screen\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Activator Props\r\n\r\n| Props     | Type      | Description                                | Default |\r\n| --------- | --------- | ------------------------------------------ | ------- |\r\n| `asChild` | `boolean` | set true pass any element as the activator | `false` |\r\n| `open`    | `boolean` | Whether the sheets is open or not          | `false` |\r\n"
  },
  {
    "path": "apps/docs/content/components/sheets/side-sheets.md",
    "content": "---\r\ntitle: Side sheets\r\ndescription: Side sheets are surfaces containing supplementary content or actions to support tasks as part of a flow. They are typically anchored on the right edge of larger screens like tablets and desktops.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props     | Type      | Description                  | Default |\r\n| --------- | --------- | ---------------------------- | ------- |\r\n| `divider` | `boolean` | show divider in body content | `false` |\r\n\r\n## Activator Props\r\n\r\n| Props     | Type      | Description                                | Default |\r\n| --------- | --------- | ------------------------------------------ | ------- |\r\n| `asChild` | `boolean` | set true pass any element as the activator | `false` |\r\n| `open`    | `boolean` | Whether the sheets is open or not          | `false` |\r\n"
  },
  {
    "path": "apps/docs/content/components/sliders.md",
    "content": "---\r\ntitle: Sliders\r\ndescription: Sliders let users make selections from a range of values\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props          | Type                                      | Description          | Default     |\r\n| -------------- | ----------------------------------------- | -------------------- | ----------- |\r\n| `color`        | `primary` `secondary` `tertiaray` `error` | color                | `primary`   |\r\n| `label`        | `string`                                  | label                | `undefined` |\r\n| `value`        | `number` `number[]`                       | slider value         | `undefined` |\r\n| `labeled `     | `boolean`                                 | show label on thumb  | `undefined` |\r\n| `isDisabled`   | `boolean`                                 | disable slider       | `undefined` |\r\n| `defaultValue` | `number` `number[]`                       | default slider value | `undefined` |\r\n\r\n## Events\r\n\r\n| Events     | Description              |\r\n| ---------- | ------------------------ |\r\n| `onChange` | fired when value changed |\r\n"
  },
  {
    "path": "apps/docs/content/components/snackbar.md",
    "content": "---\ntitle: Snackbar\ndescription: Snackbars show short updates about app processes at the bottom of the screen\n---\n\n## Usage\n\n<usage></usage>\n"
  },
  {
    "path": "apps/docs/content/components/swiper.md",
    "content": "---\r\ntitle: Swiper\r\ndescription: Swiper is simple banner slider with a lot of features.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/switch.md",
    "content": "---\r\ntitle: Switch\r\ndescription: Switches toggle the state of an item on or off\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Name              | Type                                                                                        | Default | Description                                                                                                                                                   |\r\n| ----------------- | ------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `icons`           | `boolean`                                                                                   | —       | Show x or √ icon                                                                                                                                              |\r\n| `color`           | `primary` `secondary` `tertiaray` `error`                                                   | —       | The color of the switch                                                                                                                                       |\r\n| `defaultSelected` | `boolean`                                                                                   | —       | Whether the Switch should be selected (uncontrolled).                                                                                                         |\r\n| `isSelected`      | `boolean`                                                                                   | —       | Whether the Switch should be selected (controlled).                                                                                                           |\r\n| `isDisabled`      | `boolean`                                                                                   | —       | Whether the input is disabled.                                                                                                                                |\r\n| `isReadOnly`      | `boolean`                                                                                   | —       | Whether the input can be selected but not changed by the user.                                                                                                |\r\n| `autoFocus`       | `boolean`                                                                                   | —       | Whether the element should receive focus on render.                                                                                                           |\r\n| `name`            | `string`                                                                                    | —       | The name of the input element, used when submitting an HTML form. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefname). |\r\n| `children`        | `string` `React.ReactNode`                                                                  | —       | The children of the component. A function may be provided to alter the children based on component state.                                                     |\r\n| `className`       | `string` `(values: SwitchRenderProps & { defaultClassName: string \\| undefined}) => string` | —       | The CSS className for the element. A function may be provided to compute the class based on component state.                                                  |\r\n| `style`           | `React.CSSProperties`                                                                       | —       | The inline style for the element. A function may be provided to compute the style based on component state.                                                   |\r\n\r\n## Events\r\n\r\n| Name            | Type                              | Description                                                       |\r\n| --------------- | --------------------------------- | ----------------------------------------------------------------- |\r\n| `onChange`      | `(isSelected: boolean) => void`   | Handler that is called when the Switch's selection state changes. |\r\n| `onFocus`       | `(e: FocusEvent<Target>) => void` | Handler that is called when the element receives focus.           |\r\n| `onBlur`        | `(e: FocusEvent<Target>) => void` | Handler that is called when the element loses focus.              |\r\n| `onFocusChange` | `(isFocused: boolean) => void`    | Handler that is called when the element's focus status changes.   |\r\n| `onKeyDown`     | `(e: KeyboardEvent) => void`      | Handler that is called when a key is pressed.                     |\r\n| `onKeyUp`       | `(e: KeyboardEvent) => void`      | Handler that is called when a key is released.                    |\r\n| `onHoverStart`  | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction starts.           |\r\n| `onHoverEnd`    | `(e: HoverEvent) => void`         | Handler that is called when a hover interaction ends.             |\r\n| `onHoverChange` | `(isHovering: boolean) => void`   | Handler that is called when the hover state changes.              |\r\n"
  },
  {
    "path": "apps/docs/content/components/table.md",
    "content": "---\r\ntitle: Table\r\ndescription: Table is a component that allows you to display tabular data.\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n### Table\r\n\r\n| Name                   | Type                     | Default     | Description                                                                                                  |\r\n| ---------------------- | ------------------------ | ----------- | ------------------------------------------------------------------------------------------------------------ |\r\n| children               | `ReactNode`              | —           | The elements that make up the table. Includes the TableHeader, TableBody, Columns, and Rows.                 |\r\n| selectionBehavior      | `SelectionBehavior`      | 'toggle'    | How multiple selection should behave in the collection.                                                      |\r\n| disabledBehavior       | `DisabledBehavior`       | 'selection' | Whether disabledKeys applies to all interactions, or only selection.                                         |\r\n| dragAndDropHooks       | `DragAndDropHooks`       | —           | The drag and drop hooks returned by useDragAndDrop used to enable drag and drop behavior for the Table.      |\r\n| disabledKeys           | `Iterable<Key>`          | —           | A list of row keys to disable.                                                                               |\r\n| selectionMode          | `SelectionMode`          | —           | The type of selection that is allowed in the collection.                                                     |\r\n| disallowEmptySelection | `boolean`                | —           | Whether the collection allows empty selection.                                                               |\r\n| selectedKeys           | `'all' \\| Iterable<Key>` | —           | The currently selected keys in the collection (controlled).                                                  |\r\n| defaultSelectedKeys    | `'all' \\| Iterable<Key>` | —           | The initial selected keys in the collection (uncontrolled).                                                  |\r\n| sortDescriptor         | `SortDescriptor`         | —           | The current sorted column and direction.                                                                     |\r\n| className              | `string`                 | —           | The CSS className for the element. A function may be provided to compute the class based on component state. |\r\n| style                  | `React.CSSProperties`    | —           | The inline style for the element. A function may be provided to compute the style based on component state.  |\r\n\r\n### Events\r\n\r\n| Name              | Type                                  | Description                                                                                                                   |\r\n| ----------------- | ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |\r\n| onRowAction       | `(key: Key) => void`                  | Handler that is called when a user performs an action on the row.                                                             |\r\n| onSelectionChange | `(keys: Selection) => void`           | Handler that is called when the selection changes.                                                                            |\r\n| onSortChange      | `(descriptor: SortDescriptor) => any` | Handler that is called when the sorted column or direction changes.                                                           |\r\n| onScroll          | `(e: UIEvent<Element>) => void`       | Handler that is called when a user scrolls. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/scroll_event). |\r\n\r\n### TableHeader\r\n\r\n| Name         | Type                                          | Description                                                                                                  |\r\n| ------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |\r\n| columns      | `object[]`                                    | A list of table columns.                                                                                     |\r\n| children     | `ReactNode \\| (item: object) => ReactElement` | A list of Column(s) or a function. If the latter, a list of columns must be provided using the columns prop. |\r\n| dependencies | `any[]`                                       | Values that should invalidate the column cache when using dynamic collections.                               |\r\n| className    | `string`                                      | The CSS className for the element. A function may be provided to compute the class based on component state. |\r\n| style        | `React.CSSProperties`                         | The inline style for the element. A function may be provided to compute the style based on component state.  |\r\n"
  },
  {
    "path": "apps/docs/content/components/tabs.md",
    "content": "---\r\ntitle: Tabs\r\ndescription: Tabs organize content across different screens and views\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props                | Type                    | Description                 | Default      |\r\n| -------------------- | ----------------------- | --------------------------- | ------------ |\r\n| `orientation`        | `horizontal` `vertical` | The orientation of the tabs | `horizontal` |\r\n| `keyboardActivation` | `automatic` `manual`    | keyboard activation         | `automatic`  |\r\n| `defaultSelectedKey` | `string` \\| `number`    | default selected key        | `undefined`  |\r\n\r\n## Events\r\n\r\n| Events              | Description                 |\r\n| ------------------- | --------------------------- |\r\n| `onSelectionChange` | fired when selected changed |\r\n"
  },
  {
    "path": "apps/docs/content/components/terminal.md",
    "content": "---\r\ntitle: Terminal\r\ndescription: Tabs organize content across different screens and views\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n| Props       | Type              | Description    | Default             |\r\n| ----------- | ----------------- | -------------- | ------------------- |\r\n| `title`     | `string`          | terminal title | `Terminal`          |\r\n| `lastlogin` | `Date`            | last login     | `new Date()`        |\r\n| `hostname`  | `string`          | hostname       | `Lerte-MacBook-Pro` |\r\n| `username`  | `string`          | username       | `lerte`             |\r\n| `children`  | `React.ReactNode` |                | `null`              |\r\n"
  },
  {
    "path": "apps/docs/content/components/text-fields.md",
    "content": "---\r\ntitle: Text fields\r\ndescription: Text fields let users enter text into a UI\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n### TextField\r\n\r\n| Name                 | Type                                                                    | Default  | Description                                                                                                                                                                                                                           |\r\n| -------------------- | ----------------------------------------------------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `label`              | `string`                                                                | —        | Input label                                                                                                                                                                                                                           |\r\n| `isInvalid`          | `boolean`                                                               | —        | Whether the value is invalid.                                                                                                                                                                                                         |\r\n| `isDisabled`         | `boolean`                                                               | —        | Whether the input is disabled.                                                                                                                                                                                                        |\r\n| `isReadOnly`         | `boolean`                                                               | —        | Whether the input can be selected but not changed by the user.                                                                                                                                                                        |\r\n| `isRequired`         | `boolean`                                                               | —        | Whether user input is required on the input before form submission.                                                                                                                                                                   |\r\n| `validate`           | `(value: string) => ValidationError \\| true \\| null \\| undefined`       | —        | A function that returns an error message if a given value is invalid. Validation errors are displayed to the user when the form is submitted if validationBehavior=\"native\". For realtime validation, use the isInvalid prop instead. |\r\n| `autoFocus`          | `boolean`                                                               | —        | Whether the element should receive focus on render.                                                                                                                                                                                   |\r\n| `value`              | `string`                                                                | —        | The current value (controlled).                                                                                                                                                                                                       |\r\n| `defaultValue`       | `string`                                                                | —        | The default value (uncontrolled).                                                                                                                                                                                                     |\r\n| `autoComplete`       | `string`                                                                | —        | Describes the type of autocomplete functionality the input should provide if any. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefautocomplete).                                                 |\r\n| `maxLength`          | `number`                                                                | —        | The maximum number of characters supported by the input. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefmaxlength).                                                                             |\r\n| `minLength`          | `number`                                                                | —        | The minimum number of characters required by the input. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefminlength).                                                                              |\r\n| `pattern`            | `string`                                                                | —        | Regex pattern that the value of the input must match to be valid. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefpattern).                                                                      |\r\n| `type`               | `text` `textarea` `search` `url` `tel` `email` `password` `string & {}` | 'text'   | The type of input to render. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdeftype).                                                                                                              |\r\n| `inputMode`          | `none` `text` `tel` `url` `email` `numeric` `decimal` `search`          | —        | Hints at the type of data that might be entered by the user while editing the element or its contents. See [MDN](https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute).                  |\r\n| `name`               | `string`                                                                | —        | The name of the input element, used when submitting an HTML form. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#htmlattrdefname).                                                                         |\r\n| `validationBehavior` | `native` `aria`                                                         | 'native' | Whether to use native HTML form validation to prevent form submission when the value is missing or invalid, or mark the field as required or invalid via ARIA.                                                                        |\r\n| `children`           | `React.ReactNode`                                                       | —        | The children of the component. A function may be provided to alter the children based on component state.                                                                                                                             |\r\n| `className`          | `string`                                                                | —        | The CSS className for the element. A function may be provided to compute the class based on component state.                                                                                                                          |\r\n| `style`              | `React.CSSProperties`                                                   | —        | The inline style for the element. A function may be provided to compute the style based on component state.                                                                                                                           |\r\n| `variant`            | `filled` `outlined`                                                     | 'filled' |                                                                                                                                                                                                                                       |\r\n| `suffixText`         | `string`                                                                | —        |                                                                                                                                                                                                                                       |\r\n| `prefixText`         | `string`                                                                | —        |                                                                                                                                                                                                                                       |\r\n| `leadingIcon`        | `React.ReactNode`                                                       | —        |                                                                                                                                                                                                                                       |\r\n| `trailingIcon`       | `React.ReactNode`                                                       | —        |                                                                                                                                                                                                                                       |\r\n\r\n## Events\r\n\r\n| Name                 | Type                                        | Description                                                                                                                                                                              |\r\n| -------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `onFocus`            | `(e: FocusEvent<T>) => void`                | Handler that is called when the element receives focus.                                                                                                                                  |\r\n| `onBlur`             | `(e: FocusEvent<T>) => void`                | Handler that is called when the element loses focus.                                                                                                                                     |\r\n| `onFocusChange`      | `(isFocused: boolean) => void`              | Handler that is called when the element's focus status changes.                                                                                                                          |\r\n| `onKeyUp`            | `(e: KeyboardEvent) => void`                | Handler that is called when a key is released.                                                                                                                                           |\r\n| `onChange`           | `(value: T) => void`                        | Handler that is called when the value changes.                                                                                                                                           |\r\n| `onCopy`             | `ClipboardEventHandler<HTMLInputElement>`   | Handler that is called when the user copies text. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/copy_event).                                                    |\r\n| `onPaste`            | `ClipboardEventHandler<HTMLInputElement>`   | Handler that is called when the user pastes text. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/paste_event).                                                   |\r\n| `onCompositionStart` | `CompositionEventHandler<HTMLInputElement>` | Handler that is called when a text composition system starts a new text composition session. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionstart_event). |\r\n| `onSelect`           | `ReactEventHandler<HTMLInputElement>`       | Handler that is called when text in the input is selected. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select_event).                                    |\r\n| `onBeforeInput`      | `FormEventHandler<HTMLInputElement>`        | Handler that is called when the input value is about to be modified. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/beforeinput_event).                              |\r\n| `onInput`            | `FormEventHandler<HTMLInputElement>`        | Handler that is called when the input value is modified. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/input_event).                                                |\r\n"
  },
  {
    "path": "apps/docs/content/components/time-pickers.md",
    "content": "---\r\ntitle: Time pickers\r\ndescription: Time pickers help users select and set a specific time\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n"
  },
  {
    "path": "apps/docs/content/components/tooltips.md",
    "content": "---\r\ntitle: Tooltips\r\ndescription: Tooltips display brief labels or messages\r\n---\r\n\r\n## Usage\r\n\r\n<usage></usage>\r\n\r\n## Props\r\n\r\n### TooltipTrigger\r\n\r\n| Name        | Type        | Default | Description                                                                     |\r\n| ----------- | ----------- | ------- | ------------------------------------------------------------------------------- |\r\n| children    | `ReactNode` | —       |                                                                                 |\r\n| isDisabled  | `boolean`   | —       | Whether the tooltip should be disabled, independent from the trigger.           |\r\n| delay       | `number`    | 1500    | The delay time for the tooltip to show up.                                      |\r\n| closeDelay  | `number`    | 500     | The delay time for the tooltip to close.                                        |\r\n| trigger     | `focus`     | —       | By default, opens for both focus and hover. Can be made to open only for focus. |\r\n| isOpen      | `boolean`   | 12      | Whether the overlay is open by default (controlled).                            |\r\n| defaultOpen | `boolean`   | 0       | Whether the overlay is open by default (uncontrolled).                          |\r\n\r\n### Tooltip\r\n\r\n| Name                     | Type                                                                                                                       | Default       | Description                                                                                                                                                                        |\r\n| ------------------------ | -------------------------------------------------------------------------------------------------------------------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| triggerRef               | `RefObject<Element \\| null>`                                                                                               | —             | The ref for the element which the tooltip positions itself with respect to. When used within a TooltipTrigger this is set automatically. It is only required when used standalone. |\r\n| isEntering               | `boolean`                                                                                                                  | —             | Whether the tooltip is currently performing an entry animation.                                                                                                                    |\r\n| isExiting                | `boolean`                                                                                                                  | —             | Whether the tooltip is currently performing an exit animation.                                                                                                                     |\r\n| UNSTABLE_portalContainer | `Element`                                                                                                                  | document.body | The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.                                            |\r\n| placement                | `Placement`                                                                                                                | 'top'         | The placement of the tooltip with respect to the trigger.                                                                                                                          |\r\n| containerPadding         | `number`                                                                                                                   | 12            | The placement padding that should be applied between the element and its surrounding container.                                                                                    |\r\n| offset                   | `number`                                                                                                                   | 0             | The additional offset applied along the main axis between the element and its anchor element.                                                                                      |\r\n| crossOffset              | `number`                                                                                                                   | 0             | The additional offset applied along the cross axis between the element and its anchor element.                                                                                     |\r\n| shouldFlip               | `boolean`                                                                                                                  | true          | Whether the element should flip its orientation (e.g. top to bottom or left to right) when there is insufficient room for it to render completely.                                 |\r\n| isOpen                   | `boolean`                                                                                                                  | —             | Whether the element is rendered.                                                                                                                                                   |\r\n| arrowBoundaryOffset      | `number`                                                                                                                   | 0             | The minimum distance the arrow's edge should be from the edge of the overlay element.                                                                                              |\r\n| defaultOpen              | `boolean`                                                                                                                  | —             | Whether the overlay is open by default (uncontrolled).                                                                                                                             |\r\n| children                 | `ReactNode                     \\| (values: TooltipRenderProps & { defaultChildren: ReactNode \\| undefined }) => ReactNode` | —             | The children of the component. A function may be provided to alter the children based on component state.                                                                          |\r\n| className                | `string \\| (values: TooltipRenderProps & { defaultClassName: string \\| undefined}) => string`                              | —             | The CSS className for the element. A function may be provided to compute the class based on component state.                                                                       |\r\n| style                    | `CSSProperties \\| (values: TooltipRenderProps & {defaultStyle: CSSProperties}) => CSSProperties \\| undefined`              | —             | The inline style for the element. A function may be provided to compute the style based on component state.                                                                        |\r\n"
  },
  {
    "path": "apps/docs/content/getting-started/icons.md",
    "content": "---\r\ntitle: Icon\r\n---\r\n\r\n> Icons are based on <a href=\"https://fonts.google.com/icons\" target=\"_blank\">Material Icons</a>\r\n\r\n<icon></icon>\r\n"
  },
  {
    "path": "apps/docs/content/getting-started/installation.md",
    "content": "---\r\ntitle: Installation\r\n---\r\n\r\n## Prerequisites\r\n\r\n> Actify is working with Tailwind CSS classes and you need to have Tailwind CSS installed on your project - <a href=\"https://tailwindcss.com/docs/installation/framework-guides\" target=\"_blank\">Tailwind CSS Installation Guide</a>.\r\n\r\n## Install\r\n\r\n<tabs language=\"shell\" items='[{\"label\":\"pnpm\",\"icon\":\"pnpm\",\"content\":\"pnpm add actify\"},{\"label\":\"yarn\",\"icon\":\"yarn\",\"content\":\"yarn add actify\"},{\"label\":\"npm\",\"icon\":\"npm\",\"content\":\"npm i actify\"}]'>\r\n</tabs>\r\n\r\n## app.css\r\n\r\n```css\r\n@import 'tailwindcss';\r\n\r\n:root {\r\n  --md-sys-color-background: #18130b;\r\n  --md-sys-color-on-background: #ede1d3;\r\n  --md-sys-color-surface: #18130b;\r\n  --md-sys-color-surface-dim: #18130b;\r\n  --md-sys-color-surface-bright: #3f382f;\r\n  --md-sys-color-surface-container-lowest: #120d06;\r\n  --md-sys-color-surface-container-low: #201b12;\r\n  --md-sys-color-surface-container: #251f16;\r\n  --md-sys-color-surface-container-high: #2f2920;\r\n  --md-sys-color-surface-container-highest: #3b342a;\r\n  --md-sys-color-on-surface: #ede1d3;\r\n  --md-sys-color-surface-variant: #504534;\r\n  --md-sys-color-on-surface-variant: #d5c4ae;\r\n  --md-sys-color-inverse-surface: #ede1d3;\r\n  --md-sys-color-inverse-on-surface: #362f26;\r\n  --md-sys-color-outline: #9d8f7b;\r\n  --md-sys-color-outline-variant: #504534;\r\n  --md-sys-color-shadow: #000000;\r\n  --md-sys-color-scrim: #000000;\r\n  --md-sys-color-surface-tint: #ffba3e;\r\n  --md-sys-color-primary: #ffc971;\r\n  --md-sys-color-on-primary: #432c00;\r\n  --md-sys-color-primary-container: #ecaa2e;\r\n  --md-sys-color-on-primary-container: #614100;\r\n  --md-sys-color-inverse-primary: #7f5700;\r\n  --md-sys-color-secondary: #e6c188;\r\n  --md-sys-color-on-secondary: #432c02;\r\n  --md-sys-color-secondary-container: #5e4518;\r\n  --md-sys-color-on-secondary-container: #d7b37c;\r\n  --md-sys-color-tertiary: #c7dc64;\r\n  --md-sys-color-on-tertiary: #2c3400;\r\n  --md-sys-color-tertiary-container: #acc04b;\r\n  --md-sys-color-on-tertiary-container: #414d00;\r\n  --md-sys-color-error: #ffb4ab;\r\n  --md-sys-color-on-error: #690005;\r\n  --md-sys-color-error-container: #93000a;\r\n  --md-sys-color-on-error-container: #ffdad6;\r\n}\r\n\r\n@theme {\r\n  --color-background: var(--md-sys-color-background);\r\n  --color-on-background: var(--md-sys-color-on-background);\r\n  --color-surface: var(--md-sys-color-surface);\r\n  --color-surface-dim: var(--md-sys-color-surface-dim);\r\n  --color-surface-bright: var(--md-sys-color-surface-bright);\r\n  --color-surface-container-lowest: var(\r\n    --md-sys-color-surface-container-lowest\r\n  );\r\n  --color-surface-container-low: var(--md-sys-color-surface-container-low);\r\n  --color-surface-container: var(--md-sys-color-surface-container);\r\n  --color-surface-container-high: var(--md-sys-color-surface-container-high);\r\n  --color-surface-container-highest: var(\r\n    --md-sys-color-surface-container-highest\r\n  );\r\n  --color-on-surface: var(--md-sys-color-on-surface);\r\n  --color-surface-variant: var(--md-sys-color-surface-variant);\r\n  --color-on-surface-variant: var(--md-sys-color-on-surface-variant);\r\n  --color-inverse-surface: var(--md-sys-color-inverse-surface);\r\n  --color-inverse-on-surface: var(--md-sys-color-inverse-on-surface);\r\n  --color-outline: var(--md-sys-color-outline);\r\n  --color-outline-variant: var(--md-sys-color-outline-variant);\r\n  --color-shadow: var(--md-sys-color-shadow);\r\n  --color-scrim: var(--md-sys-color-scrim);\r\n  --color-surface-tint: var(--md-sys-color-surface-tint);\r\n  --color-primary: var(--md-sys-color-primary);\r\n  --color-on-primary: var(--md-sys-color-on-primary);\r\n  --color-primary-container: var(--md-sys-color-primary-container);\r\n  --color-on-primary-container: var(--md-sys-color-on-primary-container);\r\n  --color-inverse-primary: var(--md-sys-color-inverse-primary);\r\n  --color-secondary: var(--md-sys-color-secondary);\r\n  --color-on-secondary: var(--md-sys-color-on-secondary);\r\n  --color-secondary-container: var(--md-sys-color-secondary-container);\r\n  --color-on-secondary-container: var(--md-sys-color-on-secondary-container);\r\n  --color-tertiary: var(--md-sys-color-tertiary);\r\n  --color-on-tertiary: var(--md-sys-color-on-tertiary);\r\n  --color-tertiary-container: var(--md-sys-color-tertiary-container);\r\n  --color-on-tertiary-container: var(--md-sys-color-on-tertiary-container);\r\n  --color-error: var(--md-sys-color-error);\r\n  --color-on-error: var(--md-sys-color-on-error);\r\n  --color-error-container: var(--md-sys-color-error-container);\r\n  --color-on-error-container: var(--md-sys-color-on-error-container);\r\n}\r\n```\r\n\r\n## Example\r\n\r\n```jsx\r\nimport { Button } from 'actify'\r\n\r\nexport default () => {\r\n  return <Button>Hello Actify</Button>\r\n}\r\n```\r\n"
  },
  {
    "path": "apps/docs/content/getting-started/theme.md",
    "content": "---\r\ntitle: Theme\r\n---\r\n\r\n<theme></theme>\r\n"
  },
  {
    "path": "apps/docs/content/getting-started/why-actify.md",
    "content": "---\r\ntitle: Why Actify\r\n---\r\n\r\n## What is Actify?\r\n\r\nActify is an open source react component library written in Vite + React + Tailwind CSS based on Google's [Material Design 3](https://m3.material.io/). Highly inspired by [Vuetify](https://www.vuetifyjs.com). You can use it for write react pages.\r\n\r\n## Getting started\r\n\r\nFor a complete list of installation options please navigate to the [Installation page](/getting-started/installation)\r\n\r\n## Why Actify?\r\n\r\nActify is a powerful React Component Library built from the ground up to be easy to learn and rewarding to master. Our collection of UI components maintain a consistent style throughout your application with enough customization options to meet any use-case.\r\n\r\n## It’s free\r\n\r\nActify is an Open Source project available for free under the [MIT licensed](http://opensource.org/licenses/MIT)\r\n. Additionally, Actify’s source code is available on GitHub, allowing developers to modify and contribute to its development if they choose to do so.\r\n"
  },
  {
    "path": "apps/docs/next.config.mjs",
    "content": "/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  distDir: 'dist',\n  output: 'export'\n}\n\nexport default nextConfig\n"
  },
  {
    "path": "apps/docs/package.json",
    "content": "{\n  \"name\": \"docs\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"lint\": \"next lint\"\n  },\n  \"dependencies\": {\n    \"@docsearch/react\": \"^3.9.0\",\n    \"@material/material-color-utilities\": \"^0.3.0\",\n    \"actify\": \"workspace:*\",\n    \"codesandbox\": \"^2.2.3\",\n    \"date-fns\": \"^3.6.0\",\n    \"gray-matter\": \"^4.0.3\",\n    \"next\": \"^15.1.0\",\n    \"next-themes\": \"^0.4.3\",\n    \"react\": \"catalog:\",\n    \"react-dom\": \"catalog:\",\n    \"react-markdown\": \"^9.0.1\",\n    \"rehype-autolink-headings\": \"^7.1.0\",\n    \"rehype-raw\": \"^7.0.0\",\n    \"rehype-slug\": \"^6.0.0\",\n    \"remark-gfm\": \"^4.0.0\",\n    \"shiki\": \"^1.6.1\",\n    \"sonner\": \"^1.7.0\"\n  },\n  \"devDependencies\": {\n    \"@tailwindcss/postcss\": \"^4.1.4\",\n    \"@tailwindcss/typography\": \"^0.5.16\",\n    \"@types/node\": \"^20.12.12\",\n    \"@types/react\": \"catalog:\",\n    \"@types/react-dom\": \"catalog:\",\n    \"clsx\": \"^2.1.1\",\n    \"postcss\": \"^8.5.3\",\n    \"react-live\": \"^4.1.6\",\n    \"tailwind-merge\": \"^2.5.4\",\n    \"tailwind-variants\": \"^0.2.1\",\n    \"tailwindcss\": \"^4.1.4\",\n    \"typescript\": \"^5.4.5\"\n  }\n}\n"
  },
  {
    "path": "apps/docs/postcss.config.mjs",
    "content": "const config = {\n  plugins: {\n    '@tailwindcss/postcss': {}\n  }\n}\nexport default config\n"
  },
  {
    "path": "apps/docs/src/app/(docs)/[...slug]/page.tsx",
    "content": "import { getAllDocSlugs, getDocData } from '@/lib/doc'\r\n\r\nimport Markdown from '@/components/Markdown'\r\nimport TableOfContents from '@/components/TableOfContents'\r\nimport { getFileRaw } from '@/lib/raw'\r\n\r\ntype PageProps = {\r\n  params: Promise<{ slug: string[] }>\r\n}\r\n\r\nexport const generateMetadata = async (props: PageProps) => {\r\n  const params = await props.params\r\n  const { slug } = params\r\n  const docs = getDocData(slug)\r\n\r\n  return {\r\n    title: docs?.title,\r\n    description: docs?.description\r\n  }\r\n}\r\n\r\nexport async function generateStaticParams() {\r\n  const slugs = getAllDocSlugs()\r\n  return slugs\r\n}\r\n\r\nexport default async function PageLayout(props: PageProps) {\r\n  const params = await props.params\r\n  const { slug } = params\r\n  const docs = getDocData(slug)\r\n\r\n  const filepath = slug.join('/').replace('components/', '')\r\n  const content = await getFileRaw(`./src/usages/${filepath}.tsx`)\r\n\r\n  return (\r\n    <article className=\"prose dark:prose-invert text-sm sm:text-base md:text-lg mb-4 max-w-full prose-pre:p-0 prose-a:no-underline\">\r\n      <Markdown docs={docs} usage={{ component: filepath, content }} />\r\n      <TableOfContents markdown={docs.content} />\r\n    </article>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/app/(docs)/layout.tsx",
    "content": "'use client'\r\n\r\nimport Aside from '@/components/Aside'\r\nimport EditOnGitHub from '@/components/EditOnGitHub'\r\nimport { tv } from 'tailwind-variants'\r\nimport { usePathname } from 'next/navigation'\r\n\r\nconst base = tv({\r\n  base: [\r\n    'flex',\r\n    'flex-col',\r\n    'bg-surface',\r\n    'text-on-surface',\r\n    'pl-0',\r\n    'md:pl-60',\r\n    'col-end-3',\r\n    'col-start-1'\r\n  ]\r\n})\r\n\r\nexport default function DocLayout({ children }: { children: React.ReactNode }) {\r\n  const pathname = usePathname()\r\n\r\n  return (\r\n    <>\r\n      <Aside />\r\n      <main className={base()}>\r\n        <div className=\"p-4 lg:pr-64 flex flex-col\">{children}</div>\r\n        <div className=\"w-fit pl-2 pb-2\">\r\n          <EditOnGitHub pathname={pathname} />\r\n        </div>\r\n      </main>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/app/app.css",
    "content": "@import 'tailwindcss';\n@plugin \"@tailwindcss/typography\";\n\n@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));\n\nhtml {\n  scroll-behavior: smooth;\n}\n\n:root,\n:host {\n  --md-sys-color-background: #fff8f3;\n  --md-sys-color-on-background: #201b12;\n  --md-sys-color-surface: #fff8f3;\n  --md-sys-color-surface-dim: #e4d8cb;\n  --md-sys-color-surface-bright: #fff8f3;\n  --md-sys-color-surface-container-lowest: #ffffff;\n  --md-sys-color-surface-container-low: #fef2e4;\n  --md-sys-color-surface-container: #f8ecde;\n  --md-sys-color-surface-container-high: #f3e6d8;\n  --md-sys-color-surface-container-highest: #ede1d3;\n  --md-sys-color-on-surface: #201b12;\n  --md-sys-color-surface-variant: #f2e0c9;\n  --md-sys-color-on-surface-variant: #504534;\n  --md-sys-color-inverse-surface: #362f26;\n  --md-sys-color-inverse-on-surface: #fbefe1;\n  --md-sys-color-outline: #837562;\n  --md-sys-color-outline-variant: #d5c4ae;\n  --md-sys-color-shadow: #000000;\n  --md-sys-color-scrim: #000000;\n  --md-sys-color-surface-tint: #7f5700;\n  --md-sys-color-primary: #7f5700;\n  --md-sys-color-on-primary: #ffffff;\n  --md-sys-color-primary-container: #ecaa2e;\n  --md-sys-color-on-primary-container: #614100;\n  --md-sys-color-inverse-primary: #ffba3e;\n  --md-sys-color-secondary: #765a2b;\n  --md-sys-color-on-secondary: #ffffff;\n  --md-sys-color-secondary-container: #fed79d;\n  --md-sys-color-on-secondary-container: #785c2d;\n  --md-sys-color-tertiary: #566500;\n  --md-sys-color-on-tertiary: #ffffff;\n  --md-sys-color-tertiary-container: #acc04b;\n  --md-sys-color-on-tertiary-container: #414d00;\n  --md-sys-color-error: #ba1a1a;\n  --md-sys-color-on-error: #ffffff;\n  --md-sys-color-error-container: #ffdad6;\n  --md-sys-color-on-error-container: #93000a;\n}\n\n[data-theme='dark'] {\n  --md-sys-color-background: #18130b;\n  --md-sys-color-on-background: #ede1d3;\n  --md-sys-color-surface: #18130b;\n  --md-sys-color-surface-dim: #18130b;\n  --md-sys-color-surface-bright: #3f382f;\n  --md-sys-color-surface-container-lowest: #120d06;\n  --md-sys-color-surface-container-low: #201b12;\n  --md-sys-color-surface-container: #251f16;\n  --md-sys-color-surface-container-high: #2f2920;\n  --md-sys-color-surface-container-highest: #3b342a;\n  --md-sys-color-on-surface: #ede1d3;\n  --md-sys-color-surface-variant: #504534;\n  --md-sys-color-on-surface-variant: #d5c4ae;\n  --md-sys-color-inverse-surface: #ede1d3;\n  --md-sys-color-inverse-on-surface: #362f26;\n  --md-sys-color-outline: #9d8f7b;\n  --md-sys-color-outline-variant: #504534;\n  --md-sys-color-shadow: #000000;\n  --md-sys-color-scrim: #000000;\n  --md-sys-color-surface-tint: #ffba3e;\n  --md-sys-color-primary: #ffc971;\n  --md-sys-color-on-primary: #432c00;\n  --md-sys-color-primary-container: #ecaa2e;\n  --md-sys-color-on-primary-container: #614100;\n  --md-sys-color-inverse-primary: #7f5700;\n  --md-sys-color-secondary: #e6c188;\n  --md-sys-color-on-secondary: #432c02;\n  --md-sys-color-secondary-container: #5e4518;\n  --md-sys-color-on-secondary-container: #d7b37c;\n  --md-sys-color-tertiary: #c7dc64;\n  --md-sys-color-on-tertiary: #2c3400;\n  --md-sys-color-tertiary-container: #acc04b;\n  --md-sys-color-on-tertiary-container: #414d00;\n  --md-sys-color-error: #ffb4ab;\n  --md-sys-color-on-error: #690005;\n  --md-sys-color-error-container: #93000a;\n  --md-sys-color-on-error-container: #ffdad6;\n}\n\n@theme {\n  --color-background: var(--md-sys-color-background);\n  --color-on-background: var(--md-sys-color-on-background);\n  --color-surface: var(--md-sys-color-surface);\n  --color-surface-dim: var(--md-sys-color-surface-dim);\n  --color-surface-bright: var(--md-sys-color-surface-bright);\n  --color-surface-container-lowest: var(\n    --md-sys-color-surface-container-lowest\n  );\n  --color-surface-container-low: var(--md-sys-color-surface-container-low);\n  --color-surface-container: var(--md-sys-color-surface-container);\n  --color-surface-container-high: var(--md-sys-color-surface-container-high);\n  --color-surface-container-highest: var(\n    --md-sys-color-surface-container-highest\n  );\n  --color-on-surface: var(--md-sys-color-on-surface);\n  --color-surface-variant: var(--md-sys-color-surface-variant);\n  --color-on-surface-variant: var(--md-sys-color-on-surface-variant);\n  --color-inverse-surface: var(--md-sys-color-inverse-surface);\n  --color-inverse-on-surface: var(--md-sys-color-inverse-on-surface);\n  --color-outline: var(--md-sys-color-outline);\n  --color-outline-variant: var(--md-sys-color-outline-variant);\n  --color-shadow: var(--md-sys-color-shadow);\n  --color-scrim: var(--md-sys-color-scrim);\n  --color-surface-tint: var(--md-sys-color-surface-tint);\n  --color-primary: var(--md-sys-color-primary);\n  --color-on-primary: var(--md-sys-color-on-primary);\n  --color-primary-container: var(--md-sys-color-primary-container);\n  --color-on-primary-container: var(--md-sys-color-on-primary-container);\n  --color-inverse-primary: var(--md-sys-color-inverse-primary);\n  --color-secondary: var(--md-sys-color-secondary);\n  --color-on-secondary: var(--md-sys-color-on-secondary);\n  --color-secondary-container: var(--md-sys-color-secondary-container);\n  --color-on-secondary-container: var(--md-sys-color-on-secondary-container);\n  --color-tertiary: var(--md-sys-color-tertiary);\n  --color-on-tertiary: var(--md-sys-color-on-tertiary);\n  --color-tertiary-container: var(--md-sys-color-tertiary-container);\n  --color-on-tertiary-container: var(--md-sys-color-on-tertiary-container);\n  --color-error: var(--md-sys-color-error);\n  --color-on-error: var(--md-sys-color-on-error);\n  --color-error-container: var(--md-sys-color-error-container);\n  --color-on-error-container: var(--md-sys-color-on-error-container);\n}\n"
  },
  {
    "path": "apps/docs/src/app/fonts.ts",
    "content": "import { Fira_Code, Poppins } from 'next/font/google'\r\n\r\nexport const poppins = Poppins({\r\n  display: 'swap',\r\n  subsets: ['latin'],\r\n  variable: '--font-poppins',\r\n  weight: ['100', '200', '300', '400', '500', '600', '700', '800', '900']\r\n})\r\n\r\nexport const fira_code = Fira_Code({\r\n  subsets: ['latin'],\r\n  variable: '--font-fira-code',\r\n  display: 'swap'\r\n})\r\n"
  },
  {
    "path": "apps/docs/src/app/layout.tsx",
    "content": "import './app.css'\n\nimport { Metadata } from 'next'\nimport { poppins } from './fonts'\n\nexport const metadata: Metadata = {\n  title: 'Actify',\n  description: 'React Material Design 3 Components Library',\n  icons: {\n    icon: '/favicon.ico',\n    shortcut: '/short-cut-icon.png',\n    apple: '/apple-touch-icon.png'\n  }\n}\n\nexport default function RootLayout({\n  children\n}: {\n  children: React.ReactNode\n}) {\n  return (\n    <html lang=\"en\" suppressHydrationWarning className={poppins.className}>\n      <body>{children}</body>\n    </html>\n  )\n}\n"
  },
  {
    "path": "apps/docs/src/app/page.tsx",
    "content": "import { Icon, LinkButton } from 'actify'\n\nimport Link from 'next/link'\nimport Logo from '@/components/Logo'\nimport Sponsors from '@/components/Sponsors'\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\n\nexport const generateMetadata = () => {\n  return {\n    title: 'Actify — 🌻React Material Design 3 Components Library'\n  }\n}\n\nexport default function Page() {\n  return (\n    <main className=\"col-start-1 col-end-3 bg-surface\">\n      <div className=\"flex flex-col gap-4 pt-2\">\n        <div className=\"mx-auto w-40 sm:w-60\">\n          <Logo />\n        </div>\n        <p className=\"text-center text-secondary text-2xl md:text-3xl lg:text-4xl font-extrabold \">\n          React Material Design 3 Components Library\n        </p>\n        <div className=\"flex flex-col sm:flex-row p-4 sm:p-0 items-center justify-center gap-4\">\n          <Link\n            tabIndex={-1}\n            className=\"max-sm:w-full\"\n            href=\"/getting-started/installation\"\n          >\n            <LinkButton\n              variant=\"filled\"\n              className=\"max-sm:w-full flex justify-center\"\n            >\n              Get Started\n              <Icon>arrow_forward</Icon>\n            </LinkButton>\n          </Link>\n          <Link\n            tabIndex={-1}\n            className=\"max-sm:w-full text-center\"\n            href=\"/getting-started/why-actify\"\n          >\n            <LinkButton\n              variant=\"tonal\"\n              className=\"max-sm:w-full flex justify-center\"\n            >\n              <Icon>help</Icon>\n              Why Actify\n            </LinkButton>\n          </Link>\n          <a\n            tabIndex={-1}\n            target=\"_blank\"\n            className=\"max-sm:w-full\"\n            href=\"https://github.com/actifyjs/actify\"\n          >\n            <LinkButton\n              variant=\"outlined\"\n              className=\"max-sm:w-full flex justify-center\"\n            >\n              <Icon>\n                <svg\n                  width=\"18\"\n                  height=\"18\"\n                  fill=\"none\"\n                  strokeWidth=\"2\"\n                  viewBox=\"0 0 24 24\"\n                  stroke=\"currentColor\"\n                  strokeLinecap=\"round\"\n                  strokeLinejoin=\"round\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                  <path d=\"M9 18c-4.51 2-5-2-7-2\" />\n                  <path d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\" />\n                </svg>\n              </Icon>\n              GitHub\n            </LinkButton>\n          </a>\n        </div>\n        <div className=\"w-full max-w-md mx-auto\">\n          <SyntaxHighlighter lang=\"shell\">pnpm add actify</SyntaxHighlighter>\n        </div>\n        <Sponsors />\n      </div>\n    </main>\n  )\n}\n"
  },
  {
    "path": "apps/docs/src/app/template.tsx",
    "content": "'use client'\r\n\r\nimport App from '@/components/App'\r\nimport Console from '@/components/Console'\r\nimport Footer from '@/components/Footer'\r\nimport Header from '@/components/Header'\r\nimport { ThemeProvider } from 'next-themes'\r\nimport { Toaster } from 'sonner'\r\n\r\nexport default function Template({ children }: { children: React.ReactNode }) {\r\n  return (\r\n    <ThemeProvider storageKey=\"color-mode\">\r\n      <App>\r\n        <Header />\r\n        {children}\r\n        <Footer />\r\n        <Console />\r\n        <Toaster richColors position=\"top-center\" />\r\n      </App>\r\n    </ThemeProvider>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/App.tsx",
    "content": "import React from 'react'\r\nimport packageInfo from 'actify/package.json'\r\n\r\nexport default function App({ children }: { children: React.ReactNode }) {\r\n  return (\r\n    <div\r\n      id=\"actify\"\r\n      data-version={packageInfo.version}\r\n      className=\"grid grid-cols-1 antialiased min-h-screen grid-rows-[64px_1fr_56px]\"\r\n    >\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/AppDrawer.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  DrawerActivator,\r\n  DrawerContent,\r\n  Icon,\r\n  IconButton,\r\n  NavigationDrawer\r\n} from 'actify'\r\n\r\nimport Aside from '@/components/Aside'\r\nimport { useState } from 'react'\r\n\r\nexport default function AppDrawer() {\r\n  const [open, setOpen] = useState(false)\r\n\r\n  return (\r\n    <NavigationDrawer\r\n      open={open}\r\n      setOpen={setOpen}\r\n      placement=\"left\"\r\n      className=\"overflow-hidden\"\r\n    >\r\n      <DrawerActivator asChild className=\"md:hidden\">\r\n        <IconButton color=\"primary\">\r\n          <Icon>menu</Icon>\r\n        </IconButton>\r\n      </DrawerActivator>\r\n      <DrawerContent style={{ width: '15rem' }}>\r\n        <Aside open={open} />\r\n      </DrawerContent>\r\n    </NavigationDrawer>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/Aside.tsx",
    "content": "'use client'\r\n\r\nimport { List, ListGroup, ListItem } from 'actify'\r\n\r\nimport GettingStarted from './GettingStarted'\r\nimport NavLink from './NavLink'\r\nimport { tv } from 'tailwind-variants'\r\n\r\nconst components = [\r\n  {\r\n    label: 'App bars',\r\n    children: [\r\n      {\r\n        name: 'Bottom app bar'\r\n      },\r\n      {\r\n        name: 'Top app bar'\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    name: 'Accordion'\r\n  },\r\n  {\r\n    name: 'Avatar'\r\n  },\r\n  {\r\n    name: 'Badges'\r\n  },\r\n  {\r\n    name: 'Before After'\r\n  },\r\n  {\r\n    label: 'Buttons',\r\n    children: [\r\n      {\r\n        name: 'Button'\r\n      },\r\n      {\r\n        name: 'FAB'\r\n      },\r\n      {\r\n        name: 'Icon button'\r\n      },\r\n      {\r\n        name: 'Segmented button'\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    name: 'Cards'\r\n  },\r\n  {\r\n    name: 'Carousel'\r\n  },\r\n  {\r\n    name: 'Checkbox'\r\n  },\r\n  {\r\n    name: 'Chips'\r\n  },\r\n  {\r\n    name: 'Dialogs'\r\n  },\r\n  {\r\n    name: 'Divider'\r\n  },\r\n  {\r\n    name: 'Focus Ring'\r\n  },\r\n  {\r\n    name: 'Label'\r\n  },\r\n  {\r\n    name: 'Lists'\r\n  },\r\n  {\r\n    name: 'Menus'\r\n  },\r\n  {\r\n    label: 'Navigation',\r\n    children: [\r\n      {\r\n        name: 'Navigation bar'\r\n      },\r\n      {\r\n        name: 'Navigation drawer'\r\n      },\r\n      {\r\n        name: 'Navigation rail'\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    name: 'Pagination'\r\n  },\r\n  {\r\n    label: 'Progress',\r\n    children: [\r\n      {\r\n        name: 'Linear progress'\r\n      },\r\n      {\r\n        name: 'Circular progress'\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    name: 'Radio'\r\n  },\r\n  {\r\n    name: 'Ripple'\r\n  },\r\n  {\r\n    name: 'Autocomplete'\r\n  },\r\n  {\r\n    name: 'Select'\r\n  },\r\n  {\r\n    label: 'Sheets',\r\n    children: [\r\n      {\r\n        name: 'Bottom sheets'\r\n      },\r\n      {\r\n        name: 'Side sheets'\r\n      }\r\n    ]\r\n  },\r\n  {\r\n    name: 'Sliders'\r\n  },\r\n  {\r\n    name: 'Snackbar'\r\n  },\r\n  {\r\n    name: 'Swiper'\r\n  },\r\n  {\r\n    name: 'Switch'\r\n  },\r\n  {\r\n    name: 'Tabs'\r\n  },\r\n  {\r\n    name: 'Table'\r\n  },\r\n  {\r\n    name: 'Terminal'\r\n  },\r\n  {\r\n    name: 'Text fields'\r\n  },\r\n  {\r\n    name: 'Tooltips'\r\n  }\r\n]\r\n\r\nconst spaces2Hyphen = (str: string) => str.toLowerCase().split(' ').join('-')\r\n\r\nconst base = tv({\r\n  base: [\r\n    'fixed',\r\n    'z-40',\r\n    'left-0',\r\n    'top-16',\r\n    'w-60',\r\n    'bottom-0',\r\n    'bg-surface',\r\n    'shadow-inner',\r\n    'translate-x-0',\r\n    'text-on-surface',\r\n    'overflow-x-hidden',\r\n    'overflow-y-scroll',\r\n    'transition-transform',\r\n    'max-md:-translate-x-full',\r\n    'h-[calc(100%_-_64px_-_56px)]'\r\n  ],\r\n  variants: {\r\n    open: {\r\n      true: ['!static', '!translate-x-0', '!h-full'],\r\n      false: ''\r\n    }\r\n  }\r\n})\r\n\r\ninterface AsideProps extends React.ComponentProps<'aside'> {\r\n  open?: boolean\r\n}\r\n\r\nexport default function Aside({ open, className }: AsideProps) {\r\n  return (\r\n    <aside className={base({ open, className })}>\r\n      <List>\r\n        <GettingStarted />\r\n        {components.map((component, index) =>\r\n          component.children ? (\r\n            <ListGroup key={index} label={component.label}>\r\n              {component.children.map((child, index) => (\r\n                <NavLink\r\n                  key={index}\r\n                  className={({ isActive }) =>\r\n                    isActive\r\n                      ? 'block text-primary bg-surface-container-high'\r\n                      : ''\r\n                  }\r\n                  href={\r\n                    `/components/${spaces2Hyphen(component.label)}/` +\r\n                    child.name.toLowerCase().split(' ').join('-')\r\n                  }\r\n                >\r\n                  <ListItem>{child.name}</ListItem>\r\n                </NavLink>\r\n              ))}\r\n            </ListGroup>\r\n          ) : (\r\n            <NavLink\r\n              key={index}\r\n              className={({ isActive }) =>\r\n                isActive ? 'block text-primary bg-surface-container-high' : ''\r\n              }\r\n              href={'/components/' + spaces2Hyphen(component.name)}\r\n            >\r\n              <ListItem>{component.name}</ListItem>\r\n            </NavLink>\r\n          )\r\n        )}\r\n      </List>\r\n    </aside>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/Console.tsx",
    "content": "import React from 'react'\n\nconst Console = () => {\n  const svgToBase64 = (svgElement: Node) => {\n    const svgString = new XMLSerializer().serializeToString(svgElement)\n    const base64String = btoa(\n      encodeURIComponent(svgString).replace(/%([0-9A-F]{2})/g, (_, p1) =>\n        String.fromCharCode(parseInt(p1, 16))\n      )\n    )\n    return `data:image/svg+xml;base64,${base64String}`\n  }\n  React.useEffect(() => {\n    console.info(\n      '%c actify',\n      `\n        font-size: 64px;\n        color: #0000;\n        background-size: contain;\n        background-position: left center;\n        background-repeat: no-repeat;\n        background-image: url(${svgToBase64(document.querySelector('svg.animated')!)});\n      `\n    )\n  }, [])\n  return (\n    <div className=\"fixed\">\n      <svg\n        fill=\"none\"\n        viewBox=\"0 0 132 31\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        className=\"animated w-[50vmin] opacity-0 transition-opacity duration-500\"\n      >\n        <defs>\n          <style>\n            {`\n          @keyframes slide {\n            25%,\n            to {\n              translate: 0-29px;\n            }\n          }\n          @keyframes fade-in {\n            0% {\n              opacity: 0;\n            }\n            35%,\n            to {\n              opacity: 1;\n            }\n          }\n          @keyframes fade-out {\n            0% {\n              opacity: 1;\n            }\n            15%,\n            to {\n              filter: blur(1px);\n              opacity: 0;\n            }\n          }\n          .letter path {\n            fill: #000;\n          }\n          @media (prefers-color-scheme: dark) {\n            .letter path {\n              fill: #fff;\n            }\n          }\n          .letter {\n            --duration: 2.2s;\n            --delay: calc(\n              (\n                sin((var(--index) / var(--total)) * 90deg) *\n                  (var(--duration) * 0.25)\n              )\n            );\n            transform-origin: 50% 50%;\n            transform-box: fill-box;\n            animation: slide var(--duration) var(--delay) infinite ease;\n          }\n          .letter path:last-of-type {\n            transform-origin: 50% 50%;\n            translate: 0 29px;\n            transform-box: fill-box;\n            animation: fade-in var(--duration) var(--delay) both infinite ease;\n          }\n          .letter path:first-of-type {\n            transform-origin: 50% 100%;\n            transform-box: fill-box;\n            animation: fade-out var(--duration) var(--delay) both infinite ease;\n          }`}\n          </style>\n        </defs>\n        <g style={{ '--total': 6 } as React.CSSProperties}>\n          <g className=\"letter\" style={{ '--index': 0 } as React.CSSProperties}>\n            <path\n              d=\"M21.172,0H17.094L15.078-5.7H6.266L4.328,0H.266L8.656-22.406h4.188ZM14.094-8.734l-3.109-8.937a10.586,10.586,0,0,1-.3-1.406h-.062a9.146,9.146,0,0,1-.312,1.406L7.234-8.734Z\"\n              transform=\"translate(-0.266 22.406)\"\n            />\n            <path\n              d=\"M21.172,0H17.094L15.078-5.7H6.266L4.328,0H.266L8.656-22.406h4.188ZM14.094-8.734l-3.109-8.937a10.586,10.586,0,0,1-.3-1.406h-.062a9.146,9.146,0,0,1-.312,1.406L7.234-8.734Z\"\n              transform=\"translate(-0.266 22.406)\"\n            />\n          </g>\n          <g className=\"letter\" style={{ '--index': 1 } as React.CSSProperties}>\n            <path\n              d=\"M13.813-.734A8.94,8.94,0,0,1,9.266.375a7.7,7.7,0,0,1-5.75-2.227A7.887,7.887,0,0,1,1.328-7.625,8.681,8.681,0,0,1,3.68-13.977a8.407,8.407,0,0,1,6.289-2.4,9.18,9.18,0,0,1,3.859.766v3.375a5.845,5.845,0,0,0-3.562-1.25A4.951,4.951,0,0,0,6.5-11.93a5.685,5.685,0,0,0-1.469,4.07A5.42,5.42,0,0,0,6.414-3.937,4.91,4.91,0,0,0,10.125-2.5a5.8,5.8,0,0,0,3.688-1.391Z\"\n              transform=\"translate(23.328 20.375)\"\n            />\n            <path\n              d=\"M13.813-.734A8.94,8.94,0,0,1,9.266.375a7.7,7.7,0,0,1-5.75-2.227A7.887,7.887,0,0,1,1.328-7.625,8.681,8.681,0,0,1,3.68-13.977a8.407,8.407,0,0,1,6.289-2.4,9.18,9.18,0,0,1,3.859.766v3.375a5.845,5.845,0,0,0-3.562-1.25A4.951,4.951,0,0,0,6.5-11.93a5.685,5.685,0,0,0-1.469,4.07A5.42,5.42,0,0,0,6.414-3.937,4.91,4.91,0,0,0,10.125-2.5a5.8,5.8,0,0,0,3.688-1.391Z\"\n              transform=\"translate(23.328 20.375)\"\n            />\n          </g>\n          <g className=\"letter\" style={{ '--index': 2 } as React.CSSProperties}>\n            <path\n              d=\"M10.8-.172A6.282,6.282,0,0,1,8,.359q-4.656,0-4.656-4.469v-9.047H.672V-16H3.344v-3.7l3.625-1.031V-16H10.8v2.844H6.969v8a3.152,3.152,0,0,0,.516,2.031A2.141,2.141,0,0,0,9.2-2.516,2.492,2.492,0,0,0,10.8-3.047Z\"\n              transform=\"translate(45.672 20.734)\"\n            />\n            <path\n              d=\"M10.8-.172A6.282,6.282,0,0,1,8,.359q-4.656,0-4.656-4.469v-9.047H.672V-16H3.344v-3.7l3.625-1.031V-16H10.8v2.844H6.969v8a3.152,3.152,0,0,0,.516,2.031A2.141,2.141,0,0,0,9.2-2.516,2.492,2.492,0,0,0,10.8-3.047Z\"\n              transform=\"translate(45.672 20.734)\"\n            />\n          </g>\n          <g className=\"letter\" style={{ '--index': 3 } as React.CSSProperties}>\n            <path\n              d=\"M4.188-19.359a2.179,2.179,0,0,1-1.523-.578,1.9,1.9,0,0,1-.633-1.469,1.951,1.951,0,0,1,.633-1.484,2.147,2.147,0,0,1,1.523-.594,2.214,2.214,0,0,1,1.563.594,1.94,1.94,0,0,1,.641,1.484,1.913,1.913,0,0,1-.641,1.445A2.2,2.2,0,0,1,4.188-19.359ZM5.984,0H2.359V-16H5.984Z\"\n              transform=\"translate(67.031 23.484)\"\n            />\n            <path\n              d=\"M4.188-19.359a2.179,2.179,0,0,1-1.523-.578,1.9,1.9,0,0,1-.633-1.469,1.951,1.951,0,0,1,.633-1.484,2.147,2.147,0,0,1,1.523-.594,2.214,2.214,0,0,1,1.563.594,1.94,1.94,0,0,1,.641,1.484,1.913,1.913,0,0,1-.641,1.445A2.2,2.2,0,0,1,4.188-19.359ZM5.984,0H2.359V-16H5.984Z\"\n              transform=\"translate(67.031 23.484)\"\n            />\n          </g>\n          <g className=\"letter\" style={{ '--index': 4 } as React.CSSProperties}>\n            <path\n              d=\"M11.406-20.734a3.3,3.3,0,0,0-1.672-.422q-2.641,0-2.641,2.984V-16h3.719v2.844h-3.7V0H3.484V-13.156H.75V-16H3.484v-2.594a5.05,5.05,0,0,1,1.656-3.992,6.031,6.031,0,0,1,4.141-1.461,6.149,6.149,0,0,1,2.125.3Z\"\n              transform=\"translate(80.75 24.047)\"\n            />\n            <path\n              d=\"M11.406-20.734a3.3,3.3,0,0,0-1.672-.422q-2.641,0-2.641,2.984V-16h3.719v2.844h-3.7V0H3.484V-13.156H.75V-16H3.484v-2.594a5.05,5.05,0,0,1,1.656-3.992,6.031,6.031,0,0,1,4.141-1.461,6.149,6.149,0,0,1,2.125.3Z\"\n              transform=\"translate(80.75 24.047)\"\n            />\n          </g>\n          <g className=\"letter\" style={{ '--index': 5 } as React.CSSProperties}>\n            <path\n              d=\"M16.219-16,9,2.563Q6.75,7.531,2.688,7.531a7.569,7.569,0,0,1-1.906-.2V4.313a5.069,5.069,0,0,0,1.563.281,3.224,3.224,0,0,0,3.031-2L6.453-.031.094-16H4.109L7.922-4.375q.062.219.281,1.156h.078q.078-.359.281-1.125l4-11.656Z\"\n              transform=\"translate(101.094 20)\"\n            />\n            <path\n              d=\"M16.219-16,9,2.563Q6.75,7.531,2.688,7.531a7.569,7.569,0,0,1-1.906-.2V4.313a5.069,5.069,0,0,0,1.563.281,3.224,3.224,0,0,0,3.031-2L6.453-.031.094-16H4.109L7.922-4.375q.062.219.281,1.156h.078q.078-.359.281-1.125l4-11.656Z\"\n              transform=\"translate(101.094 20)\"\n            />\n          </g>\n        </g>\n      </svg>\n    </div>\n  )\n}\n\nexport default Console\n"
  },
  {
    "path": "apps/docs/src/components/DocPreview.tsx",
    "content": "'use client'\r\n\r\nimport * as Actify from 'actify'\r\n\r\nimport { LivePreview, LiveProvider } from 'react-live'\r\n\r\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\r\n\r\ntype CodePreviewProps = {\r\n  code?: string\r\n}\r\n\r\nconst DocPreview = ({ code = '' }: CodePreviewProps) => {\r\n  return (\r\n    <LiveProvider code={code} scope={Actify}>\r\n      <div className=\"not-prose rounded-lg bg-surface-variant shadow-lg\">\r\n        <Actify.Tabs>\r\n          <Actify.TabItem\r\n            key=\"preview\"\r\n            title={\r\n              <>\r\n                <Actify.Icon>visibility</Actify.Icon>\r\n                Preview\r\n              </>\r\n            }\r\n          >\r\n            <div className=\"p-2 sm:p-4 bg-surface-container\">\r\n              <LivePreview className=\"flex gap-2\" />\r\n            </div>\r\n          </Actify.TabItem>\r\n          <Actify.TabItem\r\n            key=\"code\"\r\n            title={\r\n              <>\r\n                <Actify.Icon>\r\n                  <svg\r\n                    fill=\"none\"\r\n                    width=\"24\"\r\n                    height=\"24\"\r\n                    strokeWidth=\"2\"\r\n                    viewBox=\"0 0 24 24\"\r\n                    stroke=\"currentColor\"\r\n                    strokeLinecap=\"round\"\r\n                    strokeLinejoin=\"round\"\r\n                    xmlns=\"http://www.w3.org/2000/svg\"\r\n                  >\r\n                    <path d=\"m18 16 4-4-4-4\" />\r\n                    <path d=\"m6 8-4 4 4 4\" />\r\n                    <path d=\"m14.5 4-5 16\" />\r\n                  </svg>\r\n                </Actify.Icon>\r\n                Code\r\n              </>\r\n            }\r\n          >\r\n            <div className=\"p-2 sm:p-4 bg-surface-container\">\r\n              <SyntaxHighlighter lang=\"tsx\">{code}</SyntaxHighlighter>\r\n            </div>\r\n          </Actify.TabItem>\r\n        </Actify.Tabs>\r\n      </div>\r\n    </LiveProvider>\r\n  )\r\n}\r\n\r\nexport default DocPreview\r\n"
  },
  {
    "path": "apps/docs/src/components/DocTabs.tsx",
    "content": "'use client'\r\n\r\nimport { TabItem, Tabs } from 'actify'\r\n\r\nimport React from 'react'\r\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\r\n\r\ninterface ActifyTabsProps extends React.ComponentProps<'html'> {\r\n  items?: string\r\n  language?: string\r\n  activeTabIndex?: number\r\n}\r\n\r\ntype TypeTab = { label: string; icon: string; content: string }\r\n\r\ntype IconProps = {\r\n  name: 'pnpm' | 'yarn' | 'npm'\r\n}\r\n\r\nconst IconMap = {\r\n  pnpm: (\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      width=\"24\"\r\n      height=\"24\"\r\n      viewBox=\"0 0 24 24\"\r\n      fill=\"none\"\r\n      stroke=\"currentColor\"\r\n      strokeWidth=\"2\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    >\r\n      <polyline points=\"4 17 10 11 4 5\" />\r\n      <line x1=\"12\" x2=\"20\" y1=\"19\" y2=\"19\" />\r\n    </svg>\r\n  ),\r\n  yarn: (\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      width=\"24\"\r\n      height=\"24\"\r\n      viewBox=\"0 0 24 24\"\r\n      fill=\"none\"\r\n      stroke=\"currentColor\"\r\n      strokeWidth=\"2\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    >\r\n      <path d=\"m7 11 2-2-2-2\" />\r\n      <path d=\"M11 13h4\" />\r\n      <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\" />\r\n    </svg>\r\n  ),\r\n  npm: (\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      width=\"24\"\r\n      height=\"24\"\r\n      viewBox=\"0 0 24 24\"\r\n      fill=\"none\"\r\n      stroke=\"currentColor\"\r\n      strokeWidth=\"2\"\r\n      strokeLinecap=\"round\"\r\n      strokeLinejoin=\"round\"\r\n    >\r\n      <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\r\n      <path d=\"m10 8 4 4-4 4\" />\r\n    </svg>\r\n  )\r\n}\r\n\r\nconst DocTabs = (props: ActifyTabsProps) => {\r\n  const { language, items = '' } = props\r\n\r\n  const tabs: TypeTab[] = JSON.parse(items)\r\n\r\n  return (\r\n    <div className=\"not-prose rounded-lg bg-surface-variant shadow-lg\">\r\n      <Tabs>\r\n        {tabs.map((tab) => (\r\n          <TabItem\r\n            key={tab.label}\r\n            title={\r\n              <>\r\n                {IconMap[tab.icon as IconProps['name']]}\r\n                {tab.label}\r\n              </>\r\n            }\r\n          >\r\n            <SyntaxHighlighter\r\n              lang={`${language}` || 'jsx'}\r\n              className=\"rounded-t-none\"\r\n            >\r\n              {tab.content}\r\n            </SyntaxHighlighter>\r\n          </TabItem>\r\n        ))}\r\n      </Tabs>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default DocTabs\r\n"
  },
  {
    "path": "apps/docs/src/components/DocUsage.tsx",
    "content": "'use client'\r\n\r\nimport { Icon, TabItem, Tabs, TooltipGroup } from 'actify'\r\n\r\nimport OpenInCodeSandbox from '@/components/OpenInCodeSandbox'\r\nimport OpenInStackblitz from '@/components/OpenInStackblitz'\r\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\r\nimport ViewSource from '@/components/ViewSource'\r\nimport dynamic from 'next/dynamic'\r\n\r\ninterface DocUsageProps {\r\n  content?: string\r\n  component: string\r\n}\r\n\r\nconst DocUsage = (props: DocUsageProps) => {\r\n  const { content = '', component } = props\r\n  const DynamicComponent = dynamic(() => import(`@/usages/${component}`), {\r\n    ssr: false\r\n  })\r\n\r\n  return (\r\n    <div className=\"relative not-prose rounded-lg text-on-surface-variant bg-surface-variant shadow-lg\">\r\n      <Tabs>\r\n        <TabItem\r\n          key=\"preview\"\r\n          title={\r\n            <>\r\n              <Icon>visibility</Icon>\r\n              Preview\r\n            </>\r\n          }\r\n        >\r\n          <div className=\"p-2 sm:p-4 bg-surface-container\">\r\n            <DynamicComponent />\r\n          </div>\r\n        </TabItem>\r\n        <TabItem\r\n          key=\"code\"\r\n          title={\r\n            <>\r\n              <Icon>\r\n                <svg\r\n                  fill=\"none\"\r\n                  width=\"24\"\r\n                  height=\"24\"\r\n                  strokeWidth=\"2\"\r\n                  viewBox=\"0 0 24 24\"\r\n                  stroke=\"currentColor\"\r\n                  strokeLinecap=\"round\"\r\n                  strokeLinejoin=\"round\"\r\n                  xmlns=\"http://www.w3.org/2000/svg\"\r\n                >\r\n                  <path d=\"m18 16 4-4-4-4\" />\r\n                  <path d=\"m6 8-4 4 4 4\" />\r\n                  <path d=\"m14.5 4-5 16\" />\r\n                </svg>\r\n              </Icon>\r\n              Code\r\n            </>\r\n          }\r\n        >\r\n          <div className=\"p-2 sm:p-4 bg-surface-container\">\r\n            <SyntaxHighlighter lang=\"tsx\">{content}</SyntaxHighlighter>\r\n          </div>\r\n        </TabItem>\r\n      </Tabs>\r\n      <div className=\"absolute top-3 right-4 flex\">\r\n        <TooltipGroup placement=\"bottom\">\r\n          <ViewSource name={component} />\r\n          <OpenInCodeSandbox title={component} code={content} />\r\n          <OpenInStackblitz title={component} code={content} />\r\n        </TooltipGroup>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\nexport default DocUsage\r\n"
  },
  {
    "path": "apps/docs/src/components/Dropdown.tsx",
    "content": "import { Button, Icon } from 'actify'\r\n\r\nimport NavLink from './NavLink'\r\nimport React from 'react'\r\n\r\ninterface DropdownProps extends React.ComponentProps<'div'> {\r\n  items?: Array<{\r\n    href: string\r\n    text?: string\r\n  }>\r\n}\r\nconst Dropdown = (props: DropdownProps) => {\r\n  const { title, items } = props\r\n\r\n  return (\r\n    <div className=\"relative\">\r\n      <Button variant=\"text\" className=\"group peer px-2.5\">\r\n        {title}\r\n        <div className=\"flex items-center transition-transform duration-300 group-hover:rotate-90\">\r\n          <Icon className=\"[--md-icon-size:20px]\">keyboard_arrow_down</Icon>\r\n        </div>\r\n      </Button>\r\n\r\n      <div className=\"absolute right-0 hidden w-28 flex-col bg-surface drop-shadow-lg hover:flex peer-hover:flex\">\r\n        {items?.map((item, index) => (\r\n          <NavLink\r\n            key={index}\r\n            href={item.href}\r\n            className=\"block px-4 py-2 text-sm hover:bg-surface-variant\"\r\n          >\r\n            {item.text}\r\n          </NavLink>\r\n        ))}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default Dropdown\r\n"
  },
  {
    "path": "apps/docs/src/components/EditOnGitHub.tsx",
    "content": "import { Button, Icon } from 'actify'\r\n\r\ntype EditOnGitHubProps = {\r\n  pathname: string | null\r\n}\r\nconst EditOnGitHub = ({ pathname }: EditOnGitHubProps) => {\r\n  return (\r\n    <a\r\n      tabIndex={-1}\r\n      target=\"_blank\"\r\n      href={`https://github.com/actifyjs/actify/blob/main/apps/docs/content${pathname}.md`}\r\n    >\r\n      <Button variant=\"text\">\r\n        Edit this page on GitHub\r\n        <Icon>edit</Icon>\r\n      </Button>\r\n    </a>\r\n  )\r\n}\r\n\r\nexport default EditOnGitHub\r\n"
  },
  {
    "path": "apps/docs/src/components/Footer.tsx",
    "content": "'use client'\r\n\r\nimport { Icon } from 'actify'\r\nimport React from 'react'\r\nimport { tv } from 'tailwind-variants'\r\n\r\nconst variants = tv({\r\n  base: [\r\n    'fixed',\r\n    'w-full',\r\n    'bottom-0',\r\n    'col-start-1',\r\n    'col-end-3',\r\n    'bg-surface',\r\n    'shadow-inner',\r\n    'bg-surface-container'\r\n  ]\r\n})\r\n\r\nconst Footer = ({ className }: React.ComponentProps<'footer'>) => {\r\n  return (\r\n    <footer className={variants({ className })}>\r\n      <div className=\"text-on-surface mx-auto w-full max-w-screen-xl py-1 md:py-4 px-4 md:flex md:items-center md:justify-between\">\r\n        <p className=\"text-center\">\r\n          Copyright © {new Date().getFullYear()} Actify\r\n        </p>\r\n        <p className=\"text-center\">\r\n          Released under the{' '}\r\n          <a\r\n            target=\"_blank\"\r\n            rel=\"noreferrer\"\r\n            className=\"inline-flex gap-1\"\r\n            href=\"https://opensource.org/licenses/MIT\"\r\n          >\r\n            MIT License\r\n            <Icon>\r\n              <svg\r\n                width=\"20\"\r\n                height=\"20\"\r\n                fill=\"none\"\r\n                strokeWidth=\"2\"\r\n                viewBox=\"0 0 24 24\"\r\n                stroke=\"currentColor\"\r\n                strokeLinecap=\"round\"\r\n                strokeLinejoin=\"round\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n              >\r\n                <path d=\"M15 3h6v6\" />\r\n                <path d=\"M10 14 21 3\" />\r\n                <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\r\n              </svg>\r\n            </Icon>\r\n          </a>\r\n        </p>\r\n      </div>\r\n    </footer>\r\n  )\r\n}\r\n\r\nexport default Footer\r\n"
  },
  {
    "path": "apps/docs/src/components/GettingStarted.tsx",
    "content": "import { ListGroup, ListItem } from 'actify'\r\n\r\nimport NavLink from './NavLink'\r\n\r\nconst GettingStarted = () => {\r\n  return (\r\n    <ListGroup label=\"Getting started\">\r\n      <NavLink\r\n        href=\"/getting-started/installation\"\r\n        className={({ isActive }) =>\r\n          isActive ? 'block text-primary bg-surface-container-high' : ''\r\n        }\r\n      >\r\n        <ListItem>Installation</ListItem>\r\n      </NavLink>\r\n      <NavLink\r\n        href=\"/getting-started/theme\"\r\n        className={({ isActive }) =>\r\n          isActive ? 'block text-primary bg-surface-container-high' : ''\r\n        }\r\n      >\r\n        <ListItem>Theme</ListItem>\r\n      </NavLink>\r\n      <NavLink\r\n        href=\"/getting-started/icons\"\r\n        className={({ isActive }) =>\r\n          isActive ? 'block text-primary bg-surface-container-high' : ''\r\n        }\r\n      >\r\n        <ListItem>Icon</ListItem>\r\n      </NavLink>\r\n    </ListGroup>\r\n  )\r\n}\r\n\r\nexport default GettingStarted\r\n"
  },
  {
    "path": "apps/docs/src/components/Header.tsx",
    "content": "'use client'\r\n\r\nimport { Icon, IconButton, LinkButton, Spacer } from 'actify'\r\n\r\nimport AppDrawer from '@/components/AppDrawer'\r\nimport Dropdown from '@/components/Dropdown'\r\nimport Logo from '@/components/Logo'\r\nimport NavLink from '@/components/NavLink'\r\nimport React from 'react'\r\nimport Search from '@/components/Search'\r\nimport { ThemeChanger } from './ThemeChanger'\r\n\r\nconst Header = () => {\r\n  return (\r\n    <header className=\"sticky top-0 z-50 h-16 col-start-1 bg-surface-container px-2 shadow backdrop-blur\">\r\n      <div className=\"mx-auto flex h-full flex-wrap items-center justify-between\">\r\n        <NavLink\r\n          href=\"/\"\r\n          tabIndex={-1}\r\n          className=\"hidden md:flex items-center text-primary\"\r\n        >\r\n          <LinkButton\r\n            variant=\"text\"\r\n            className=\"self-center whitespace-nowrap text-2xl font-semibold\"\r\n          >\r\n            <Logo height={36} />\r\n            ctify\r\n          </LinkButton>\r\n        </NavLink>\r\n        <div className=\"inline-flex md:hidden\">\r\n          <AppDrawer />\r\n        </div>\r\n        <Search\r\n          indexName=\"actify\"\r\n          appId=\"QT1V8AWXWR\"\r\n          apiKey=\"aea069649b0718ada66d001637c44dbf\"\r\n        />\r\n        <Spacer />\r\n        <NavLink href=\"/\" className=\"flex md:hidden items-center text-primary\">\r\n          <Logo height={24} />\r\n          <span className=\"self-center whitespace-nowrap font-semibold\">\r\n            ctify\r\n          </span>\r\n        </NavLink>\r\n        <Spacer />\r\n        <a\r\n          tabIndex={-1}\r\n          target=\"_blank\"\r\n          title=\"twitter\"\r\n          href=\"https://x.com/actifyjs\"\r\n        >\r\n          <IconButton>\r\n            <Icon>\r\n              <svg\r\n                viewBox=\"0 0 24 24\"\r\n                className=\"size-5\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n              >\r\n                <path\r\n                  className=\"fill-current\"\r\n                  d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"\r\n                />\r\n              </svg>\r\n            </Icon>\r\n          </IconButton>\r\n        </a>\r\n        <a\r\n          tabIndex={-1}\r\n          target=\"_blank\"\r\n          title=\"actify github\"\r\n          href=\"https://github.com/actifyjs/actify\"\r\n        >\r\n          <IconButton>\r\n            <Icon>\r\n              <svg\r\n                viewBox=\"0 0 24 24\"\r\n                className=\"size-5\"\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n              >\r\n                <path\r\n                  className=\"fill-current\"\r\n                  d=\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\r\n                />\r\n              </svg>\r\n            </Icon>\r\n          </IconButton>\r\n        </a>\r\n        <ThemeChanger />\r\n        <div className=\"hidden w-full md:block md:w-auto\">\r\n          <ul className=\"flex flex-row gap-2 font-medium\">\r\n            <li>\r\n              <Dropdown\r\n                title=\"Learn\"\r\n                items={[\r\n                  {\r\n                    text: 'Get Started',\r\n                    href: '/getting-started/installation'\r\n                  }\r\n                ]}\r\n              />\r\n            </li>\r\n          </ul>\r\n        </div>\r\n      </div>\r\n    </header>\r\n  )\r\n}\r\n\r\nexport default Header\r\n"
  },
  {
    "path": "apps/docs/src/components/Logo.tsx",
    "content": "'use client'\r\n\r\nimport React from 'react'\r\nimport { motion } from 'motion/react'\r\n\r\nconst Logo = ({ height }: React.ComponentProps<'svg'>) => {\r\n  return (\r\n    <svg\r\n      height={height}\r\n      className=\"fill-primary\"\r\n      viewBox=\"0 0 33.455 36.987\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n    >\r\n      <motion.path\r\n        strokeWidth=\"2\"\r\n        className=\"stroke-on-primary\"\r\n        transform=\"translate(-28.272 365)\"\r\n        initial={{ pathLength: 0 }}\r\n        animate={{ pathLength: 1 }}\r\n        transition={{\r\n          duration: 3,\r\n          repeat: Infinity,\r\n          ease: 'easeInOut',\r\n          repeatType: 'reverse'\r\n        }}\r\n        d=\"M55.047-328.513l-5.238-13.822-14.323,5.317-3.243,8.5H29L42.821-364.5h4.359L61-328.513Zm-6.067-15.969.829,2.147-.829-2.147-5.308-13.745-7.123,18.445\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport default Logo\r\n"
  },
  {
    "path": "apps/docs/src/components/Markdown.tsx",
    "content": "import DocPreview from '@/components/DocPreview'\r\nimport DocTabs from '@/components/DocTabs'\r\nimport DocUsage from '@/components/DocUsage'\r\nimport Icon from '@/views/icon'\r\nimport ReactMarkdown from 'react-markdown'\r\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\r\nimport Theme from '@/views/theme'\r\nimport rehypeAutolinkHeadings from 'rehype-autolink-headings'\r\nimport rehypeRaw from 'rehype-raw'\r\nimport rehypeSlug from 'rehype-slug'\r\nimport remarkGfm from 'remark-gfm'\r\n\r\ninterface MarkdownProps extends React.ComponentProps<'div'> {\r\n  docs: {\r\n    title?: string\r\n    description?: string\r\n    content?: string\r\n  }\r\n  usage: {\r\n    content?: string\r\n    component: string\r\n  }\r\n}\r\nexport default function Markdown({ docs, usage }: MarkdownProps) {\r\n  return (\r\n    // @ts-ignore\r\n    <ReactMarkdown\r\n      remarkPlugins={[[remarkGfm, { singleTilde: false }]]}\r\n      rehypePlugins={[[rehypeRaw], [rehypeSlug], [rehypeAutolinkHeadings]]}\r\n      components={{\r\n        p: ({ children }) => (\r\n          <div className=\"mb-4\">\r\n            <>{children}</>\r\n          </div>\r\n        ), // replace p tag to div tag\r\n        a: ({ node, children, ...props }) => (\r\n          <a className=\"text-tertiary hover:bg-surface-variant\" {...props}>\r\n            <>{children}</>\r\n          </a>\r\n        ),\r\n        pre: ({ children }) => <>{children}</>, // remove pre tag\r\n        code: ({ node, inline, className, children, ...props }) => {\r\n          const match = /language-(\\w+)/.exec(className || '')\r\n          return !inline && match ? (\r\n            <SyntaxHighlighter\r\n              lang={match[1]}\r\n              children={String(children).replace(/\\n$/, '')}\r\n            />\r\n          ) : (\r\n            <code\r\n              className=\"leading-8 before:hidden after:hidden bg-black/10 dark:bg-white/10 rounded-md p-1.5\"\r\n              {...props}\r\n            >\r\n              <>{children}</>\r\n            </code>\r\n          )\r\n        },\r\n        // @ts-ignore\r\n        tabs: ({ node, children, ...rest }) => <DocTabs {...rest} />,\r\n        // @ts-ignore\r\n        usage: ({ node, children, ...rest }) => (\r\n          <DocUsage {...usage} {...rest} />\r\n        ),\r\n        // @ts-ignore\r\n        preview: ({ node, children, ...rest }) => <DocPreview {...rest} />,\r\n        theme: () => <Theme />,\r\n        icon: () => <Icon />\r\n      }}\r\n    >\r\n      {`# ${docs.title} ${docs.description ? '\\r\\n>' + docs.description : ''}\\r\\n` +\r\n        docs.content}\r\n    </ReactMarkdown>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/NavLink.tsx",
    "content": "'use client'\r\n\r\nimport Link from 'next/link'\r\nimport { usePathname } from 'next/navigation'\r\n\r\ninterface NavLinkProps {\r\n  href: string\r\n  tabIndex?: number\r\n  children: React.ReactNode\r\n  className?: string | ((props: { isActive: boolean }) => string | undefined)\r\n}\r\nexport default function NavLink({\r\n  href,\r\n  className,\r\n  children,\r\n  ...rest\r\n}: NavLinkProps) {\r\n  const pathname = usePathname()\r\n  const isActive = pathname === href\r\n\r\n  return (\r\n    <Link\r\n      {...rest}\r\n      href={href}\r\n      className={\r\n        typeof className == 'function' ? className({ isActive }) : className\r\n      }\r\n    >\r\n      {children}\r\n    </Link>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/NgrokerLogo.tsx",
    "content": "const NgrokerLogo = () => {\r\n  return (\r\n    <svg width=\"137\" height=\"32\" xmlns=\"http://www.w3.org/2000/svg\">\r\n      <path\r\n        fill=\"currentColor\"\r\n        fillRule=\"evenodd\"\r\n        d=\"M94.025 6.55a41.5 41.5 0 0 1 5.916.211q-2.782 4.211-5.7 8.346 3.089 4.912 6.339 9.719a48 48 0 0 1-6.339 0q-2.206-3.407-4.332-6.867a7.5 7.5 0 0 0-2.431-.211v7.184h-5.496V0h5.494v12.889a7.8 7.8 0 0 0 2.536-.211Q92.1 9.659 94.026 6.55M0 24.933V6.549h5.071a15 15 0 0 0 .106 2.536 7.93 7.93 0 0 1 8.98-2.641 6.45 6.45 0 0 1 3.909 4.963q.159 6.761.106 13.522h-5.494q.051-5.811-.106-11.621a2.94 2.94 0 0 0-3.064-2.324A3.82 3.82 0 0 0 5.6 13.731q-.159 5.6-.106 11.2Z\"\r\n      />\r\n      <path\r\n        fill=\"currentColor\"\r\n        d=\"M41.045 32.068H24.353v-4.861h10.99c.035-1.616 0-3.251-.106-4.862a8.6 8.6 0 0 1-2.633 1.888 7.3 7.3 0 0 1-3 .629 9.4 9.4 0 0 1-2.286-.3 11 11 0 0 1-2.658-1.453 8.1 8.1 0 0 1-1.87-1.982 8.2 8.2 0 0 1-1.089-2.509 11.3 11.3 0 0 1-.308-3.036 12 12 0 0 1 .447-3.191 8.8 8.8 0 0 1 1.24-2.613 8.6 8.6 0 0 1 2.034-2.036 11.7 11.7 0 0 1 2.828-1.459 9.6 9.6 0 0 1 1.733-.163 7.4 7.4 0 0 1 3.26.727 8.4 8.4 0 0 1 2.725 2.184 13 13 0 0 0 .106-2.324h5.282v25.361ZM30.96 10.899a6 6 0 0 0-.69.04 16 16 0 0 0-2.11 1.163 6.82 6.82 0 0 0-.951 5.177 3.82 3.82 0 0 0 2.219 2.431 11 11 0 0 0 1.8.165 4.07 4.07 0 0 0 3.246-1.2c.843-.981 1.1-2.586.769-4.771a4.8 4.8 0 0 0-.845-1.69 5.09 5.09 0 0 0-3.43-1.308\"\r\n      />\r\n      <path\r\n        fill=\"currentColor\"\r\n        fillRule=\"evenodd\"\r\n        d=\"M55.039 6.128h2.747v5.328a38 38 0 0 0-4.014.107 3.546 3.546 0 0 0-2.852 3.3q-.159 5.115-.106 10.23h-5.49V6.552h5.071a9.3 9.3 0 0 0 .211 2.771 5.57 5.57 0 0 1 4.433-3.195\"\r\n      />\r\n      <path\r\n        fill=\"currentColor\"\r\n        d=\"M68.853 25.479a10.5 10.5 0 0 1-3.3-.551 14.6 14.6 0 0 1-3.352-1.651 11.6 11.6 0 0 1-1.777-2.027 9.45 9.45 0 0 1-1.638-4.741 11.8 11.8 0 0 1 .139-2.714 12 12 0 0 1 1.051-2.831 8.97 8.97 0 0 1 3.856-3.835 11.6 11.6 0 0 1 2.806-1 14 14 0 0 1 2.031-.156 11.3 11.3 0 0 1 2.394.25 10.2 10.2 0 0 1 2.2.748 10.8 10.8 0 0 1 2.012 1.247 13 13 0 0 1 1.82 1.747 13.3 13.3 0 0 1 1.409 3.3 9.45 9.45 0 0 1-.476 6.339 13.2 13.2 0 0 1-1.885 3.04 14.2 14.2 0 0 1-3.613 2.131 10.2 10.2 0 0 1-3.682.709m-.613-14.468c-.176 0-.359 0-.543.014a4.65 4.65 0 0 0-2.852 2.557 5.51 5.51 0 0 0 1.585 6.286 7 7 0 0 0 2.566.571c1.932 0 3.308-1.231 4.089-3.659a5.6 5.6 0 0 0-1-4.41 4.95 4.95 0 0 0-3.845-1.357Zm42.839 14.429a10.8 10.8 0 0 1-3.222-.46 8.7 8.7 0 0 1-2.688-1.385 9.9 9.9 0 0 1-2.154-2.306 14.8 14.8 0 0 1-1.621-3.23 14.4 14.4 0 0 1 .051-4.239 8.77 8.77 0 0 1 3.856-5.966 13.8 13.8 0 0 1 3.8-1.729c.506-.034 1-.051 1.473-.051a13.7 13.7 0 0 1 4.616.709 9 9 0 0 1 1.815.887 7.8 7.8 0 0 1 1.486 1.241 8.3 8.3 0 0 1 1.157 1.6 10.3 10.3 0 0 1 .828 1.95 17 17 0 0 1 .67 4.964q-7.08-.107-14.157.213c.881 2.114 2.292 3.187 4.192 3.187a6.8 6.8 0 0 0 1.936-.31 3.35 3.35 0 0 0 1.9-1.492q2.85-.159 5.7-.107a10.5 10.5 0 0 1-1.045 2.346 8.1 8.1 0 0 1-3.486 3.143 10.5 10.5 0 0 1-2.441.8 16 16 0 0 1-2.679.243m-.07-14.852q-.207 0-.421.013a4.7 4.7 0 0 0-3.592 3.09 56 56 0 0 0 8.452-.107 4.51 4.51 0 0 0-4.439-3\"\r\n      />\r\n      <path\r\n        fill=\"currentColor\"\r\n        fillRule=\"evenodd\"\r\n        d=\"M134.041 6.128h2.958v5.328q-2.115-.051-4.226.107a4.03 4.03 0 0 0-2.852 3.729q-.159 4.9-.106 9.8h-5.494V6.552h5.282a18 18 0 0 0 .106 2.771 5.36 5.36 0 0 1 4.332-3.2\"\r\n      />\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport default NgrokerLogo\r\n"
  },
  {
    "path": "apps/docs/src/components/OpenInCodeSandbox.tsx",
    "content": "import { IconButton, Tooltip, TooltipTrigger } from 'actify'\r\n\r\nimport React from 'react'\r\nimport { getParameters } from 'codesandbox/lib/api/define'\r\nimport packageInfo from 'actify/package.json'\r\n\r\ninterface OpenInCodeSandboxProps extends React.ComponentProps<'form'> {\r\n  title: string\r\n  code: string\r\n}\r\n\r\nconst OpenInCodeSandbox = ({ title, code }: OpenInCodeSandboxProps) => {\r\n  const parameters = getParameters({\r\n    files: {\r\n      'package.json': {\r\n        content: JSON.stringify(\r\n          {\r\n            name: `actify-${title}`,\r\n            private: true,\r\n            type: 'module',\r\n            version: '0.0.0',\r\n            scripts: {\r\n              dev: 'vite'\r\n            },\r\n            dependencies: {\r\n              actify: `^${packageInfo.version}`,\r\n              react: '^19.0.0',\r\n              'react-dom': '^19.0.0'\r\n            },\r\n            devDependencies: {\r\n              '@eslint/js': '^9.13.0',\r\n              '@tailwindcss/vite': 'latest',\r\n              '@vitejs/plugin-react': '^4.3.3',\r\n              '@types/react': '^19.0.0',\r\n              '@types/react-dom': '^19.0.0',\r\n              autoprefixer: '^10.4.20',\r\n              eslint: '^9.13.0',\r\n              'eslint-plugin-react-hooks': '^5.0.0',\r\n              'eslint-plugin-react-refresh': '^0.4.14',\r\n              globals: '^15.11.0',\r\n              postcss: '^8.4.47',\r\n              tailwindcss: 'latest',\r\n              typescript: '~5.6.2',\r\n              'typescript-eslint': '^8.11.0',\r\n              vite: 'latest'\r\n            }\r\n          },\r\n          null,\r\n          2\r\n        ),\r\n        isBinary: false\r\n      },\r\n      'src/App.tsx': {\r\n        content: code,\r\n        isBinary: false\r\n      },\r\n      'src/main.tsx': {\r\n        content: `import './app.css'\r\nimport App from \"./App.tsx\";\r\nimport { StrictMode } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\ncreateRoot(document.getElementById(\"root\")!).render(\r\n  <StrictMode>\r\n    <App />\r\n  </StrictMode>\r\n);`,\r\n        isBinary: false\r\n      },\r\n      'src/app.css': {\r\n        content: `@import 'tailwindcss';\r\n:root {\r\n  --md-sys-color-background: #fff8f3;\r\n  --md-sys-color-on-background: #201b12;\r\n  --md-sys-color-surface: #fff8f3;\r\n  --md-sys-color-surface-dim: #e4d8cb;\r\n  --md-sys-color-surface-bright: #fff8f3;\r\n  --md-sys-color-surface-container-lowest: #ffffff;\r\n  --md-sys-color-surface-container-low: #fef2e4;\r\n  --md-sys-color-surface-container: #f8ecde;\r\n  --md-sys-color-surface-container-high: #f3e6d8;\r\n  --md-sys-color-surface-container-highest: #ede1d3;\r\n  --md-sys-color-on-surface: #201b12;\r\n  --md-sys-color-surface-variant: #f2e0c9;\r\n  --md-sys-color-on-surface-variant: #504534;\r\n  --md-sys-color-inverse-surface: #362f26;\r\n  --md-sys-color-inverse-on-surface: #fbefe1;\r\n  --md-sys-color-outline: #837562;\r\n  --md-sys-color-outline-variant: #d5c4ae;\r\n  --md-sys-color-shadow: #000000;\r\n  --md-sys-color-scrim: #000000;\r\n  --md-sys-color-surface-tint: #7f5700;\r\n  --md-sys-color-primary: #7f5700;\r\n  --md-sys-color-on-primary: #ffffff;\r\n  --md-sys-color-primary-container: #ecaa2e;\r\n  --md-sys-color-on-primary-container: #614100;\r\n  --md-sys-color-inverse-primary: #ffba3e;\r\n  --md-sys-color-secondary: #765a2b;\r\n  --md-sys-color-on-secondary: #ffffff;\r\n  --md-sys-color-secondary-container: #fed79d;\r\n  --md-sys-color-on-secondary-container: #785c2d;\r\n  --md-sys-color-tertiary: #566500;\r\n  --md-sys-color-on-tertiary: #ffffff;\r\n  --md-sys-color-tertiary-container: #acc04b;\r\n  --md-sys-color-on-tertiary-container: #414d00;\r\n  --md-sys-color-error: #ba1a1a;\r\n  --md-sys-color-on-error: #ffffff;\r\n  --md-sys-color-error-container: #ffdad6;\r\n  --md-sys-color-on-error-container: #93000a;\r\n}\r\n  \r\n@theme {\r\n  --color-background: var(--md-sys-color-background);\r\n  --color-on-background: var(--md-sys-color-on-background);\r\n  --color-surface: var(--md-sys-color-surface);\r\n  --color-surface-dim: var(--md-sys-color-surface-dim);\r\n  --color-surface-bright: var(--md-sys-color-surface-bright);\r\n  --color-surface-container-lowest: var(\r\n    --md-sys-color-surface-container-lowest\r\n  );\r\n  --color-surface-container-low: var(--md-sys-color-surface-container-low);\r\n  --color-surface-container: var(--md-sys-color-surface-container);\r\n  --color-surface-container-high: var(--md-sys-color-surface-container-high);\r\n  --color-surface-container-highest: var(\r\n    --md-sys-color-surface-container-highest\r\n  );\r\n  --color-on-surface: var(--md-sys-color-on-surface);\r\n  --color-surface-variant: var(--md-sys-color-surface-variant);\r\n  --color-on-surface-variant: var(--md-sys-color-on-surface-variant);\r\n  --color-inverse-surface: var(--md-sys-color-inverse-surface);\r\n  --color-inverse-on-surface: var(--md-sys-color-inverse-on-surface);\r\n  --color-outline: var(--md-sys-color-outline);\r\n  --color-outline-variant: var(--md-sys-color-outline-variant);\r\n  --color-shadow: var(--md-sys-color-shadow);\r\n  --color-scrim: var(--md-sys-color-scrim);\r\n  --color-surface-tint: var(--md-sys-color-surface-tint);\r\n  --color-primary: var(--md-sys-color-primary);\r\n  --color-on-primary: var(--md-sys-color-on-primary);\r\n  --color-primary-container: var(--md-sys-color-primary-container);\r\n  --color-on-primary-container: var(--md-sys-color-on-primary-container);\r\n  --color-inverse-primary: var(--md-sys-color-inverse-primary);\r\n  --color-secondary: var(--md-sys-color-secondary);\r\n  --color-on-secondary: var(--md-sys-color-on-secondary);\r\n  --color-secondary-container: var(--md-sys-color-secondary-container);\r\n  --color-on-secondary-container: var(--md-sys-color-on-secondary-container);\r\n  --color-tertiary: var(--md-sys-color-tertiary);\r\n  --color-on-tertiary: var(--md-sys-color-on-tertiary);\r\n  --color-tertiary-container: var(--md-sys-color-tertiary-container);\r\n  --color-on-tertiary-container: var(--md-sys-color-on-tertiary-container);\r\n  --color-error: var(--md-sys-color-error);\r\n  --color-on-error: var(--md-sys-color-on-error);\r\n  --color-error-container: var(--md-sys-color-error-container);\r\n  --color-on-error-container: var(--md-sys-color-on-error-container);\r\n}  \r\n`,\r\n        isBinary: false\r\n      },\r\n      'vite.config.ts': {\r\n        content: `import { defineConfig } from 'vite'\r\nimport react from '@vitejs/plugin-react'\r\nimport tailwindcss from '@tailwindcss/vite'\r\n\r\n// https://vite.dev/config/\r\nexport default defineConfig({\r\n  plugins: [react(), tailwindcss()],\r\n})\r\n`,\r\n        isBinary: false\r\n      },\r\n      'tsconfig.app.json': {\r\n        content: `{\r\n  \"compilerOptions\": {\r\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\r\n    \"target\": \"ES2020\",\r\n    \"useDefineForClassFields\": true,\r\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\r\n    \"module\": \"ESNext\",\r\n    \"skipLibCheck\": true,\r\n\r\n    /* Bundler mode */\r\n    \"moduleResolution\": \"Bundler\",\r\n    \"allowImportingTsExtensions\": true,\r\n    \"isolatedModules\": true,\r\n    \"moduleDetection\": \"force\",\r\n    \"noEmit\": true,\r\n    \"jsx\": \"react-jsx\",\r\n\r\n    /* Linting */\r\n    \"strict\": true,\r\n    \"noUnusedLocals\": true,\r\n    \"noUnusedParameters\": true,\r\n    \"noFallthroughCasesInSwitch\": true,\r\n    \"noUncheckedSideEffectImports\": true\r\n  },\r\n  \"include\": [\"src\"]\r\n}`,\r\n        isBinary: false\r\n      },\r\n      'tsconfig.json': {\r\n        content: `{\r\n  \"files\": [],\r\n  \"references\": [\r\n    { \"path\": \"./tsconfig.app.json\" },\r\n    { \"path\": \"./tsconfig.node.json\" }\r\n  ]\r\n}`,\r\n        isBinary: false\r\n      },\r\n      'tsconfig.node.json': {\r\n        content: `{\r\n  \"compilerOptions\": {\r\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\r\n    \"target\": \"ES2022\",\r\n    \"lib\": [\"ES2023\"],\r\n    \"module\": \"ESNext\",\r\n    \"skipLibCheck\": true,\r\n\r\n    /* Bundler mode */\r\n    \"moduleResolution\": \"Bundler\",\r\n    \"allowImportingTsExtensions\": true,\r\n    \"isolatedModules\": true,\r\n    \"moduleDetection\": \"force\",\r\n    \"noEmit\": true,\r\n\r\n    /* Linting */\r\n    \"strict\": true,\r\n    \"noUnusedLocals\": true,\r\n    \"noUnusedParameters\": true,\r\n    \"noFallthroughCasesInSwitch\": true,\r\n    \"noUncheckedSideEffectImports\": true\r\n  },\r\n  \"include\": [\"vite.config.ts\"]\r\n}`,\r\n        isBinary: false\r\n      },\r\n      'index.html': {\r\n        content: `<!DOCTYPE html>\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"UTF-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Actify-${title}</title>\r\n  </head>\r\n  <body class=\"p-5\">\r\n    <div id=\"root\"></div>\r\n    <script type=\"module\" src=\"src/main.tsx\"></script>\r\n  </body>\r\n</html>`,\r\n        isBinary: false\r\n      }\r\n    }\r\n  })\r\n\r\n  return (\r\n    <TooltipTrigger delay={50} closeDelay={50}>\r\n      <form\r\n        method=\"POST\"\r\n        target=\"_blank\"\r\n        action=\"https://codesandbox.io/api/v1/sandboxes/define\"\r\n      >\r\n        <input type=\"hidden\" name=\"parameters\" value={parameters} />\r\n        <IconButton type=\"submit\">\r\n          <svg\r\n            width=\"24\"\r\n            height=\"24\"\r\n            fill=\"none\"\r\n            strokeWidth=\"2\"\r\n            viewBox=\"0 0 24 24\"\r\n            stroke=\"currentColor\"\r\n            strokeLinecap=\"round\"\r\n            strokeLinejoin=\"round\"\r\n            xmlns=\"http://www.w3.org/2000/svg\"\r\n          >\r\n            <path d=\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\" />\r\n            <polyline points=\"7.5 4.21 12 6.81 16.5 4.21\" />\r\n            <polyline points=\"7.5 19.79 7.5 14.6 3 12\" />\r\n            <polyline points=\"21 12 16.5 14.6 16.5 19.79\" />\r\n            <polyline points=\"3.27 6.96 12 12.01 20.73 6.96\" />\r\n            <line x1=\"12\" x2=\"12\" y1=\"22.08\" y2=\"12\" />\r\n          </svg>\r\n        </IconButton>\r\n      </form>\r\n      <Tooltip placement=\"top\">Open in CodeSandbox</Tooltip>\r\n    </TooltipTrigger>\r\n  )\r\n}\r\n\r\nexport default OpenInCodeSandbox\r\n"
  },
  {
    "path": "apps/docs/src/components/OpenInStackblitz.tsx",
    "content": "import { IconButton, Tooltip, TooltipTrigger } from 'actify'\r\n\r\nimport React from 'react'\r\nimport packageInfo from 'actify/package.json'\r\n\r\ninterface OpenInStackblitzProps extends React.ComponentProps<'form'> {\r\n  title: string\r\n  code: string\r\n}\r\n\r\nconst OpenInStackblitz = ({ title, code }: OpenInStackblitzProps) => {\r\n  const project = {\r\n    title: 'Actify ' + title,\r\n    template: 'node',\r\n    description: 'Actify ' + title + ' usage example',\r\n    files: {\r\n      '.gitignore': `# Logs\r\nlogs\r\n*.log\r\nnpm-debug.log*\r\nyarn-debug.log*\r\nyarn-error.log*\r\npnpm-debug.log*\r\nlerna-debug.log*\r\n\r\nnode_modules\r\ndist\r\ndist-ssr\r\n*.local\r\n\r\n# Editor directories and files\r\n.vscode/*\r\n!.vscode/extensions.json\r\n.idea\r\n.DS_Store\r\n*.suo\r\n*.ntvs*\r\n*.njsproj\r\n*.sln\r\n*.sw?\r\n`,\r\n      'index.html': `<!DOCTYPE html>\r\n<html lang=\"en\">\r\n  <head>\r\n    <meta charset=\"UTF-8\" />\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\r\n    <title>Actify-${title}</title>\r\n  </head>\r\n  <body class=\"p-5\">\r\n    <div id=\"root\"></div>\r\n    <script type=\"module\" src=\"src/main.tsx\"></script>\r\n  </body>\r\n</html>`,\r\n      'src/main.tsx': `import './app.css'\r\nimport App from \"./App.tsx\";\r\nimport { StrictMode } from \"react\";\r\nimport { createRoot } from \"react-dom/client\";\r\n\r\ncreateRoot(document.getElementById(\"root\")!).render(\r\n  <StrictMode>\r\n    <App />\r\n  </StrictMode>\r\n);`,\r\n      'src/vite-env.d.ts': `/// <reference types=\"vite/client\" />`,\r\n      'src/App.tsx': code,\r\n      'package.json': `{\r\n  \"name\": \"actify-${title}\",\r\n  \"private\": true,\r\n  \"version\": \"0.0.0\",\r\n  \"type\": \"module\",\r\n  \"scripts\": {\r\n    \"dev\": \"vite\"\r\n  },\r\n  \"dependencies\": {\r\n    \"actify\": \"^${packageInfo.version}\",\r\n    \"react\": \"^19.0.0\",\r\n    \"react-dom\": \"^19.0.0\"\r\n  },\r\n  \"devDependencies\": {\r\n    \"@eslint/js\": \"^9.13.0\",\r\n    \"@tailwindcss/vite\": \"latest\",\r\n    \"@types/react\": \"^19.0.0\",\r\n    \"@types/react-dom\": \"^19.0.0\",\r\n    \"@vitejs/plugin-react\": \"^4.3.3\",\r\n    \"eslint\": \"^9.13.0\",\r\n    \"eslint-plugin-react-hooks\": \"^5.0.0\",\r\n    \"eslint-plugin-react-refresh\": \"^0.4.14\",\r\n    \"globals\": \"^15.11.0\",\r\n    \"tailwindcss\": \"latest\",\r\n    \"typescript\": \"~5.6.2\",\r\n    \"typescript-eslint\": \"^8.11.0\",\r\n    \"vite\": \"latest\"\r\n  }\r\n}`,\r\n      'src/app.css': `@import 'tailwindcss';\r\n:root {\r\n --md-sys-color-background: #18130b;\r\n  --md-sys-color-on-background: #ede1d3;\r\n  --md-sys-color-surface: #18130b;\r\n  --md-sys-color-surface-dim: #18130b;\r\n  --md-sys-color-surface-bright: #3f382f;\r\n  --md-sys-color-surface-container-lowest: #120d06;\r\n  --md-sys-color-surface-container-low: #201b12;\r\n  --md-sys-color-surface-container: #251f16;\r\n  --md-sys-color-surface-container-high: #2f2920;\r\n  --md-sys-color-surface-container-highest: #3b342a;\r\n  --md-sys-color-on-surface: #ede1d3;\r\n  --md-sys-color-surface-variant: #504534;\r\n  --md-sys-color-on-surface-variant: #d5c4ae;\r\n  --md-sys-color-inverse-surface: #ede1d3;\r\n  --md-sys-color-inverse-on-surface: #362f26;\r\n  --md-sys-color-outline: #9d8f7b;\r\n  --md-sys-color-outline-variant: #504534;\r\n  --md-sys-color-shadow: #000000;\r\n  --md-sys-color-scrim: #000000;\r\n  --md-sys-color-surface-tint: #ffba3e;\r\n  --md-sys-color-primary: #ffc971;\r\n  --md-sys-color-on-primary: #432c00;\r\n  --md-sys-color-primary-container: #ecaa2e;\r\n  --md-sys-color-on-primary-container: #614100;\r\n  --md-sys-color-inverse-primary: #7f5700;\r\n  --md-sys-color-secondary: #e6c188;\r\n  --md-sys-color-on-secondary: #432c02;\r\n  --md-sys-color-secondary-container: #5e4518;\r\n  --md-sys-color-on-secondary-container: #d7b37c;\r\n  --md-sys-color-tertiary: #c7dc64;\r\n  --md-sys-color-on-tertiary: #2c3400;\r\n  --md-sys-color-tertiary-container: #acc04b;\r\n  --md-sys-color-on-tertiary-container: #414d00;\r\n  --md-sys-color-error: #ffb4ab;\r\n  --md-sys-color-on-error: #690005;\r\n  --md-sys-color-error-container: #93000a;\r\n  --md-sys-color-on-error-container: #ffdad6;\r\n}\r\n  \r\n@theme {\r\n  --color-background: var(--md-sys-color-background);\r\n  --color-on-background: var(--md-sys-color-on-background);\r\n  --color-surface: var(--md-sys-color-surface);\r\n  --color-surface-dim: var(--md-sys-color-surface-dim);\r\n  --color-surface-bright: var(--md-sys-color-surface-bright);\r\n  --color-surface-container-lowest: var(\r\n    --md-sys-color-surface-container-lowest\r\n  );\r\n  --color-surface-container-low: var(--md-sys-color-surface-container-low);\r\n  --color-surface-container: var(--md-sys-color-surface-container);\r\n  --color-surface-container-high: var(--md-sys-color-surface-container-high);\r\n  --color-surface-container-highest: var(\r\n    --md-sys-color-surface-container-highest\r\n  );\r\n  --color-on-surface: var(--md-sys-color-on-surface);\r\n  --color-surface-variant: var(--md-sys-color-surface-variant);\r\n  --color-on-surface-variant: var(--md-sys-color-on-surface-variant);\r\n  --color-inverse-surface: var(--md-sys-color-inverse-surface);\r\n  --color-inverse-on-surface: var(--md-sys-color-inverse-on-surface);\r\n  --color-outline: var(--md-sys-color-outline);\r\n  --color-outline-variant: var(--md-sys-color-outline-variant);\r\n  --color-shadow: var(--md-sys-color-shadow);\r\n  --color-scrim: var(--md-sys-color-scrim);\r\n  --color-surface-tint: var(--md-sys-color-surface-tint);\r\n  --color-primary: var(--md-sys-color-primary);\r\n  --color-on-primary: var(--md-sys-color-on-primary);\r\n  --color-primary-container: var(--md-sys-color-primary-container);\r\n  --color-on-primary-container: var(--md-sys-color-on-primary-container);\r\n  --color-inverse-primary: var(--md-sys-color-inverse-primary);\r\n  --color-secondary: var(--md-sys-color-secondary);\r\n  --color-on-secondary: var(--md-sys-color-on-secondary);\r\n  --color-secondary-container: var(--md-sys-color-secondary-container);\r\n  --color-on-secondary-container: var(--md-sys-color-on-secondary-container);\r\n  --color-tertiary: var(--md-sys-color-tertiary);\r\n  --color-on-tertiary: var(--md-sys-color-on-tertiary);\r\n  --color-tertiary-container: var(--md-sys-color-tertiary-container);\r\n  --color-on-tertiary-container: var(--md-sys-color-on-tertiary-container);\r\n  --color-error: var(--md-sys-color-error);\r\n  --color-on-error: var(--md-sys-color-on-error);\r\n  --color-error-container: var(--md-sys-color-error-container);\r\n  --color-on-error-container: var(--md-sys-color-on-error-container);\r\n}  \r\n`,\r\n      'vite.config.ts': `import { defineConfig } from 'vite'\r\nimport react from '@vitejs/plugin-react'\r\nimport tailwindcss from '@tailwindcss/vite'\r\n\r\n// https://vite.dev/config/\r\nexport default defineConfig({\r\n  plugins: [react(), tailwindcss()],\r\n})\r\n`,\r\n      'tsconfig.app.json': `{\r\n  \"compilerOptions\": {\r\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\r\n    \"target\": \"ES2020\",\r\n    \"useDefineForClassFields\": true,\r\n    \"lib\": [\"ES2020\", \"DOM\", \"DOM.Iterable\"],\r\n    \"module\": \"ESNext\",\r\n    \"skipLibCheck\": true,\r\n\r\n    /* Bundler mode */\r\n    \"moduleResolution\": \"Bundler\",\r\n    \"allowImportingTsExtensions\": true,\r\n    \"isolatedModules\": true,\r\n    \"moduleDetection\": \"force\",\r\n    \"noEmit\": true,\r\n    \"jsx\": \"react-jsx\",\r\n\r\n    /* Linting */\r\n    \"strict\": true,\r\n    \"noUnusedLocals\": true,\r\n    \"noUnusedParameters\": true,\r\n    \"noFallthroughCasesInSwitch\": true,\r\n    \"noUncheckedSideEffectImports\": true\r\n  },\r\n  \"include\": [\"src\"]\r\n}`,\r\n      'tsconfig.json': `{\r\n  \"files\": [],\r\n  \"references\": [\r\n    { \"path\": \"./tsconfig.app.json\" },\r\n    { \"path\": \"./tsconfig.node.json\" }\r\n  ]\r\n}`,\r\n      'tsconfig.node.json': `{\r\n  \"compilerOptions\": {\r\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\r\n    \"target\": \"ES2022\",\r\n    \"lib\": [\"ES2023\"],\r\n    \"module\": \"ESNext\",\r\n    \"skipLibCheck\": true,\r\n\r\n    /* Bundler mode */\r\n    \"moduleResolution\": \"Bundler\",\r\n    \"allowImportingTsExtensions\": true,\r\n    \"isolatedModules\": true,\r\n    \"moduleDetection\": \"force\",\r\n    \"noEmit\": true,\r\n\r\n    /* Linting */\r\n    \"strict\": true,\r\n    \"noUnusedLocals\": true,\r\n    \"noUnusedParameters\": true,\r\n    \"noFallthroughCasesInSwitch\": true,\r\n    \"noUncheckedSideEffectImports\": true\r\n  },\r\n  \"include\": [\"vite.config.ts\"]\r\n}`\r\n    },\r\n    settings: JSON.stringify({\r\n      compile: { clearConsole: false }\r\n    })\r\n  }\r\n\r\n  return (\r\n    <TooltipTrigger delay={50} closeDelay={50}>\r\n      <form\r\n        method=\"post\"\r\n        target=\"_target\"\r\n        className=\"flex\"\r\n        action=\"https://stackblitz.com/run\"\r\n      >\r\n        {Object.keys(project).map((item) =>\r\n          item != 'files' ? (\r\n            <input\r\n              key={item}\r\n              type=\"hidden\"\r\n              name={`project[${item}]`}\r\n              // @ts-expect-error\r\n              value={project[item]}\r\n            />\r\n          ) : (\r\n            Object.keys(project[item]).map((file) => (\r\n              <input\r\n                key={file}\r\n                type=\"hidden\"\r\n                name={`project[files][${file}]`}\r\n                // @ts-expect-error\r\n                value={project[item][file]}\r\n              />\r\n            ))\r\n          )\r\n        )}\r\n\r\n        <IconButton type=\"submit\">\r\n          <svg\r\n            viewBox=\"0 0 28 28\"\r\n            aria-hidden=\"true\"\r\n            className=\"size-6 fill-[#1389fd]\"\r\n          >\r\n            <path d=\"M12.747 16.273h-7.46L18.925 1.5l-3.671 10.227h7.46L9.075 26.5l3.671-10.227z\"></path>\r\n          </svg>\r\n        </IconButton>\r\n      </form>\r\n      <Tooltip placement=\"top\">Open in Stackblitz</Tooltip>\r\n    </TooltipTrigger>\r\n  )\r\n}\r\n\r\nexport default OpenInStackblitz\r\n"
  },
  {
    "path": "apps/docs/src/components/QzyLogo.tsx",
    "content": "const Logo = () => {\r\n  return (\r\n    <svg\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n      width=\"150.016\"\r\n      height=\"43.576\"\r\n      viewBox=\"0 0 150.016 43.576\"\r\n    >\r\n      <g transform=\"translate(0.02 0.022)\">\r\n        <path\r\n          d=\"M29.406,6.607a12,12,0,0,1,.462-1.212l-.058-.058q-.71.427-1.443.808a16.72,16.72,0,0,0-12.816-.2,17,17,0,0,0,10.506,32.27,16.8,16.8,0,0,0,8.255-5.022q-2.119-3.345-4.272-6.668,2.684-.115,5.369,0,4.9,6.941,9.756,13.913-3.088.1-6.177.029-1.021-1.537-2.021-3.088a21.791,21.791,0,1,1,3.521-26.758q-2.122,1.1-4.272,2.165a17.3,17.3,0,0,0-4.849-5.051,16.5,16.5,0,0,0-1.961-1.128\"\r\n          fill=\"#1d2976\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.988\"\r\n        />\r\n        <path\r\n          d=\"M29.406,6.607l-.462.981q-5.793,2.42-11.6,4.792,5.5-3.138,11.026-6.235.733-.381,1.443-.808l.058.058a12,12,0,0,0-.465,1.212\"\r\n          fill=\"#4374b0\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.968\"\r\n        />\r\n        <path\r\n          d=\"M28.944,7.589q-.323.847-.693,1.674-7.241,2.957-14.432,6a18,18,0,0,1-2.425.433q2.95-1.706,5.946-3.319,5.812-2.368,11.6-4.788\"\r\n          fill=\"#4278b3\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.985\"\r\n        />\r\n        <path\r\n          d=\"M28.251,9.263l-.4.924q-5.279,2.149-10.507,4.387-1.756.369-3.521.693,7.187-3.047,14.428-6\"\r\n          fill=\"#417bb6\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.988\"\r\n        />\r\n        <path\r\n          d=\"M52.786,9.725q1.885.153,3.752.462a10.4,10.4,0,0,1-2.482.491q-1.565-.2-3.117-.462Z\"\r\n          fill=\"#3699ce\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.918\"\r\n        />\r\n        <path\r\n          d=\"M27.847,10.187q-.5,1.2-1.039,2.367L19.765,15.5q.263-.729.577-1.443L20.255,14q-1.457.294-2.915.577,5.228-2.238,10.507-4.387\"\r\n          fill=\"#3f7fb9\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.987\"\r\n        />\r\n        <path\r\n          d=\"M48.052,10.418q1.853.2,3.695.491-1.1.28-2.194.548-1.735-.244-3.464-.52Z\"\r\n          fill=\"#359ace\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.919\"\r\n        />\r\n        <path\r\n          d=\"M43.376,11.4q-7.306,3.1-14.663,6.119,1.437-.95,2.944-1.818,3.017-1.567,6.119-2.944,1.883-.734,3.752-1.5a12,12,0,0,1,1.849.143\"\r\n          fill=\"#3990c6\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.979\"\r\n        />\r\n        <path\r\n          d=\"M43.376,11.4q.735.1,1.443.231-9.849,4.053-19.685,8.14,1.743-1.193,3.579-2.251Q36.07,14.5,43.376,11.4\"\r\n          fill=\"#3992c8\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.989\"\r\n        />\r\n        <path\r\n          d=\"M60.925,11.168q1.887.139,3.752.462a10.4,10.4,0,0,1-2.482.491q-1.563-.2-3.117-.462Z\"\r\n          fill=\"#3795ca\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.902\"\r\n        />\r\n        <path\r\n          d=\"M55.442,11.572l3.579.491a21,21,0,0,1-2.222.548q-1.69-.237-3.377-.491,1.01-.288,2.02-.548\"\r\n          fill=\"#3797cc\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.908\"\r\n        />\r\n        <path\r\n          d=\"M44.819,11.63a3.8,3.8,0,0,1,.924.115q-.832.23-1.674.433a10,10,0,0,0,1.212.2q-14.7,6.192-29.441,12.3a8,8,0,0,1,.519-1.212L23.4,20.522a1.1,1.1,0,0,1-.173.375l.058.029q.9-.622,1.847-1.155,9.837-4.088,19.685-8.141\"\r\n          fill=\"#3894c9\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.993\"\r\n        />\r\n        <path\r\n          d=\"M50.361,12.322Q32.579,19.789,14.743,27.158q.528-1.257,1.1-2.482,14.746-6.1,29.441-12.3.973.125,1.934.289l2.02-.52q.558.1,1.123.177\"\r\n          fill=\"#3697cc\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.997\"\r\n        />\r\n        <path\r\n          d=\"M50.361,12.323q.952.122,1.9.231Q33.258,20.507,14.223,28.429l.52-1.27Q32.578,19.79,50.361,12.323\"\r\n          fill=\"#359bcf\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.998\"\r\n        />\r\n        <path\r\n          d=\"M52.266,12.553a4.4,4.4,0,0,1,.693.144q-.917.258-1.847.462,1.587.221,3.175.433.987-.189,1.963-.433a2.8,2.8,0,0,1,1.039.087l-3.695,1.616a49.1,49.1,0,0,0-16.683,5.109q-2.813,1.478-5.484,3.175-1.924,1.3-3.868,2.569-7.408,3.011-14.778,6.119.672-1.73,1.443-3.406,19.034-7.922,38.042-15.875\"\r\n          fill=\"#349ed2\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.986\"\r\n        />\r\n        <path\r\n          d=\"M26.808,12.553a4.4,4.4,0,0,1-.231.635q-3.561,1.448-7.1,2.944a2.2,2.2,0,0,1,.289-.635Z\"\r\n          fill=\"#3e82bc\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.99\"\r\n        />\r\n        <path\r\n          d=\"M26.577,13.188q-.585,1.372-1.212,2.713l-7.043,2.887q.562-1.341,1.155-2.656,3.54-1.5,7.1-2.944\"\r\n          fill=\"#3d86be\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.989\"\r\n        />\r\n        <path\r\n          d=\"M57.289,13.246q2.171.224,4.33.548-4,.655-8.024,1.068Z\"\r\n          fill=\"#32a3d5\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.929\"\r\n        />\r\n        <path\r\n          d=\"M25.365,15.9q-.558,1.463-1.212,2.886L17.11,21.674q.572-1.458,1.212-2.886Z\"\r\n          fill=\"#3a8cc3\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.989\"\r\n        />\r\n        <path\r\n          d=\"M43.146,18.384a.15.15,0,0,1,.144.115,22.1,22.1,0,0,1-1.328,11.43q-.267.619-.577,1.212-1.646-2.485-3.2-5.022a17.3,17.3,0,0,0,.52-6q2.251-.8,4.441-1.735\"\r\n          fill=\"#1d2876\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.983\"\r\n        />\r\n        <path\r\n          d=\"M24.152,18.788q-.343.887-.75,1.732l-7.043,2.944a17,17,0,0,1,.751-1.79Z\"\r\n          fill=\"#3991c7\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.99\"\r\n        />\r\n        <path\r\n          d=\"M27.558,25.715q-1.01.678-2.078,1.27L12.549,32.354a1.1,1.1,0,0,1,.231-.52q7.369-3.107,14.778-6.119\"\r\n          fill=\"#33a2d5\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.987\"\r\n        />\r\n        <path\r\n          d=\"M25.48,26.985q-2.42,1.47-4.907,2.858l-8.948,4.82-.058-.058q.471-1.144.981-2.251Z\"\r\n          fill=\"#32a3d5\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.961\"\r\n        />\r\n        <path\r\n          d=\"M90.02,10.071q1.358.419,2.684.924a5.3,5.3,0,0,1-.779,1.328,31,31,0,0,0,3.291.029l.722-.722,1.7,1.357a.16.16,0,0,1,.029.2l-.548.9q-1.269.043-2.54.029a13,13,0,0,1-.173,1.616,3.3,3.3,0,0,0,.866-.058q.315-.417.664-.808l1.9,1.559q.043-2.4.029-4.791H100.7v.52q1.011.014,2.021-.029a9,9,0,0,1,.837-.953q1.435.9,2.858,1.818a10.5,10.5,0,0,1-.837,1.01q-.043,3.117-.029,6.234h-2.771v-.577H100.7v.577H97.871q.015-1.732-.029-3.464-.264.369-.549.722l-3.464.058q-.115.087,0,.173,1.311.364,2.6.808a1.6,1.6,0,0,1,.664.375.86.86,0,0,1,.058.577,13,13,0,0,1-.433,1.616q1.847.1,3.695.029a6.3,6.3,0,0,1,1.01-1.01q1.565.919,3.088,1.905-.431.532-.895,1.039-.043,3.521-.029,7.043h-2.944V29.061H93.6V30.1h-3q.029-4.561-.058-9.121a12.4,12.4,0,0,1-2.858,1.155,12,12,0,0,1-.722-1.183,10.7,10.7,0,0,0,3.2-2.338,6.5,6.5,0,0,0,.722-1.039q-1.586-.087-3.175-.058-.141-.889-.347-1.761,2.135-.043,4.272-.029a9,9,0,0,0,.115-1.616q-.722-.014-1.443.029a16.6,16.6,0,0,1-1.818,1.472,10,10,0,0,1-1.01-.808,12.8,12.8,0,0,0,2.542-4.732m10.68,3.868h2.078v3.925H100.7Zm-7.851,5.08a28,28,0,0,1,2.713,2.107q-.981.043-1.963.029v-.4q-1.357.014-2.713-.029a5.84,5.84,0,0,0,1.963-1.707m.75,3.925h7.043v1.27H93.6Zm0,3.06h7.043v1.212H93.6Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.977\"\r\n        />\r\n        <path\r\n          d=\"M80.844,10.649a.18.18,0,0,1,.173.058l1.616,2.829a.2.2,0,0,1-.058.087q-2.9.5-5.831.722v4.5q2.223.014,4.445-.029.565-.709,1.183-1.357,1.435,1.071,2.858,2.165-.276.6-.577,1.183-3.954.087-7.909.058v9.294H73.453V20.865q-3.665.014-7.331-.029-.333-.982-.577-1.992h7.909V14.63q-2.853.227-5.715.289-.131-.724-.288-1.443a95,95,0,0,0,11.43-2.223,19,19,0,0,0,1.963-.6\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.983\"\r\n        />\r\n        <path\r\n          d=\"M136.434,10.648q1.28.712,2.54,1.472a.7.7,0,0,1,.289.26q-.378.508-.722,1.039-.028,7.476-.058,14.951a1.83,1.83,0,0,1-1.068,1.068,5.7,5.7,0,0,1-1.963.375,1.345,1.345,0,0,0-.981-1.241,3.5,3.5,0,0,0-.75-.144,10,10,0,0,1-.087-1.328,8,8,0,0,0,1.76.087.72.72,0,0,0,.433-.26q.127-2.361.087-4.734h-1.79a13.7,13.7,0,0,1-2.684,7.793,7,7,0,0,1-1.241-.548,15.5,15.5,0,0,0,1.241-5.34q.125-6.464.086-12.931h2.713v.577q.751.014,1.5-.029a11,11,0,0,0,.695-1.067m-2.194,2.944h1.674v2.367H134.24Zm0,4.214h1.674v2.54H134.24Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.987\"\r\n        />\r\n        <path\r\n          d=\"M146.478,10.822q1.222.683,2.425,1.414a1.3,1.3,0,0,1,.346.289q-.292.453-.606.9-.16,1.468-.231,2.944a1.99,1.99,0,0,1-1.472,1.53,8.2,8.2,0,0,1-1.847.2,1,1,0,0,0-.809-1.126,6,6,0,0,1-.779-.087q-.093-.662-.144-1.328a11.5,11.5,0,0,0,1.79.029q.568-.041.4-.577.069-.706.115-1.414H142.26v5.253q1.905.014,3.81-.029l.78-.779q1.341.873,2.655,1.79a5.7,5.7,0,0,1-.866,1.1,12.9,12.9,0,0,1-1.472,4.445,6.7,6.7,0,0,0,1.443.837q.7.267,1.386.548a24.6,24.6,0,0,0-1.847,3.06,13.2,13.2,0,0,1-2.54-2.136,14,14,0,0,1-2.742,2.251,3.7,3.7,0,0,1-.577-.52,4,4,0,0,0-.029.693h-2.71V11.054h2.713v.693q1.7.014,3.406-.029.39-.463.808-.9m-4.214,9.929h.347a13.7,13.7,0,0,0,1.616,5.167,11.8,11.8,0,0,1-1.934,2.453q-.042-3.81-.029-7.62m2.021,0H145.9a15.5,15.5,0,0,1-.549,2.656,8.9,8.9,0,0,1-1.069-2.656Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.98\"\r\n        />\r\n        <path\r\n          d=\"M123.56,11.226q1.227,1.1,2.482,2.165l-.577.924q-7.043.043-14.085.029-.258-.975-.462-1.963,5.773.014,11.546-.029.566-.552,1.1-1.126\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.97\"\r\n        />\r\n        <path\r\n          d=\"M125.754,16.364a34,34,0,0,1,2.8,2.078,9,9,0,0,1-.549,1.241l-10.448.058,1.674.9a.116.116,0,0,1,.029.173,47,47,0,0,1-4.243,4.965q3.553.09,7.1-.144l-1.559-2.367a13,13,0,0,1,1.126-.953,33,33,0,0,1,3.723,2.8q.624.594,1.183,1.241a1.7,1.7,0,0,1,0,.635A7.7,7.7,0,0,1,125,29.844a.564.564,0,0,1-.78-.2L123.1,27.508q-6.158,1.045-12.354,1.616-.283-1.528-.491-3.06a4.07,4.07,0,0,0,2.367-1.328,18.7,18.7,0,0,0,2.973-4.993l-6.35-.058q-.322-.956-.577-1.934,7.966.014,15.933-.029a13,13,0,0,0,1.156-1.358\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.978\"\r\n        />\r\n        <path\r\n          d=\"M68.66,32.47q2.721-.121,2.338,2.6a2.6,2.6,0,0,1-.375.808l.4.577-.4.346a6,6,0,0,0-.491-.52,3,3,0,0,1-1.7.087,1.89,1.89,0,0,1-1.155-1.9A1.94,1.94,0,0,1,68.66,32.47m.173.577a1.22,1.22,0,0,1,1.53.981,2.3,2.3,0,0,1-.173,1.328,4.5,4.5,0,0,0-.577-.635,4,4,0,0,0-.375.4q.275.29.52.606a1.225,1.225,0,0,1-1.588-.317,1.8,1.8,0,0,1,.26-2.165Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.914\"\r\n        />\r\n        <path\r\n          d=\"M73.222,32.527h.635V36.4h-.635Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.922\"\r\n        />\r\n        <path\r\n          d=\"M77.205,32.527a2.5,2.5,0,0,1,.75.058q.772,1.889,1.443,3.81h-.693a5.6,5.6,0,0,0-.346-.952,10.5,10.5,0,0,0-1.559,0q-.164.449-.346.9a1.07,1.07,0,0,1-.693,0q.757-1.9,1.444-3.811m.346.75q.341.776.635,1.587a6.3,6.3,0,0,1-1.212,0,11,11,0,0,0,.578-1.587Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.918\"\r\n        />\r\n        <path\r\n          d=\"M81.361,32.523a2,2,0,0,1,.664.058q.945,1.341,1.847,2.713.043-1.385.029-2.771h.635v3.868a3.5,3.5,0,0,1-.635-.029l-1.876-2.684q-.043,1.356-.029,2.713h-.635Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.931\"\r\n        />\r\n        <path\r\n          d=\"M93.542,32.527h2.886a3,3,0,0,1-.029.577l-2.165,2.742q1.155.043,2.309.029v.52H93.368a3,3,0,0,1,.029-.577q1.075-1.312,2.107-2.656a17,17,0,0,0-1.963-.058Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.917\"\r\n        />\r\n        <path\r\n          d=\"M98.622,32.527h.635v1.616h1.9V32.527h.635V36.4h-.635V34.721h-1.9V36.4h-.635Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.925\"\r\n        />\r\n        <path\r\n          d=\"M104.106,32.527h.635V36.4h-.635Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.922\"\r\n        />\r\n        <path\r\n          d=\"M113.458,32.585a1.9,1.9,0,0,1,.808-.029q.5.845,1.068,1.645.522-.8,1.01-1.616a1.45,1.45,0,0,1,.808,0q-.753,1.114-1.472,2.251-.044.778-.029,1.559h-.635q.015-.751-.029-1.5-.745-1.176-1.529-2.31\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.906\"\r\n        />\r\n        <path\r\n          d=\"M119.115,32.527h.635q-.015,1.385.029,2.771a.884.884,0,0,0,.895.635.87.87,0,0,0,.953-.693q.043-1.356.029-2.713h.635a29,29,0,0,1-.086,3.06,1.41,1.41,0,0,1-1.5.866,1.37,1.37,0,0,1-1.5-.808,30,30,0,0,1-.09-3.118\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.922\"\r\n        />\r\n        <path\r\n          d=\"M124.6,32.528a3.5,3.5,0,0,1,.635.029l1.876,2.684q.043-1.356.029-2.713h.635V36.4a2,2,0,0,1-.664-.058q-.9-1.372-1.847-2.713-.044,1.386-.029,2.771H124.6Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.931\"\r\n        />\r\n        <path\r\n          d=\"M136.838,32.527h2.656V33.1h-2.021v1.039h1.9v.577h-1.9v1.674h-.635Z\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.904\"\r\n        />\r\n        <path\r\n          d=\"M141.572,32.527h.635q-.014,1.357.029,2.713a.854.854,0,0,0,.924.693.9.9,0,0,0,.924-.635q.043-1.385.029-2.771h.635a30,30,0,0,1-.087,3.117,1.37,1.37,0,0,1-1.5.808,1.35,1.35,0,0,1-1.5-.866,29,29,0,0,1-.089-3.059\"\r\n          className=\"fill-on-surface\"\r\n          fillRule=\"evenodd\"\r\n          opacity=\"0.921\"\r\n        />\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport default Logo\r\n"
  },
  {
    "path": "apps/docs/src/components/Search.tsx",
    "content": "'use client'\r\n\r\nimport '@docsearch/css'\r\n\r\nimport { Button, Icon } from 'actify'\r\nimport { DocSearchModal, useDocSearchKeyboardEvents } from '@docsearch/react'\r\nimport { useCallback, useEffect, useRef, useState } from 'react'\r\n\r\nimport Link from 'next/link'\r\nimport { createPortal } from 'react-dom'\r\n\r\ntype DocSearchProps = {\r\n  appId: string\r\n  apiKey: string\r\n  indexName: string\r\n}\r\n\r\nconst DocSearch = ({ appId, apiKey, indexName }: DocSearchProps) => {\r\n  const searchButtonRef = useRef<HTMLButtonElement>(null)\r\n  const [isOpen, setIsOpen] = useState(false)\r\n  const [navigator, setNavigator] = useState<Navigator>()\r\n  const [initialQuery, setInitialQuery] = useState('')\r\n\r\n  useEffect(() => {\r\n    setNavigator(window.navigator)\r\n  }, [])\r\n\r\n  const onOpen = useCallback(() => {\r\n    setIsOpen(true)\r\n  }, [setIsOpen])\r\n\r\n  const onClose = useCallback(() => {\r\n    setIsOpen(false)\r\n  }, [setIsOpen])\r\n\r\n  const onInput = useCallback(\r\n    (event: any) => {\r\n      setIsOpen(true)\r\n      setInitialQuery(event.key)\r\n    },\r\n    [setIsOpen, setInitialQuery]\r\n  )\r\n\r\n  useDocSearchKeyboardEvents({\r\n    isOpen,\r\n    onOpen,\r\n    onClose,\r\n    onInput,\r\n    searchButtonRef\r\n  })\r\n\r\n  return (\r\n    <>\r\n      <style>\r\n        {`\r\n        :root{\r\n          --docsearch-primary-color: var(--md-sys-color-primary);\r\n        }\r\n        .DocSearch-Modal{\r\n          --docsearch-modal-background: var(--md-sys-color-surface);\r\n          --docsearch-hit-active-color: var(--md-sys-color-on-primary);\r\n          --docsearch-footer-background: var(--md-sys-color-surface-container);\r\n        }\r\n        `}\r\n      </style>\r\n      <Button\r\n        variant=\"text\"\r\n        onPress={onOpen}\r\n        ref={searchButtonRef}\r\n        className=\"ml-0 md:ml-2 lg:ml-4\"\r\n      >\r\n        <Icon>search</Icon>\r\n        <span className=\"font-semibold hidden sm:inline\">Search</span>\r\n        <span className=\"hidden md:block text-xs border border-outline p-1.5 rounded-full\">\r\n          {navigator?.platform == 'Windows' || navigator?.platform == 'Win32'\r\n            ? 'Ctrl'\r\n            : '⌘'}\r\n          +K\r\n        </span>\r\n      </Button>\r\n      {isOpen &&\r\n        createPortal(\r\n          <DocSearchModal\r\n            appId={appId}\r\n            apiKey={apiKey}\r\n            indexName={indexName}\r\n            onClose={onClose}\r\n            initialQuery={initialQuery}\r\n            initialScrollY={window.scrollY}\r\n            placeholder=\"Search Actify\"\r\n            hitComponent={({ hit, children }) => (\r\n              <Link href={hit.url}>\r\n                <>{children}</>\r\n              </Link>\r\n            )}\r\n          />,\r\n          document.body\r\n        )}\r\n    </>\r\n  )\r\n}\r\n\r\nexport default DocSearch\r\n"
  },
  {
    "path": "apps/docs/src/components/Sponsors.tsx",
    "content": "import { LinkButton } from 'actify'\r\nimport NgrokerLogo from '@/components/NgrokerLogo'\r\nimport TaildoorLogo from '@/components/TaildoorLogo'\r\n\r\nconst Sponsors = () => {\r\n  return (\r\n    <div className=\"max-w-7xl mx-auto\">\r\n      <h2 className=\"text-secondary text-2xl mb-4 text-center\">Sponsors</h2>\r\n      <div className=\"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-2 items-center\">\r\n        <a tabIndex={-1} target=\"_blank\" href=\"https://www.taildoor.com\">\r\n          <LinkButton\r\n            variant=\"text\"\r\n            className=\"[--md-text-button-container-height:64px] [--md-text-button-container-shape:0]\"\r\n          >\r\n            <TaildoorLogo />\r\n          </LinkButton>\r\n        </a>\r\n        <a tabIndex={-1} target=\"_blank\" href=\"https://ngroker.com\">\r\n          <LinkButton\r\n            variant=\"text\"\r\n            className=\"[--md-text-button-container-height:64px] [--md-text-button-container-shape:0]\"\r\n          >\r\n            <NgrokerLogo />\r\n          </LinkButton>\r\n        </a>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default Sponsors\r\n"
  },
  {
    "path": "apps/docs/src/components/SyntaxHighlighter.tsx",
    "content": "'use client'\n\nimport { Icon, IconButton } from 'actify'\nimport React, { useState } from 'react'\n\nimport { cn } from '@/utils/cn'\nimport { fira_code } from '@/app/fonts'\nimport { getSingletonHighlighter } from 'shiki'\nimport { useMounted } from '@/hooks/useMounted'\nimport { useTheme } from 'next-themes'\n\nconst langs = ['shell', 'css', 'js', 'ts', 'jsx', 'tsx']\ntype Langs = (typeof langs)[number]\n\nconst SyntaxHighlighter = (props: React.ComponentProps<'div'>) => {\n  const mounted = useMounted()\n  const { theme, systemTheme } = useTheme()\n\n  const { lang, children, className } = props\n  const [code, setCode] = useState('')\n  const [iconName, setIconName] = useState('content_copy')\n\n  if (mounted) {\n    const highlight = async () => {\n      const highlighter = await getSingletonHighlighter({\n        langs,\n        themes: ['catppuccin-latte', 'catppuccin-mocha']\n      })\n\n      const _code = highlighter.codeToHtml(children as string, {\n        themes: {\n          light: 'catppuccin-latte',\n          dark: 'catppuccin-mocha',\n          system:\n            systemTheme == 'dark' ? 'catppuccin-mocha' : 'catppuccin-latte'\n        },\n        lang: lang as Langs,\n        defaultColor: theme\n      })\n      setCode(_code)\n    }\n\n    highlight()\n  }\n\n  const copyCode = () => {\n    navigator.clipboard.writeText(children as string).then(\n      () => {\n        setIconName('check')\n        setTimeout(() => {\n          setIconName('content_copy')\n        }, 2000)\n      },\n      () => {\n        setIconName('content_copy')\n        setTimeout(() => {\n          setIconName('copy')\n        }, 2000)\n      }\n    )\n  }\n\n  return (\n    <div\n      className={cn(\n        fira_code.variable,\n        ['group', 'relative', 'rounded-lg', 'shadow-lg', 'overflow-hidden'],\n        className\n      )}\n    >\n      <div className=\"absolute top-3 right-6 cursor-pointer opacity-0 transition-opacity group-hover:opacity-100\">\n        <IconButton variant=\"filled\" onPress={copyCode} color=\"secondary\">\n          <Icon>{iconName}</Icon>\n        </IconButton>\n      </div>\n\n      <div\n        dangerouslySetInnerHTML={{ __html: code }}\n        className=\"[&_code]:[fontFamily:var(--font-fira-code)] [&_code]:block [&_code]:w-full overflow-x-hidden h-fit max-h-[calc(100vh-234px)] [&_pre]:p-4 [&_pre]:!my-0\"\n      />\n    </div>\n  )\n}\n\nexport default SyntaxHighlighter\n"
  },
  {
    "path": "apps/docs/src/components/TableOfContents.tsx",
    "content": "'use client'\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\nconst generateSlug = (str: string) => {\r\n  str = str?.replace(/^\\s+|\\s+$/g, '')\r\n  str = str?.toLowerCase()\r\n  const from = 'àáãäâèéëêìíïîòóöôùúüûñç·/_,:;'\r\n  const to = 'aaaaaeeeeiiiioooouuuunc------'\r\n\r\n  for (let i = 0, l = from.length; i < l; i++) {\r\n    str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))\r\n  }\r\n\r\n  str = str\r\n    ?.replace(/[^a-z0-9 -]/g, '')\r\n    .replace(/\\s+/g, '-')\r\n    .replace(/-+/g, '-')\r\n\r\n  return str\r\n}\r\n\r\ntype TocProps = {\r\n  slug: string\r\n  title: string\r\n}[]\r\n\r\nconst TableOfContents = ({ markdown }: { markdown?: string }) => {\r\n  const hash = ''\r\n\r\n  const [toc, setToc] = useState<TocProps>([])\r\n\r\n  useEffect(() => {\r\n    // #{1,6}\\s+[^#\\d\\r\\n]+/g\r\n    const regXHeader = /(#{1,6})\\s+(.*)/gm\r\n\r\n    if (markdown) {\r\n      const matches = markdown.match(regXHeader) ?? []\r\n      const headings = matches.map((heading) => {\r\n        const headingText = heading.replace(/#/g, '')\r\n        const slug = generateSlug(headingText)\r\n        return {\r\n          slug,\r\n          title: headingText\r\n        }\r\n      })\r\n      setToc(headings)\r\n    }\r\n  }, [markdown])\r\n\r\n  return (\r\n    <nav className=\"fixed bottom-14 right-0 w-60 h-[calc(100vh-120px)] hidden lg:grid lg:place-content-center\">\r\n      <ul className=\"m-0 list-none text-sm\">\r\n        {toc.map((item) => (\r\n          <li\r\n            key={item.slug}\r\n            className={`${item.slug == hash.slice(1) ? 'border-primary' : ''}`}\r\n          >\r\n            <a\r\n              href={`#${item.slug}`}\r\n              className={`${\r\n                item.slug == hash.slice(1) ? 'text-primary font-bold' : ''\r\n              }`}\r\n            >\r\n              {item.title}\r\n            </a>\r\n          </li>\r\n        ))}\r\n      </ul>\r\n    </nav>\r\n  )\r\n}\r\n\r\nexport default TableOfContents\r\n"
  },
  {
    "path": "apps/docs/src/components/TaildoorLogo.tsx",
    "content": "const TaildoorLogo = () => {\r\n  return (\r\n    <svg\r\n      height=\"32\"\r\n      viewBox=\"0 0 1675.615 400\"\r\n      xmlns=\"http://www.w3.org/2000/svg\"\r\n    >\r\n      <g transform=\"translate(-21.005 113)\">\r\n        <path\r\n          d=\"M300,400H100l-1.668-.027-1.711-.028q-1.38-.019-2.761-.045h-.011l-4.039-.2-.732-.036c-.452-.021-.851-.041-1.189-.058l-2.243-.191-3.517-.3-2.335-.285-.472-.058-2.763-.337-5.37-.88-.535-.112-.52-.108L66.9,396.66h-.011L66,396.475l-4.98-1.26-4.78-1.47-.632-.229c-.559-.2-1.115-.4-1.658-.6h-.008l-.351-.128-1.94-.7-.592-.249-1.151-.485-.143-.061-2.513-1.057-3.91-1.918-.1-.048-.012-.006-.18-.088-.5-.278c-.654-.364-1.346-.753-2.222-1.245l-.011-.006-1.27-.713-3.81-2.44-1.1-.807q-1.254-.915-2.506-1.834l-.887-.734-2.533-2.1-.012-.011,0-.008-.6-.568-.771-.725-.875-.824L25,375l-.023-.025-.012-.013-.012-.013-.018-.018-.014-.015-2.95-3.136-2.056-2.48-.775-.937-.465-.636-.715-.978v-.006l-.245-.336L16.5,364.75l-2.44-3.811-.78-1.393L11.856,357l-.036-.064-2.06-4.2-1.188-2.827-.364-.865-.3-.708v-.006l-.156-.433c-.292-.8-.585-1.613-.894-2.473l-.066-.184c-.213-.589-.4-1.1-.54-1.5l-.057-.185-.121-.391-1.292-4.2-1.26-4.98v-.007l-.1-.474q-.443-2.1-.876-4.207l-.1-.488L2.182,327.2c-.161-.978-.347-2.117-.614-3.756L1.14,320l-.26-2.135-.08-.973c-.058-.671-.116-1.361-.18-2.12L.6,314.488l-.032-.373.124,1.446-.222-2.609-.01-.117-.062-.729L.305,310.2l-.015-.315-.074-1.51c-.034-.687-.073-1.489-.107-2.225l-.064-3.94L.005,300V100c.028-1.944.059-4.02.1-6.15.08-1.66.16-3.31.29-5.96l.2-2.352.082-.961.016-.19c.053-.694.112-1.437.187-2.257L1,81.119l.556-4.559.515-3.14.084-.512.282-1.718.132-.635.011-.054c.269-1.3.548-2.637.937-4.492.2-.8.395-1.572.721-2.856l.019-.053.3-1.162q.1-.38.2-.806l.006-.024.019-.076,1.47-4.78,1.059-2.929L7.7,52.266l.018-.049.2-.558.461-1.1,1.189-2.828.2-.476,2.06-4.2,2.24-4,2.4-3.743.022-.033.022-.033,2.641-3.61.655-.794.963-1.162,1.211-1.464c1-1.064,2.13-2.269,3.03-3.22l3.028-2.849.192-.181.112-.093.161-.133,2.2-1.821.271-.224.095-.078.581-.481,1.793-1.311c.489-.358,1.074-.787,1.818-1.329l1.192-.763.047-.03.024-.015c.63-.4,1.414-.909,2.546-1.631.336-.19.677-.38,1.071-.6h.007l.266-.149.879-.492c.592-.333,1.216-.684,1.776-.995l.367-.18.412-.2,3.421-1.678,2.211-.93,2.189-.92,1.454-.527c.782-.283,1.743-.632,3.136-1.134l4.78-1.47,1.086-.276c1.071-.272,2.285-.58,3.894-.984l.357-.075.277-.058c1.3-.273,2.858-.6,4.546-.947.381-.064.764-.126,1.2-.2h.012l.221-.036,3.933-.644,5.569-.68L84.21.7C85.2.62,86.3.525,87.892.392L89.063.334C90.105.282,91.489.215,93.853.1,95.744.066,97.622.038,99.437.011h.025L100,0h200c.849.012,1.723.026,2.672.042h.1c.964.015,2.057.032,3.377.056.762.034,1.536.072,2.608.125l2.943.145.361.018h.04l3.429.292.084.007.083.007,2.164.185c.785.092,1.574.189,2.769.336l.137.017,2.664.327.415.068,4.954.812.624.13.062.013.954.2.827.171c1.092.226,2.035.421,2.714.568l4.98,1.26,3.794,1.166.986.3,1.171.422c1.012.365,2.159.779,3.419,1.238l2.227.936.283.119.033.014,1.857.781,3.751,1.84.449.22.444.248.022.012c.739.413,1.659.927,3.534,1.98l3.811,2.44,2.314,1.693,1.3.948,1.273,1.053,2.147,1.777.528.5.4.374.554.522L375,25c.234.248.467.5.742.788l.707.753.18.191.008.009c.458.485.931.986,1.392,1.48l.741.9.329.4.015.017c.524.632,1.087,1.311,1.746,2.11l.141.193L381.849,33l1.651,2.258c.258.4.515.8.81,1.265l.366.571,1.264,1.974.443.79.173.308.019.033c.531.948,1.081,1.927,1.606,2.868.38.768.748,1.519,1.257,2.559l.03.062.773,1.579,1.85,4.4c.166.455.331.913.509,1.406l.138.383.025.068.988,2.733,1.47,4.78.65,2.567c.173.681.371,1.463.61,2.413q.193.911.382,1.819c.211,1.008.433,2.076.7,3.361l.88,5.37c.233,1.89.5,4.033.68,5.57l.265,3.091.128,1.523.1,1.145c.047.915.091,1.826.147,2.979l.01.205.016.332c.038.785.078,1.594.117,2.443.038,1.927.066,3.84.093,5.69V300l-.041,2.542-.059,3.608-.119,2.454-.037.75-.04.853.025-.514-.118,2.417-.167,1.958-.154,1.818-.169,1.985-.519,4.249-.075.61a.365.365,0,0,1-.01.085l-.014.115-.026.217-.036.3-.121.739-.76,4.631-.155.744L397,331.5q-.178.87-.364,1.754l.212-1.015-.365,1.751-.837,3.309-.423,1.67-1.168,3.8-.3.98-.031.086v.012l-.026.07-.006.019-.006.018v.011l-.047.129-.393,1.086c-.306.855-.565,1.571-.837,2.32l.52-1.437-.823,2.276-.019.044-.008.019-.027.063-.119.284-.171.406-1.522,3.585-2.06,4.2-1.38,2.46-.245.436-.02.036-.044.079-.553.987-.4.63L383.5,364.75l-.345.471-.048.066-.042.058-.007.01-.035.048-2.163,2.957-.369.446-1.921,2.321-.186.225-.067.081-.05.06-.121.147-.116.14L375,375l-.243.229-.1.1-.021.019-.013.013-.037.035-.019.018-.013.013-.23.217-2.544,2.391-2.706,2.24-.714.59-.329.241-.118.086-.159.116-1.854,1.358-1.15.839-2.066,1.323-.527.337-.08.051-.014.009-.035.022.129-.083-.129.083-.028.017-1.063.68-2.865,1.6-1.135.635-2.1,1.03-2.1,1.03-4.4,1.85-2.208.8-2.382.861-1.162.357-3.615,1.118-1.521.385,1.33-.337-.991.253c-.968.245-1.932.49-2.839.718l-.958.242-1.956.408-3.225.672-1.59.261-3.779.619-2.545.311-3.025.37c-.494.044-.987.086-1.47.127l-1.822.155-1.479.126-.989.084-5.96.29c-1.665.032-3.3.057-4.89.081h-.015ZM60,60V340c88.286-12.609,152.345-21.761,208.863-29.836l.145-.021.9-.128,68.01-9.715.169-.024.04-.006.041-.006h.033l.047-.007.322-.046h.01l.053-.008h.013l.077-.011.088-.013h.005l.048-.007.833-.119.308-.053V100l-61.552-8.793-26.548-3.793C196.478,79.5,127.5,69.64,60,60M307.527,399.835l3.082-.15Zm50.31-12.155.239-.134,2.865-1.6-.328.186c-.725.4-1.544.861-2.776,1.548m22.323-18.471.332-.4.369-.446Zm18.74-49.563.217-1.776Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n        />\r\n        <path\r\n          d=\"M200.005,137l-5.13.16-4.88.5-4.63.82-4.39,1.14-4.14,1.48-3.9,1.8-3.65,2.14-3.4,2.46-3.16,2.79-2.91,3.11-2.67,3.45-2.42,3.77-2.17,4.1-1.93,4.43-1.68,4.76-1.44,5.09,4.02-4.84,4.18-4.02,4.35-3.2,4.51-2.38,4.68-1.56,4.84-.73,5,.08,5.17.9,2.89.92,2.72,1.24,5.03,3.28,4.71,4.12,4.67,4.65,3.96,3.97,4.26,3.96,4.71,3.79,5.29,3.46,6.03,2.98,6.92,2.32,3.83.87,4.11.65,4.4.4,4.72.14,5.13-.17,4.88-.49,4.63-.82,4.39-1.15,4.14-1.47,3.9-1.81,3.65-2.13,3.4-2.46,3.16-2.79,2.91-3.12,2.67-3.44,2.42-3.78,2.17-4.1,1.93-4.43,1.68-4.76,1.44-5.09-4.02,4.84-4.18,4.03-4.35,3.19-4.51,2.38-4.68,1.56-4.84.74-5-.08-5.17-.9-2.89-.92-2.72-1.24-5.02-3.29-4.72-4.11-4.68-4.65-3.95-3.97-4.26-3.96-4.7-3.79-5.3-3.47-6.03-2.97-6.91-2.33-3.84-.87-4.11-.64-4.4-.4Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M147.5,200l-5.13.16-4.88.5-4.63.82-4.39,1.14-4.14,1.48-3.9,1.81-3.65,2.13-3.4,2.46-3.16,2.79-2.91,3.12-2.67,3.44-2.42,3.77-2.17,4.11-1.93,4.43-1.68,4.76L95,242l4.02-4.84,4.18-4.02,4.35-3.2,4.51-2.38,4.68-1.56,4.84-.73,5,.08,5.17.9,2.89.92,2.72,1.24,5.03,3.28,4.71,4.12,4.67,4.65,3.96,3.97,4.26,3.96,4.71,3.79,5.29,3.46,6.03,2.98,6.92,2.32,3.83.87,4.11.65,4.4.4L200,263l5.13-.17,4.88-.49,4.63-.82,4.39-1.15,4.14-1.47,3.9-1.81,3.65-2.13,3.4-2.46,3.16-2.79,2.91-3.12,2.67-3.44,2.42-3.77,2.17-4.11,1.93-4.42,1.68-4.76L252.5,221l-4.02,4.84-4.18,4.02-4.35,3.2-4.51,2.38-4.68,1.55-4.84.74-5-.08-5.17-.9-2.89-.92-2.72-1.24-5.02-3.29-4.72-4.11-4.68-4.65-3.95-3.97-4.26-3.96-4.7-3.79-5.3-3.47-6.03-2.97-6.91-2.33-3.84-.87-4.11-.64-4.4-.4Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M650.056,117.733h-80.73v199.26h-30.05V117.733h-80.74V91.023h191.52Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M684.205,321.7h-.324l-.231-.006-4.845-.134-4.192-.537-1.118-.143-2.852-.654-2.334-.534,2.334.534.7.16-3.031-.7-1.283-.429-.892-.3-1.132-.381-1.737-.583-4.85-2.17-1.251-.716-3.38-1.933-4.36-3.1-1.317-1.152-1.287-1.125c-.489-.427-.98-.856-1.455-1.273l-.424-.446-3.316-3.475-3.24-4.189-1-1.62-.887-1.444-.847-1.377-2.05-4.291-.015-.031-.093-.2-.092-.193-1.425-4.071-.315-.9-.076-.319-.079-.334-.288-1.215-.8-3.36.007.028-.007-.03-.068-.5-.067-.486-.22-1.616-.394-2.879-.1-2.3-.075-1.72-.074-1.733.112-4.037.012-.469v-.005l.005-.2c.075-.881.153-1.764.236-2.7v-.01l.049-.553.1-1.207c.164-1.092.349-2.33.64-4.24l.7-3.092.21-.929.481-1.564.516-1.683.163-.532.008-.019.051-.128v-.007l.021-.052,1.337-3.344.541-1.052c.284-.565.635-1.259,1.148-2.274l1.94-3.091.017-.021c.376-.453.75-.9,1.2-1.447l3.661-4.412c1.051-.963,2.1-1.917,3.017-2.759l.152-.139,2.451-2.242,6.27-4.31,4.25-2.129,2.58-1.291.062-.023.015-.006c1.481-.553,3.012-1.125,5.207-1.941,1.408-.526,2.665-.993,3.736-1.39,1.3-.379,2.609-.757,4.03-1.168,1.742-.506,3.394-.983,5.2-1.5,3.449-.732,6.835-1.437,9.4-1.97l.8-.106,5.756-.756,2.979-.388c3.112-.328,6.25-.65,11.05-1.14,2.377-.21,4.715-.411,7.951-.689h.021l.739-.064,2.739-.236,3.248-.228,1.87-.131,6.459-.453.264-.018c2.06-.119,4.143-.236,6.781-.383h.084l5.252-.294.133-.007V200.6l-.021-.791-.041-1.309-.055-2.056-.61-4.1-1.111-3.99-1.589-3.84-1-1.6-.888-1.414-2.291-2.7-2.64-2.351-.392-.259-2.578-1.7-.417-.2c-.7-.341-1.5-.73-3.042-1.488l-.78-.293.357.134c-.369-.137-.764-.286-1.257-.472l-.016-.006-.229-.086.614.229-1.683-.631-.6-.227-1.336-.364-2.374-.647h-.011l-1.747-.3-2.042-.351h-.013l-1.883-.2c-1.557-.161-3.026-.315-4.223-.441l-2.731-.284-6.6-.215-2.3-.075-2.55.1-3.77.143-6.28.58-1.433.206-4.818.694-6.189,1.23-5,1.294-8.7,2.252-.053.014-.057.015-.306.079-.33.085-11.825,4.051-2.274.779h-1.52v-28.98c.852-.218,1.705-.433,2.5-.633l2.138-.537c1.357-.3,2.8-.619,5.56-1.22l.65-.128,3.028-.6,2.822-.555.217-.039.085-.015c2.5-.452,5.079-.919,7.128-1.285,1.375-.212,2.728-.418,3.985-.609,1.438-.221,2.624-.4,3.735-.571,1.095-.123,2.2-.243,4.192-.46l.272-.03,3.306-.36c1.563-.108,3.116-.211,4.7-.316l3.1-.2c2.125-.051,4.268-.1,7.819-.18.783.008,1.552.019,2.527.032h.021l.419.005.56.007c1.213.015,2.588.031,4.313.055l.081.005c2.744.184,5.581.375,7.749.525l1.579.19h.022l.327.04,2.269.278h.01l3.573.439c1.135.2,2.249.4,3.66.647h.01l1.254.223.82.145,1.986.353,6.12,1.61,5.91,2.229,5.639,2.84c1.5.957,3.139,2.008,5.32,3.41,1.166.971,2.329,1.94,4.521,3.77l.131.143,1.274,1.385.008.008c.891.968,1.733,1.882,2.547,2.774.967,1.362,1.93,2.73,3.37,4.78.853,1.615,1.7,3.246,2.73,5.21q.714,1.9,1.42,3.8l.006.016c.235.63.488,1.309.765,2.057l.061.254c.427,1.773.868,3.606,1.509,6.287l.227,1.729.714,5.46.243,6.172.01.265.056,1.433V316.98h-28.38V298.92l-.341.237c-.516.357-1.05.726-1.719,1.183l-1.03.717-1.37.953-.626.445-.728.516q-.491.354-.987.7l-.377.268-3.06,2.19-5.683,3.73-.282.185-.115.076L725,312.079l-.147.077.147-.077-.19.1-.295.154L722.3,313.5l-8.036,3.334-.015.006-7.555,2.265-.785.235-1.456.3c-.741.153-1.659.34-2.855.581l1.742-.354-2.8.569-2.4.337,1.041-.146-.18.027-.545.077h-.024l-.214.03h-.023l-1.487.209-1.578.222-3.657.282-1.794.138-3.418.056Zm-18.541-35.82,1.992,1.9,2.349,1.72.25.144c.508.293,1.111.638,2.38,1.356.561.244,1.129.487,1.629.7l.313.134.988.425c1.035.338,1.967.64,2.849.923l.361.116,1.238.284h.014c.941.216,1.753.4,2.247.513h.006l.171.026.331.051,2.639.4.036.005.608.093,4.08.34,3.953.108.326.009h.091l5.737-.252.193-.008.231-.01.673-.029.247-.011,6.98-1.08,6.819-1.85,1.211-.48,2.215-.877,3.166-1.253.623-.312q2.718-1.351,5.427-2.718l.53-.3q2.106-1.195,4.206-2.4l.313-.179.422-.242.4-.228,5.68-3.67,5.47-3.98v-47.2c-2.541.158-4.644.29-6.82.429l-1.244.087-6.146.433-2.651.206-.986.076c-1.216.094-2.593.2-4.332.338-2.351.193-5.016.412-8.55.71l-.44.039h-.008c-1.708.15-3.473.3-6.623.591-.916.121-1.846.246-2.962.4l-4.068.544-2.653.479c-1.139.205-2.5.45-4.327.781l-3.3.749-3.618.822-5.45,1.76-5.171,2.42-3.3,2.088-.134.085-.069.043-1.315.828-3.209,2.629-1.221,1-.021.025-.051.061c-.755.912-1.493,1.81-2.206,2.678l-.019.023-.5.606-.526.637c-.2.388-.391.775-.612,1.216l-.143.284-1.616,3.21-.559,2.137-.007.028v.012l-.074.279-.116.442c-.182.693-.4,1.51-.66,2.522-.052.638-.1,1.264-.169,2.131v.011l-.013.17-.3,3.787c.015.4.031.8.048,1.191l.023.565c.021.544.044,1.161.07,1.775l.41,3.3c.174.787.348,1.565.69,3.081l.3.9.184.545.006.018c.134.4.285.855.467,1.393l1.239,2.62.233.372.74,1.181.156.25.381.608c.36.438.724.879,1.033,1.252l.757.918.068.065Zm22.841,35.749,1.173-.019c-.39.008-.776.014-1.173.021Zm20.053-3.083,5.69-1.706c-1.909.577-3.857,1.16-5.69,1.708Zm7.891-2.619,2.412-1q-1.109.463-2.412,1m16.645-8.655,1.725-1.132c-.546.36-1.084.713-1.725,1.133Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n        />\r\n        <path\r\n          d=\"M859.025,119.1h-32.17V89.511h32.17Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M857.205,316.99h-28.53V147.48h28.53Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M942.491,316.99h-28.53V80.86h28.53Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n        <path\r\n          d=\"M1053.29,321.7l-4.707-.236-1.735-.086-.948-.048h-.022l-1.293-.2-3.025-.475-2.627-.414-.032-.005-3.648-1-2.962-.815-3.386-1.394-1.6-.659-.221-.091h-.011l.4.165-1.4-.578h-.009l-.869-.489-1.534-.864-.455-.257-2.963-1.667-5.43-4.02-.55-.517c-.7-.654-1.4-1.318-2.15-2.022l-.024-.023-.915-.862-.444-.418-.833-.784-.13-.122-2.7-3.178-.262-.308-.086-.1-.009-.01-.112-.132-.006-.007-1.472-1.733-1.008-1.478c-1.081-1.583-2.419-3.542-3.171-4.653l.077.113-.077-.113-.006-.011-.894-1.653-.439-.809-.135-.248c-.6-1.1-1.276-2.357-2.145-3.97l-1.059-2.5-.377-.891-.8-1.884-.835-1.973-.336-1.045-2.174-6.775-1.95-8.38-.981-6.32-.409-2.631-.84-9.509-.113-4.238-.056-2.1-.1-3.745.26-9.77c.239-2.08.48-4.16,1.12-9.69l1.362-6.609.608-2.951c.925-3.13,1.848-6.218,2.79-9.37l2.782-6.88.125-.309.014-.035.1-.238.013-.031.018-.044.01-.025.02-.048.009-.024.005-.013.038-.093q1.909-3.7,3.829-7.39l.04-.061.1-.154.1-.154.031-.048.03-.046.015-.024.015-.023q2.086-3.244,4.174-6.483l.747-.949.071-.09,1.475-1.876v-.01l.309-.392V169.7l.005-.007.078-.1.061-.077.024-.031.059-.075.01-.012.049-.062.033-.042.028-.035.554-.7.048-.061,1.6-2.035c.506-.515,1.012-1.031,1.528-1.553.984-1,2.118-2.154,3.741-3.8l1.3-1.068,4.5-3.682,6.279-4.09c1.562-.8,3.1-1.582,4.919-2.507.71-.361,1.31-.665,1.782-.9,1.637-.636,3.294-1.274,4.625-1.787l.836-.322.269-.1,1.106-.426,7.06-1.9.141-.022.1-.016c2.181-.347,4.376-.7,6.991-1.111l7.32-.381,5.98.111,5.95.509c.915.137,1.778.268,2.564.389,1.406.213,2.469.375,3.346.511q1.373.3,2.759.608c.672.148,1.722.379,3.081.682.873.27,1.779.552,3.029.942.731.227,1.569.487,2.561.8l4.392,1.633.829.308.269.1c1.883.815,3.849,1.666,5.37,2.329l5.25,2.61V80.86h28.53l-.01,236.13H1107.92V299.23q-2.965,2.431-5.94,4.85l-6.27,4.379-6.58,3.9-.646.322-.526.263-5.678,2.837-6.989,2.62-1.648.428-4.094,1.065-1.448.376-4.351.651-.883.131-2.127.319-3.966.175h-.078l-.678.03-.511.023Zm-35.158-68.44.035.273v.011l.273,1.452.063.333.009.05v.01c.255,1.356.518,2.759.781,4.115.384,1.476.784,3.009,1.45,5.51.294.857.592,1.7,1.31,3.75l.46,1.31.264.579.017.036.808,1.77c.266.585.593,1.3,1.012,2.214.368.645.739,1.28,1.413,2.435v.007l.045.078.958,1.641,1.092,1.451,1.678,2.229,3.16,3.19,3.079,2.341.313.239.035.026.124.094,2.3,1.284,1.655.926c.718.287,1.428.568,2.115.84l.1.041,2.112.839c1.264.33,2.539.66,4.7,1.218h.006c.65.1,1.359.2,2.233.326.89.129,1.831.265,2.877.414l1.17.051.8.036c.883.04,1.8.081,2.865.125l.579.024h.083l4.856-.292.619-.037.257-.015.264-.016h.084l.147-.009h.1l.58-.1.164-.027h.006c1.727-.287,3.514-.583,5.491-.916l.629-.172.23-.062c.908-.248,1.916-.523,3.334-.912.637-.174,1.278-.349,1.906-.523l5.91-2.29.869-.411,1.282-.606.018-.009.6-.283,2.238-1.057.053-.025.657-.311.112-.053.2-.1.107-.05.064-.035,1.585-.881,1.773-.986.965-.536.029-.015.028-.015,1.477-.821.253-.163c.738-.469,1.546-.99,2.884-1.854l.021-.014.392-.253,1.69-1.09.46-.3.47-.347c.921-.676,1.839-1.355,2.728-2.011l.915-.676.529-.392.132-.1.147-.109.133-.1.012-.009.39-.287v-97.28l-1.057-.427c-3.353-1.355-6.519-2.636-9.083-3.662l-.222-.065-.065-.019-1.684-.489-.093-.027-.039-.011c-1.753-.509-4.155-1.207-8.4-2.429-1.814-.284-3.659-.567-6.718-1.035h-.018l-3.154-.483-9.99-.46-1.963.091c-1.041.046-2.229.1-3.867.179l-.236.033c-1.053.148-2.247.316-5.254.747l-5.17,1.3-4.83,1.83-3.415,1.776-.5.26-.586.3-.532.366-.008.005c-1.106.76-2.246,1.545-3.629,2.5l-3.84,3.39-.256.285-.015.016q-1.62,1.8-3.23,3.618l-.4.551-.015.022-.124.173c-.942,1.319-2,2.8-2.6,3.644l-.006.011-.015.026-.006.011-.006.011q-1.232,2.184-2.455,4.374l-.019.035-.2.362-.011.024c-.463,1.054-.941,2.144-2.289,5.236l-.218.662-.012.037-1.65,5-1.461,6.14-.025.157-.258,1.628v.01c-.233,1.466-.473,2.982-.755,4.774l-.63,7.01-.009.313q-.1,3.568-.191,7.137c.031,1.593.067,3.188.1,4.73l.019.831.018.808.021.961c.14,2.083.288,4.166.445,6.37v.012l.035.488c.142,1.154.289,2.3.474,3.761v.018l.175,1.376Zm20.085,66.788c-1.514-.413-3.329-.915-5.926-1.634l2.962.815,2.965.816Zm220.7,1.642-.9-.038c-1.345-.055-2.762-.115-4.725-.2h-.056l-3.089-.132-8.29-1.12-3.757-.9-2.052-.492-2.03-.488-3.435-1.22-.135-.048-2.256-.8-.165-.059-.042-.015-1.334-.476h-.007l-1.933-.942-1.746-.851-3.227-1.575h-.007l-1.9-1.216-4.539-2.9-2.524-2.051-1.918-1.56-1.547-1.259-5.52-5.62-.028-.036-2.006-2.535-2.856-3.61-.07-.089v-.005l-.379-.6c-.427-.674-.869-1.374-1.4-2.219l-1.433-2.272-.017-.027-.111-.175-.053-.084-.073-.116-.349-.553-.452-.716-.026-.042-1.306-2.639-2.334-4.719,2.334,4.719.839,1.7c-.829-1.665-1.7-3.43-2.8-5.665l-.37-.749-.006-.017-1.822-4.836-.1-.266-1.05-2.792L1185.54,268c-.293-1.066-.611-2.234-1.028-3.759v-.018l-.652-2.389,1.623,5.934-1.868-6.828-.161-.875c-.4-2.141-.829-4.482-1.5-8.125l-.99-9.54-.121-3.669-.028-.863c-.087-2.641-.142-4.352-.179-5.547.108-3.383.22-6.88.329-10.09l.764-7.365.226-2.175q.824-4.5,1.665-9c.486-1.8,1-3.662,1.919-7.034l.39-1.426.362-.962.524-1.393c.549-1.46,1.193-3.169,2.094-5.555.81-1.651,1.627-3.3,3.641-7.37,1.169-1.863,2.333-3.71,3.361-5.34l.006-.009.934-1.481c1.806-2.3,3.66-4.645,4.96-6.28l.01-.01c1.238-1.267,2.518-2.577,5.51-5.629l5.99-4.891,2.064-1.323.126-.081h.007c1.19-.763,2.54-1.628,4.252-2.721l1.68-.825,5.23-2.566,7.37-2.63,7.84-1.88,3.437-.464,2.22-.3,2.633-.356c1.17-.052,2.338-.1,3.564-.155h.058l.6-.026,4.552-.2c2.206.1,4.507.194,8.383.366l.226.01h.08l1.269.173.529.072,6.442.876,7.78,1.88.022.008c1.984.71,4.036,1.444,7.318,2.622l.075.037.125.062,2.425,1.192c1.576.774,3.063,1.5,4.264,2.1.769.491,1.523.975,2.665,1.708l.031.02,1.3.836,2.442,1.565,3.339,2.727.073.059,2.578,2.1c1.941,1.975,4.323,4.4,5.53,5.639l.8,1.005.094.118c.838,1.054,1.987,2.5,4.087,5.157l1.906,3.014.009.014,1.053,1.666,1.352,2.136.277.559c1.151,2.321,2.342,4.721,3.371,6.806.736,1.943,1.5,3.953,2.99,7.91l.456,1.66.016.057.007.025c.434,1.579.974,3.543,1.842,6.718.174.932.344,1.857.6,3.258l.06.326.583,3.162.415,2.255.1.906.007.068c.176,1.675.366,3.473.634,6.04l.264,2.525.249,7.592v.009l.081,2.489-.011.329v.025l-.01.319V233l-.01.294v.4c0,.1-.006.206-.01.309v.037c0,.1-.007.205-.01.309v.048l-.011.321v.021l-.011.346-.062,1.877-.177,5.426-.043.433-.187,1.78-.127,1.213q-.22,2.14-.447,4.28l-.192,1.835-1.292,7.009,1.008-5.464c-.289,1.589-.626,3.423-1.116,6.065l-.257,1.391-.529,1.7-.617,2.25-1.234,4.495-.369.973-2.621,6.927-.086.173-.006.012-.15.3-.839,1.69.014-.027c-.4.819-.838,1.694-1.336,2.7l-1.246,2.513-.491.779-2.961,4.668-.865,1.364-.442.556-4.538,5.714-.394.4-3.376,3.431-1.76,1.788-5.99,4.87-1.861,1.191-4.579,2.93-2.588,1.266-.973.475-3.329,1.629-.376.134-.575.207-2.486.888-3.9,1.393-.3.072-.29.07h-.007l-7.186,1.736-2.324.316-5.917.8-.325.014h-.015c-2.389.107-4.856.214-8.351.358m-24.873-31.02,1.959,1.047q1.009.541,2.382,1.273c1.523.59,3.1,1.2,4.659,1.8l4.224,1.1.743.193,5.293.77c.8.041,1.606.078,3.078.145l2.533.115c.741-.032,1.479-.065,2.7-.121h.1l2.736-.124.1-.015.564-.083.1-.015,2.142-.315c.583-.085,1.372-.2,2.308-.34h.011l.021-.006h.01l1.056-.272,3.833-.99,1.108-.429,1.011-.392.1-.039.073-.028,2.325-.9.167-.088c.2-.1.4-.212.607-.32,1.246-.658,2.458-1.3,3.26-1.73l.016-.009.269-.143.233-.163.285-.2.888-.622.558-.391.089-.062c.6-.42,1.241-.869,1.956-1.372l.342-.306c.493-.438,1.015-.906,1.619-1.447l.02-.018.459-.411.054-.049.233-.209.254-.227.33-.294.327-.294.062-.056.55-.619c1.1-1.238,2.009-2.257,2.847-3.206l.2-.28.565-.8c.876-1.244,1.6-2.272,2.278-3.239l.07-.128.113-.206,2.456-4.486,2.23-5.32,1.82-5.82.526-2.333c.325-1.438.633-2.8.894-3.967l.138-.93c.248-1.653.509-3.411.872-5.879l.054-.651c.141-1.635.278-3.3.424-5.053V241.7l.132-1.588.013-.484.025-.934.007-.275.156-6.1-.045-1.8-.111-4.419v-.192l-.039-1.559v-.043l-.07-.862-.052-.632-.112-1.367c-.09-1.108-.213-2.624-.373-4.535-.132-.928-.267-1.86-.455-3.15l-.268-1.846L1305.81,210l-1.41-6.38c-.745-2.4-1.444-4.653-1.82-5.85q-.647-1.565-1.3-3.127c-.345-.829-.652-1.567-.922-2.2-.671-1.241-1.361-2.5-2.614-4.779l-.006-.011-.558-.795q-1.225-1.742-2.461-3.476l-.159-.178v0c-.808-.9-1.644-1.836-3.216-3.566l-1.319-1.165-2.371-2.1-4.01-2.75-4.32-2.25-4.631-1.75-1.76-.445-2.316-.585-.215-.054-.659-.166-5.26-.75-.777-.034-4.793-.216-5.64.25-.912.129-.28.04-3.037.428-.612.086-.48.068-.9.225-4.092,1.025-4.67,1.75-4.341,2.26c-.859.58-1.723,1.171-4.019,2.749l-1.143,1c-.738.646-1.7,1.486-2.557,2.249l-.126.141-.5.551-.017.018c-.552.615-1.309,1.456-2.723,3.039l-.625.883-.028.039-.281.4c-.714,1.008-1.451,2.053-2.075,2.94-.353.647-.7,1.3-1.234,2.277l-.005.01-.579,1.071-.5.93-.277.512-.207.5-.024.058-.144.347-1.835,4.416-.619,2.013-.01.034-.553,1.8q-.312,1.011-.618,2.016c-.411,1.848-.808,3.655-1.213,5.524l-.131.6-.055.255c-.16,1.072-.318,2.152-.578,3.943l-.432,2.967-.012.146v.011c0,.052-.009.1-.013.157-.282,3.48-.476,5.877-.575,7.125l-.158,6.314-.023.9v.083l-.017.674c.012.481.024.959.04,1.511l.16,6.219c.161,1.93.36,4.3.61,7.24v.014l.116.777v.02l.15,1.005.146.982v.011c.163,1.1.347,2.339.591,3.951l.08.36v.012c.391,1.756.794,3.572,1.327,5.918l.39,1.247.036.118v.005l.035.113.015.049.041.129.02.062.032.1c.323,1.039.684,2.2,1.24,3.975v.006c.819,1.968,1.722,4.138,2.217,5.314.63,1.169,1.289,2.382,2.621,4.83q1.5,2.185,3.02,4.36l2.734,3.122.46.525.01.011.176.2,3.7,3.34,3.822,2.691.108.076.088.061Zm82.47,6.175,2.372-2.987c-.87,1.1-1.607,2.027-2.371,2.986Zm131.033,24.85-.953-.04c-1.547-.063-3.191-.134-5.1-.215h-.035l-2.6-.111h-.084l-.236-.032-8.054-1.088h-.013l-1.733-.415-6.094-1.462-2.941-1.046-3.667-1.311-.756-.269-.013-.006-2.231-1.088c-1.263-.616-2.71-1.321-4.649-2.269l-.017-.008-.016-.01-1.678-1.072-2.729-1.743-2.026-1.294-5.5-4.472-.49-.4-5.52-5.62-3.188-4.029-1.772-2.241-.6-.945c-.479-.756-1-1.577-1.642-2.6l1.633,2.582-2.772-4.389-.921-1.458-.165-.334-.016-.033-.053-.106-.735-1.486-.491-.994q-.088-.181-.178-.361v-.008l-2-4.037v-.013l-1.195-3.171-.073-.194-.209-.555-1.5-3.976-1.039-3.8-.992-3.626-.278-1.015-.984-5.333-.077-.415-.6-3.253-.76-7.325-.23-2.215-.053-1.615c-.059-1.767-.138-4.154-.275-8.466.123-3.814.24-7.456.329-10.09l.99-9.54.217-1.175.357-1.94v-.008c.3-1.649.647-3.519,1.085-5.878.442-1.643.884-3.259,1.986-7.28l.182-.664.141-.516c.588-1.569,1.186-3.152,1.764-4.683v-.008l.167-.443.735-1.95.026-.069.285-.757.383-.774c.836-1.7,1.847-3.745,3.258-6.6,1.249-1.989,2.7-4.287,4.3-6.83.7-.891,1.387-1.761,2.336-2.961.867-1.1,1.649-2.086,2.239-2.832l.386-.487.622-.634,2.177-2.228c.884-.9,1.8-1.837,2.721-2.777,1.1-.9,2.2-1.8,3.37-2.754l.02-.016c.961-.786,1.954-1.6,2.6-2.12l3.17-2.031.708-.454,1.431-.915,1.14-.729c1.389-.684,2.744-1.348,4.621-2.268l.05-.024,2.24-1.1,7.37-2.63,7.84-1.88.2-.027,1.673-.226,4.22-.57,1.207-.164h.029l.963-.13c1.358-.062,2.777-.124,4.6-.2,1.23-.054,2.594-.112,4.171-.178l1.887.083,1.093.048.909.039c1.584.068,3.222.138,4.8.21,1.576.21,3.141.424,5.511.748l.309.042,2.421.331,7.78,1.88c1.693.6,3.413,1.221,6.018,2.155l.067.024,1.255.45,5.328,2.622,1.562.769c1.7,1.087,3.256,2.082,6.44,4.129l2.676,2.184.911.744c.76.62,1.555,1.269,2.4,1.963q2.768,2.817,5.53,5.639c1.2,1.5,2.438,3.069,4.98,6.28l.055.087.055.087.169.266c1.243,1.963,2.529,3.992,4.041,6.389l1.61,3.251v.005c.67,1.35,1.362,2.746,2.038,4.114l2.519,6.664q.225.6.471,1.247c.7,2.533,1.508,5.485,2.32,8.46.426,2.294.867,4.666,1.66,9v.024c.235,2.224.479,4.523,1,9.516.043,1.24.083,2.509.122,3.7l.209,6.387-.089,2.73-.056,1.709-.185,5.641-.914,8.729-.083.784v.027l-.054.3-.566,3.07.381-2.065.121-.654-.121.654-1.215,6.589-.2,1.1-.277,1.013-.946,3.444-1.1,3.993-.007.019v.016l-2.977,7.866-3.349,6.753-.3.607-1.66,2.617-2.66,4.193-4.98,6.27-3.259,3.312-2.272,2.308-5.99,4.87-2.876,1.84-.139.089-.4.256-3.025,1.935-.035.017-.035.017h-.005l-.064.031-5.927,2.9-.823.4c-1.509.544-3.044,1.09-4.4,1.572l-1.856.662-1.086.388c-1.428.349-2.835.689-4.155,1.006l-1.032.249-1.722.416-.359.087-.078.019-.435.1-8.255,1.136-2.858.124c-2.883.126-4.736.2-5.832.246m-8.686-.366,1.048.044Zm-26.389-39.661.006.007v.005l.214.245c.707.809,1.438,1.646,2.258,2.578l3.7,3.34,4.019,2.83,1.614.863.343.184c.646.346,1.408.754,2.384,1.273l1.038.4,3.612,1.4,2.393.62,2.588.671c.967.142,1.934.283,2.869.418h.021l.063.009,2.336.339c.564.028,1.114.053,1.751.083l.121.006c1.055.05,2.239.1,3.729.172l5.539-.25.417-.061.665-.1.377-.056,3.771-.555.973-.251,1.382-.356,2.582-.657.3-.117,1.095-.424,3.222-1.248.219-.116c.285-.149.571-.3.9-.477l.264-.14.2-.1.4-.211.508-.27.076-.04,1.757-.932,2.385-1.675.628-.441.987-.694.214-.191c.608-.536,1.222-1.085,2-1.779l1.439-1.287.037-.034.021-.019,1.511-1.7.425-.478,1.459-1.643.006-.007,3.04-4.32.678-1.243.583-1.067,1.249-2.29.023-.043.1-.178.26-.621q.994-2.346,1.97-4.7l.14-.446c.3-.937.607-1.923,1-3.172l.055-.176.636-2.026.112-.495.139-.613c.485-2.147.922-4.088,1.17-5.192l.919-6.194.008-.057a.228.228,0,0,1,.01-.067l.005-.036.005-.036.062-.42.307-3.669c.1-1.158.186-2.227.261-3.118l.043-.513.138-5.375.024-.953.038-1.463-.13-5.187-.07-2.784-.038-.471c-.12-1.483-.256-3.161-.572-6.969-.2-1.389-.4-2.779-1-6.91l-1.41-6.38-.454-1.462-.1-.324-1.2-3.867-.061-.2-.467-1.126c-.53-1.278-1.1-2.653-1.753-4.2q-1.3-2.4-2.62-4.79c-.521-.746-1.01-1.44-1.633-2.32-.495-.7-.965-1.359-1.386-1.95l-.012-.014v-.005c-1.057-1.174-2.149-2.388-3.363-3.731l-2.912-2.573-.057-.051-.721-.637-4.01-2.75-.071-.037-4.249-2.213-4.631-1.75-4.95-1.25-1.553-.222h-.015c-1.391-.2-2.7-.387-3.692-.526l-3.382-.152-1.793-.08-.4-.018-5.64.25-5.32.75-4.99,1.25-4.67,1.75c-1.735.9-3.373,1.746-4.341,2.26q-2.014,1.366-4.017,2.749l-.838.737-.574.5-.381.334c-.656.575-1.332,1.169-1.907,1.676l-2.386,2.662-.325.362-.65.725-.132.187c-.911,1.287-1.853,2.618-2.877,4.073l-.6,1.1-.379.7c-.463.851-.987,1.816-1.624,3-.812,1.945-1.66,3.983-2.21,5.32l-.524,1.706-.278.9v.006c-.356,1.155-.693,2.245-1,3.247-.107.477-.212.955-.334,1.51l-.006.028-.154.7-.915,4.143c-.33,2.28-.661,4.56-1,6.91l-.6,7.439c-.02.742-.038,1.483-.057,2.264v.045l-.025,1.023-.078,3.148-.022.863v.027l-.015.6.011.412v.049l.086,3.351.014.543c.028,1.11.057,2.259.088,3.372l.154,1.823.051.608c.108,1.292.23,2.755.406,4.809l.024.166.043.293.074.5c.218,1.482.464,3.16.856,5.784v.013l.54,2.409.121.541.749,3.34.743,2.366c.311,1,.663,2.119,1.077,3.434l.426,1.026v.009l.2.491,1.576,3.794,2.62,4.83,1.581,2.275c.4.571.864,1.245,1.449,2.084.271.311.541.62.9,1.025Zm93.36,14.317,3.6-4.529c-.954,1.2-1.921,2.419-3.6,4.529m10.152-15.845,1.415-2.853Zm6.995-20.665.66-3.58Z\"\r\n          transform=\"translate(21 -110)\"\r\n          fill=\"currentColor\"\r\n        />\r\n        <path\r\n          d=\"M1675.61,178.589h-1.52l-6.15-1.29-6.22-.91-7.08-.54-7.11-.14-6.59.37-6.48,1.11-6.32,1.83-6.1,2.53-6.25,3.24-6.03,3.6-5.82,3.96-5.56,4.3v120.34h-28.54V147.479h28.54v25.04l8.24-6.33,7.75-5.34,7.24-4.34,6.74-3.34,6.37-2.46,6.57-1.77,6.72-1.08,6.82-.38,10.78.38,1.87.23,2.3.32,2.71.4,3.13.49Z\"\r\n          transform=\"translate(21 -113)\"\r\n          fill=\"currentColor\"\r\n          fillRule=\"evenodd\"\r\n        />\r\n      </g>\r\n    </svg>\r\n  )\r\n}\r\n\r\nexport default TaildoorLogo\r\n"
  },
  {
    "path": "apps/docs/src/components/ThemeChanger.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  ColorMode,\r\n  changeColor,\r\n  changeColorAndMode,\r\n  changeColorMode,\r\n  getCurrentMode,\r\n  getCurrentSeedColor,\r\n  getCurrentThemeString\r\n} from '@/utils/theme'\r\nimport {\r\n  Icon,\r\n  IconButton,\r\n  Label,\r\n  PopoverMenu,\r\n  SegmentedButton,\r\n  SegmentedButtonSet,\r\n  Slider\r\n} from 'actify'\r\nimport { hctFromHex, hexFromHct } from '@/utils/material-color-helpers'\r\n\r\nimport React from 'react'\r\nimport { useAutoTheme } from '../hooks/useAutoTheme'\r\nimport { useTheme } from 'next-themes'\r\n\r\nexport const ThemeChanger = () => {\r\n  useAutoTheme()\r\n  const { setTheme } = useTheme()\r\n  const [open, setOpen] = React.useState(false)\r\n  const [hue, setHue] = React.useState<number>(0)\r\n  const [chroma, setChroma] = React.useState<number>(0)\r\n  const [tone, setTone] = React.useState<number>(0)\r\n  const [hexColor, setHexColor] = React.useState<string>('#ecaa2e')\r\n  const [selectedColorMode, setSelectedColorMode] =\r\n    React.useState<ColorMode | null>(null)\r\n\r\n  React.useLayoutEffect(() => {\r\n    if (hue > 0 || chroma > 0 || tone > 0) {\r\n      const hexColor = hexFromHct(hue, chroma, tone)\r\n      setHexColor(hexColor)\r\n      changeColor(hexColor)\r\n    }\r\n  }, [hue, chroma, tone])\r\n\r\n  const handleChangeColor = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n    const { value: color } = event.target\r\n    setHexColor(color)\r\n    changeColor(color)\r\n    updateHctFromHex(color)\r\n  }\r\n\r\n  const handleChangeColorMode = (mode: ColorMode) => {\r\n    changeColorMode(mode)\r\n    setSelectedColorMode(mode)\r\n    setTheme(mode)\r\n  }\r\n\r\n  const updateHctFromHex = (hexColor: string) => {\r\n    const { hue, chroma, tone } = hctFromHex(hexColor)\r\n    React.startTransition(() => {\r\n      setHue(hue)\r\n      setChroma(chroma)\r\n      setTone(tone)\r\n    })\r\n  }\r\n\r\n  React.useLayoutEffect(() => {\r\n    if (!getCurrentThemeString()) {\r\n      changeColorAndMode('#ECAA2E', 'system')\r\n    }\r\n  }, [])\r\n  React.useEffect(() => {\r\n    if (!selectedColorMode) {\r\n      const _selectedColorMode = getCurrentMode()\r\n      setSelectedColorMode(_selectedColorMode)\r\n    }\r\n    if (hexColor) {\r\n      updateHctFromHex(hexColor)\r\n      changeColor(hexColor)\r\n    } else {\r\n      const _hexColor = getCurrentSeedColor()!\r\n      setHexColor(_hexColor)\r\n      updateHctFromHex(_hexColor)\r\n      changeColor(_hexColor)\r\n    }\r\n  }, [selectedColorMode, hexColor])\r\n\r\n  return (\r\n    <div className=\"relative text-on-surface\">\r\n      <IconButton id=\"theme-menu-anchor\" onPress={() => setOpen(!open)}>\r\n        <Icon>palette</Icon>\r\n      </IconButton>\r\n      <PopoverMenu style={{ right: '0px' }} open={open} setOpen={setOpen}>\r\n        <div className=\"flex flex-col w-56 my-3 mx-4 *:[margin-block-end:16px]\">\r\n          <section className=\"flex relative\">\r\n            <h2 className=\"text-2xl tracking-tighter leading-none\">\r\n              Theme Controls\r\n            </h2>\r\n            <div className=\"static h-6\">\r\n              <IconButton className=\"absolute inset-[-8px_0_auto_auto]\">\r\n                <Icon>content_copy</Icon>\r\n              </IconButton>\r\n            </div>\r\n          </section>\r\n          <section className=\"flex items-center p-3 rounded-2xl text-on-surface-variant bg-surface-variant\">\r\n            <Label htmlFor=\"hex\" className=\"grow\">\r\n              Hex Source Color\r\n            </Label>\r\n            <div className=\"rounded-full size-12 relative border border-on-secondary-container\">\r\n              <div className=\"size-full rounded-[inherit] flex items-center justify-center overflow-hidden\">\r\n                <input\r\n                  id=\"hex\"\r\n                  type=\"color\"\r\n                  value={hexColor}\r\n                  onChange={handleChangeColor}\r\n                  className=\"min-w-[200%] min-h-[200%] appearance-none\"\r\n                />\r\n              </div>\r\n            </div>\r\n          </section>\r\n\r\n          <section className=\"px-3 rounded-2xl text-on-surface-variant bg-surface-variant [--md-slider-inactive-track-color: var(--md-sys-color-on-surface-variant)]\">\r\n            <div className=\"[margin-block:24px]\">\r\n              <Label className=\"block leading-tight ms-2.5 me-2.5\">Hue</Label>\r\n              <Slider\r\n                labeled\r\n                value={hue}\r\n                maxValue={360}\r\n                aria-label=\"hue\"\r\n                // @ts-ignore\r\n                onChange={setHue}\r\n              />\r\n              <div\r\n                className=\"ms-2.5 ml-2.5 h-6 rounded-xl border border-current\"\r\n                style={{\r\n                  background:\r\n                    'linear-gradient(to right, #e7007d 0%, #e90070 1%, #ea0064 2%, #eb0057 3%, #ec044a 4%, #ec0e3d 5%, #eb162f 6%, #ea1c1f 7%, #e92207 8%, #e03400 9%, #d84200 10%, #d04b00 11%, #ca5100 12%, #c45600 13%, #bf5b00 14%, #ba5e00 15%, #b56100 16%, #b16400 17%, #ad6600 18%, #a96800 19%, #a56a00 20%, #a26c00 21%, #9e6e00 22%, #9b7000 23%, #977100 24%, #937300 25%, #907400 26%, #8c7600 27%, #887700 28%, #847800 29%, #7f7a00 30%, #7a7b00 31%, #757d00 32%, #6f7e00 33%, #698000 34%, #618200 35%, #588300 36%, #4c8500 37%, #3d8700 38%, #238a00 39%, #008b18 40%, #008a2f 41%, #008a3d 42%, #008948 43%, #008951 44%, #008858 45%, #00885f 46%, #008865 47%, #00876a 48%, #00876f 49%, #008673 50%, #008677 51%, #00867b 52%, #00857f 53%, #008583 54%, #008586 55%, #00848a 56%, #00848d 57%, #008491 58%, #008394 59%, #008398 60%, #00829c 61%, #00829f 62%, #0081a3 63%, #0081a7 64%, #0080ac 65%, #007fb1 66%, #007fb6 67%, #007ebb 68%, #007dc1 69%, #007bc8 70%, #007ad0 71%, #0078da 72%, #0075e5 73%, #0072f2 74%, #126eff 75%, #326bff 76%, #4568ff 77%, #5365ff 78%, #5f62ff 79%, #695fff 80%, #735bff 81%, #7d57ff 82%, #8653ff 83%, #8e4eff 84%, #9748ff 85%, #a040ff 86%, #aa37ff 87%, #b329ff 88%, #be0dff 89%, #c400f6 90%, #ca00ea 91%, #ce00de 92%, #d300d2 93%, #d600c6 94%, #da00ba 95%, #dd00ad 96%, #e000a1 97%, #e20095 98%, #e50089 99%)'\r\n                }}\r\n              />\r\n            </div>\r\n            <div className=\"[margin-block:24px]\">\r\n              <Label className=\"block leading-tight ms-2.5 me-2.5\">\r\n                Chroma\r\n              </Label>\r\n              <Slider\r\n                labeled\r\n                maxValue={150}\r\n                value={chroma}\r\n                aria-label=\"chroma\"\r\n                // @ts-ignore\r\n                onChange={setChroma}\r\n              />\r\n              <div\r\n                className=\"ms-2.5 ml-2.5 h-6 rounded-xl border border-current\"\r\n                style={{\r\n                  background:\r\n                    'linear-gradient(to right, rgb(119, 119, 119) 0%, rgb(122, 118, 116) 1%, rgb(123, 118, 113) 2%, rgb(125, 118, 110) 3%, rgb(126, 118, 107) 4%, rgb(128, 117, 104) 5%, rgb(129, 117, 101) 6%, rgb(131, 117, 98) 7%, rgb(132, 117, 95) 8%, rgb(134, 116, 92) 9%, rgb(135, 116, 89) 10%, rgb(137, 116, 85) 11%, rgb(138, 116, 82) 12%, rgb(139, 115, 79) 13%, rgb(141, 115, 75) 14%, rgb(142, 115, 72) 15%, rgb(143, 114, 69) 16%, rgb(145, 114, 65) 17%, rgb(146, 114, 62) 18%, rgb(147, 113, 58) 19%, rgb(148, 113, 55) 20%, rgb(149, 113, 51) 21%, rgb(151, 112, 47) 22%, rgb(152, 112, 43) 23%, rgb(153, 112, 39) 24%, rgb(154, 111, 34) 25%, rgb(155, 111, 29) 26%, rgb(156, 111, 24) 27%, rgb(157, 110, 17) 28%, rgb(158, 110, 8) 29%, rgb(159, 110, 0) 30%, rgb(159, 110, 0) 31%, rgb(159, 110, 0) 32%, rgb(159, 110, 0) 33%, rgb(159, 110, 0) 34%, rgb(159, 110, 0) 35%, rgb(159, 110, 0) 36%, rgb(159, 110, 0) 37%, rgb(159, 110, 0) 38%, rgb(159, 110, 0) 39%, rgb(159, 110, 0) 40%, rgb(159, 110, 0) 41%, rgb(159, 110, 0) 42%, rgb(159, 110, 0) 43%, rgb(159, 110, 0) 44%, rgb(159, 110, 0) 45%, rgb(159, 110, 0) 46%, rgb(159, 110, 0) 47%, rgb(159, 110, 0) 48%, rgb(159, 110, 0) 49%, rgb(159, 110, 0) 50%, rgb(159, 110, 0) 51%, rgb(159, 110, 0) 52%, rgb(159, 110, 0) 53%, rgb(159, 110, 0) 54%, rgb(159, 110, 0) 55%, rgb(159, 110, 0) 56%, rgb(159, 110, 0) 57%, rgb(159, 110, 0) 58%, rgb(159, 110, 0) 59%, rgb(159, 110, 0) 60%, rgb(159, 110, 0) 61%, rgb(159, 110, 0) 62%, rgb(159, 110, 0) 63%, rgb(159, 110, 0) 64%, rgb(159, 110, 0) 65%, rgb(159, 110, 0) 66%, rgb(159, 110, 0) 67%, rgb(159, 110, 0) 68%, rgb(159, 110, 0) 69%, rgb(159, 110, 0) 70%, rgb(159, 110, 0) 71%, rgb(159, 110, 0) 72%, rgb(159, 110, 0) 73%, rgb(159, 110, 0) 74%, rgb(159, 110, 0) 75%, rgb(159, 110, 0) 76%, rgb(159, 110, 0) 77%, rgb(159, 110, 0) 78%, rgb(159, 110, 0) 79%, rgb(159, 110, 0) 80%, rgb(159, 110, 0) 81%, rgb(159, 110, 0) 82%, rgb(159, 110, 0) 83%, rgb(159, 110, 0) 84%, rgb(159, 110, 0) 85%, rgb(159, 110, 0) 86%, rgb(159, 110, 0) 87%, rgb(159, 110, 0) 88%, rgb(159, 110, 0) 89%, rgb(159, 110, 0) 90%, rgb(159, 110, 0) 91%, rgb(159, 110, 0) 92%, rgb(159, 110, 0) 93%, rgb(159, 110, 0) 94%, rgb(159, 110, 0) 95%, rgb(159, 110, 0) 96%, rgb(159, 110, 0) 97%, rgb(159, 110, 0) 98%, rgb(159, 110, 0) 99%)'\r\n                }}\r\n              />\r\n            </div>\r\n            <div className=\"[margin-block:24px]\">\r\n              <Label className=\"block leading-tight ms-2.5 me-2.5\">Tone</Label>\r\n              <Slider\r\n                labeled\r\n                value={tone}\r\n                maxValue={100}\r\n                aria-label=\"tone\"\r\n                // @ts-ignore\r\n                onChange={setTone}\r\n              />\r\n              <div\r\n                className=\"ms-2.5 me-2.5 h-6 rounded-xl border border-current\"\r\n                style={{\r\n                  background:\r\n                    'linear-gradient(to right, #000000 0%, #040404 1%, #070707 2%, #0b0b0b 3%, #0e0e0e 4%, #111111 5%, #131313 6%, #151515 7%, #181818 8%, #191919 9%, #1b1b1b 10%, #1d1d1d 11%, #1f1f1f 12%, #222222 13%, #242424 14%, #262626 15%, #282828 16%, #2a2a2a 17%, #2c2c2c 18%, #2e2e2e 19%, #303030 20%, #323232 21%, #353535 22%, #373737 23%, #393939 24%, #3b3b3b 25%, #3e3e3e 26%, #404040 27%, #424242 28%, #444444 29%, #474747 30%, #494949 31%, #4b4b4b 32%, #4e4e4e 33%, #505050 34%, #525252 35%, #555555 36%, #575757 37%, #595959 38%, #5c5c5c 39%, #5e5e5e 40%, #616161 41%, #636363 42%, #666666 43%, #686868 44%, #6a6a6a 45%, #6d6d6d 46%, #6f6f6f 47%, #727272 48%, #747474 49%, #777777 50%, #797979 51%, #7c7c7c 52%, #7f7f7f 53%, #818181 54%, #848484 55%, #868686 56%, #898989 57%, #8b8b8b 58%, #8e8e8e 59%, #919191 60%, #939393 61%, #969696 62%, #989898 63%, #9b9b9b 64%, #9e9e9e 65%, #a0a0a0 66%, #a3a3a3 67%, #a6a6a6 68%, #a8a8a8 69%, #ababab 70%, #aeaeae 71%, #b0b0b0 72%, #b3b3b3 73%, #b6b6b6 74%, #b9b9b9 75%, #bbbbbb 76%, #bebebe 77%, #c1c1c1 78%, #c4c4c4 79%, #c6c6c6 80%, #c9c9c9 81%, #cccccc 82%, #cfcfcf 83%, #d1d1d1 84%, #d4d4d4 85%, #d7d7d7 86%, #dadada 87%, #dddddd 88%, #dfdfdf 89%, #e2e2e2 90%, #e5e5e5 91%, #e8e8e8 92%, #ebebeb 93%, #eeeeee 94%, #f1f1f1 95%, #f3f3f3 96%, #f6f6f6 97%, #f9f9f9 98%, #fcfcfc 99%)'\r\n                }}\r\n              />\r\n            </div>\r\n          </section>\r\n\r\n          <section className=\"flex items-center ![margin-block-end:0]\">\r\n            <SegmentedButtonSet\r\n              role=\"presentation\"\r\n              className=\"w-full\"\r\n              aria-label=\"Color mode\"\r\n            >\r\n              <div\r\n                role=\"group\"\r\n                className=\"h-10 grid w-full grid-flow-col auto-rows-auto auto-cols-[1fr]\"\r\n              >\r\n                <SegmentedButton\r\n                  title=\"dark\"\r\n                  data-value=\"dark\"\r\n                  className=\"rounded-l-full\"\r\n                  icon={<Icon>dark_mode</Icon>}\r\n                  selected={selectedColorMode == 'dark'}\r\n                  onPress={() => handleChangeColorMode('dark')}\r\n                />\r\n                <SegmentedButton\r\n                  title=\"auto\"\r\n                  data-value=\"auto\"\r\n                  icon={<Icon>brightness_medium</Icon>}\r\n                  selected={selectedColorMode == 'system'}\r\n                  onPress={() => handleChangeColorMode('system')}\r\n                />\r\n                <SegmentedButton\r\n                  title=\"light\"\r\n                  data-value=\"light\"\r\n                  className=\"rounded-r-full\"\r\n                  icon={<Icon>light_mode</Icon>}\r\n                  selected={selectedColorMode == 'light'}\r\n                  onPress={() => handleChangeColorMode('light')}\r\n                />\r\n              </div>\r\n            </SegmentedButtonSet>\r\n          </section>\r\n        </div>\r\n      </PopoverMenu>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/components/ViewSource.tsx",
    "content": "import { Icon, IconButton, Tooltip, TooltipTrigger } from 'actify'\r\n\r\nconst hyphenToPascalCase = (str: string) => {\r\n  return str\r\n    .split('-')\r\n    .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\r\n    .join('')\r\n}\r\n\r\nconst ViewSource = ({ name }: { name: string }) => {\r\n  const pascalCase = hyphenToPascalCase(name)\r\n\r\n  const sourceUrl = `https://github.com/actifyjs/actify/tree/main/packages/actify/src/components/${pascalCase}`\r\n  return (\r\n    <TooltipTrigger delay={50} closeDelay={50}>\r\n      <a tabIndex={-1} target=\"_blank\" href={sourceUrl}>\r\n        <IconButton>\r\n          <Icon>\r\n            <svg\r\n              width=\"24\"\r\n              height=\"24\"\r\n              fill=\"none\"\r\n              strokeWidth=\"2\"\r\n              viewBox=\"0 0 24 24\"\r\n              stroke=\"currentColor\"\r\n              strokeLinecap=\"round\"\r\n              strokeLinejoin=\"round\"\r\n              xmlns=\"http://www.w3.org/2000/svg\"\r\n            >\r\n              <path d=\"M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4\" />\r\n              <path d=\"M9 18c-4.51 2-5-2-7-2\" />\r\n            </svg>\r\n          </Icon>\r\n        </IconButton>\r\n      </a>\r\n      <Tooltip placement=\"top\">View source on Github</Tooltip>\r\n    </TooltipTrigger>\r\n  )\r\n}\r\n\r\nexport default ViewSource\r\n"
  },
  {
    "path": "apps/docs/src/hooks/useAutoTheme.ts",
    "content": "import {\r\n  changeColor,\r\n  getCurrentMode,\r\n  getCurrentSeedColor\r\n} from '../utils/theme'\r\n\r\nimport React from 'react'\r\n\r\nconst useAutoTheme = () => {\r\n  React.useEffect(() => {\r\n    if (typeof window.matchMedia !== 'function') return\r\n\r\n    const isDark = window.matchMedia('(prefers-color-scheme: dark)')\r\n    const isLight = window.matchMedia('(prefers-color-scheme: light)')\r\n\r\n    if (typeof isLight.addEventListener === 'function') {\r\n      const handleChange = () => {\r\n        const mode = getCurrentMode()\r\n        const color = getCurrentSeedColor()\r\n        if (mode == 'system') {\r\n          changeColor(color!)\r\n        }\r\n      }\r\n      isDark.addEventListener('change', handleChange)\r\n      isLight.addEventListener('change', handleChange)\r\n      return () => {\r\n        isDark.removeEventListener('change', handleChange)\r\n        isLight.removeEventListener('change', handleChange)\r\n      }\r\n    }\r\n  }, [])\r\n}\r\n\r\nexport { useAutoTheme }\r\n"
  },
  {
    "path": "apps/docs/src/hooks/useMounted.ts",
    "content": "import { useEffect, useState } from 'react'\r\n\r\nexport const useMounted = () => {\r\n  const [mounted, setMounted] = useState(false)\r\n\r\n  useEffect(() => {\r\n    setMounted(true)\r\n  })\r\n  return mounted\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/lib/doc.ts",
    "content": "import fs from 'fs'\r\nimport matter from 'gray-matter'\r\nimport path from 'path'\r\n\r\nconst docsDirectory = path.join(process.cwd(), './content') // process.cwd() returns the absolute path of the current working directory\r\n\r\nfunction getFiles(dir: string, files: string[] = []) {\r\n  const fileList = fs.readdirSync(dir)\r\n  for (const file of fileList) {\r\n    const name = `${dir}/${file}`\r\n    if (fs.statSync(name).isDirectory()) {\r\n      getFiles(name, files)\r\n    } else {\r\n      files.push(name)\r\n    }\r\n  }\r\n  return files\r\n}\r\n\r\nexport function getAllDocSlugs() {\r\n  const files = getFiles(docsDirectory)\r\n\r\n  return files.map((file) => {\r\n    const relative = path.relative(docsDirectory, file)\r\n    return { slug: relative.replace(/\\.md?$/, '').split(path.sep) }\r\n  })\r\n}\r\n\r\nexport function getDocData(slugs: string[]) {\r\n  const fullPath = path.join(docsDirectory, ...slugs) + '.md'\r\n  const fileContents = fs.readFileSync(fullPath, 'utf8')\r\n  const matterResult = matter(fileContents)\r\n\r\n  return {\r\n    content: matterResult.content,\r\n    ...(matterResult.data as { title: string; description?: string })\r\n  }\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/lib/raw.ts",
    "content": "import fs from 'fs/promises'\r\n\r\nexport async function getFileRaw(filepath: string) {\r\n  let content = undefined\r\n  try {\r\n    content = await fs.readFile(filepath, 'utf-8')\r\n  } catch {}\r\n  return content\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/accordion.tsx",
    "content": "import {\r\n  Accordion,\r\n  AccordionContent,\r\n  AccordionHeader,\r\n  AccordionItem,\r\n  Icon\r\n} from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <Accordion open={[, true]}>\r\n      <AccordionItem>\r\n        <AccordionHeader>Overview</AccordionHeader>\r\n        <AccordionContent>\r\n          Welcome to Actify, an open-source React Components Library designed to\r\n          accelerate your React application development. Actify leverages\r\n          TypeScript, Tailwind CSS, Floating-UI, Framer Motion, Material Design\r\n          3, and more to provide a comprehensive set of modern and customizable\r\n          UI components.\r\n        </AccordionContent>\r\n      </AccordionItem>\r\n      <AccordionItem>\r\n        <AccordionHeader asChild>\r\n          {({ active }) => (\r\n            <div\r\n              className={`text-2xl cursor-pointer ${\r\n                active\r\n                  ? 'text-error flex items-center justify-between'\r\n                  : 'flex items-center justify-between'\r\n              }`}\r\n            >\r\n              <p>What is Actify? (custom header style)</p>\r\n              <div\r\n                className={`transition-transform duration-300 ${\r\n                  active ? 'rotate-90' : 'rotate-0'\r\n                }`}\r\n              >\r\n                <Icon className=\"[--md-icon-size:36px]\">arrow_downward</Icon>\r\n              </div>\r\n            </div>\r\n          )}\r\n        </AccordionHeader>\r\n        <AccordionContent>\r\n          Actify is an open source react component library written in Vite +\r\n          React + Tailwind CSS based on Google's Material Design 3. Highly\r\n          inspired by Vuetify. You can use it for write react pages.\r\n        </AccordionContent>\r\n      </AccordionItem>\r\n      <AccordionItem>\r\n        <AccordionHeader>Why Actify? (custom content style)</AccordionHeader>\r\n        <AccordionContent asChild>\r\n          {({ active }) => (\r\n            <div\r\n              className={`grid duration-300 grid-rows-[0fr] transition-[grid-template-rows] ${active ? 'grid-rows-[1fr]' : ''}`}\r\n            >\r\n              <p className=\"overflow-hidden text-2xl text-primary\">\r\n                Actify is a powerful React Component Library built from the\r\n                ground up to be easy to learn and rewarding to master. Our\r\n                collection of UI components maintain a consistent style\r\n                throughout your application with enough customization options to\r\n                meet any use-case.\r\n              </p>\r\n            </div>\r\n          )}\r\n        </AccordionContent>\r\n      </AccordionItem>\r\n    </Accordion>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/app-bars/bottom-app-bar.tsx",
    "content": "import {\r\n  BottomAppBar,\r\n  BottomAppBarFab,\r\n  BottomAppBarIcons,\r\n  Fab,\r\n  Icon\r\n} from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <BottomAppBar className=\"max-w-3xl text-on-primary\">\r\n      <BottomAppBarIcons>\r\n        <Icon>home</Icon>\r\n        <Icon>person</Icon>\r\n        <Icon>photo_camera</Icon>\r\n        <Icon>search</Icon>\r\n      </BottomAppBarIcons>\r\n      <BottomAppBarFab>\r\n        <Fab name=\"fab\" icon={<Icon>add</Icon>} color=\"bg-surface\" />\r\n      </BottomAppBarFab>\r\n    </BottomAppBar>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/app-bars/top-app-bar.tsx",
    "content": "import { TopAppBar } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"space-y-2\">\r\n      <TopAppBar title=\"Title Large\" />\r\n      <TopAppBar title=\"Title Large\" size=\"small\" />\r\n      <TopAppBar title=\"Title Large\" size=\"medium\" />\r\n      <TopAppBar title=\"Title Large\" size=\"large\" />\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/autocomplete.tsx",
    "content": "import { Autocomplete, AutocompleteItem } from 'actify'\n\nexport default () => {\n  return (\n    <div className=\"max-sm:flex-wrap flex gap-4\">\n      <Autocomplete label=\"project\">\n        <AutocompleteItem>Actify</AutocompleteItem>\n        <AutocompleteItem>Ngroker</AutocompleteItem>\n        <AutocompleteItem>Taildoor</AutocompleteItem>\n        <AutocompleteItem>Hugola</AutocompleteItem>\n      </Autocomplete>\n      <Autocomplete label=\"project\" variant=\"outlined\">\n        <AutocompleteItem>Actify</AutocompleteItem>\n        <AutocompleteItem>Ngroker</AutocompleteItem>\n        <AutocompleteItem>Taildoor</AutocompleteItem>\n        <AutocompleteItem>Hugola</AutocompleteItem>\n      </Autocomplete>\n    </div>\n  )\n}\n"
  },
  {
    "path": "apps/docs/src/usages/avatar.tsx",
    "content": "import { Avatar } from 'actify'\r\n\r\nexport default () => <Avatar className=\"size-12 rounded-full\" />\r\n"
  },
  {
    "path": "apps/docs/src/usages/badges.tsx",
    "content": "import { Badge, Button, Icon, IconButton, Slider } from 'actify'\r\n\r\nimport { useState } from 'react'\r\n\r\nexport default () => {\r\n  const color = 'error'\r\n  const [value, setValue] = useState(99)\r\n\r\n  const handleChange = (value: number | number[]) => {\r\n    setValue(value as number)\r\n  }\r\n\r\n  return (\r\n    <>\r\n      <div className=\"flex gap-8\">\r\n        <Badge value={value} color={color}>\r\n          <IconButton>\r\n            <Icon>person</Icon>\r\n          </IconButton>\r\n        </Badge>\r\n        <Badge value={value} color={color}>\r\n          <Button>with button</Button>\r\n        </Badge>\r\n      </div>\r\n      <div className=\"mt-4 flex gap-4 flex-wrap\">\r\n        <Slider\r\n          labeled\r\n          value={value}\r\n          maxValue={999}\r\n          aria-label=\"badge\"\r\n          onChange={handleChange}\r\n        />\r\n      </div>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/before-after.tsx",
    "content": "import { BeforeAfter } from 'actify'\r\n\r\nexport default () => {\r\n  return <BeforeAfter before=\"/images/before.jpg\" after=\"/images/after.png\" />\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/buttons/button.tsx",
    "content": "import { Button } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex flex-col gap-4 *:text-xl\">\r\n      <p>Elevated Button</p>\r\n      <div className=\"grid gap-2 grid-cols-[repeat(auto-fill,minmax(160px,1fr))]\">\r\n        <Button color=\"primary\" variant=\"elevated\">\r\n          primary\r\n        </Button>\r\n        <Button variant=\"elevated\" color=\"secondary\">\r\n          secondary\r\n        </Button>\r\n        <Button variant=\"elevated\" color=\"tertiary\">\r\n          tertiary\r\n        </Button>\r\n        <Button variant=\"elevated\" color=\"error\">\r\n          error\r\n        </Button>\r\n        <Button variant=\"elevated\" isDisabled>\r\n          disabled\r\n        </Button>\r\n      </div>\r\n      <p>Filled Button</p>\r\n      <div className=\"grid gap-2 grid-cols-[repeat(auto-fill,minmax(160px,1fr))]\">\r\n        <Button variant=\"filled\">primary</Button>\r\n        <Button variant=\"filled\" color=\"secondary\">\r\n          secondary\r\n        </Button>\r\n        <Button variant=\"filled\" color=\"tertiary\">\r\n          tertiary\r\n        </Button>\r\n        <Button variant=\"filled\" color=\"error\">\r\n          error\r\n        </Button>\r\n        <Button variant=\"filled\" isDisabled>\r\n          disabled\r\n        </Button>\r\n      </div>\r\n      <p>Tonal Button</p>\r\n      <div className=\"grid gap-2 grid-cols-[repeat(auto-fill,minmax(160px,1fr))]\">\r\n        <Button variant=\"tonal\">primary</Button>\r\n        <Button variant=\"tonal\" color=\"secondary\">\r\n          secondary\r\n        </Button>\r\n        <Button variant=\"tonal\" color=\"tertiary\">\r\n          tertiary\r\n        </Button>\r\n        <Button variant=\"tonal\" color=\"error\">\r\n          error\r\n        </Button>\r\n        <Button variant=\"tonal\" isDisabled>\r\n          disabled\r\n        </Button>\r\n      </div>\r\n      <p>Outlined Button</p>\r\n      <div className=\"grid gap-2 grid-cols-[repeat(auto-fill,minmax(160px,1fr))]\">\r\n        <Button variant=\"outlined\">primary</Button>\r\n        <Button variant=\"outlined\" color=\"secondary\">\r\n          secondary\r\n        </Button>\r\n        <Button variant=\"outlined\" color=\"tertiary\">\r\n          tertiary\r\n        </Button>\r\n        <Button variant=\"outlined\" color=\"error\">\r\n          error\r\n        </Button>\r\n        <Button variant=\"outlined\" isDisabled>\r\n          disabled\r\n        </Button>\r\n      </div>\r\n      <p>Text Button</p>\r\n      <div className=\"grid gap-2 grid-cols-[repeat(auto-fill,minmax(160px,1fr))]\">\r\n        <Button variant=\"text\">primary</Button>\r\n        <Button variant=\"text\" color=\"secondary\">\r\n          secondary\r\n        </Button>\r\n        <Button variant=\"text\" color=\"tertiary\">\r\n          tertiary\r\n        </Button>\r\n        <Button variant=\"text\" color=\"error\">\r\n          error\r\n        </Button>\r\n        <Button variant=\"text\" isDisabled>\r\n          disabled\r\n        </Button>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/buttons/fab.tsx",
    "content": "import { Fab, Icon } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex gap-4\">\r\n      <Fab color=\"error\" icon={<Icon>photo_camera</Icon>} size=\"small\" />\r\n\r\n      <Fab color=\"error\" icon={<Icon>home</Icon>} />\r\n      <Fab color=\"primary\" label=\"ctify\" size=\"large\">\r\n        <svg\r\n          width=\"33.455\"\r\n          height=\"36.987\"\r\n          fill=\"#fff\"\r\n          viewBox=\"0 0 33.455 36.987\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n        >\r\n          <path\r\n            strokeWidth=\"2.5\"\r\n            stroke=\"currentColor\"\r\n            transform=\"translate(-28.272 365)\"\r\n            d=\"M55.047-328.513l-5.238-13.822-14.323,5.317-3.243,8.5H29L42.821-364.5h4.359L61-328.513Zm-6.067-15.969.829,2.147-.829-2.147-5.308-13.745-7.123,18.445\"\r\n          />\r\n        </svg>\r\n      </Fab>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/buttons/icon-button.tsx",
    "content": "import { Icon, IconButton } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex items-center gap-4\">\r\n      <IconButton>\r\n        <Icon>menu</Icon>\r\n      </IconButton>\r\n      <IconButton>\r\n        <svg\r\n          width=\"33.455\"\r\n          height=\"36.987\"\r\n          fill=\"currentColor\"\r\n          viewBox=\"0 0 33.455 36.987\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n        >\r\n          <path\r\n            strokeWidth=\"2.5\"\r\n            stroke=\"currentColor\"\r\n            transform=\"translate(-28.272 365)\"\r\n            d=\"M55.047-328.513l-5.238-13.822-14.323,5.317-3.243,8.5H29L42.821-364.5h4.359L61-328.513Zm-6.067-15.969.829,2.147-.829-2.147-5.308-13.745-7.123,18.445\"\r\n          />\r\n        </svg>\r\n      </IconButton>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/buttons/segmented-button.tsx",
    "content": "import { Icon, SegmentedButton, SegmentedButtonSet } from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nexport default () => {\r\n  const [selectedColorMode, setSelectedColorMode] = React.useState('system')\r\n  const handleChangeColorMode = (mode: string) => {\r\n    setSelectedColorMode(mode)\r\n  }\r\n  return (\r\n    <div className=\"flex items-center gap-4\">\r\n      <SegmentedButtonSet\r\n        role=\"presentation\"\r\n        className=\"w-full\"\r\n        aria-label=\"Color mode\"\r\n      >\r\n        <div\r\n          role=\"group\"\r\n          className=\"h-10 grid w-full grid-flow-col auto-rows-auto auto-cols-[1fr]\"\r\n        >\r\n          <SegmentedButton\r\n            title=\"dark\"\r\n            label=\"dark\"\r\n            data-value=\"dark\"\r\n            className=\"rounded-l-full\"\r\n            selected={selectedColorMode == 'dark'}\r\n            icon={<Icon>dark_mode</Icon>}\r\n            onPress={() => handleChangeColorMode('dark')}\r\n          />\r\n\r\n          <SegmentedButton\r\n            title=\"auto\"\r\n            data-value=\"auto\"\r\n            selected={selectedColorMode == 'system'}\r\n            icon={<Icon>brightness_medium</Icon>}\r\n            onPress={() => handleChangeColorMode('system')}\r\n          />\r\n          <SegmentedButton\r\n            title=\"light\"\r\n            label=\"light\"\r\n            data-value=\"light\"\r\n            className=\"rounded-r-full\"\r\n            selected={selectedColorMode == 'light'}\r\n            icon={<Icon slot=\"icon\">light_mode</Icon>}\r\n            onPress={() => handleChangeColorMode('light')}\r\n          />\r\n        </div>\r\n      </SegmentedButtonSet>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/cards.tsx",
    "content": "import { Card } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex-wrap lg:flex-nowrap flex gap-2 not-prose\">\r\n      <Card>\r\n        <img\r\n          alt=\"\"\r\n          className=\"w-full object-fit\"\r\n          src=\"https://images.unsplash.com/photo-1694736301344-0a2e4b5f51c6?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1780&q=80\"\r\n        />\r\n        <div className=\"block flex-grow flex-shrink p-5 text-on-surface\">\r\n          <div className=\"font-medium mb-3\">default card</div>\r\n          <p>Lorem, ipsum dolor sit amet consectetur adipisicing elit.</p>\r\n        </div>\r\n      </Card>\r\n      <Card variant=\"filled\">\r\n        <img\r\n          alt=\"\"\r\n          className=\"w-full object-fit\"\r\n          src=\"https://images.unsplash.com/photo-1694732519038-dcc9379eb148?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80\"\r\n        />\r\n        <div className=\"block flex-grow flex-shrink p-5 text-surface\">\r\n          <div className=\"font-medium mb-3\">filled card</div>\r\n          <p>\r\n            Tempore rem numquam qui quae placeat, enim ut temporibus inventore\r\n            architecto eaque.\r\n          </p>\r\n        </div>\r\n      </Card>\r\n      <Card variant=\"outlined\">\r\n        <img\r\n          alt=\"\"\r\n          className=\"w-full object-fit\"\r\n          src=\"https://images.unsplash.com/photo-1682687982029-edb9aecf5f89?ixlib=rb-4.0.3&ixid=M3wxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2071&q=80\"\r\n        />\r\n        <div className=\"block flex-grow flex-shrink p-5 text-on-surface\">\r\n          <div className=\"font-medium mb-3\">outlined card</div>\r\n          <p>\r\n            At fugit expedita quibusdam veniam rerum omnis itaque optio aliquam\r\n            quo saepe laborum, autem quia sint atque? Placeat molestias\r\n            dignissimos illo quos.\r\n          </p>\r\n        </div>\r\n      </Card>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/carousel.tsx",
    "content": "import { Carousel, CarouselItem } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <Carousel autoPlay control indicator infinite>\r\n      <CarouselItem>\r\n        <img\r\n          alt=\"carousel 1\"\r\n          className=\"h-full w-full object-cover\"\r\n          src=\"https://images.unsplash.com/photo-1692812298405-db9c1ca093ed?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1932&q=80\"\r\n        />\r\n      </CarouselItem>\r\n      <CarouselItem>\r\n        <img\r\n          alt=\"carousel 2\"\r\n          className=\"h-full w-full object-cover\"\r\n          src=\"https://images.unsplash.com/photo-1692902295604-6c5109aa55a4?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1932&q=80\"\r\n        />\r\n      </CarouselItem>\r\n      <CarouselItem>\r\n        <img\r\n          alt=\"carousel 3\"\r\n          className=\"h-full w-full object-cover\"\r\n          src=\"https://images.unsplash.com/photo-1692589250460-1ea229c9942a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=2070&q=80\"\r\n        />\r\n        <p className=\"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-6xl bg-surface/90 p-2 rounded-xl\">\r\n          Custom Text\r\n        </p>\r\n      </CarouselItem>\r\n    </Carousel>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/checkbox.tsx",
    "content": "import { Checkbox, CheckboxGroup } from 'actify'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nexport default () => {\r\n  const [selected, setSelected] = useState(['actify'])\r\n\r\n  const [isIndeterminate, setIsIndeterminate] = useState(false)\r\n  const [allSelected, setAllSelected] = useState(false)\r\n\r\n  useEffect(() => {\r\n    if (selected.length >= 1) {\r\n      if (selected.length == 4) {\r\n        setIsIndeterminate(false)\r\n        setAllSelected(true)\r\n      } else {\r\n        setAllSelected(false)\r\n        setIsIndeterminate(true)\r\n      }\r\n    } else {\r\n      setIsIndeterminate(false)\r\n      setAllSelected(false)\r\n    }\r\n  }, [selected])\r\n\r\n  return (\r\n    <>\r\n      <div className=\"flex flex-wrap gap-4\">\r\n        <Checkbox color=\"primary\" defaultSelected>\r\n          Primary\r\n        </Checkbox>\r\n        <Checkbox color=\"secondary\" aria-label=\"secondary\" />\r\n        <Checkbox color=\"tertiary\" aria-label=\"tertiary\" />\r\n        <Checkbox color=\"error\" aria-label=\"error\" />\r\n      </div>\r\n      <Checkbox\r\n        isIndeterminate={isIndeterminate}\r\n        isSelected={allSelected}\r\n        onChange={() => {\r\n          setSelected(\r\n            selected.length == 4\r\n              ? []\r\n              : ['actify', 'ngroker', 'taildoor', 'hugola']\r\n          )\r\n        }}\r\n      >\r\n        Check all\r\n      </Checkbox>\r\n      <CheckboxGroup label=\"Project\" value={selected} onChange={setSelected}>\r\n        <Checkbox value=\"actify\">Actify</Checkbox>\r\n        <Checkbox value=\"ngroker\">Ngroker</Checkbox>\r\n        <Checkbox value=\"taildoor\">Taildoor</Checkbox>\r\n        <Checkbox value=\"hugola\">Hugola</Checkbox>\r\n      </CheckboxGroup>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/chips.tsx",
    "content": "import { ChipGroup, ChipItem, useListData, type Selection } from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nexport default () => {\r\n  const [selected, setSelected] = React.useState<Selection>(new Set(['Actify']))\r\n  const list = useListData({\r\n    initialItems: [\r\n      { id: 1, name: 'Actify' },\r\n      { id: 2, name: 'Ngroker' },\r\n      { id: 3, name: 'Taildoor' },\r\n      { id: 4, name: 'Hugola' }\r\n    ]\r\n  })\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-4\">\r\n      <ChipGroup label=\"Project\">\r\n        <ChipItem>Actify</ChipItem>\r\n        <ChipItem>Ngroker</ChipItem>\r\n        <ChipItem>Taildoor</ChipItem>\r\n        <ChipItem>Hugola</ChipItem>\r\n      </ChipGroup>\r\n      <ChipGroup\r\n        label=\"Categories with remove\"\r\n        items={list.items}\r\n        onRemove={(keys) => list.remove(...keys)}\r\n      >\r\n        {(item) => <ChipItem>{item.name}</ChipItem>}\r\n      </ChipGroup>\r\n      <ChipGroup\r\n        label=\"selection example\"\r\n        selectionMode=\"multiple\"\r\n        selectedKeys={selected}\r\n        onSelectionChange={setSelected}\r\n      >\r\n        <ChipItem key=\"laundry\">Laundry</ChipItem>\r\n        <ChipItem key=\"fitness\">Fitness center</ChipItem>\r\n        <ChipItem key=\"parking\">Parking</ChipItem>\r\n        <ChipItem key=\"pool\">Swimming pool</ChipItem>\r\n        <ChipItem key=\"breakfast\">Breakfast</ChipItem>\r\n      </ChipGroup>\r\n      <p>\r\n        Current selection (controlled):{' '}\r\n        {selected === 'all' ? 'all' : [...selected].join(', ')}\r\n      </p>\r\n      <ChipGroup label=\"Links\">\r\n        <ChipItem href=\"https://actifyjs.com/\" target=\"_blank\">\r\n          Actifyjs\r\n        </ChipItem>\r\n        <ChipItem href=\"https://ngroker.com/\" target=\"_blank\">\r\n          Ngroker\r\n        </ChipItem>\r\n        <ChipItem href=\"https://taildoor.com/\" target=\"_blank\">\r\n          Taildoor\r\n        </ChipItem>\r\n        <ChipItem href=\"https://hugola.app/\" target=\"_blank\">\r\n          Hugola\r\n        </ChipItem>\r\n      </ChipGroup>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/dialogs.tsx",
    "content": "import {\r\n  Button,\r\n  Dialog,\r\n  DialogActivator,\r\n  Modal,\r\n  TextField,\r\n  useDialogState\r\n} from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nexport default () => {\r\n  const state = useDialogState({})\r\n  return (\r\n    <div className=\"flex gap-4\">\r\n      <DialogActivator label=\"Open Dialog with activator\">\r\n        {(close) => (\r\n          <Dialog title=\"Enter your name\">\r\n            <form className=\"mt-4 flex flex-col gap-2\">\r\n              <TextField label=\"username\" />\r\n              <TextField label=\"password\" />\r\n              <Button onPress={close}>Submit</Button>\r\n            </form>\r\n          </Dialog>\r\n        )}\r\n      </DialogActivator>\r\n      <Button variant=\"outlined\" onPress={state.open}>\r\n        Open Dialog with button\r\n      </Button>\r\n      <Modal state={state}>\r\n        <Dialog title=\"Enter your name\">\r\n          <form className=\"mt-4 flex flex-col gap-2\">\r\n            <TextField label=\"username\" variant=\"outlined\" />\r\n            <TextField label=\"password\" variant=\"outlined\" />\r\n            <Button color=\"error\" onPress={state.close}>\r\n              Cancel\r\n            </Button>\r\n            <Button>Confirm</Button>\r\n          </form>\r\n        </Dialog>\r\n      </Modal>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/divider.tsx",
    "content": "import { Divider } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex flex-col gap-2\">\r\n      <div className=\"flex flex-col\">\r\n        Content above\r\n        <Divider />\r\n        Content below\r\n      </div>\r\n      <div className=\"flex\">\r\n        Content left\r\n        <Divider orientation=\"vertical\" />\r\n        Content right\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/focus-ring.tsx",
    "content": "import { FocusRing, useFocusRing } from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nfunction FocusRingInput({ inward }: { inward?: boolean }) {\r\n  const { isFocused, focusProps } = useFocusRing()\r\n\r\n  return (\r\n    <span className=\"relative\">\r\n      <input {...focusProps} className=\"outline-none text-primary bg-[field]\" />\r\n      {isFocused && <FocusRing type={inward ? 'inward' : 'outward'} />}\r\n    </span>\r\n  )\r\n}\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex items-center gap-4\">\r\n      <div className=\"relative mb-2\">\r\n        <h6>type outward</h6>\r\n        <FocusRingInput />\r\n      </div>\r\n      <div className=\"relative mb-2\">\r\n        <h6>type inward</h6>\r\n        <FocusRingInput inward />\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/lists.tsx",
    "content": "import { List, ListItem, ListGroup } from 'actify'\r\n\r\nexport default () => {\r\n  const list = ['HTML', 'Tailwind CSS', 'Vue']\r\n\r\n  return (\r\n    <List>\r\n      {list.map((item) => (\r\n        <ListItem key={item}>{item}</ListItem>\r\n      ))}\r\n      <ListGroup label=\"React\">\r\n        {['Next.js', 'Floating-UI', 'Framer Motion', 'Actify'].map((item) => (\r\n          <ListItem key={item}>{item}</ListItem>\r\n        ))}\r\n      </ListGroup>\r\n    </List>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/menus.tsx",
    "content": "import {\r\n  Icon,\r\n  IconButton,\r\n  Menu,\r\n  MenuButton,\r\n  MenuItem,\r\n  MenuPopover,\r\n  Submenu\r\n} from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex gap-8\">\r\n      <MenuButton label=\"Open with label\">\r\n        <MenuItem>Edit</MenuItem>\r\n        <MenuItem>Duplicate</MenuItem>\r\n      </MenuButton>\r\n\r\n      <MenuButton\r\n        label={\r\n          <IconButton>\r\n            <Icon>More_Horiz</Icon>\r\n          </IconButton>\r\n        }\r\n      >\r\n        <MenuItem>Cut</MenuItem>\r\n        <MenuItem>Copy</MenuItem>\r\n        <MenuItem>Delete</MenuItem>\r\n        <Submenu>\r\n          <MenuItem>Share</MenuItem>\r\n          <MenuPopover>\r\n            <Menu>\r\n              <MenuItem>SMS</MenuItem>\r\n              <MenuItem>Twitter</MenuItem>\r\n              <Submenu>\r\n                <MenuItem>Email</MenuItem>\r\n                <MenuPopover>\r\n                  <Menu>\r\n                    <MenuItem>Work</MenuItem>\r\n                    <MenuItem>Personal</MenuItem>\r\n                  </Menu>\r\n                </MenuPopover>\r\n              </Submenu>\r\n            </Menu>\r\n          </MenuPopover>\r\n        </Submenu>\r\n      </MenuButton>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/navigation/navigation-bar.tsx",
    "content": "import { Icon, ListItem, NavigationBar } from 'actify'\r\n\r\nexport default () => {\r\n  const list = [\r\n    {\r\n      label: 'Home',\r\n      icon: <Icon>home</Icon>\r\n    },\r\n    {\r\n      label: 'Camera',\r\n      icon: <Icon>photo_camera</Icon>\r\n    },\r\n    {\r\n      label: 'User',\r\n      icon: <Icon>person</Icon>\r\n    },\r\n    {\r\n      label: 'Settings',\r\n      icon: <Icon>settings</Icon>\r\n    }\r\n  ]\r\n\r\n  return (\r\n    <NavigationBar>\r\n      {list.map((item, index) => (\r\n        <ListItem\r\n          key={index}\r\n          className=\"h-[52px] p-0 flex flex-col justify-between\"\r\n        >\r\n          {item.icon}\r\n          <span className=\"text-xs font-semibold mt-1\">{item.label}</span>\r\n        </ListItem>\r\n      ))}\r\n    </NavigationBar>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/navigation/navigation-drawer.tsx",
    "content": "import {\r\n  DrawerActivator,\r\n  DrawerContent,\r\n  Icon,\r\n  IconButton,\r\n  NavigationDrawer,\r\n  Tooltip,\r\n  TooltipGroup\r\n} from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex gap-2 items-center\">\r\n      <TooltipGroup>\r\n        <NavigationDrawer placement=\"left\">\r\n          <DrawerActivator asChild>\r\n            <IconButton>\r\n              <Icon>dock_to_right</Icon>\r\n            </IconButton>\r\n          </DrawerActivator>\r\n          <DrawerContent>\r\n            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam\r\n            dolore aliquid, voluptatibus sequi earum corporis cumque ab odio\r\n            reiciendis eos possimus iure quidem molestias rem tempora itaque\r\n            nihil maxime temporibus?\r\n          </DrawerContent>\r\n        </NavigationDrawer>\r\n\r\n        <NavigationDrawer placement=\"top\">\r\n          <DrawerActivator asChild>\r\n            <IconButton>\r\n              <Icon>toolbar</Icon>\r\n            </IconButton>\r\n          </DrawerActivator>\r\n          <DrawerContent>\r\n            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam\r\n            dolore aliquid, voluptatibus sequi earum corporis cumque ab odio\r\n            reiciendis eos possimus iure quidem molestias rem tempora itaque\r\n            nihil maxime temporibus?\r\n          </DrawerContent>\r\n        </NavigationDrawer>\r\n\r\n        <NavigationDrawer placement=\"right\">\r\n          <DrawerActivator asChild>\r\n            <IconButton>\r\n              <Icon>dock_to_left</Icon>\r\n            </IconButton>\r\n          </DrawerActivator>\r\n          <DrawerContent>\r\n            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam\r\n            dolore aliquid, voluptatibus sequi earum corporis cumque ab odio\r\n            reiciendis eos possimus iure quidem molestias rem tempora itaque\r\n            nihil maxime temporibus?\r\n          </DrawerContent>\r\n        </NavigationDrawer>\r\n\r\n        <NavigationDrawer placement=\"bottom\">\r\n          <DrawerActivator asChild>\r\n            <IconButton>\r\n              <Icon>dock_to_bottom</Icon>\r\n            </IconButton>\r\n          </DrawerActivator>\r\n          <DrawerContent>\r\n            Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam\r\n            dolore aliquid, voluptatibus sequi earum corporis cumque ab odio\r\n            reiciendis eos possimus iure quidem molestias rem tempora itaque\r\n            nihil maxime temporibus?\r\n          </DrawerContent>\r\n        </NavigationDrawer>\r\n      </TooltipGroup>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/navigation/navigation-rail.tsx",
    "content": "import { NavigationRail } from 'actify'\r\n\r\nexport default () => {\r\n  const items = [\r\n    {\r\n      label: 'Home',\r\n      icon: 'home',\r\n      badge: 1234\r\n    },\r\n    {\r\n      label: 'Camera',\r\n      icon: 'photo_camera'\r\n    },\r\n    {\r\n      label: 'User',\r\n      icon: 'person'\r\n    },\r\n    {\r\n      label: 'Settings',\r\n      icon: 'settings'\r\n    }\r\n  ]\r\n\r\n  return (\r\n    <NavigationRail\r\n      items={items}\r\n      value={1}\r\n      defaultValue={0}\r\n      setValue={(value) => console.log(value)}\r\n    />\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/pagination.tsx",
    "content": "import { Pagination } from 'actify'\r\nimport { useState } from 'react'\r\n\r\nexport default () => {\r\n  const totalPages = 20\r\n  const [currentPage, setCurrentPage] = useState(1)\r\n\r\n  const handlePageChange = (page: number) => {\r\n    setCurrentPage(page)\r\n  }\r\n\r\n  return (\r\n    <Pagination\r\n      totalPages={totalPages}\r\n      currentPage={currentPage}\r\n      onPageChange={handlePageChange}\r\n    />\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/progress/circular-progress.tsx",
    "content": "import { CircularProgress, Label, Slider, Switch } from 'actify'\r\n\r\nimport { useState } from 'react'\r\n\r\nexport default () => {\r\n  const [value, setValue] = useState<number>(50)\r\n  const [isIndeterminate, setIsIndeterminate] = useState(true)\r\n\r\n  const handleChange = (value: number | number[]) => {\r\n    setValue(value as number)\r\n  }\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-4\">\r\n      <CircularProgress\r\n        aria-label=\"circular progress\"\r\n        isIndeterminate={isIndeterminate}\r\n        value={value}\r\n      />\r\n      <Label className=\"flex items-center gap-2\">\r\n        <span>indeterminate</span>\r\n        <Switch\r\n          icons\r\n          color=\"primary\"\r\n          aria-label=\"indeterminate\"\r\n          isSelected={isIndeterminate}\r\n          onChange={setIsIndeterminate}\r\n        />\r\n      </Label>\r\n      <Label className=\"flex flex-1 items-center gap-2\">\r\n        <span>value</span>\r\n        <Slider\r\n          labeled\r\n          value={value}\r\n          aria-label=\"circular progress\"\r\n          onChange={handleChange}\r\n        />\r\n      </Label>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/progress/linear-progress.tsx",
    "content": "import { Label, LinearProgress, Slider, Switch } from 'actify'\r\n\r\nimport { useState } from 'react'\r\n\r\nexport default () => {\r\n  const [value, setValue] = useState(50)\r\n  const [isIndeterminate, setIsIndeterminate] = useState(true)\r\n\r\n  const handleChange = (value: number | number[]) => {\r\n    setValue(value as number)\r\n  }\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-4\">\r\n      <LinearProgress\r\n        value={value}\r\n        maxValue={1000}\r\n        aria-label=\"linear progress\"\r\n        isIndeterminate={isIndeterminate}\r\n      />\r\n\r\n      <Label className=\"flex items-center gap-2\">\r\n        <span>indeterminate</span>\r\n        <Switch\r\n          icons\r\n          color=\"primary\"\r\n          aria-label=\"indeterminate\"\r\n          isSelected={isIndeterminate}\r\n          onChange={setIsIndeterminate}\r\n        />\r\n      </Label>\r\n      <Label className=\"flex flex-1 items-center gap-2\">\r\n        <span>value</span>\r\n        <Slider\r\n          labeled\r\n          value={value}\r\n          aria-label=\"linear progress\"\r\n          onChange={handleChange}\r\n        />\r\n      </Label>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/radio.tsx",
    "content": "import { Radio, RadioGroup } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex flex-col gap-4\">\r\n      <h2>Radio With label</h2>\r\n\r\n      <RadioGroup name=\"project\" aria-label=\"project\" defaultValue=\"actify\">\r\n        <Radio value=\"actify\">Actify</Radio>\r\n        <Radio value=\"ngroker\">Ngroker</Radio>\r\n        <Radio value=\"taildoor\">Taildoor</Radio>\r\n        <Radio value=\"hugola\">Hugola</Radio>\r\n      </RadioGroup>\r\n\r\n      <h2>RadioGroup With label</h2>\r\n      <RadioGroup\r\n        label=\"project\"\r\n        name=\"project\"\r\n        defaultValue=\"taildoor\"\r\n        orientation=\"horizontal\"\r\n      >\r\n        <Radio value=\"actify\" aria-label=\"actify\" />\r\n        <Radio value=\"ngroker\" aria-label=\"ngroker\" />\r\n        <Radio value=\"taildoor\" aria-label=\"taildoor\" />\r\n        <Radio value=\"hugola\" aria-label=\"hugola\" />\r\n      </RadioGroup>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/ripple.tsx",
    "content": "import { Label, Ripple } from 'actify'\r\n\r\nimport { useId } from 'react'\r\n\r\nexport default () => {\r\n  const id = useId()\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-4\">\r\n      <Label>1. Attached to the parent element</Label>\r\n      <div className=\"relative border border-outline rounded-lg p-4\">\r\n        <Ripple />\r\n        <span>span</span>\r\n      </div>\r\n\r\n      <Label>2. Attached to a referenced element</Label>\r\n      <div className=\"relative border border-outline rounded-lg p-4\">\r\n        <Ripple id={id} />\r\n        <button id={id} className=\"absolute inset-0\">\r\n          button\r\n        </button>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/select.tsx",
    "content": "import { Select, SelectOption } from 'actify'\r\n\r\nimport React from 'react'\r\n\r\nexport default () => {\r\n  const [selectedKey, setSelectedKey] = React.useState(\"\");\r\n\r\n  const options = [\r\n    {id: \"actify\", value: \"Actify\"},\r\n    {id: \"ngroker\", value: \"Ngroker\"},\r\n    {id: \"taildoor\", value: \"Taildoor\"},\r\n    {id: \"hugola\", value: \"Hugola\"}\r\n  ];\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-5\">\r\n      <div className=\"max-sm:flex-wrap flex gap-4\">\r\n        <Select label=\"Select Project\">\r\n          <SelectOption>Actify</SelectOption>\r\n          <SelectOption>Ngroker</SelectOption>\r\n          <SelectOption>Taildoor</SelectOption>\r\n          <SelectOption>Hugola</SelectOption>\r\n        </Select>\r\n        <Select variant=\"outlined\" label=\"Select Project\">\r\n          <SelectOption>Actify</SelectOption>\r\n          <SelectOption>Ngroker</SelectOption>\r\n          <SelectOption>Taildoor</SelectOption>\r\n          <SelectOption>Hugola</SelectOption>\r\n        </Select>\r\n      </div>\r\n      <div>\r\n        <h6 className='mb-3 font-semibold'>Controlled Example:</h6>\r\n        <Select variant=\"outlined\" label=\"Controlled Select\" selectedKey={selectedKey}\r\n        onSelectionChange={key => setSelectedKey(key.toString())}>\r\n          <>\r\n          {options.map((option) => (\r\n            <SelectOption key={option.id}>\r\n              {option.value}\r\n            </SelectOption>\r\n          ))}\r\n          </>\r\n        </Select>\r\n        <p className='mt-1'>Selected key: {selectedKey}</p>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/sheets/bottom-sheets.tsx",
    "content": "import {\r\n  BottomSheets,\r\n  BottomSheetsActivator,\r\n  BottomSheetsContent,\r\n  Button\r\n} from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <BottomSheets>\r\n      <BottomSheetsActivator asChild>\r\n        <Button>Open bottom sheet</Button>\r\n      </BottomSheetsActivator>\r\n      <BottomSheetsContent>\r\n        Lorem ipsum dolor sit amet consectetur adipisicing elit. Eaque, deserunt\r\n        autem maiores reprehenderit mollitia asperiores eius voluptate\r\n        voluptatem amet tenetur sapiente sint quasi expedita repellendus ut\r\n        eligendi. Tempora, magnam hic.\r\n      </BottomSheetsContent>\r\n    </BottomSheets>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/sheets/side-sheets.tsx",
    "content": "import {\r\n  Button,\r\n  SideSheets,\r\n  SideSheetsAction,\r\n  SideSheetsActivator,\r\n  SideSheetsBody,\r\n  SideSheetsContent,\r\n  SideSheetsHeader\r\n} from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <SideSheets divider>\r\n      <SideSheetsActivator asChild>\r\n        <Button>Open side sheet</Button>\r\n      </SideSheetsActivator>\r\n      <SideSheetsContent>\r\n        <SideSheetsHeader>Tittle</SideSheetsHeader>\r\n        <SideSheetsBody>\r\n          Lorem ipsum dolor sit amet consectetur adipisicing elit. Eaque,\r\n          deserunt autem maiores reprehenderit mollitia asperiores eius\r\n          voluptate voluptatem amet tenetur sapiente sint quasi expedita\r\n          repellendus ut eligendi. Tempora, magnam hic.\r\n        </SideSheetsBody>\r\n        <SideSheetsAction>\r\n          <Button>action</Button>\r\n        </SideSheetsAction>\r\n      </SideSheetsContent>\r\n    </SideSheets>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/sliders.tsx",
    "content": "import { Slider } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <div className=\"flex flex-col\">\r\n      <div className=\"flex flex-col\">\r\n        <Slider labeled label=\"Opacity\" defaultValue={66} />\r\n        <Slider\r\n          labeled\r\n          label=\"Range Price\"\r\n          defaultValue={[20, 50]}\r\n          formatOptions={{ style: 'currency', currency: 'USD' }}\r\n        />\r\n      </div>\r\n      <Slider\r\n        labeled\r\n        step={0.1}\r\n        minValue={35}\r\n        maxValue={38}\r\n        defaultValue={36.5}\r\n        orientation=\"vertical\"\r\n        label=\"Body Temperature\"\r\n      />\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/snackbar.tsx",
    "content": "import { Button, SnackbarProvider } from 'actify'\n\nexport default () => {\n  return (\n    <SnackbarProvider>\n      {(state) => (\n        <Button\n          onPress={() =>\n            state.add(\n              'Lorem ipsum dolor, sit amet consectetur adipisicing elit. Delectus, nam totam repellat tenetur accusamus cum. Perferendis hic voluptas necessitatibus autem architecto? Fuga mollitia maiores enim unde error porro, velit iste.'\n            )\n          }\n        >\n          Show toast\n        </Button>\n      )}\n    </SnackbarProvider>\n  )\n}\n"
  },
  {
    "path": "apps/docs/src/usages/swiper.tsx",
    "content": "import { Swiper, SwiperItem } from 'actify'\r\n\r\nexport default () => {\r\n  const items = [\r\n    {\r\n      title: 'Swiper 1',\r\n      src: 'https://images.unsplash.com/photo-1691977504044-fa2e8c813431?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=8'\r\n    },\r\n    {\r\n      title: 'Swiper 2',\r\n      src: 'https://images.unsplash.com/photo-1691763731792-c5ee77f9112a?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1524&q=80'\r\n    },\r\n    {\r\n      title: 'Swiper 3',\r\n      src: 'https://images.unsplash.com/photo-1653916986137-996184bc4af0?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1932&q=80'\r\n    }\r\n  ]\r\n  return (\r\n    <Swiper autoPlay className=\"h-[320px]\">\r\n      {items.map((item, index) => (\r\n        <SwiperItem key={index}>\r\n          <img\r\n            src={item.src}\r\n            alt={item.title}\r\n            className=\"h-full w-full object-cover\"\r\n          />\r\n        </SwiperItem>\r\n      ))}\r\n    </Swiper>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/switch.tsx",
    "content": "import { Label, Switch } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <>\r\n      <div className=\"flex gap-2 flex-wrap justify-between\">\r\n        <Switch color=\"primary\" aria-label=\"primary\" />\r\n        <Switch color=\"secondary\" aria-label=\"secondary\" />\r\n        <Switch color=\"tertiary\" aria-label=\"tertiary\" />\r\n        <Switch defaultSelected color=\"error\" aria-label=\"error\" />\r\n        <Switch isDisabled aria-label=\"disabled\" />\r\n      </div>\r\n\r\n      <div className=\"mt-4 flex gap-2\">\r\n        <Switch>label</Switch>\r\n        <Label className=\"flex items-center gap-2\">\r\n          <Switch color=\"primary\" aria-label=\"primary\" />\r\n          <span>with label</span>\r\n        </Label>\r\n        <Label className=\"flex items-center gap-2\">\r\n          <Switch color=\"primary\" defaultSelected icons aria-label=\"primary\" />\r\n          <span>with icons</span>\r\n        </Label>\r\n      </div>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/table.tsx",
    "content": "import {\r\n  Cell,\r\n  Column,\r\n  Row,\r\n  Table,\r\n  TableBody,\r\n  TableHeader,\r\n  useAsyncList\r\n} from 'actify'\r\n\r\ninterface StarWarsChar {\r\n  name: string\r\n  url: string\r\n  [x: string]: string\r\n}\r\n\r\nexport default () => {\r\n  const list = useAsyncList<StarWarsChar>({\r\n    async load({ signal }) {\r\n      let res = await fetch('https://swapi.py4e.com/api/people/?search', {\r\n        signal\r\n      })\r\n      let json = await res.json()\r\n      return {\r\n        items: json.results\r\n      }\r\n    },\r\n    async sort({ items, sortDescriptor }) {\r\n      return {\r\n        items: items.sort((a, b) => {\r\n          const first = a[sortDescriptor.column]\r\n          const second = b[sortDescriptor.column]\r\n\r\n          let cmp =\r\n            (parseInt(first, 10) || first) < (parseInt(second, 10) || second)\r\n              ? -1\r\n              : 1\r\n          if (sortDescriptor.direction === 'descending') {\r\n            cmp *= -1\r\n          }\r\n          return cmp\r\n        })\r\n      }\r\n    }\r\n  })\r\n\r\n  return (\r\n    <>\r\n      <Table\r\n        selectionMode=\"multiple\"\r\n        selectionBehavior=\"toggle\"\r\n        onSortChange={list.sort}\r\n        sortDescriptor={list.sortDescriptor}\r\n        aria-label=\"Example static collection table\"\r\n        style={{ height: '210px', maxWidth: '400px' }}\r\n        paginator={{ pageSizes: [5, 10, 20] }}\r\n      >\r\n        <TableHeader>\r\n          <Column key=\"name\" allowsSorting>\r\n            Name\r\n          </Column>\r\n          <Column key=\"height\" allowsSorting>\r\n            Height\r\n          </Column>\r\n          <Column key=\"mass\" allowsSorting>\r\n            Mass\r\n          </Column>\r\n          <Column key=\"birth_year\" allowsSorting>\r\n            Birth year\r\n          </Column>\r\n        </TableHeader>\r\n        <TableBody items={list.items}>\r\n          {(item) => (\r\n            <Row key={item.name}>\r\n              {(columnKey) => <Cell>{item[columnKey]}</Cell>}\r\n            </Row>\r\n          )}\r\n        </TableBody>\r\n      </Table>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/tabs.tsx",
    "content": "import { Divider, TabItem, Tabs } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <>\r\n      <Tabs>\r\n        <TabItem title=\"Actify\">\r\n          Lorem, ipsum dolor sit amet consectetur adipisicing elit. Eligendi,\r\n          harum commodi labore illo in est delectus ratione sed impedit expedita\r\n          architecto molestias doloremque minus cupiditate nulla praesentium\r\n          tenetur quos voluptatibus!\r\n        </TabItem>\r\n        <TabItem title=\"Ngroker\">\r\n          <img src=\"https://ngroker.com/screenshots/dark.png\" alt=\"ngroker\" />\r\n        </TabItem>\r\n        <TabItem title=\"Taildoor\">\r\n          <video\r\n            loop\r\n            controls\r\n            autoPlay\r\n            playsInline\r\n            poster=\"https://taildoor.com/docs/poster.webp\"\r\n            className=\"w-full rounded-lg inline-block shadow-lg ring-0\"\r\n          >\r\n            <source\r\n              type=\"video/webm\"\r\n              src=\"https://taildoor.com/docs/taildoor.webm\"\r\n            />\r\n          </video>\r\n        </TabItem>\r\n      </Tabs>\r\n\r\n      <Divider inset />\r\n\r\n      <Tabs orientation=\"vertical\" contentClassName=\"p-4 bg-surface-variant\">\r\n        <TabItem title=\"Actify\">\r\n          Lorem ipsum dolor sit amet consectetur adipisicing elit. Dicta eum\r\n          molestiae eos, deserunt eius atque quisquam voluptatum inventore\r\n          corporis aspernatur quo facere numquam asperiores consequatur ab\r\n          magnam maiores perferendis nesciunt?\r\n        </TabItem>\r\n        <TabItem title=\"Ngroker\">\r\n          <img src=\"https://ngroker.com/screenshots/dark.png\" alt=\"ngroker\" />\r\n        </TabItem>\r\n        <TabItem title=\"Taildoor\">\r\n          <video\r\n            loop\r\n            controls\r\n            autoPlay\r\n            playsInline\r\n            poster=\"https://taildoor.com/docs/poster.webp\"\r\n            className=\"w-full rounded-lg inline-block shadow-lg ring-0\"\r\n          >\r\n            <source\r\n              type=\"video/webm\"\r\n              src=\"https://taildoor.com/docs/taildoor.webm\"\r\n            />\r\n          </video>\r\n        </TabItem>\r\n      </Tabs>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/terminal.tsx",
    "content": "import { Terminal } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <Terminal>\r\n      <span className=\"text-indigo-500\">yarn</span>\r\n      <span className=\"text-indigo-500\"> add</span> actify\r\n    </Terminal>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/text-fields.tsx",
    "content": "import { Icon, IconButton, TextField } from 'actify'\r\n\r\nimport { useState } from 'react'\r\n\r\nexport default () => {\r\n  const [showPassword, setShowPassword] = useState(false)\r\n  const handleClick = () => {\r\n    setShowPassword((prev) => !prev)\r\n  }\r\n\r\n  return (\r\n    <>\r\n      <form className=\"grid gap-2 grid-cols-1 sm:grid-cols-2\">\r\n        <TextField\r\n          label=\"Email\"\r\n          suffixText=\"@actifyjs.com\"\r\n          leadingIcon={<Icon>email</Icon>}\r\n        />\r\n\r\n        <TextField\r\n          label=\"Password\"\r\n          variant=\"outlined\"\r\n          autoComplete=\"off\"\r\n          type={showPassword ? 'text' : 'password'}\r\n          leadingIcon={<Icon>lock</Icon>}\r\n          trailingIcon={\r\n            <IconButton onPress={handleClick}>\r\n              <Icon>{showPassword ? 'visibility_off' : 'visibility'}</Icon>\r\n            </IconButton>\r\n          }\r\n        />\r\n      </form>\r\n      <TextField label=\"textarea\" type=\"textarea\" />\r\n      <TextField variant=\"outlined\" label=\"textarea\" type=\"textarea\" />\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/usages/tooltips.tsx",
    "content": "import { Button, Tooltip, TooltipTrigger } from 'actify'\r\n\r\nexport default () => {\r\n  return (\r\n    <>\r\n      <TooltipTrigger>\r\n        <Button>Show Tooltip</Button>\r\n        <Tooltip>Hello Tooltip</Tooltip>\r\n      </TooltipTrigger>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/utils/apply-theme-string.ts",
    "content": "type WithStylesheet = typeof globalThis & {\r\n  [stylesheetName: string]: CSSStyleSheet | undefined\r\n}\r\n\r\n/**\r\n * Applies a stringified CSS theme to a document or shadowroot by creating or\r\n * reusing a constructable stylesheet. It also saves the themeString to\r\n * localstorage.\r\n *\r\n * NOTE: This function is inlined into the head of the document for performance\r\n * reasons as well as used by material-color-helpers which is lazily loaded. So\r\n * do not overload this file with slow logic since it will block render.\r\n *\r\n * @param doc Document or ShadowRoot to apply theme.\r\n * @param themeString Stringified CSS of a material theme to apply to the given\r\n *     document or shadowroot.\r\n * @param ssName Optional global identifier of the constructable stylesheet and\r\n *     used to generate the localstorage name.\r\n */\r\nexport function applyThemeString(\r\n  doc: DocumentOrShadowRoot,\r\n  themeString: string,\r\n  ssName = 'material-theme'\r\n) {\r\n  // Get constructable stylesheet\r\n  let sheet = (globalThis as WithStylesheet)[ssName]\r\n  // Create a new sheet if it doesn't exist already and save it globally.\r\n  if (!sheet) {\r\n    sheet = new CSSStyleSheet()\r\n    ;(globalThis as WithStylesheet)[ssName] = sheet\r\n    doc.adoptedStyleSheets.push(sheet)\r\n  }\r\n\r\n  // Set the color of the URL bar because we are cool like that.\r\n  const surfaceContainer = themeString.match(\r\n    /--md-sys-color-surface-container:(.+?);/\r\n  )?.[1]\r\n  if (surfaceContainer) {\r\n    document\r\n      .querySelector('meta[name=\"theme-color\"]')\r\n      ?.setAttribute('content', surfaceContainer)\r\n  }\r\n\r\n  sheet.replaceSync(themeString)\r\n  localStorage.setItem(ssName, themeString)\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/utils/cn.ts",
    "content": "import { clsx, type ClassValue } from 'clsx'\nimport { twMerge } from 'tailwind-merge'\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n"
  },
  {
    "path": "apps/docs/src/utils/material-color-helpers.ts",
    "content": "import {\r\n  Hct,\r\n  MaterialDynamicColors,\r\n  SchemeContent,\r\n  argbFromHex,\r\n  hexFromArgb\r\n} from '@material/material-color-utilities'\r\n\r\nimport { applyThemeString } from './apply-theme-string.ts'\r\n\r\ninterface Theme {\r\n  [tokenName: string]: string\r\n}\r\n\r\n/**\r\n * A Mapping of color token name to MCU HCT color function generator.\r\n */\r\nconst materialColors = {\r\n  background: MaterialDynamicColors.background,\r\n  'on-background': MaterialDynamicColors.onBackground,\r\n  surface: MaterialDynamicColors.surface,\r\n  'surface-dim': MaterialDynamicColors.surfaceDim,\r\n  'surface-bright': MaterialDynamicColors.surfaceBright,\r\n  'surface-container-lowest': MaterialDynamicColors.surfaceContainerLowest,\r\n  'surface-container-low': MaterialDynamicColors.surfaceContainerLow,\r\n  'surface-container': MaterialDynamicColors.surfaceContainer,\r\n  'surface-container-high': MaterialDynamicColors.surfaceContainerHigh,\r\n  'surface-container-highest': MaterialDynamicColors.surfaceContainerHighest,\r\n  'on-surface': MaterialDynamicColors.onSurface,\r\n  'surface-variant': MaterialDynamicColors.surfaceVariant,\r\n  'on-surface-variant': MaterialDynamicColors.onSurfaceVariant,\r\n  'inverse-surface': MaterialDynamicColors.inverseSurface,\r\n  'inverse-on-surface': MaterialDynamicColors.inverseOnSurface,\r\n  outline: MaterialDynamicColors.outline,\r\n  'outline-variant': MaterialDynamicColors.outlineVariant,\r\n  shadow: MaterialDynamicColors.shadow,\r\n  scrim: MaterialDynamicColors.scrim,\r\n  'surface-tint': MaterialDynamicColors.surfaceTint,\r\n  primary: MaterialDynamicColors.primary,\r\n  'on-primary': MaterialDynamicColors.onPrimary,\r\n  'primary-container': MaterialDynamicColors.primaryContainer,\r\n  'on-primary-container': MaterialDynamicColors.onPrimaryContainer,\r\n  'inverse-primary': MaterialDynamicColors.inversePrimary,\r\n  secondary: MaterialDynamicColors.secondary,\r\n  'on-secondary': MaterialDynamicColors.onSecondary,\r\n  'secondary-container': MaterialDynamicColors.secondaryContainer,\r\n  'on-secondary-container': MaterialDynamicColors.onSecondaryContainer,\r\n  tertiary: MaterialDynamicColors.tertiary,\r\n  'on-tertiary': MaterialDynamicColors.onTertiary,\r\n  'tertiary-container': MaterialDynamicColors.tertiaryContainer,\r\n  'on-tertiary-container': MaterialDynamicColors.onTertiaryContainer,\r\n  error: MaterialDynamicColors.error,\r\n  'on-error': MaterialDynamicColors.onError,\r\n  'error-container': MaterialDynamicColors.errorContainer,\r\n  'on-error-container': MaterialDynamicColors.onErrorContainer\r\n}\r\n\r\n/**\r\n * Converts a hex value to a HCT tuple.\r\n *\r\n * @param value A stringified hex color e.g. '#C01075'\r\n * @return Material Color Utilities HCT color tuple.\r\n */\r\nexport function hctFromHex(value: string) {\r\n  return Hct.fromInt(argbFromHex(value))\r\n}\r\n\r\n/**\r\n * Converts a hue chroma and tone to a hex color value clamped in the hex\r\n * colorspace.\r\n *\r\n * @param hue The hue of the color of value [0,360]\r\n * @param chroma The chroma of the color of value [0,150]\r\n * @param tone The tone of the color of value [0,100]\r\n * @return A clamped, stringified hex color value representing the HCT values.\r\n */\r\nexport function hexFromHct(hue: number, chroma: number, tone: number) {\r\n  const hct = Hct.from(hue, chroma, tone)\r\n  const value = hct.toInt()\r\n  return hexFromArgb(value)\r\n}\r\n\r\n/**\r\n * Generates a theme object mapping of kebab-system-color-token to stringified\r\n * sRGB hex value in the Material SchemeContent color scheme given a single\r\n * color.\r\n *\r\n * @param color A stringified hex color e.g. '#C01075'\r\n * @param isDark Whether or not to generate a dark mode theme.\r\n * @return A theme object that maps the sys color token to its value (not a\r\n *     custom property).\r\n */\r\nexport function themeFromSourceColor(color: string, isDark: boolean): Theme {\r\n  const scheme = new SchemeContent(Hct.fromInt(argbFromHex(color)), isDark, 0)\r\n  const theme: { [key: string]: string } = {}\r\n\r\n  for (const [key, value] of Object.entries(materialColors)) {\r\n    theme[key] = hexFromArgb(value.getArgb(scheme));\r\n  }\r\n  return theme\r\n}\r\n\r\n/**\r\n * Generates a stylesheet string of custom properties from the given theme, and\r\n * applies the styles to the given document or shadow root, and caches the value\r\n * in memory and localstorage given an optional ssName.\r\n *\r\n * @param doc Document or ShadowRoot to apply theme.\r\n * @param theme A theme object that maps the sys color token to its value\r\n *     (output of themeFromSourceColor).\r\n * @param ssName Optional global identifier of the constructable stylesheet and\r\n *     used to generate the localstorage name.\r\n */\r\nexport function applyMaterialTheme(\r\n  doc: DocumentOrShadowRoot,\r\n  theme: Theme,\r\n  ssName = 'material-theme'\r\n) {\r\n  let styleObject: Record<string, string> = {}\r\n  let styleString = ':root,:host{'\r\n  for (const [key, value] of Object.entries(theme)) {\r\n    styleString += `--md-sys-color-${key}:${value};`\r\n    styleObject[`--md-sys-color-${key}`] = value\r\n  }\r\n  styleString += '}'\r\n\r\n  localStorage.setItem('actify-theme', JSON.stringify(styleObject))\r\n  applyThemeString(doc, styleString, ssName)\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/utils/theme.ts",
    "content": "import {\r\n  applyMaterialTheme,\r\n  themeFromSourceColor\r\n} from './material-color-helpers.ts'\r\n\r\n/** Color mode, either overriding light/dark or the user's preference. */\r\nexport type ColorMode = 'light' | 'dark' | 'system'\r\n\r\n/**\r\n * Generates a Material Theme from a given color and dark mode boolean, and\r\n * applies the theme to the document and lets the app know that the theme has\r\n * changed.\r\n *\r\n * @param color The source color to generate the theme.\r\n * @param isDark Whether or not the theme should be in dark mode.\r\n */\r\nfunction applyThemeFromColor(color: string, isDark: boolean) {\r\n  const theme = themeFromSourceColor(color, isDark)\r\n  applyMaterialTheme(document, theme)\r\n}\r\n\r\n/**\r\n * Determines whether or not the mode should be Dark. This also means\r\n * calculating whether it should be dark if the current mode is 'auto'.\r\n *\r\n * @param mode The current color mode 'light', 'dark', or 'auto'.\r\n * @param saveAutoMode (Optional) Whether or not to save last auto mode to\r\n *     localstorage. Set to false if you simply want to query whether auto mode\r\n *     is dark or not. Defaults to true.\r\n * @return Whether or not the dark mode color tokens should apply.\r\n */\r\nexport function isModeDark(mode: ColorMode, saveAutoMode = true) {\r\n  let isDark = mode === 'dark'\r\n\r\n  // Determines whether the auto mode should display light or dark.\r\n  if (mode === 'system') {\r\n    isDark = window.matchMedia('(prefers-color-scheme: dark)').matches\r\n    if (saveAutoMode) {\r\n      // We have to save this because if the user closes the tab when it's light\r\n      // and reopens it when it's dark, we need to know whether the last applied\r\n      // 'auto' mode was correct.\r\n      saveLastSavedAutoColorMode(isDark ? 'dark' : 'light')\r\n    }\r\n  }\r\n\r\n  return isDark\r\n}\r\n\r\n/**\r\n * Gets the current stringified material theme css string from localstorage.\r\n *\r\n * @return The current stringified material theme css string.\r\n */\r\nexport function getCurrentThemeString(): string | null {\r\n  return localStorage.getItem('material-theme')\r\n}\r\n\r\n/**\r\n * Gets the current color mode from localstorage.\r\n *\r\n * @return The current color mode.\r\n */\r\nexport function getCurrentMode(): ColorMode | null {\r\n  return localStorage.getItem('color-mode') as ColorMode | null\r\n}\r\n\r\n/**\r\n * Saves the given color mode to localstorage.\r\n *\r\n * @param mode The color mode to save to localstorage.\r\n */\r\nexport function saveColorMode(mode: ColorMode) {\r\n  localStorage.setItem('color-mode', mode)\r\n}\r\n\r\n/**\r\n * Gets the current seed color from localstorage.\r\n *\r\n * @return The current seed color.\r\n */\r\nexport function getCurrentSeedColor(): string | null {\r\n  return localStorage.getItem('seed-color')\r\n}\r\n\r\n/**\r\n * Saves the given seed color to localstorage.\r\n *\r\n * @param color The seed color to save to local storage.\r\n */\r\nexport function saveSeedColor(color: string) {\r\n  localStorage.setItem('seed-color', color)\r\n}\r\n\r\n/**\r\n * Gets last applied color mode while in \"auto\" from localstorage.\r\n *\r\n * @return The last applied color mode while in \"auto\".\r\n */\r\nexport function getLastSavedAutoColorMode() {\r\n  return localStorage.getItem('last-auto-color-mode') as 'light' | 'dark' | null\r\n}\r\n\r\n/**\r\n * Saves last applied color mode while in \"auto\" from localstorage.\r\n *\r\n * @param mode The last applied color mode while in \"auto\" to be saved to local\r\n *     storage.\r\n */\r\nexport function saveLastSavedAutoColorMode(mode: 'light' | 'dark') {\r\n  localStorage.setItem('last-auto-color-mode', mode)\r\n}\r\n\r\n/**\r\n * Generates and applies a new theme due to a change in source color.\r\n *\r\n * @param color The new source color from which to generate the new theme.\r\n */\r\nexport function changeColor(color: string) {\r\n  const lastColorMode = getCurrentMode()!\r\n  const isDark = isModeDark(lastColorMode)\r\n\r\n  applyThemeFromColor(color, isDark)\r\n  saveSeedColor(color)\r\n}\r\n\r\n/**\r\n * Generates and applies a new theme due to a change in color mode.\r\n *\r\n * @param mode The new color mode from which to generate the new theme.\r\n */\r\nexport function changeColorMode(mode: ColorMode) {\r\n  const color = getCurrentSeedColor()!\r\n  const isDark = isModeDark(mode)\r\n\r\n  applyThemeFromColor(color, isDark)\r\n  saveColorMode(mode)\r\n}\r\n\r\n/**\r\n * Generates and applies a new theme due to a change in both source color and\r\n * color mode.\r\n *\r\n * @param color The new source color from which to generate the new theme.\r\n * @param mode The new color mode from which to generate the new theme.\r\n */\r\nexport function changeColorAndMode(color: string, mode: ColorMode) {\r\n  const isDark = isModeDark(mode)\r\n\r\n  applyThemeFromColor(color, isDark)\r\n  saveSeedColor(color)\r\n  saveColorMode(mode)\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/views/icon.tsx",
    "content": "'use client'\r\n\r\nimport { Icon, Label, LinearProgress, Switch, TextField } from 'actify'\r\nimport { RefObject, useEffect, useRef, useState, useTransition } from 'react'\r\n\r\nimport DocPreview from '@/components/DocPreview'\r\nimport icons from './icons.json'\r\nimport { toast } from 'sonner'\r\nimport { useInView } from 'motion/react'\r\n\r\nconst IconWrapper = ({\r\n  children,\r\n  fill\r\n}: {\r\n  children: string\r\n  fill: boolean\r\n}) => {\r\n  const ref = useRef<HTMLDivElement>(null)\r\n  const isInView = useInView(ref as RefObject<Element>)\r\n\r\n  const copy = (icon: string) => {\r\n    navigator.clipboard.writeText(icon).then(\r\n      () => {\r\n        toast.success(`Icon ${icon} Copied!`)\r\n      },\r\n      () => {\r\n        toast.error('Copy Failed!')\r\n      }\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div\r\n      ref={ref}\r\n      title={children}\r\n      className=\"flex items-center justify-center cursor-pointer p-2 text-primary bg-on-primary rounded hover:text-inverse-primary hover:outline\"\r\n    >\r\n      {isInView ? (\r\n        <Icon\r\n          fill={fill}\r\n          className=\"[--md-icon-size:36px]\"\r\n          onClick={() => copy(children)}\r\n        >\r\n          {children}\r\n        </Icon>\r\n      ) : (\r\n        <div className=\"size-9 p-2 animate-pulse\" />\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport default () => {\r\n  const [selected, setSelected] = useState(false)\r\n  const [isPending, startTransition] = useTransition()\r\n  const [filterIcons, setFilterIcons] = useState<string[]>([])\r\n\r\n  useEffect(() => {\r\n    setFilterIcons(icons)\r\n  }, [])\r\n\r\n  const handleChange = (value: string) => {\r\n    const reg = new RegExp(value, 'i')\r\n    startTransition(() => {\r\n      setFilterIcons(icons.filter((icon) => reg.test(icon)))\r\n    })\r\n  }\r\n\r\n  return (\r\n    <div className=\"flex flex-col gap-2\">\r\n      <Label>Outlined</Label>\r\n      <DocPreview code=\"<Icon>home</Icon>\" />\r\n      <Label>Filled</Label>\r\n      <DocPreview code=\"<Icon fill>home</Icon>\" />\r\n\r\n      <Label className=\"flex items-center gap-2\">\r\n        <Switch\r\n          color=\"primary\"\r\n          aria-label=\"type\"\r\n          isSelected={selected}\r\n          onChange={(value) => setSelected(value)}\r\n        />\r\n        <span>{selected ? 'Filled' : 'Outlined'}</span>\r\n      </Label>\r\n\r\n      <TextField\r\n        onChange={handleChange}\r\n        label={`Search ${filterIcons.length} icons`}\r\n      />\r\n\r\n      <LinearProgress aria-label=\"loading\" isIndeterminate={isPending} />\r\n      <div className=\"mt-2 gap-2 grid grid-cols-[repeat(auto-fill,minmax(52px,1fr))]\">\r\n        {filterIcons.map((icon) => (\r\n          <IconWrapper key={icon} fill={selected}>\r\n            {icon}\r\n          </IconWrapper>\r\n        ))}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/src/views/icons.json",
    "content": "[\r\n  \"Search\",\r\n  \"Home\",\r\n  \"Menu\",\r\n  \"Close\",\r\n  \"Settings\",\r\n  \"Check_Circle\",\r\n  \"Favorite\",\r\n  \"Add\",\r\n  \"Delete\",\r\n  \"Arrow_Back\",\r\n  \"Star\",\r\n  \"Chevron_Right\",\r\n  \"Logout\",\r\n  \"Arrow_Forward_iOS\",\r\n  \"Add_Circle\",\r\n  \"Cancel\",\r\n  \"Arrow_Back_iOS\",\r\n  \"Arrow_Forward\",\r\n  \"Arrow_Drop_Down\",\r\n  \"More_Vert\",\r\n  \"Check\",\r\n  \"Check_Box\",\r\n  \"Open_In_New\",\r\n  \"Toggle_On\",\r\n  \"Grade\",\r\n  \"Refresh\",\r\n  \"Check_Box_Outline_Blank\",\r\n  \"Login\",\r\n  \"Chevron_Left\",\r\n  \"Radio_Button_Unchecked\",\r\n  \"More_Horiz\",\r\n  \"Download\",\r\n  \"Apps\",\r\n  \"Arrow_Right_Alt\",\r\n  \"Radio_Button_Checked\",\r\n  \"Remove\",\r\n  \"Bolt\",\r\n  \"Toggle_Off\",\r\n  \"Arrow_Upward\",\r\n  \"Filter_List\",\r\n  \"Delete_Forever\",\r\n  \"Autorenew\",\r\n  \"Key\",\r\n  \"Sync\",\r\n  \"Block\",\r\n  \"Arrow_Downward\",\r\n  \"Sort\",\r\n  \"Add_Box\",\r\n  \"Restart_Alt\",\r\n  \"Shopping_Cart_Checkout\",\r\n  \"Menu_Open\",\r\n  \"Expand_Circle_Down\",\r\n  \"Undo\",\r\n  \"Backspace\",\r\n  \"Arrow_Circle_Right\",\r\n  \"Done_All\",\r\n  \"Arrow_Right\",\r\n  \"Do_Not_Disturb_On\",\r\n  \"Open_In_Full\",\r\n  \"Manage_Search\",\r\n  \"Double_Arrow\",\r\n  \"Sync_Alt\",\r\n  \"Done_Outline\",\r\n  \"Zoom_In\",\r\n  \"Drag_Indicator\",\r\n  \"Fullscreen\",\r\n  \"Keyboard_Double_Arrow_Right\",\r\n  \"Star_Half\",\r\n  \"iOS_Share\",\r\n  \"Settings_Accessibility\",\r\n  \"Arrow_Drop_Up\",\r\n  \"Reply\",\r\n  \"Exit_To_App\",\r\n  \"Unfold_More\",\r\n  \"Library_Add\",\r\n  \"Cached\",\r\n  \"Terminal\",\r\n  \"Select_Check_Box\",\r\n  \"Change_Circle\",\r\n  \"Disabled_By_Default\",\r\n  \"Swap_Horiz\",\r\n  \"Swap_Vert\",\r\n  \"Close_Fullscreen\",\r\n  \"App_Registration\",\r\n  \"Download_For_Offline\",\r\n  \"Arrow_Circle_Left\",\r\n  \"Arrow_Circle_Up\",\r\n  \"Dataset\",\r\n  \"File_Open\",\r\n  \"Minimize\",\r\n  \"Open_With\",\r\n  \"Add_Task\",\r\n  \"Keyboard_Double_Arrow_Left\",\r\n  \"Start\",\r\n  \"Keyboard_Double_Arrow_Down\",\r\n  \"Create_New_Folder\",\r\n  \"Forward\",\r\n  \"Downloading\",\r\n  \"Upload\",\r\n  \"Settings_Applications\",\r\n  \"Compare_Arrows\",\r\n  \"Redo\",\r\n  \"Publish\",\r\n  \"Zoom_Out\",\r\n  \"Arrow_Left\",\r\n  \"HTML\",\r\n  \"Token\",\r\n  \"Switch_Access_Shortcut\",\r\n  \"Fullscreen_Exit\",\r\n  \"Sort_By_Alpha\",\r\n  \"Arrow_Circle_Down\",\r\n  \"Delete_Sweep\",\r\n  \"Indeterminate_Check_Box\",\r\n  \"First_Page\",\r\n  \"View_Timeline\",\r\n  \"Keyboard_Double_Arrow_Up\",\r\n  \"Settings_Backup_Restore\",\r\n  \"Sync_Problem\",\r\n  \"Assistant_Navigation\",\r\n  \"Arrow_Drop_Down_Circle\",\r\n  \"Clear_All\",\r\n  \"Heart_Plus\",\r\n  \"Density_Medium\",\r\n  \"Expand\",\r\n  \"Filter_Alt_Off\",\r\n  \"Subdirectory_Arrow_Right\",\r\n  \"Last_Page\",\r\n  \"Arrow_Outward\",\r\n  \"Unfold_Less\",\r\n  \"Download_Done\",\r\n  \"123\",\r\n  \"Swipe_Left\",\r\n  \"Saved_Search\",\r\n  \"System_Update_Alt\",\r\n  \"Place_Item\",\r\n  \"Output\",\r\n  \"Javascript\",\r\n  \"Search_Off\",\r\n  \"Maximize\",\r\n  \"Swipe_Up\",\r\n  \"Select_All\",\r\n  \"Fit_Screen\",\r\n  \"Hide_Source\",\r\n  \"Dynamic_Form\",\r\n  \"Check_Small\",\r\n  \"Swipe_Right\",\r\n  \"Browse_Gallery\",\r\n  \"Switch_Access_Shortcut_Add\",\r\n  \"Density_Small\",\r\n  \"CSS\",\r\n  \"Assistant_Direction\",\r\n  \"Move_Up\",\r\n  \"Youtube_Searched_For\",\r\n  \"Swap_Horizontal_Circle\",\r\n  \"Data_Thresholding\",\r\n  \"Install_Mobile\",\r\n  \"Abc\",\r\n  \"Move_Down\",\r\n  \"Dataset_Linked\",\r\n  \"Restore_From_Trash\",\r\n  \"Enable\",\r\n  \"Install_Desktop\",\r\n  \"Browse_Activity\",\r\n  \"Keyboard_Command_Key\",\r\n  \"View_Kanban\",\r\n  \"Reply_All\",\r\n  \"Switch_Left\",\r\n  \"Compress\",\r\n  \"Swipe_Down\",\r\n  \"Swap_Vertical_Circle\",\r\n  \"Apps_Outage\",\r\n  \"Remove_Done\",\r\n  \"Filter_List_Off\",\r\n  \"Star_Rate\",\r\n  \"Hide\",\r\n  \"Sync_Disabled\",\r\n  \"Switch_Right\",\r\n  \"Swipe_Vertical\",\r\n  \"More_Up\",\r\n  \"Pinch\",\r\n  \"Keyboard_Control_Key\",\r\n  \"Tab\",\r\n  \"Eject\",\r\n  \"Key_Off\",\r\n  \"PHP\",\r\n  \"Subdirectory_Arrow_Left\",\r\n  \"View_Cozy\",\r\n  \"Transcribe\",\r\n  \"Do_Not_Disturb_Off\",\r\n  \"Send_Time_Extension\",\r\n  \"Width_Normal\",\r\n  \"View_Comfy_Alt\",\r\n  \"Heart_Minus\",\r\n  \"Share_Reviews\",\r\n  \"Width_Full\",\r\n  \"Unfold_More_Double\",\r\n  \"File_Download_Off\",\r\n  \"View_Compact_Alt\",\r\n  \"Extension_Off\",\r\n  \"Open_In_New_Off\",\r\n  \"Check_Indeterminate_Small\",\r\n  \"Progress_Activity\",\r\n  \"More_Down\",\r\n  \"Cycle\",\r\n  \"Width_Wide\",\r\n  \"Repartition\",\r\n  \"Density_Large\",\r\n  \"Swipe_Left_Alt\",\r\n  \"Swipe_Down_Alt\",\r\n  \"Swipe_Up_Alt\",\r\n  \"Swipe_Right_Alt\",\r\n  \"Unfold_Less_Double\",\r\n  \"Keyboard_Option_Key\",\r\n  \"Tab_Unselected\",\r\n  \"HLS\",\r\n  \"HLS_Off\",\r\n  \"Expand_Content\",\r\n  \"File_Upload_Off\",\r\n  \"Expand_All\",\r\n  \"Rebase\",\r\n  \"Quick_Reference_All\",\r\n  \"Deployed_Code\",\r\n  \"Collapse_All\",\r\n  \"Rebase_Edit\",\r\n  \"Stat_0\",\r\n  \"Arrow_Split\",\r\n  \"Stack\",\r\n  \"Empty_Dashboard\",\r\n  \"Acute\",\r\n  \"Data_Check\",\r\n  \"Arrow_Upward_Alt\",\r\n  \"Switches\",\r\n  \"Quick_Reference\",\r\n  \"Page_Info\",\r\n  \"Left_Click\",\r\n  \"Clock_Loader_60\",\r\n  \"Sync_Saved_Locally\",\r\n  \"Data_Alert\",\r\n  \"Arrow_Downward_Alt\",\r\n  \"Arrow_Insert\",\r\n  \"Directory_Sync\",\r\n  \"Point_Scan\",\r\n  \"Question_Exchange\",\r\n  \"Data_Info_Alert\",\r\n  \"Side_Navigation\",\r\n  \"Stacks\",\r\n  \"Captive_Portal\",\r\n  \"Cards\",\r\n  \"Search_Check\",\r\n  \"Steppers\",\r\n  \"Rule_Settings\",\r\n  \"Expand_Circle_Right\",\r\n  \"Preliminary\",\r\n  \"Move_Item\",\r\n  \"Prompt_Suggestion\",\r\n  \"Clock_Loader_10\",\r\n  \"Step\",\r\n  \"Stat_3\",\r\n  \"Bubble\",\r\n  \"Stack_Star\",\r\n  \"Unknown_Med\",\r\n  \"Clock_Loader_40\",\r\n  \"Collapse_Content\",\r\n  \"Arrow_Left_Alt\",\r\n  \"New_Window\",\r\n  \"Star_Rate_Half\",\r\n  \"Drag_Pan\",\r\n  \"Linked_Services\",\r\n  \"Sweep\",\r\n  \"Right_Panel_Close\",\r\n  \"Right_Panel_Open\",\r\n  \"Toolbar\",\r\n  \"Clock_Loader_80\",\r\n  \"Dialogs\",\r\n  \"Expand_Circle_Up\",\r\n  \"Heart_Check\",\r\n  \"Share_Windows\",\r\n  \"Patient_List\",\r\n  \"Deployed_Code_Update\",\r\n  \"Event_List\",\r\n  \"Input_Circle\",\r\n  \"Stat_Minus_1\",\r\n  \"Action_Key\",\r\n  \"Left_Panel_Close\",\r\n  \"Clock_Loader_90\",\r\n  \"Responsive_Layout\",\r\n  \"Page_Control\",\r\n  \"Pip\",\r\n  \"Left_Panel_Open\",\r\n  \"Resize\",\r\n  \"Stat_2\",\r\n  \"Close_Small\",\r\n  \"Radio_Button_Partial\",\r\n  \"All_Match\",\r\n  \"Clock_Loader_20\",\r\n  \"Move_Group\",\r\n  \"Capture\",\r\n  \"Stat_Minus_2\",\r\n  \"Arrow_Range\",\r\n  \"Tab_Duplicate\",\r\n  \"Buttons_Alt\",\r\n  \"Step_Over\",\r\n  \"Key_Vertical\",\r\n  \"Step_Into\",\r\n  \"Sliders\",\r\n  \"Stat_1\",\r\n  \"Stat_Minus_3\",\r\n  \"Magnification_Small\",\r\n  \"Partner_Reports\",\r\n  \"Bottom_Panel_Open\",\r\n  \"Dropdown\",\r\n  \"Magnification_Large\",\r\n  \"Bottom_Navigation\",\r\n  \"Drag_Click\",\r\n  \"Stack_Off\",\r\n  \"Chip_Extraction\",\r\n  \"Bottom_Drawer\",\r\n  \"Chronic\",\r\n  \"Arrow_And_Edge\",\r\n  \"Right_Click\",\r\n  \"App_Badging\",\r\n  \"Open_In_New_Down\",\r\n  \"Shelf_Position\",\r\n  \"Subheader\",\r\n  \"Tabs\",\r\n  \"Step_Out\",\r\n  \"Tab_Group\",\r\n  \"Unknown_5\",\r\n  \"Arrows_Outward\",\r\n  \"Go_To_Line\",\r\n  \"Highlight_Mouse_Cursor\",\r\n  \"Iframe\",\r\n  \"Settings_Heart\",\r\n  \"Deployed_Code_History\",\r\n  \"Download_2\",\r\n  \"Tab_Close\",\r\n  \"Bottom_Sheets\",\r\n  \"Open_Run\",\r\n  \"Pip_Exit\",\r\n  \"Switch_Access_2\",\r\n  \"Amend\",\r\n  \"Jump_To_Element\",\r\n  \"Toast\",\r\n  \"Arrow_Or_Edge\",\r\n  \"Bottom_Right_Click\",\r\n  \"Chips\",\r\n  \"Deployed_Code_Alert\",\r\n  \"Move_Selection_Left\",\r\n  \"Output_Circle\",\r\n  \"Ripples\",\r\n  \"Switch_Access\",\r\n  \"Back_To_Tab\",\r\n  \"Bottom_Panel_Close\",\r\n  \"Reopen_Window\",\r\n  \"Tab_Move\",\r\n  \"Bubbles\",\r\n  \"Error_Med\",\r\n  \"Upload_2\",\r\n  \"Arrow_Top_Left\",\r\n  \"Recenter\",\r\n  \"Iframe_Off\",\r\n  \"Position_Top_Right\",\r\n  \"Shelf_Auto_Hide\",\r\n  \"Move_Selection_Right\",\r\n  \"Position_Bottom_Right\",\r\n  \"Arrow_Top_Right\",\r\n  \"Deployed_Code_Account\",\r\n  \"Move_Selection_Up\",\r\n  \"Bottom_App_Bar\",\r\n  \"Position_Bottom_Left\",\r\n  \"Tab_New_Right\",\r\n  \"Tab_Close_Right\",\r\n  \"Tab_Recent\",\r\n  \"Move_Selection_Down\",\r\n  \"Chevron_Backward\",\r\n  \"Chevron_Forward\",\r\n  \"Highlight_Keyboard_Focus\",\r\n  \"Highlight_Text_Cursor\",\r\n  \"Desktop_Portrait\",\r\n  \"Search_Check_2\",\r\n  \"Desktop_Landscape\",\r\n  \"Float_Landscape_2\",\r\n  \"Float_Portrait_2\",\r\n  \"Fullscreen_Portrait\",\r\n  \"Splitscreen_Landscape\",\r\n  \"Splitscreen_Portrait\",\r\n  \"Tab_Inactive\",\r\n  \"Person\",\r\n  \"Group\",\r\n  \"Share\",\r\n  \"Thumb_Up\",\r\n  \"Groups\",\r\n  \"Public\",\r\n  \"Person_Add\",\r\n  \"Handshake\",\r\n  \"Support_Agent\",\r\n  \"Face\",\r\n  \"Sentiment_Satisfied\",\r\n  \"Rocket_Launch\",\r\n  \"Group_Add\",\r\n  \"Workspace_Premium\",\r\n  \"Psychology\",\r\n  \"Diversity_3\",\r\n  \"Emoji_Objects\",\r\n  \"Water_Drop\",\r\n  \"Eco\",\r\n  \"Travel_Explore\",\r\n  \"Pets\",\r\n  \"Mood\",\r\n  \"Sunny\",\r\n  \"Quiz\",\r\n  \"Sentiment_Dissatisfied\",\r\n  \"Health_And_Safety\",\r\n  \"Sentiment_Very_Satisfied\",\r\n  \"Military_Tech\",\r\n  \"Thumb_Down\",\r\n  \"Gavel\",\r\n  \"Recycling\",\r\n  \"Diamond\",\r\n  \"Monitor_Heart\",\r\n  \"Emoji_People\",\r\n  \"Diversity_1\",\r\n  \"Workspaces\",\r\n  \"Vaccines\",\r\n  \"Compost\",\r\n  \"Recommend\",\r\n  \"Forest\",\r\n  \"Waving_Hand\",\r\n  \"Wc\",\r\n  \"Person_Remove\",\r\n  \"Sentiment_Neutral\",\r\n  \"Medication\",\r\n  \"Sentiment_Very_Dissatisfied\",\r\n  \"Diversity_2\",\r\n  \"Group_Work\",\r\n  \"Psychology_Alt\",\r\n  \"Front_Hand\",\r\n  \"Cruelty_Free\",\r\n  \"Man\",\r\n  \"Medical_Information\",\r\n  \"Add_Reaction\",\r\n  \"Rocket\",\r\n  \"Coronavirus\",\r\n  \"Female\",\r\n  \"Potted_Plant\",\r\n  \"Emoji_Nature\",\r\n  \"Rainy\",\r\n  \"Cookie\",\r\n  \"Person_Off\",\r\n  \"Connect_Without_Contact\",\r\n  \"Woman\",\r\n  \"Mood_Bad\",\r\n  \"Bedtime\",\r\n  \"Groups_2\",\r\n  \"Male\",\r\n  \"Communication\",\r\n  \"Thumbs_Up_Down\",\r\n  \"Solar_Power\",\r\n  \"Thunderstorm\",\r\n  \"Partly_Cloudy_Day\",\r\n  \"Masks\",\r\n  \"Sentiment_Extremely_Dissatisfied\",\r\n  \"Hive\",\r\n  \"Heart_Broken\",\r\n  \"Clear_Day\",\r\n  \"Boy\",\r\n  \"Whatshot\",\r\n  \"Cloudy_Snowing\",\r\n  \"Emoji_Food_Beverage\",\r\n  \"Wind_Power\",\r\n  \"Emoji_Transportation\",\r\n  \"Face_6\",\r\n  \"Elderly\",\r\n  \"Reduce_Capacity\",\r\n  \"Sick\",\r\n  \"Face_3\",\r\n  \"Pregnant_Woman\",\r\n  \"Emoji_Events\",\r\n  \"Groups_3\",\r\n  \"Skull\",\r\n  \"Bloodtype\",\r\n  \"Egg\",\r\n  \"Group_Remove\",\r\n  \"Medication_Liquid\",\r\n  \"Clear_Night\",\r\n  \"Co2\",\r\n  \"Face_4\",\r\n  \"Weight\",\r\n  \"Follow_The_Signs\",\r\n  \"Oil_Barrel\",\r\n  \"Elderly_Woman\",\r\n  \"Transgender\",\r\n  \"Sanitizer\",\r\n  \"Clean_Hands\",\r\n  \"Person_2\",\r\n  \"Bring_Your_Own_Ip\",\r\n  \"Public_Off\",\r\n  \"Face_2\",\r\n  \"Routine\",\r\n  \"Social_Distance\",\r\n  \"South_America\",\r\n  \"Sign_Language\",\r\n  \"Sunny_Snowing\",\r\n  \"Emoji_Symbols\",\r\n  \"Flood\",\r\n  \"Garden_Cart\",\r\n  \"Face_5\",\r\n  \"Egg_Alt\",\r\n  \"Cyclone\",\r\n  \"Girl\",\r\n  \"Person_4\",\r\n  \"Dentistry\",\r\n  \"Tsunami\",\r\n  \"Group_Off\",\r\n  \"Outdoor_Garden\",\r\n  \"Partly_Cloudy_Night\",\r\n  \"Severe_Cold\",\r\n  \"Snowing\",\r\n  \"Person_3\",\r\n  \"Tornado\",\r\n  \"Partner_Exchange\",\r\n  \"Safety_Divider\",\r\n  \"Vaping_Rooms\",\r\n  \"Landslide\",\r\n  \"Foggy\",\r\n  \"Woman_2\",\r\n  \"No_Adult_Content\",\r\n  \"Volcano\",\r\n  \"Blind\",\r\n  \"18_Up_Rating\",\r\n  \"6_Ft_Apart\",\r\n  \"Man_2\",\r\n  \"Not_Accessible\",\r\n  \"Vape_Free\",\r\n  \"Man_4\",\r\n  \"Radiology\",\r\n  \"Rib_Cage\",\r\n  \"Hand_Bones\",\r\n  \"Bedtime_Off\",\r\n  \"Rheumatology\",\r\n  \"Man_3\",\r\n  \"Orthopedics\",\r\n  \"Cognition\",\r\n  \"Tibia\",\r\n  \"Communities\",\r\n  \"Skeleton\",\r\n  \"Globe\",\r\n  \"Humerus\",\r\n  \"Diversity_4\",\r\n  \"Foot_Bones\",\r\n  \"Agender\",\r\n  \"Person_Raised_Hand\",\r\n  \"Femur\",\r\n  \"Neurology\",\r\n  \"Tibia_Alt\",\r\n  \"Eyeglasses\",\r\n  \"Femur_Alt\",\r\n  \"Psychiatry\",\r\n  \"Digital_Wellbeing\",\r\n  \"Humerus_Alt\",\r\n  \"Labs\",\r\n  \"Social_Leaderboard\",\r\n  \"Ulna_Radius\",\r\n  \"Tactic\",\r\n  \"Ulna_Radius_Alt\",\r\n  \"Sentiment_Sad\",\r\n  \"Crowdsource\",\r\n  \"Footprint\",\r\n  \"Specific_Gravity\",\r\n  \"Vital_Signs\",\r\n  \"Nutrition\",\r\n  \"Strategy\",\r\n  \"Mystery\",\r\n  \"Globe_Asia\",\r\n  \"Breastfeeding\",\r\n  \"Person_Alert\",\r\n  \"Demography\",\r\n  \"Editor_Choice\",\r\n  \"Stethoscope\",\r\n  \"Clinical_Notes\",\r\n  \"Globe_Uk\",\r\n  \"Chess\",\r\n  \"Person_Check\",\r\n  \"Sentiment_Excited\",\r\n  \"Taunt\",\r\n  \"Conditions\",\r\n  \"Sentiment_Calm\",\r\n  \"Pill\",\r\n  \"Sentiment_Stressed\",\r\n  \"Domino_Mask\",\r\n  \"Lab_Research\",\r\n  \"Weather_Hail\",\r\n  \"Cookie_Off\",\r\n  \"Cardiology\",\r\n  \"Genetics\",\r\n  \"Crossword\",\r\n  \"Prescriptions\",\r\n  \"Raven\",\r\n  \"Folded_Hands\",\r\n  \"Deceased\",\r\n  \"Altitude\",\r\n  \"Emoticon\",\r\n  \"Weather_Mix\",\r\n  \"Mountain_Flag\",\r\n  \"Cheer\",\r\n  \"Glucose\",\r\n  \"Home_Health\",\r\n  \"Not_Accessible_Forward\",\r\n  \"Destruction\",\r\n  \"Earthquake\",\r\n  \"Barefoot\",\r\n  \"Falling\",\r\n  \"Share_Off\",\r\n  \"Wrist\",\r\n  \"Microbiology\",\r\n  \"Person_Apron\",\r\n  \"Sentiment_Frustrated\",\r\n  \"Playing_Cards\",\r\n  \"Cardio_Load\",\r\n  \"Sentiment_Content\",\r\n  \"Recent_Patient\",\r\n  \"Family_Star\",\r\n  \"Sword_Rose\",\r\n  \"Mist\",\r\n  \"Kid_Star\",\r\n  \"Lab_Panel\",\r\n  \"Bomb\",\r\n  \"Prayer_Times\",\r\n  \"Pulse_Alert\",\r\n  \"Sentiment_Worried\",\r\n  \"Water_Bottle\",\r\n  \"Person_Cancel\",\r\n  \"Blood_Pressure\",\r\n  \"Ent\",\r\n  \"Guardian\",\r\n  \"Comic_Bubble\",\r\n  \"Dew_Point\",\r\n  \"Explosion\",\r\n  \"Helicopter\",\r\n  \"Metabolism\",\r\n  \"Pulmonology\",\r\n  \"Dermatology\",\r\n  \"Water_Lux\",\r\n  \"Rainy_Snow\",\r\n  \"Body_System\",\r\n  \"Manga\",\r\n  \"Nephrology\",\r\n  \"Oral_Disease\",\r\n  \"Oxygen_Saturation\",\r\n  \"Ward\",\r\n  \"Water_Ph\",\r\n  \"Candle\",\r\n  \"Congenital\",\r\n  \"Infrared\",\r\n  \"Rainy_Light\",\r\n  \"Snowing_Heavy\",\r\n  \"Comedy_Mask\",\r\n  \"Humidity_Percentage\",\r\n  \"Pregnancy\",\r\n  \"Stethoscope_Check\",\r\n  \"Water_Do\",\r\n  \"Allergies\",\r\n  \"Allergy\",\r\n  \"Outpatient\",\r\n  \"Respiratory_Rate\",\r\n  \"Symptoms\",\r\n  \"Gynecology\",\r\n  \"Hematology\",\r\n  \"Mixture_Med\",\r\n  \"Moving_Beds\",\r\n  \"Oncology\",\r\n  \"Ophthalmology\",\r\n  \"Pediatrics\",\r\n  \"Stethoscope_Arrow\",\r\n  \"Water_Bottle_Large\",\r\n  \"Water_Voc\",\r\n  \"Wounds_Injuries\",\r\n  \"Body_Fat\",\r\n  \"Endocrinology\",\r\n  \"Gastroenterology\",\r\n  \"Immunology\",\r\n  \"Rainy_Heavy\",\r\n  \"Syringe\",\r\n  \"Admin_Meds\",\r\n  \"Fluid_Balance\",\r\n  \"Short_Stay\",\r\n  \"Water_Orp\",\r\n  \"Inpatient\",\r\n  \"Medical_Mask\",\r\n  \"Outpatient_Med\",\r\n  \"Pill_Off\",\r\n  \"Poker_Chip\",\r\n  \"Procedure\",\r\n  \"Salinity\",\r\n  \"Surgical\",\r\n  \"Total_Dissolved_Solids\",\r\n  \"Water_Ec\",\r\n  \"Fluid\",\r\n  \"Fluid_Med\",\r\n  \"Urology\",\r\n  \"Account_Circle\",\r\n  \"Info\",\r\n  \"Visibility\",\r\n  \"Calendar_Month\",\r\n  \"Schedule\",\r\n  \"Help\",\r\n  \"Warning\",\r\n  \"Language\",\r\n  \"Lock\",\r\n  \"Error\",\r\n  \"Visibility_Off\",\r\n  \"Verified\",\r\n  \"Manage_Accounts\",\r\n  \"History\",\r\n  \"Task_Alt\",\r\n  \"Event\",\r\n  \"Bookmark\",\r\n  \"Calendar_Today\",\r\n  \"Lightbulb\",\r\n  \"Question_Mark\",\r\n  \"Fingerprint\",\r\n  \"Category\",\r\n  \"Update\",\r\n  \"Lock_Open\",\r\n  \"Priority_High\",\r\n  \"Code\",\r\n  \"Build\",\r\n  \"Date_Range\",\r\n  \"Supervisor_Account\",\r\n  \"Upload_File\",\r\n  \"Event_Available\",\r\n  \"Ads_Click\",\r\n  \"Touch_App\",\r\n  \"Today\",\r\n  \"Pending\",\r\n  \"Preview\",\r\n  \"Stars\",\r\n  \"New_Releases\",\r\n  \"Bug_Report\",\r\n  \"Celebration\",\r\n  \"Account_Box\",\r\n  \"Translate\",\r\n  \"How_To_Reg\",\r\n  \"Alarm\",\r\n  \"Edit_Calendar\",\r\n  \"Edit_Square\",\r\n  \"Label\",\r\n  \"Extension\",\r\n  \"Record_Voice_Over\",\r\n  \"Event_Note\",\r\n  \"Web\",\r\n  \"Rate_Review\",\r\n  \"Hourglass_Empty\",\r\n  \"Published_With_Changes\",\r\n  \"Support\",\r\n  \"Notification_Important\",\r\n  \"Accessibility_New\",\r\n  \"Help_Center\",\r\n  \"Bookmarks\",\r\n  \"Pan_Tool_Alt\",\r\n  \"Dangerous\",\r\n  \"Supervised_User_Circle\",\r\n  \"Interests\",\r\n  \"Collections_Bookmark\",\r\n  \"All_Inclusive\",\r\n  \"Rule\",\r\n  \"Priority\",\r\n  \"Change_History\",\r\n  \"Event_Upcoming\",\r\n  \"Build_Circle\",\r\n  \"Api\",\r\n  \"Wysiwyg\",\r\n  \"Pan_Tool\",\r\n  \"Hotel_Class\",\r\n  \"Circle_Notifications\",\r\n  \"Manage_History\",\r\n  \"Web_Asset\",\r\n  \"Accessible\",\r\n  \"Upgrade\",\r\n  \"Input\",\r\n  \"Bookmark_Add\",\r\n  \"Lock_Reset\",\r\n  \"Event_Busy\",\r\n  \"Model_Training\",\r\n  \"More_Time\",\r\n  \"Flutter_Dash\",\r\n  \"Save_As\",\r\n  \"Backup\",\r\n  \"Accessibility\",\r\n  \"Home_App_Logo\",\r\n  \"Dynamic_Feed\",\r\n  \"Pageview\",\r\n  \"Alarm_On\",\r\n  \"Label_Important\",\r\n  \"Perm_Contact_Calendar\",\r\n  \"Approval\",\r\n  \"Square_Foot\",\r\n  \"History_Toggle_Off\",\r\n  \"More\",\r\n  \"Swipe\",\r\n  \"Component_Exchange\",\r\n  \"Event_Repeat\",\r\n  \"Bookmark_Added\",\r\n  \"App_Shortcut\",\r\n  \"Unpublished\",\r\n  \"Open_In_Browser\",\r\n  \"Notification_Add\",\r\n  \"Offline_Bolt\",\r\n  \"No_Accounts\",\r\n  \"Free_Cancellation\",\r\n  \"Running_With_Errors\",\r\n  \"Background_Replace\",\r\n  \"Webhook\",\r\n  \"Anchor\",\r\n  \"3d_Rotation\",\r\n  \"Lock_Person\",\r\n  \"New_Label\",\r\n  \"Lock_Clock\",\r\n  \"Accessible_Forward\",\r\n  \"Auto_Delete\",\r\n  \"Add_Alert\",\r\n  \"Domain_Verification\",\r\n  \"Outbound\",\r\n  \"Gesture\",\r\n  \"Hand_Gesture\",\r\n  \"Chrome_Reader_Mode\",\r\n  \"Online_Prediction\",\r\n  \"Settings_Power\",\r\n  \"Lightbulb_Circle\",\r\n  \"Edit_Notifications\",\r\n  \"Find_Replace\",\r\n  \"Offline_Pin\",\r\n  \"Backup_Table\",\r\n  \"Http\",\r\n  \"Ad_Units\",\r\n  \"Wifi_Protected_Setup\",\r\n  \"Feedback\",\r\n  \"Target\",\r\n  \"Bookmark_Remove\",\r\n  \"Alarm_Add\",\r\n  \"Pinch_Zoom_Out\",\r\n  \"On_Device_Training\",\r\n  \"Snooze\",\r\n  \"Batch_Prediction\",\r\n  \"Code_Off\",\r\n  \"Pinch_Zoom_In\",\r\n  \"Commit\",\r\n  \"Hourglass_Disabled\",\r\n  \"Manufacturing\",\r\n  \"Settings_Overscan\",\r\n  \"Polymer\",\r\n  \"Youtube_Activity\",\r\n  \"Logo_Dev\",\r\n  \"Time_Auto\",\r\n  \"Voice_Over_Off\",\r\n  \"Alarm_Off\",\r\n  \"Person_Add_Disabled\",\r\n  \"Update_Disabled\",\r\n  \"Web_Traffic\",\r\n  \"Timer_10_Alt_1\",\r\n  \"Rounded_Corner\",\r\n  \"Label_Off\",\r\n  \"Timer_3_Alt_1\",\r\n  \"All_Out\",\r\n  \"Rsvp\",\r\n  \"Web_Asset_Off\",\r\n  \"Pin_Invoke\",\r\n  \"Keep\",\r\n  \"Code_Blocks\",\r\n  \"Pin_End\",\r\n  \"Arrow_Selector_Tool\",\r\n  \"Approval_Delegation\",\r\n  \"Developer_Guide\",\r\n  \"Contacts_Product\",\r\n  \"Problem\",\r\n  \"License\",\r\n  \"Feature_Search\",\r\n  \"Lists\",\r\n  \"Reminder\",\r\n  \"Flutter\",\r\n  \"User_Attributes\",\r\n  \"Keep_Off\",\r\n  \"Award_Star\",\r\n  \"Sdk\",\r\n  \"Browse\",\r\n  \"Release_Alert\",\r\n  \"Visibility_Lock\",\r\n  \"Data_Loss_Prevention\",\r\n  \"Select_Window\",\r\n  \"Lock_Open_Right\",\r\n  \"Hourglass\",\r\n  \"Settings_Account_Box\",\r\n  \"Ad_Group\",\r\n  \"Calendar_Clock\",\r\n  \"Pan_Zoom\",\r\n  \"Ad\",\r\n  \"Search_Hands_Free\",\r\n  \"Keep_Public\",\r\n  \"Indeterminate_Question_Box\",\r\n  \"Info_I\",\r\n  \"Delete_History\",\r\n  \"Draft_Orders\",\r\n  \"Circles_Ext\",\r\n  \"Gesture_Select\",\r\n  \"Account_Child\",\r\n  \"Shift\",\r\n  \"Ad_Group_Off\",\r\n  \"Account_Child_Invert\",\r\n  \"Add_Ad\",\r\n  \"Shadow\",\r\n  \"Account_Circle_Off\",\r\n  \"Watch_Screentime\",\r\n  \"Bookmark_Manager\",\r\n  \"Person_Edit\",\r\n  \"Circles\",\r\n  \"Select_Window_2\",\r\n  \"Ad_Off\",\r\n  \"Help_Clinic\",\r\n  \"Unlicense\",\r\n  \"Water_Lock\",\r\n  \"Select_Window_Off\",\r\n  \"Alarm_Smart_Wake\",\r\n  \"Preview_Off\",\r\n  \"Shadow_Add\",\r\n  \"Warning_Off\",\r\n  \"Scrollable_Header\",\r\n  \"Shift_Lock\",\r\n  \"Supervised_User_Circle_Off\",\r\n  \"History_Off\",\r\n  \"Timer_Pause\",\r\n  \"Trackpad_Input\",\r\n  \"Fingerprint_Off\",\r\n  \"Measuring_Tape\",\r\n  \"Domain_Verification_Off\",\r\n  \"Offline_Pin_Off\",\r\n  \"Timer_Play\",\r\n  \"Shadow_Minus\",\r\n  \"Bookmark_Star\",\r\n  \"Bookmark_Check\",\r\n  \"Bookmark_Flag\",\r\n  \"Bookmark_Heart\",\r\n  \"Shift_Lock_Off\",\r\n  \"Mail\",\r\n  \"Call\",\r\n  \"Notifications\",\r\n  \"Send\",\r\n  \"Chat\",\r\n  \"Link\",\r\n  \"Forum\",\r\n  \"Inventory_2\",\r\n  \"Chat_Bubble\",\r\n  \"Phone_In_Talk\",\r\n  \"Contact_Support\",\r\n  \"Notifications_Active\",\r\n  \"Alternate_Email\",\r\n  \"Sms\",\r\n  \"Comment\",\r\n  \"Power_Settings_New\",\r\n  \"Hub\",\r\n  \"Person_Search\",\r\n  \"Import_Contacts\",\r\n  \"Contacts\",\r\n  \"Contact_Mail\",\r\n  \"Live_Help\",\r\n  \"Forward_To_Inbox\",\r\n  \"Reviews\",\r\n  \"Mark_Email_Unread\",\r\n  \"Lan\",\r\n  \"Hourglass_Top\",\r\n  \"Contact_Phone\",\r\n  \"Mode_Comment\",\r\n  \"Inbox\",\r\n  \"Drafts\",\r\n  \"Outgoing_Mail\",\r\n  \"Hourglass_Bottom\",\r\n  \"Mark_Email_Read\",\r\n  \"Link_Off\",\r\n  \"Calendar_Add_On\",\r\n  \"Add_Comment\",\r\n  \"Phone_Enabled\",\r\n  \"G_Translate\",\r\n  \"Speaker_Notes\",\r\n  \"Perm_Phone_Msg\",\r\n  \"Co_Present\",\r\n  \"Notifications_Off\",\r\n  \"Call_End\",\r\n  \"Topic\",\r\n  \"Cell_Tower\",\r\n  \"Mark_Chat_Unread\",\r\n  \"Schedule_Send\",\r\n  \"Dialpad\",\r\n  \"Satellite_Alt\",\r\n  \"Call_Made\",\r\n  \"Mark_Unread_Chat_Alt\",\r\n  \"Unarchive\",\r\n  \"3p\",\r\n  \"Cancel_Presentation\",\r\n  \"Move_To_Inbox\",\r\n  \"Mark_As_Unread\",\r\n  \"Next_Plan\",\r\n  \"Attach_Email\",\r\n  \"Phonelink_Ring\",\r\n  \"Unsubscribe\",\r\n  \"Phone_Callback\",\r\n  \"Call_Received\",\r\n  \"Settings_Phone\",\r\n  \"Call_Split\",\r\n  \"Present_To_All\",\r\n  \"Add_Call\",\r\n  \"Markunread_Mailbox\",\r\n  \"All_Inbox\",\r\n  \"Voice_Chat\",\r\n  \"Phone_Forwarded\",\r\n  \"Mail_Lock\",\r\n  \"Voicemail\",\r\n  \"Attribution\",\r\n  \"Contact_Emergency\",\r\n  \"Duo\",\r\n  \"Mark_Chat_Read\",\r\n  \"Upcoming\",\r\n  \"Phone_Disabled\",\r\n  \"Swap_Calls\",\r\n  \"Outbox\",\r\n  \"Picture_In_Picture_Alt\",\r\n  \"Phonelink_Lock\",\r\n  \"Spoke\",\r\n  \"Cancel_Schedule_Send\",\r\n  \"Ring_Volume\",\r\n  \"Notifications_Paused\",\r\n  \"Quickreply\",\r\n  \"Phone_Missed\",\r\n  \"Chat_Add_On\",\r\n  \"Comment_Bank\",\r\n  \"Send_And_Archive\",\r\n  \"Picture_In_Picture\",\r\n  \"Phonelink_Erase\",\r\n  \"Settings_Bluetooth\",\r\n  \"Comments_Disabled\",\r\n  \"Video_Chat\",\r\n  \"Score\",\r\n  \"Pause_Presentation\",\r\n  \"Speaker_Phone\",\r\n  \"Cell_Wifi\",\r\n  \"Speaker_Notes_Off\",\r\n  \"Auto_Read_Play\",\r\n  \"Mms\",\r\n  \"Call_Merge\",\r\n  \"Play_For_Work\",\r\n  \"Call_Missed_Outgoing\",\r\n  \"Call_Missed\",\r\n  \"Wifi_Channel\",\r\n  \"Calendar_Apps_Script\",\r\n  \"Phone_Paused\",\r\n  \"RTT\",\r\n  \"Auto_Read_Pause\",\r\n  \"Phone_Locked\",\r\n  \"Wifi_Calling\",\r\n  \"Chat_Apps_Script\",\r\n  \"Sip\",\r\n  \"Dialer_Sip\",\r\n  \"Nat\",\r\n  \"Phone_Bluetooth_Speaker\",\r\n  \"E911_Avatar\",\r\n  \"Inbox_Customize\",\r\n  \"Stacked_Email\",\r\n  \"For_You\",\r\n  \"Tooltip\",\r\n  \"Business_Messages\",\r\n  \"Chat_Error\",\r\n  \"Chat_Info\",\r\n  \"Notification_Multiple\",\r\n  \"Chat_Paste_Go\",\r\n  \"Thread_Unread\",\r\n  \"Notifications_Unread\",\r\n  \"Ods\",\r\n  \"Call_Quality\",\r\n  \"Picture_In_Picture_Small\",\r\n  \"Network_Intelligence_Update\",\r\n  \"Network_Intelligence_History\",\r\n  \"Picture_In_Picture_Off\",\r\n  \"Call_Log\",\r\n  \"Signal_Cellular_Add\",\r\n  \"Outbox_Alt\",\r\n  \"Wifi_Add\",\r\n  \"Mail_Off\",\r\n  \"Odt\",\r\n  \"Picture_In_Picture_Center\",\r\n  \"Stacked_Inbox\",\r\n  \"Phonelink_Ring_Off\",\r\n  \"Network_Manage\",\r\n  \"Picture_In_Picture_Medium\",\r\n  \"Wifi_Proxy\",\r\n  \"Picture_In_Picture_Large\",\r\n  \"Picture_In_Picture_Mobile\",\r\n  \"Edit\",\r\n  \"Photo_Camera\",\r\n  \"Filter_Alt\",\r\n  \"Image\",\r\n  \"Tune\",\r\n  \"Timer\",\r\n  \"Picture_As_Pdf\",\r\n  \"Circle\",\r\n  \"Palette\",\r\n  \"Add_A_Photo\",\r\n  \"Photo_Library\",\r\n  \"Auto_Stories\",\r\n  \"Add_Photo_Alternate\",\r\n  \"Brush\",\r\n  \"Imagesmode\",\r\n  \"Nature\",\r\n  \"Flash_On\",\r\n  \"Wb_Sunny\",\r\n  \"Camera\",\r\n  \"Looks_One\",\r\n  \"Straighten\",\r\n  \"Landscape\",\r\n  \"Timelapse\",\r\n  \"Slideshow\",\r\n  \"Crop_Square\",\r\n  \"Rotate_Right\",\r\n  \"Grid_On\",\r\n  \"Adjust\",\r\n  \"Crop_Free\",\r\n  \"Aspect_Ratio\",\r\n  \"Style\",\r\n  \"Brightness_6\",\r\n  \"Photo\",\r\n  \"Nature_People\",\r\n  \"Image_Search\",\r\n  \"Filter_Vintage\",\r\n  \"Crop\",\r\n  \"Blur_On\",\r\n  \"Center_Focus_Strong\",\r\n  \"Contrast\",\r\n  \"Compare\",\r\n  \"Looks_Two\",\r\n  \"Colorize\",\r\n  \"Rotate_Left\",\r\n  \"Flare\",\r\n  \"Filter_None\",\r\n  \"Wb_Incandescent\",\r\n  \"Wb_Twilight\",\r\n  \"Filter_Drama\",\r\n  \"Healing\",\r\n  \"Looks_3\",\r\n  \"Brightness_5\",\r\n  \"Animation\",\r\n  \"Invert_Colors\",\r\n  \"Lens\",\r\n  \"Incomplete_Circle\",\r\n  \"Opacity\",\r\n  \"Broken_Image\",\r\n  \"Filter_Center_Focus\",\r\n  \"Auto_Awesome_Motion\",\r\n  \"Brightness_4\",\r\n  \"Add_To_Photos\",\r\n  \"Flash_Off\",\r\n  \"Flip\",\r\n  \"Center_Focus_Weak\",\r\n  \"Flip_Camera_Android\",\r\n  \"Web_Stories\",\r\n  \"Mic_External_On\",\r\n  \"No_Photography\",\r\n  \"Lens_Blur\",\r\n  \"Grain\",\r\n  \"Details\",\r\n  \"Panorama\",\r\n  \"Flaky\",\r\n  \"GIF_Box\",\r\n  \"Loupe\",\r\n  \"Dehaze\",\r\n  \"Exposure_Plus_1\",\r\n  \"Settings_Brightness\",\r\n  \"Auto_Awesome_Mosaic\",\r\n  \"Texture\",\r\n  \"Looks_4\",\r\n  \"Filter_1\",\r\n  \"Flip_Camera_iOS\",\r\n  \"Timer_Off\",\r\n  \"Panorama_Fish_Eye\",\r\n  \"Filter\",\r\n  \"Brightness_1\",\r\n  \"View_Compact\",\r\n  \"Control_Point_Duplicate\",\r\n  \"Brightness_7\",\r\n  \"Transform\",\r\n  \"Photo_Camera_Front\",\r\n  \"Photo_Album\",\r\n  \"View_Comfy\",\r\n  \"Linked_Camera\",\r\n  \"Hide_Image\",\r\n  \"Crop_16_9\",\r\n  \"Looks\",\r\n  \"Looks_5\",\r\n  \"Exposure\",\r\n  \"Rotate_90_Degrees_Ccw\",\r\n  \"Filter_Hdr\",\r\n  \"GIF\",\r\n  \"Leak_Add\",\r\n  \"Hdr_Strong\",\r\n  \"Brightness_3\",\r\n  \"Gradient\",\r\n  \"Crop_7_5\",\r\n  \"Hdr_Auto\",\r\n  \"Vrpano\",\r\n  \"Crop_Portrait\",\r\n  \"Motion_Photos_Auto\",\r\n  \"Camera_Roll\",\r\n  \"Blur_Circular\",\r\n  \"Rotate_90_Degrees_Cw\",\r\n  \"Photo_Size_Select_Small\",\r\n  \"Brightness_2\",\r\n  \"Camera_Front\",\r\n  \"Shutter_Speed\",\r\n  \"Looks_6\",\r\n  \"Flash_Auto\",\r\n  \"Crop_Landscape\",\r\n  \"Filter_2\",\r\n  \"Deblur\",\r\n  \"Filter_Tilt_Shift\",\r\n  \"Monochrome_Photos\",\r\n  \"Night_Sight_Auto\",\r\n  \"Motion_Photos_Paused\",\r\n  \"Crop_5_4\",\r\n  \"Filter_4\",\r\n  \"Hdr_Weak\",\r\n  \"Filter_3\",\r\n  \"Photo_Frame\",\r\n  \"Crop_Rotate\",\r\n  \"Ev_Shadow\",\r\n  \"Tonality\",\r\n  \"Crop_3_2\",\r\n  \"Fluorescent\",\r\n  \"Switch_Camera\",\r\n  \"Exposure_Zero\",\r\n  \"Photo_Size_Select_Large\",\r\n  \"Macro_Off\",\r\n  \"Party_Mode\",\r\n  \"Filter_Frames\",\r\n  \"Raw_On\",\r\n  \"Face_Retouching_Off\",\r\n  \"Motion_Blur\",\r\n  \"Motion_Photos_Off\",\r\n  \"Filter_B_And_W\",\r\n  \"Exposure_Plus_2\",\r\n  \"Exposure_Neg_1\",\r\n  \"Photo_Camera_Back\",\r\n  \"Blur_Linear\",\r\n  \"Wb_Iridescent\",\r\n  \"Panorama_Horizontal\",\r\n  \"Switch_Video\",\r\n  \"Hdr_On\",\r\n  \"Filter_5\",\r\n  \"Blur_Medium\",\r\n  \"Invert_Colors_Off\",\r\n  \"Filter_7\",\r\n  \"Burst_Mode\",\r\n  \"Panorama_Photosphere\",\r\n  \"Grid_Off\",\r\n  \"Filter_9_Plus\",\r\n  \"Timer_10\",\r\n  \"Filter_8\",\r\n  \"Blur_Short\",\r\n  \"Dirty_Lens\",\r\n  \"Filter_9\",\r\n  \"Wb_Shade\",\r\n  \"Filter_6\",\r\n  \"No_Flash\",\r\n  \"Image_Aspect_Ratio\",\r\n  \"Trail_Length\",\r\n  \"Exposure_Neg_2\",\r\n  \"Timer_3\",\r\n  \"Vignette\",\r\n  \"Blur_Off\",\r\n  \"60fps_Select\",\r\n  \"Leak_Remove\",\r\n  \"Perm_Camera_Mic\",\r\n  \"30fps_Select\",\r\n  \"Camera_Rear\",\r\n  \"Trail_Length_Medium\",\r\n  \"Mic_External_Off\",\r\n  \"Trail_Length_Short\",\r\n  \"Panorama_Vertical\",\r\n  \"Night_Sight_Auto_Off\",\r\n  \"Autofps_Select\",\r\n  \"Panorama_Wide_Angle\",\r\n  \"Hdr_Enhanced_Select\",\r\n  \"Hdr_Off\",\r\n  \"Mp\",\r\n  \"Hdr_On_Select\",\r\n  \"24mp\",\r\n  \"22mp\",\r\n  \"12mp\",\r\n  \"10mp\",\r\n  \"Hdr_Plus\",\r\n  \"18mp\",\r\n  \"Hdr_Auto_Select\",\r\n  \"Wb_Auto\",\r\n  \"Raw_Off\",\r\n  \"9mp\",\r\n  \"Hevc\",\r\n  \"13mp\",\r\n  \"5mp\",\r\n  \"19mp\",\r\n  \"20mp\",\r\n  \"7mp\",\r\n  \"15mp\",\r\n  \"Hdr_Off_Select\",\r\n  \"16mp\",\r\n  \"23mp\",\r\n  \"2mp\",\r\n  \"3mp\",\r\n  \"8mp\",\r\n  \"14mp\",\r\n  \"6mp\",\r\n  \"11mp\",\r\n  \"21mp\",\r\n  \"4mp\",\r\n  \"17mp\",\r\n  \"Gallery_Thumbnail\",\r\n  \"Masked_Transitions\",\r\n  \"Settings_B_Roll\",\r\n  \"Motion_Photos_On\",\r\n  \"Vr180_Create2d\",\r\n  \"Photo_Prints\",\r\n  \"Settings_Video_Camera\",\r\n  \"Settings_Photo_Camera\",\r\n  \"Planner_Banner_Ad_Pt\",\r\n  \"Unknown_2\",\r\n  \"Settings_Timelapse\",\r\n  \"50mp\",\r\n  \"Settings_Night_Sight\",\r\n  \"Settings_Panorama\",\r\n  \"Photo_Auto_Merge\",\r\n  \"Transition_Fade\",\r\n  \"Background_Grid_Small\",\r\n  \"Motion_Mode\",\r\n  \"Settings_Cinematic_Blur\",\r\n  \"Settings_Motion_Mode\",\r\n  \"Vr180_Create2d_Off\",\r\n  \"Filter_Retrolux\",\r\n  \"Transition_Dissolve\",\r\n  \"Background_Dot_Large\",\r\n  \"High_Density\",\r\n  \"Texture_Add\",\r\n  \"Texture_Minus\",\r\n  \"Crop_9_16\",\r\n  \"High_Res\",\r\n  \"Landscape_2\",\r\n  \"Macro_Auto\",\r\n  \"Settings_Slow_Motion\",\r\n  \"Shutter_Speed_Add\",\r\n  \"Shutter_Speed_Minus\",\r\n  \"Transition_Slide\",\r\n  \"Transition_Push\",\r\n  \"Background_Dot_Small\",\r\n  \"Contrast_Rtl_Off\",\r\n  \"Landscape_2_Off\",\r\n  \"Low_Density\",\r\n  \"Ev_Shadow_Add\",\r\n  \"View_Real_Size\",\r\n  \"Contrast_Circle\",\r\n  \"Ev_Shadow_Minus\",\r\n  \"Hdr_Plus_Off\",\r\n  \"Transition_Chop\",\r\n  \"Contrast_Square\",\r\n  \"Reset_Brightness\",\r\n  \"Reset_Focus\",\r\n  \"Reset_Iso\",\r\n  \"Reset_Settings\",\r\n  \"Reset_Shadow\",\r\n  \"Reset_Shutter_Speed\",\r\n  \"Reset_White_Balance\",\r\n  \"Shopping_Cart\",\r\n  \"Payments\",\r\n  \"Shopping_Bag\",\r\n  \"Monitoring\",\r\n  \"Credit_Card\",\r\n  \"Receipt_Long\",\r\n  \"Attach_Money\",\r\n  \"Database\",\r\n  \"Storefront\",\r\n  \"Trending_Up\",\r\n  \"Sell\",\r\n  \"Account_Balance\",\r\n  \"Work\",\r\n  \"Paid\",\r\n  \"Analytics\",\r\n  \"Account_Balance_Wallet\",\r\n  \"Query_Stats\",\r\n  \"Savings\",\r\n  \"Store\",\r\n  \"Calculate\",\r\n  \"Bar_Chart\",\r\n  \"Qr_Code_Scanner\",\r\n  \"Account_Tree\",\r\n  \"Add_Shopping_Cart\",\r\n  \"Redeem\",\r\n  \"Receipt\",\r\n  \"Currency_Exchange\",\r\n  \"Trending_Flat\",\r\n  \"Shopping_Basket\",\r\n  \"Qr_Code_2\",\r\n  \"Domain\",\r\n  \"Precision_Manufacturing\",\r\n  \"Qr_Code\",\r\n  \"Leaderboard\",\r\n  \"Corporate_Fare\",\r\n  \"Timeline\",\r\n  \"Insert_Chart\",\r\n  \"Currency_Rupee\",\r\n  \"Wallet\",\r\n  \"Show_Chart\",\r\n  \"Work_History\",\r\n  \"Meeting_Room\",\r\n  \"Euro\",\r\n  \"Credit_Score\",\r\n  \"Barcode_Scanner\",\r\n  \"Pie_Chart\",\r\n  \"Loyalty\",\r\n  \"Conversion_Path\",\r\n  \"Copyright\",\r\n  \"Barcode\",\r\n  \"Trending_Down\",\r\n  \"Track_Changes\",\r\n  \"Price_Check\",\r\n  \"Euro_Symbol\",\r\n  \"Schema\",\r\n  \"Add_Business\",\r\n  \"Add_Card\",\r\n  \"Card_Membership\",\r\n  \"Currency_Bitcoin\",\r\n  \"Price_Change\",\r\n  \"Donut_Large\",\r\n  \"Production_Quantity_Limits\",\r\n  \"Tenancy\",\r\n  \"Data_Exploration\",\r\n  \"Bubble_Chart\",\r\n  \"Donut_Small\",\r\n  \"Contactless\",\r\n  \"Money\",\r\n  \"Stacked_Line_Chart\",\r\n  \"Stacked_Bar_Chart\",\r\n  \"Toll\",\r\n  \"Money_Off\",\r\n  \"Cases\",\r\n  \"Currency_Yen\",\r\n  \"Area_Chart\",\r\n  \"Currency_Pound\",\r\n  \"Atr\",\r\n  \"Remove_Shopping_Cart\",\r\n  \"Room_Preferences\",\r\n  \"Add_Chart\",\r\n  \"Shop\",\r\n  \"Domain_Add\",\r\n  \"Grouped_Bar_Chart\",\r\n  \"Card_Travel\",\r\n  \"Legend_Toggle\",\r\n  \"Scatter_Plot\",\r\n  \"Credit_Card_Off\",\r\n  \"Mediation\",\r\n  \"Ssid_Chart\",\r\n  \"Candlestick_Chart\",\r\n  \"Waterfall_Chart\",\r\n  \"Full_Stacked_Bar_Chart\",\r\n  \"Currency_Ruble\",\r\n  \"Domain_Disabled\",\r\n  \"Shop_Two\",\r\n  \"Strikethrough_S\",\r\n  \"Atm\",\r\n  \"Next_Week\",\r\n  \"Multiline_Chart\",\r\n  \"Troubleshoot\",\r\n  \"Currency_Lira\",\r\n  \"Currency_Yuan\",\r\n  \"No_Meeting_Room\",\r\n  \"Shoppingmode\",\r\n  \"Currency_Franc\",\r\n  \"Finance_Mode\",\r\n  \"Data_Table\",\r\n  \"Bar_Chart_4_Bars\",\r\n  \"Source_Environment\",\r\n  \"Orders\",\r\n  \"Finance\",\r\n  \"Enterprise\",\r\n  \"Bid_Landscape\",\r\n  \"Chart_Data\",\r\n  \"Network_Node\",\r\n  \"Family_History\",\r\n  \"Contactless_Off\",\r\n  \"Podium\",\r\n  \"Universal_Currency_Alt\",\r\n  \"Conveyor_Belt\",\r\n  \"Flowsheet\",\r\n  \"Planner_Review\",\r\n  \"Order_Approve\",\r\n  \"Quick_Reorder\",\r\n  \"Search_Insights\",\r\n  \"Energy\",\r\n  \"Checkbook\",\r\n  \"Box\",\r\n  \"Send_Money\",\r\n  \"Universal_Currency\",\r\n  \"Mintmark\",\r\n  \"Forklift\",\r\n  \"Mitre\",\r\n  \"Inactive_Order\",\r\n  \"Currency_Rupee_Circle\",\r\n  \"Qr_Code_2_Add\",\r\n  \"Box_Add\",\r\n  \"Front_Loader\",\r\n  \"Trolley\",\r\n  \"Pallet\",\r\n  \"Work_Alert\",\r\n  \"Enterprise_Off\",\r\n  \"Barcode_Reader\",\r\n  \"Bid_Landscape_Disabled\",\r\n  \"Work_Update\",\r\n  \"Box_Edit\",\r\n  \"Order_Play\",\r\n  \"Conversion_Path_Off\",\r\n  \"Credit_Card_Gear\",\r\n  \"Credit_Card_Heart\",\r\n  \"Shopping_Cart_Off\",\r\n  \"Pin_Drop\",\r\n  \"Location_On\",\r\n  \"Map\",\r\n  \"Home_Pin\",\r\n  \"Explore\",\r\n  \"Restaurant\",\r\n  \"Flag\",\r\n  \"My_Location\",\r\n  \"Local_Fire_Department\",\r\n  \"Local_Mall\",\r\n  \"Person_Pin_Circle\",\r\n  \"Near_Me\",\r\n  \"Where_To_Vote\",\r\n  \"Business_Center\",\r\n  \"East\",\r\n  \"Restaurant_Menu\",\r\n  \"Handyman\",\r\n  \"Factory\",\r\n  \"Local_Library\",\r\n  \"Medical_Services\",\r\n  \"Home_Work\",\r\n  \"Layers\",\r\n  \"Local_Activity\",\r\n  \"Share_Location\",\r\n  \"Emergency\",\r\n  \"North_East\",\r\n  \"Add_Location\",\r\n  \"Fastfood\",\r\n  \"Navigation\",\r\n  \"Warehouse\",\r\n  \"Person_Pin\",\r\n  \"Home_Repair_Service\",\r\n  \"Local_Parking\",\r\n  \"Local_Police\",\r\n  \"Local_Hospital\",\r\n  \"South\",\r\n  \"Zoom_Out_Map\",\r\n  \"Location_Searching\",\r\n  \"Local_Florist\",\r\n  \"Location_Away\",\r\n  \"Crisis_Alert\",\r\n  \"West\",\r\n  \"Park\",\r\n  \"Local_Gas_Station\",\r\n  \"Maps_Ugc\",\r\n  \"Cleaning_Services\",\r\n  \"Local_Atm\",\r\n  \"360\",\r\n  \"Package\",\r\n  \"Flag_Circle\",\r\n  \"Electrical_Services\",\r\n  \"North\",\r\n  \"Add_Location_Alt\",\r\n  \"Directions\",\r\n  \"Fmd_Bad\",\r\n  \"Theater_Comedy\",\r\n  \"Local_Drink\",\r\n  \"Location_Home\",\r\n  \"Local_Pizza\",\r\n  \"Not_Listed_Location\",\r\n  \"Beenhere\",\r\n  \"Local_Post_Office\",\r\n  \"Wine_Bar\",\r\n  \"Alt_Route\",\r\n  \"Signpost\",\r\n  \"Local_Convenience_Store\",\r\n  \"Tour\",\r\n  \"Traffic\",\r\n  \"Trip_Origin\",\r\n  \"Church\",\r\n  \"Local_Laundry_Service\",\r\n  \"Safety_Check\",\r\n  \"Ev_Station\",\r\n  \"Takeout_Dining\",\r\n  \"Zoom_In_Map\",\r\n  \"Moving\",\r\n  \"Soup_Kitchen\",\r\n  \"Pest_Control\",\r\n  \"Stadium\",\r\n  \"Location_Off\",\r\n  \"Transfer_Within_A_Station\",\r\n  \"Connecting_Airports\",\r\n  \"Wrong_Location\",\r\n  \"Multiple_Stop\",\r\n  \"Edit_Location\",\r\n  \"Plumbing\",\r\n  \"Mode_Of_Travel\",\r\n  \"Minor_Crash\",\r\n  \"South_East\",\r\n  \"Add_Road\",\r\n  \"Local_Pharmacy\",\r\n  \"Fire_Truck\",\r\n  \"Castle\",\r\n  \"Dry_Cleaning\",\r\n  \"Set_Meal\",\r\n  \"Baby_Changing_Station\",\r\n  \"Edit_Location_Alt\",\r\n  \"Layers_Clear\",\r\n  \"North_West\",\r\n  \"Mosque\",\r\n  \"Edit_Attributes\",\r\n  \"Local_Car_Wash\",\r\n  \"Run_Circle\",\r\n  \"Transit_Enterexit\",\r\n  \"Satellite\",\r\n  \"Sos\",\r\n  \"Edit_Road\",\r\n  \"South_West\",\r\n  \"Streetview\",\r\n  \"Add_Home\",\r\n  \"Kebab_Dining\",\r\n  \"Airline_Stops\",\r\n  \"Fire_Hydrant\",\r\n  \"Local_See\",\r\n  \"Assist_Walker\",\r\n  \"Add_Home_Work\",\r\n  \"Remove_Road\",\r\n  \"No_Meals\",\r\n  \"Flight_Class\",\r\n  \"Synagogue\",\r\n  \"Fort\",\r\n  \"Location_Disabled\",\r\n  \"Temple_Buddhist\",\r\n  \"Compass_Calibration\",\r\n  \"Temple_Hindu\",\r\n  \"Explore_Off\",\r\n  \"Pest_Control_Rodent\",\r\n  \"Directions_Alt\",\r\n  \"Near_Me_Disabled\",\r\n  \"Pergola\",\r\n  \"Directions_Off\",\r\n  \"Package_2\",\r\n  \"Things_To_Do\",\r\n  \"Pet_Supplies\",\r\n  \"Explore_Nearby\",\r\n  \"Directions_Alt_Off\",\r\n  \"Universal_Local\",\r\n  \"File_Map\",\r\n  \"Add_Triangle\",\r\n  \"Moved_Location\",\r\n  \"Moving_Ministry\",\r\n  \"Move_Location\",\r\n  \"Move\",\r\n  \"Safety_Check_Off\",\r\n  \"Description\",\r\n  \"Content_Copy\",\r\n  \"Dashboard\",\r\n  \"Edit_Note\",\r\n  \"Menu_Book\",\r\n  \"Grid_View\",\r\n  \"List\",\r\n  \"Folder\",\r\n  \"List_Alt\",\r\n  \"Inventory\",\r\n  \"Folder_Open\",\r\n  \"Article\",\r\n  \"Fact_Check\",\r\n  \"Attach_File\",\r\n  \"Format_List_Bulleted\",\r\n  \"Assignment\",\r\n  \"Task\",\r\n  \"Checklist\",\r\n  \"Cloud_Upload\",\r\n  \"Draft\",\r\n  \"Cloud\",\r\n  \"Summarize\",\r\n  \"Draw\",\r\n  \"Newspaper\",\r\n  \"File_Copy\",\r\n  \"View_List\",\r\n  \"Note_Add\",\r\n  \"Border_Color\",\r\n  \"Book\",\r\n  \"Design_Services\",\r\n  \"History_Edu\",\r\n  \"Pending_Actions\",\r\n  \"Format_Quote\",\r\n  \"Post_Add\",\r\n  \"Request_Quote\",\r\n  \"Cloud_Download\",\r\n  \"Drag_Handle\",\r\n  \"Table\",\r\n  \"Contact_Page\",\r\n  \"Archive\",\r\n  \"Space_Dashboard\",\r\n  \"Content_Paste\",\r\n  \"Percent\",\r\n  \"Attachment\",\r\n  \"Assignment_Ind\",\r\n  \"Format_List_Numbered\",\r\n  \"Assignment_Turned_In\",\r\n  \"Tag\",\r\n  \"Table_Chart\",\r\n  \"Text_Fields\",\r\n  \"Sticky_Note_2\",\r\n  \"Dashboard_Customize\",\r\n  \"Integration_Instructions\",\r\n  \"Format_Bold\",\r\n  \"Reorder\",\r\n  \"Find_In_Page\",\r\n  \"Text_Snippet\",\r\n  \"Document_Scanner\",\r\n  \"Checklist_Rtl\",\r\n  \"Note_Alt\",\r\n  \"Edit_Document\",\r\n  \"Cloud_Sync\",\r\n  \"Table_Rows\",\r\n  \"Cloud_Done\",\r\n  \"Perm_Media\",\r\n  \"Title\",\r\n  \"Data_Object\",\r\n  \"Table_View\",\r\n  \"Content_Cut\",\r\n  \"Notes\",\r\n  \"Subject\",\r\n  \"Functions\",\r\n  \"Format_Italic\",\r\n  \"Content_Paste_Search\",\r\n  \"Format_Color_Fill\",\r\n  \"Folder_Shared\",\r\n  \"Horizontal_Rule\",\r\n  \"Plagiarism\",\r\n  \"File_Present\",\r\n  \"Folder_Copy\",\r\n  \"Cloud_Off\",\r\n  \"Format_Paint\",\r\n  \"Ballot\",\r\n  \"View_Column\",\r\n  \"Team_Dashboard\",\r\n  \"Format_Align_Left\",\r\n  \"Add_Link\",\r\n  \"Difference\",\r\n  \"Read_More\",\r\n  \"View_Agenda\",\r\n  \"Format_Size\",\r\n  \"Format_Underlined\",\r\n  \"Toc\",\r\n  \"Vertical_Align_Top\",\r\n  \"Height\",\r\n  \"Vertical_Align_Bottom\",\r\n  \"Copy_All\",\r\n  \"View_Week\",\r\n  \"Format_Color_Text\",\r\n  \"Assignment_Late\",\r\n  \"Drive_Folder_Upload\",\r\n  \"Low_Priority\",\r\n  \"Drive_File_Move\",\r\n  \"View_Module\",\r\n  \"Assignment_Return\",\r\n  \"Folder_Special\",\r\n  \"Segment\",\r\n  \"Format_Align_Center\",\r\n  \"Square\",\r\n  \"Calendar_View_Month\",\r\n  \"Polyline\",\r\n  \"Folder_Zip\",\r\n  \"Breaking_News_Alt_1\",\r\n  \"Format_Align_Right\",\r\n  \"Grading\",\r\n  \"View_Headline\",\r\n  \"Linear_Scale\",\r\n  \"Edit_Off\",\r\n  \"View_Quilt\",\r\n  \"View_Carousel\",\r\n  \"Text_Increase\",\r\n  \"Request_Page\",\r\n  \"Text_Format\",\r\n  \"View_Sidebar\",\r\n  \"Pages\",\r\n  \"Format_Align_Justify\",\r\n  \"Hexagon\",\r\n  \"Numbers\",\r\n  \"Calendar_View_Week\",\r\n  \"Docs_Add_On\",\r\n  \"Format_Shapes\",\r\n  \"Folder_Delete\",\r\n  \"Forms_Add_On\",\r\n  \"Imagesearch_Roller\",\r\n  \"Video_File\",\r\n  \"Calendar_View_Day\",\r\n  \"Font_Download\",\r\n  \"Format_List_Numbered_Rtl\",\r\n  \"Add_To_Drive\",\r\n  \"Join_Inner\",\r\n  \"Content_Paste_Go\",\r\n  \"Restore_Page\",\r\n  \"Vertical_Split\",\r\n  \"Rectangle\",\r\n  \"Format_Color_Reset\",\r\n  \"Rule_Folder\",\r\n  \"Cloud_Circle\",\r\n  \"View_Stream\",\r\n  \"Format_Indent_Increase\",\r\n  \"Spellcheck\",\r\n  \"Data_Array\",\r\n  \"Assignment_Returned\",\r\n  \"Text_Decrease\",\r\n  \"Pivot_Table_Chart\",\r\n  \"Align_Horizontal_Left\",\r\n  \"Merge_Type\",\r\n  \"Pentagon\",\r\n  \"Deselect\",\r\n  \"Vertical_Align_Center\",\r\n  \"Space_Bar\",\r\n  \"Short_Text\",\r\n  \"Join_Left\",\r\n  \"View_Day\",\r\n  \"Format_Strikethrough\",\r\n  \"Flip_To_Front\",\r\n  \"Border_All\",\r\n  \"Shape_Line\",\r\n  \"Format_Line_Spacing\",\r\n  \"Line_Weight\",\r\n  \"Horizontal_Split\",\r\n  \"Format_Indent_Decrease\",\r\n  \"Join_Right\",\r\n  \"Align_Horizontal_Center\",\r\n  \"Subtitles_Off\",\r\n  \"Snippet_Folder\",\r\n  \"Function\",\r\n  \"Format_Clear\",\r\n  \"Glyphs\",\r\n  \"Align_Vertical_Bottom\",\r\n  \"Folder_Off\",\r\n  \"Counter_1\",\r\n  \"Align_Horizontal_Right\",\r\n  \"Vertical_Distribute\",\r\n  \"Content_Paste_Off\",\r\n  \"Insert_Page_Break\",\r\n  \"Line_Axis\",\r\n  \"Superscript\",\r\n  \"Horizontal_Distribute\",\r\n  \"Line_Style\",\r\n  \"Flip_To_Back\",\r\n  \"Align_Vertical_Center\",\r\n  \"Align_Vertical_Top\",\r\n  \"Ink_Eraser\",\r\n  \"Margin\",\r\n  \"Clarify\",\r\n  \"Wrap_Text\",\r\n  \"View_Array\",\r\n  \"Ink_Pen\",\r\n  \"Subscript\",\r\n  \"Border_Style\",\r\n  \"Border_Clear\",\r\n  \"Newsmode\",\r\n  \"Border_Outer\",\r\n  \"Amp_Stories\",\r\n  \"Ink_Highlighter\",\r\n  \"Type_Specimen\",\r\n  \"Text_Rotate_Vertical\",\r\n  \"Padding\",\r\n  \"Finance_Chip\",\r\n  \"Forms_Apps_Script\",\r\n  \"Border_Vertical\",\r\n  \"Note_Stack\",\r\n  \"Text_Rotation_None\",\r\n  \"Format_Textdirection_L_To_R\",\r\n  \"Docs_Apps_Script\",\r\n  \"News\",\r\n  \"Equal\",\r\n  \"Frame_Inspect\",\r\n  \"Format_Overline\",\r\n  \"Border_Horizontal\",\r\n  \"Font_Download_Off\",\r\n  \"Format_Textdirection_R_To_L\",\r\n  \"Assignment_Add\",\r\n  \"Text_Rotation_Angleup\",\r\n  \"Border_Bottom\",\r\n  \"Text_Rotation_Down\",\r\n  \"Border_Inner\",\r\n  \"Border_Left\",\r\n  \"Border_Top\",\r\n  \"Text_Rotation_Angledown\",\r\n  \"Join\",\r\n  \"Overview\",\r\n  \"Format_H1\",\r\n  \"Counter_2\",\r\n  \"Note_Stack_Add\",\r\n  \"Text_Rotate_Up\",\r\n  \"Full_Coverage\",\r\n  \"Export_Notes\",\r\n  \"Border_Right\",\r\n  \"Signature\",\r\n  \"View_Column_2\",\r\n  \"Colors\",\r\n  \"Contract\",\r\n  \"Breaking_News\",\r\n  \"Counter_3\",\r\n  \"Lab_Profile\",\r\n  \"Csv\",\r\n  \"Slide_Library\",\r\n  \"Unknown_Document\",\r\n  \"Width\",\r\n  \"Dictionary\",\r\n  \"Format_Underlined_Squiggle\",\r\n  \"File_Save\",\r\n  \"Rubric\",\r\n  \"Format_H2\",\r\n  \"Contract_Edit\",\r\n  \"Format_List_Bulleted_Add\",\r\n  \"Variables\",\r\n  \"Format_Paragraph\",\r\n  \"Format_Ink_Highlighter\",\r\n  \"Format_Image_Left\",\r\n  \"Diagnosis\",\r\n  \"Add_Notes\",\r\n  \"Draw_Abstract\",\r\n  \"Reset_Image\",\r\n  \"Select\",\r\n  \"Remove_Selection\",\r\n  \"Ink_Marker\",\r\n  \"Process_Chart\",\r\n  \"Shapes\",\r\n  \"Format_Image_Right\",\r\n  \"Grid_Guides\",\r\n  \"Text_Fields_Alt\",\r\n  \"Counter_4\",\r\n  \"Folder_Managed\",\r\n  \"Match_Case\",\r\n  \"Voting_Chip\",\r\n  \"Format_H3\",\r\n  \"Stock_Media\",\r\n  \"Article_Shortcut\",\r\n  \"Format_H6\",\r\n  \"Scan_Delete\",\r\n  \"Folder_Limited\",\r\n  \"Format_H5\",\r\n  \"Frame_Source\",\r\n  \"Regular_Expression\",\r\n  \"Smb_Share\",\r\n  \"Book_2\",\r\n  \"Format_H4\",\r\n  \"Sticky_Note\",\r\n  \"Insert_Text\",\r\n  \"Stylus_Laser_Pointer\",\r\n  \"Table_Chart_View\",\r\n  \"Location_Chip\",\r\n  \"Table_Rows_Narrow\",\r\n  \"Lasso_Select\",\r\n  \"Line_Curve\",\r\n  \"Cell_Merge\",\r\n  \"Format_Letter_Spacing\",\r\n  \"Text_Ad\",\r\n  \"Ungroup\",\r\n  \"List_Alt_Add\",\r\n  \"Custom_Typography\",\r\n  \"Asterisk\",\r\n  \"Format_Letter_Spacing_Standard\",\r\n  \"Book_5\",\r\n  \"Contract_Delete\",\r\n  \"Folder_Supervised\",\r\n  \"Counter_5\",\r\n  \"Decimal_Increase\",\r\n  \"Line_End_Circle\",\r\n  \"Line_Start\",\r\n  \"Scan\",\r\n  \"Stroke_Partial\",\r\n  \"Book_4\",\r\n  \"Business_Chip\",\r\n  \"Line_End_Arrow\",\r\n  \"Source_Notes\",\r\n  \"Two_Pager\",\r\n  \"Attach_File_Add\",\r\n  \"Folder_Data\",\r\n  \"Ink_Highlighter_Move\",\r\n  \"Text_Select_Move_Forward_Character\",\r\n  \"Text_Select_Start\",\r\n  \"Thumbnail_Bar\",\r\n  \"Fit_Width\",\r\n  \"Format_Letter_Spacing_2\",\r\n  \"Format_Text_Overflow\",\r\n  \"Line_End\",\r\n  \"Draw_Collage\",\r\n  \"Stroke_Full\",\r\n  \"Counter_0\",\r\n  \"Counter_6\",\r\n  \"Line_End_Arrow_Notch\",\r\n  \"Line_Start_Diamond\",\r\n  \"Person_Book\",\r\n  \"Text_Select_Move_Down\",\r\n  \"Brand_Family\",\r\n  \"Format_Letter_Spacing_Wide\",\r\n  \"Language_Korean_Latin\",\r\n  \"Other_Admission\",\r\n  \"Pen_Size_2\",\r\n  \"File_Save_Off\",\r\n  \"Flex_Wrap\",\r\n  \"Language_Chinese_Quick\",\r\n  \"Line_Start_Circle\",\r\n  \"Top_Panel_Close\",\r\n  \"Counter_7\",\r\n  \"Heap_Snapshot_Thumbnail\",\r\n  \"Highlighter_Size_3\",\r\n  \"Line_End_Square\",\r\n  \"Counter_8\",\r\n  \"Counter_9\",\r\n  \"Format_Letter_Spacing_Wider\",\r\n  \"Language_International\",\r\n  \"Line_End_Diamond\",\r\n  \"Pageless\",\r\n  \"Pen_Size_3\",\r\n  \"Post\",\r\n  \"Text_Select_Jump_To_Beginning\",\r\n  \"Variable_Add\",\r\n  \"Ink_Eraser_Off\",\r\n  \"Language_Gb_English\",\r\n  \"Language_Spanish\",\r\n  \"Line_Start_Arrow\",\r\n  \"Markdown_Copy\",\r\n  \"Match_Word\",\r\n  \"Text_Select_End\",\r\n  \"Top_Panel_Open\",\r\n  \"File_Copy_Off\",\r\n  \"Flex_Direction\",\r\n  \"Heap_Snapshot_Multiple\",\r\n  \"Line_Start_Square\",\r\n  \"Pen_Size_5\",\r\n  \"Text_Select_Move_Up\",\r\n  \"Tsv\",\r\n  \"Align_Justify_Space_Around\",\r\n  \"Align_Justify_Space_Even\",\r\n  \"Book_3\",\r\n  \"Heap_Snapshot_Large\",\r\n  \"Language_French\",\r\n  \"Markdown\",\r\n  \"Sheets_Rtl\",\r\n  \"Special_Character\",\r\n  \"Text_Select_Jump_To_End\",\r\n  \"Text_Select_Move_Forward_Word\",\r\n  \"Unknown_7\",\r\n  \"Align_Justify_Space_Between\",\r\n  \"Align_Self_Stretch\",\r\n  \"Align_Space_Between\",\r\n  \"Format_Text_Clip\",\r\n  \"Frame_Reload\",\r\n  \"Line_Start_Arrow_Notch\",\r\n  \"Pen_Size_4\",\r\n  \"Serif\",\r\n  \"Text_Select_Move_Back_Word\",\r\n  \"Variable_Insert\",\r\n  \"Fit_Page\",\r\n  \"Highlighter_Size_5\",\r\n  \"Language_Pinyin\",\r\n  \"Letter_Switch\",\r\n  \"Variable_Remove\",\r\n  \"Align_Center\",\r\n  \"Align_Flex_Center\",\r\n  \"Align_Space_Even\",\r\n  \"Attach_File_Off\",\r\n  \"Decimal_Decrease\",\r\n  \"Format_Text_Wrap\",\r\n  \"Highlighter_Size_4\",\r\n  \"Language_Chinese_Dayi\",\r\n  \"Language_Chinese_Wubi\",\r\n  \"Language_Japanese_Kana\",\r\n  \"Language_Us\",\r\n  \"Markdown_Paste\",\r\n  \"Pen_Size_1\",\r\n  \"Slab_Serif\",\r\n  \"Titlecase\",\r\n  \"Align_Flex_Start\",\r\n  \"Align_Justify_Center\",\r\n  \"Align_Justify_Flex_End\",\r\n  \"Align_Justify_Flex_Start\",\r\n  \"Align_Space_Around\",\r\n  \"Align_Stretch\",\r\n  \"Flex_No_Wrap\",\r\n  \"Highlighter_Size_1\",\r\n  \"Highlighter_Size_2\",\r\n  \"Language_Chinese_Array\",\r\n  \"Language_Chinese_Cangjie\",\r\n  \"Language_Chinese_Pinyin\",\r\n  \"Language_Us_Colemak\",\r\n  \"Language_Us_Dvorak\",\r\n  \"Text_Select_Move_Back_Character\",\r\n  \"Text_Up\",\r\n  \"Uppercase\",\r\n  \"Align_End\",\r\n  \"Align_Flex_End\",\r\n  \"Align_Items_Stretch\",\r\n  \"Align_Justify_Stretch\",\r\n  \"Align_Start\",\r\n  \"Format_Textdirection_Vertical\",\r\n  \"Lowercase\",\r\n  \"Script\",\r\n  \"Table_Eye\",\r\n  \"Play_Arrow\",\r\n  \"Play_Circle\",\r\n  \"Mic\",\r\n  \"Videocam\",\r\n  \"Volume_Up\",\r\n  \"Pause\",\r\n  \"Music_Note\",\r\n  \"Library_Books\",\r\n  \"Movie\",\r\n  \"Speed\",\r\n  \"Skip_Next\",\r\n  \"Replay\",\r\n  \"Volume_Off\",\r\n  \"Pause_Circle\",\r\n  \"View_In_Ar\",\r\n  \"Fiber_Manual_Record\",\r\n  \"Skip_Previous\",\r\n  \"Stop\",\r\n  \"Stop_Circle\",\r\n  \"Equalizer\",\r\n  \"Subscriptions\",\r\n  \"Video_Library\",\r\n  \"Fast_Forward\",\r\n  \"Playlist_Add\",\r\n  \"Video_Call\",\r\n  \"Repeat\",\r\n  \"Volume_Mute\",\r\n  \"Mic_Off\",\r\n  \"Shuffle\",\r\n  \"Hearing\",\r\n  \"Library_Music\",\r\n  \"Podcasts\",\r\n  \"Playlist_Add_Check\",\r\n  \"Fast_Rewind\",\r\n  \"Queue_Music\",\r\n  \"Sound_Detection_Dog_Barking\",\r\n  \"Video_Camera_Front\",\r\n  \"Subtitles\",\r\n  \"Volume_Down\",\r\n  \"Play_Pause\",\r\n  \"Album\",\r\n  \"Radio\",\r\n  \"Discover_Tune\",\r\n  \"Av_Timer\",\r\n  \"Library_Add_Check\",\r\n  \"Closed_Caption\",\r\n  \"Videocam_Off\",\r\n  \"Stream\",\r\n  \"Forward_10\",\r\n  \"Not_Started\",\r\n  \"Fiber_New\",\r\n  \"Replay_10\",\r\n  \"Playlist_Play\",\r\n  \"Branding_Watermark\",\r\n  \"Text_To_Speech\",\r\n  \"Recent_Actors\",\r\n  \"Playlist_Remove\",\r\n  \"Interpreter_Mode\",\r\n  \"Slow_Motion_Video\",\r\n  \"Frame_Person\",\r\n  \"Playlist_Add_Check_Circle\",\r\n  \"Settings_Voice\",\r\n  \"Video_Settings\",\r\n  \"Featured_Play_List\",\r\n  \"Sound_Detection_Loud_Sound\",\r\n  \"Audio_File\",\r\n  \"Lyrics\",\r\n  \"Hd\",\r\n  \"Play_Lesson\",\r\n  \"High_Quality\",\r\n  \"Repeat_One\",\r\n  \"Call_To_Action\",\r\n  \"Add_To_Queue\",\r\n  \"Music_Off\",\r\n  \"Video_Camera_Back\",\r\n  \"Spatial_Audio_Off\",\r\n  \"Shuffle_On\",\r\n  \"Playlist_Add_Circle\",\r\n  \"Volume_Down_Alt\",\r\n  \"Featured_Video\",\r\n  \"Hearing_Disabled\",\r\n  \"Replay_5\",\r\n  \"Repeat_On\",\r\n  \"Speech_To_Text\",\r\n  \"Queue_Play_Next\",\r\n  \"Spatial_Audio\",\r\n  \"Art_Track\",\r\n  \"Explicit\",\r\n  \"Airplay\",\r\n  \"Forward_30\",\r\n  \"4k\",\r\n  \"Forward_5\",\r\n  \"Music_Video\",\r\n  \"Replay_30\",\r\n  \"Spatial_Tracking\",\r\n  \"Brand_Awareness\",\r\n  \"Control_Camera\",\r\n  \"Closed_Caption_Disabled\",\r\n  \"Digital_Out_Of_Home\",\r\n  \"Fiber_Smart_Record\",\r\n  \"Video_Label\",\r\n  \"Play_Disabled\",\r\n  \"Repeat_One_On\",\r\n  \"Sd\",\r\n  \"Broadcast_On_Personal\",\r\n  \"Missed_Video_Call\",\r\n  \"Surround_Sound\",\r\n  \"Fiber_Pin\",\r\n  \"10k\",\r\n  \"Sound_Detection_Glass_Break\",\r\n  \"60fps\",\r\n  \"Remove_From_Queue\",\r\n  \"Broadcast_On_Home\",\r\n  \"Fiber_Dvr\",\r\n  \"30fps\",\r\n  \"4k_Plus\",\r\n  \"8k\",\r\n  \"Video_Stable\",\r\n  \"Instant_Mix\",\r\n  \"Voice_Selection\",\r\n  \"1k\",\r\n  \"Privacy\",\r\n  \"8k_Plus\",\r\n  \"7k\",\r\n  \"2k\",\r\n  \"1k_Plus\",\r\n  \"9k_Plus\",\r\n  \"9k\",\r\n  \"5k\",\r\n  \"6k\",\r\n  \"2k_Plus\",\r\n  \"5k_Plus\",\r\n  \"6k_Plus\",\r\n  \"3k\",\r\n  \"3k_Plus\",\r\n  \"7k_Plus\",\r\n  \"Ar_On_You\",\r\n  \"Adaptive_Audio_Mic\",\r\n  \"Music_Cast\",\r\n  \"Genres\",\r\n  \"Animated_Images\",\r\n  \"Artist\",\r\n  \"No_Sound\",\r\n  \"Video_Search\",\r\n  \"Media_Link\",\r\n  \"Resume\",\r\n  \"Cinematic_Blur\",\r\n  \"Hangout_Video\",\r\n  \"Video_Camera_Front_Off\",\r\n  \"Movie_Edit\",\r\n  \"Autoplay\",\r\n  \"Forward_Media\",\r\n  \"Autopause\",\r\n  \"Mic_Double\",\r\n  \"Adaptive_Audio_Mic_Off\",\r\n  \"Ar_Stickers\",\r\n  \"Forward_Circle\",\r\n  \"Audio_Description\",\r\n  \"Movie_Info\",\r\n  \"Select_To_Speak\",\r\n  \"Full_Hd\",\r\n  \"Avc\",\r\n  \"Eye_Tracking\",\r\n  \"Speed_2x\",\r\n  \"2d\",\r\n  \"Hangout_Video_Off\",\r\n  \"Autostop\",\r\n  \"Speed_1_5\",\r\n  \"Speed_0_5\",\r\n  \"Av1\",\r\n  \"Closed_Caption_Add\",\r\n  \"Speed_0_75\",\r\n  \"View_In_Ar_Off\",\r\n  \"Spatial_Speaker\",\r\n  \"Speed_0_25\",\r\n  \"Speed_1_2\",\r\n  \"Speed_1_2x\",\r\n  \"Frame_Person_Mic\",\r\n  \"Frame_Person_Off\",\r\n  \"Sound_Sampler\",\r\n  \"Speed_0_2x\",\r\n  \"Speed_0_5x\",\r\n  \"Speed_0_7x\",\r\n  \"Speed_1_25\",\r\n  \"Speed_1_5x\",\r\n  \"Speed_1_75\",\r\n  \"Movie_Off\",\r\n  \"Replace_Image\",\r\n  \"Replace_Video\",\r\n  \"Speed_1_7x\",\r\n  \"Hearing_Aid\",\r\n  \"Replace_Audio\",\r\n  \"Local_Shipping\",\r\n  \"Directions_Car\",\r\n  \"Flight\",\r\n  \"Directions_Run\",\r\n  \"Directions_Walk\",\r\n  \"Flight_Takeoff\",\r\n  \"Directions_Bus\",\r\n  \"Train\",\r\n  \"Directions_Bike\",\r\n  \"Airport_Shuttle\",\r\n  \"Pedal_Bike\",\r\n  \"Directions_Boat\",\r\n  \"Two_Wheeler\",\r\n  \"Agriculture\",\r\n  \"Local_Taxi\",\r\n  \"Sailing\",\r\n  \"Electric_Car\",\r\n  \"Flight_Land\",\r\n  \"Hail\",\r\n  \"No_Crash\",\r\n  \"Commute\",\r\n  \"Motorcycle\",\r\n  \"Car_Crash\",\r\n  \"Tram\",\r\n  \"Departure_Board\",\r\n  \"Subway\",\r\n  \"Electric_Moped\",\r\n  \"Turn_Right\",\r\n  \"Electric_Scooter\",\r\n  \"Fork_Right\",\r\n  \"Directions_Subway\",\r\n  \"Tire_Repair\",\r\n  \"Electric_Bike\",\r\n  \"Rv_Hookup\",\r\n  \"Turn_Left\",\r\n  \"Bus_Alert\",\r\n  \"Transportation\",\r\n  \"Airlines\",\r\n  \"Taxi_Alert\",\r\n  \"U_Turn_Left\",\r\n  \"Directions_Railway\",\r\n  \"Electric_Rickshaw\",\r\n  \"Turn_Slight_Right\",\r\n  \"Fork_Left\",\r\n  \"U_Turn_Right\",\r\n  \"Railway_Alert\",\r\n  \"Bike_Scooter\",\r\n  \"Turn_Slight_Left\",\r\n  \"Turn_Sharp_Right\",\r\n  \"No_Transfer\",\r\n  \"Snowmobile\",\r\n  \"Turn_Sharp_Left\",\r\n  \"Flightsmode\",\r\n  \"Swap_Driving_Apps_Wheel\",\r\n  \"Swap_Driving_Apps\",\r\n  \"Car_Tag\",\r\n  \"Ambulance\",\r\n  \"Auto_Transmission\",\r\n  \"Auto_Towing\",\r\n  \"Traffic_Jam\",\r\n  \"Directions_Railway_2\",\r\n  \"Gondola_Lift\",\r\n  \"Flyover\",\r\n  \"Monorail\",\r\n  \"Road\",\r\n  \"Speed_Camera\",\r\n  \"Trolley_Cable_Car\",\r\n  \"Cable_Car\",\r\n  \"Scooter\",\r\n  \"Bike_Dock\",\r\n  \"Bike_Lane\",\r\n  \"Funicular\",\r\n  \"Hov\",\r\n  \"Metro\",\r\n  \"Railway_Alert_2\",\r\n  \"Unpaved_Road\",\r\n  \"School\",\r\n  \"Campaign\",\r\n  \"Construction\",\r\n  \"Engineering\",\r\n  \"Volunteer_Activism\",\r\n  \"Science\",\r\n  \"Sports_Esports\",\r\n  \"Confirmation_Number\",\r\n  \"Real_Estate_Agent\",\r\n  \"Cake\",\r\n  \"Self_Improvement\",\r\n  \"Sports_Soccer\",\r\n  \"Air\",\r\n  \"Biotech\",\r\n  \"Water\",\r\n  \"Hiking\",\r\n  \"Architecture\",\r\n  \"Sports_Score\",\r\n  \"Personal_Injury\",\r\n  \"Sports_Basketball\",\r\n  \"Waves\",\r\n  \"Theaters\",\r\n  \"Sports_Tennis\",\r\n  \"Switch_Account\",\r\n  \"Nights_Stay\",\r\n  \"Sports_Gymnastics\",\r\n  \"Experiment\",\r\n  \"How_To_Vote\",\r\n  \"Backpack\",\r\n  \"Sports_Motorsports\",\r\n  \"Surfing\",\r\n  \"Sports_Kabaddi\",\r\n  \"Piano\",\r\n  \"Sports\",\r\n  \"Toys\",\r\n  \"Sports_Volleyball\",\r\n  \"Sports_Baseball\",\r\n  \"Camping\",\r\n  \"Sports_Martial_Arts\",\r\n  \"Swords\",\r\n  \"Downhill_Skiing\",\r\n  \"Phishing\",\r\n  \"Scoreboard\",\r\n  \"Kayaking\",\r\n  \"Trophy\",\r\n  \"Sports_Football\",\r\n  \"Sports_Handball\",\r\n  \"Skateboarding\",\r\n  \"Sports_Golf\",\r\n  \"Featured_Seasonal_And_Gifts\",\r\n  \"Toys_Fan\",\r\n  \"Sports_Cricket\",\r\n  \"Nordic_Walking\",\r\n  \"Roller_Skating\",\r\n  \"Kitesurfing\",\r\n  \"Rowing\",\r\n  \"Scuba_Diving\",\r\n  \"Storm\",\r\n  \"Sports_Mma\",\r\n  \"Paragliding\",\r\n  \"Snowboarding\",\r\n  \"Sports_Hockey\",\r\n  \"Ice_Skating\",\r\n  \"Snowshoeing\",\r\n  \"Sports_Rugby\",\r\n  \"Family_Link\",\r\n  \"Sledding\",\r\n  \"Rewarded_Ads\",\r\n  \"Piano_Off\",\r\n  \"No_Backpack\",\r\n  \"Ifl\",\r\n  \"Steps\",\r\n  \"Ecg_Heart\",\r\n  \"Sprint\",\r\n  \"Health_Metrics\",\r\n  \"Readiness_Score\",\r\n  \"Mindfulness\",\r\n  \"Toys_And_Games\",\r\n  \"Exercise\",\r\n  \"Service_Toolbox\",\r\n  \"Cake_Add\",\r\n  \"Person_Celebrate\",\r\n  \"Sports_And_Outdoors\",\r\n  \"Person_Play\",\r\n  \"Floor\",\r\n  \"Laps\",\r\n  \"Stress_Management\",\r\n  \"Menstrual_Health\",\r\n  \"Pace\",\r\n  \"Newsstand\",\r\n  \"Distance\",\r\n  \"Azm\",\r\n  \"Relax\",\r\n  \"Avg_Pace\",\r\n  \"Interactive_Space\",\r\n  \"Avg_Time\",\r\n  \"Bath_Outdoor\",\r\n  \"Bath_Private\",\r\n  \"Water_Full\",\r\n  \"Water_Medium\",\r\n  \"Onsen\",\r\n  \"Eda\",\r\n  \"Elevation\",\r\n  \"Fertile\",\r\n  \"Spo2\",\r\n  \"Podiatry\",\r\n  \"Arrow_Warm_Up\",\r\n  \"Check_In_Out\",\r\n  \"Cleaning\",\r\n  \"Arrow_Cool_Down\",\r\n  \"Bia\",\r\n  \"Cadence\",\r\n  \"Science_Off\",\r\n  \"Glass_Cup\",\r\n  \"Hr_Resting\",\r\n  \"Water_Loss\",\r\n  \"Bath_Public_Large\",\r\n  \"Monitor_Weight_Gain\",\r\n  \"Monitor_Weight_Loss\",\r\n  \"Physical_Therapy\",\r\n  \"Sauna\",\r\n  \"Sleep_Score\",\r\n  \"Vo2_Max\",\r\n  \"Phone_iPhone\",\r\n  \"Save\",\r\n  \"Smartphone\",\r\n  \"Print\",\r\n  \"Keyboard_Arrow_Down\",\r\n  \"Computer\",\r\n  \"Devices\",\r\n  \"Desktop_Windows\",\r\n  \"Smart_Display\",\r\n  \"Dns\",\r\n  \"Keyboard_Backspace\",\r\n  \"Headphones\",\r\n  \"Smart_Toy\",\r\n  \"Phone_Android\",\r\n  \"Memory\",\r\n  \"Keyboard_Arrow_Right\",\r\n  \"Keyboard\",\r\n  \"Live_Tv\",\r\n  \"Tv\",\r\n  \"Laptop_Mac\",\r\n  \"Headset_Mic\",\r\n  \"Keyboard_Arrow_Up\",\r\n  \"Device_Thermostat\",\r\n  \"Balance\",\r\n  \"Mouse\",\r\n  \"Route\",\r\n  \"Point_Of_Sale\",\r\n  \"Laptop_Chromebook\",\r\n  \"Keyboard_Arrow_Left\",\r\n  \"Watch\",\r\n  \"Keyboard_Return\",\r\n  \"Power\",\r\n  \"Laptop_Windows\",\r\n  \"Developer_Board\",\r\n  \"Router\",\r\n  \"Cast\",\r\n  \"Display_Settings\",\r\n  \"Scale\",\r\n  \"Book_Online\",\r\n  \"Developer_Mode\",\r\n  \"Fax\",\r\n  \"Videogame_Asset\",\r\n  \"Cast_For_Education\",\r\n  \"Device_Hub\",\r\n  \"Straight\",\r\n  \"Mobile_Friendly\",\r\n  \"Screen_Search_Desktop\",\r\n  \"Desktop_Mac\",\r\n  \"Settings_Input_Antenna\",\r\n  \"Settings_Ethernet\",\r\n  \"Devices_Other\",\r\n  \"Monitor\",\r\n  \"Send_To_Mobile\",\r\n  \"Important_Devices\",\r\n  \"Tablet_Mac\",\r\n  \"System_Update\",\r\n  \"Settings_Remote\",\r\n  \"Monitor_Weight\",\r\n  \"Screen_Rotation\",\r\n  \"Screen_Share\",\r\n  \"Keyboard_Alt\",\r\n  \"Settings_Input_Component\",\r\n  \"Sim_Card\",\r\n  \"Connected_Tv\",\r\n  \"Speaker\",\r\n  \"Merge\",\r\n  \"Tablet\",\r\n  \"Keyboard_Tab\",\r\n  \"Vibration\",\r\n  \"Power_Off\",\r\n  \"Screenshot_Monitor\",\r\n  \"Remember_Me\",\r\n  \"Browser_Updated\",\r\n  \"Security_Update_Good\",\r\n  \"Sd_Card\",\r\n  \"Cast_Connected\",\r\n  \"Device_Unknown\",\r\n  \"Tablet_Android\",\r\n  \"Charging_Station\",\r\n  \"Phonelink_Setup\",\r\n  \"Punch_Clock\",\r\n  \"Screenshot\",\r\n  \"Scanner\",\r\n  \"Settings_Input_Hdmi\",\r\n  \"Stay_Current_Portrait\",\r\n  \"Print_Disabled\",\r\n  \"Tap_And_Play\",\r\n  \"Keyboard_Hide\",\r\n  \"Security_Update_Warning\",\r\n  \"Keyboard_Capslock\",\r\n  \"App_Blocking\",\r\n  \"Speaker_Group\",\r\n  \"Disc_Full\",\r\n  \"Mobile_Screen_Share\",\r\n  \"Aod\",\r\n  \"Sd_Card_Alert\",\r\n  \"Add_To_Home_Screen\",\r\n  \"Tty\",\r\n  \"Lift_To_Talk\",\r\n  \"Earbuds\",\r\n  \"Perm_Device_Information\",\r\n  \"Stop_Screen_Share\",\r\n  \"Mobile_Off\",\r\n  \"Headset_Off\",\r\n  \"Screen_Lock_Portrait\",\r\n  \"Desktop_Access_Disabled\",\r\n  \"Offline_Share\",\r\n  \"Reset_Tv\",\r\n  \"Headphones_Battery\",\r\n  \"Adf_Scanner\",\r\n  \"Dock\",\r\n  \"Roundabout_Right\",\r\n  \"Settop_Component\",\r\n  \"Watch_Off\",\r\n  \"Settings_Input_Svideo\",\r\n  \"Smart_Screen\",\r\n  \"Stay_Current_Landscape\",\r\n  \"Chromecast_Device\",\r\n  \"Settings_Cell\",\r\n  \"Earbuds_Battery\",\r\n  \"Home_Max\",\r\n  \"No_Sim\",\r\n  \"Power_Input\",\r\n  \"Ramp_Right\",\r\n  \"Open_In_Phone\",\r\n  \"Screen_Lock_Landscape\",\r\n  \"Roundabout_Left\",\r\n  \"Stay_Primary_Portrait\",\r\n  \"Tv_Off\",\r\n  \"Stay_Primary_Landscape\",\r\n  \"Developer_Board_Off\",\r\n  \"Phonelink_Off\",\r\n  \"Home_Mini\",\r\n  \"Ramp_Left\",\r\n  \"Screen_Lock_Rotation\",\r\n  \"Videogame_Asset_Off\",\r\n  \"Aod_Tablet\",\r\n  \"Robot\",\r\n  \"Robot_2\",\r\n  \"Devices_Wearables\",\r\n  \"Gamepad\",\r\n  \"Google_Home_Devices\",\r\n  \"Joystick\",\r\n  \"Rear_Camera\",\r\n  \"Tv_Options_Edit_Channels\",\r\n  \"Developer_Mode_Tv\",\r\n  \"Jamboard_Kiosk\",\r\n  \"App_Promo\",\r\n  \"Touchpad_Mouse\",\r\n  \"Head_Mounted_Device\",\r\n  \"Mimo\",\r\n  \"Memory_Alt\",\r\n  \"Reset_Wrench\",\r\n  \"Tv_Options_Input_Settings\",\r\n  \"Camera_Video\",\r\n  \"Lightning_Stand\",\r\n  \"Tv_Signin\",\r\n  \"Aod_Watch\",\r\n  \"Mimo_Disconnect\",\r\n  \"Hard_Drive\",\r\n  \"Security_Key\",\r\n  \"Devices_Off\",\r\n  \"Ecg\",\r\n  \"Media_Output\",\r\n  \"Night_Sight_Max\",\r\n  \"Tv_Guide\",\r\n  \"Missing_Controller\",\r\n  \"Stream_Apps\",\r\n  \"General_Device\",\r\n  \"Emoji_Language\",\r\n  \"Assistant_Device\",\r\n  \"Touchpad_Mouse_Off\",\r\n  \"Tv_Remote\",\r\n  \"Add_Diamond\",\r\n  \"Hard_Drive_2\",\r\n  \"Keyboard_Tab_Rtl\",\r\n  \"Open_Jam\",\r\n  \"P2p\",\r\n  \"Deskphone\",\r\n  \"Screenshot_Tablet\",\r\n  \"Fitness_Tracker\",\r\n  \"Watch_Wake\",\r\n  \"Cast_Warning\",\r\n  \"Audio_Video_Receiver\",\r\n  \"Cast_Pause\",\r\n  \"Pacemaker\",\r\n  \"Watch_Button_Press\",\r\n  \"Keyboard_Lock\",\r\n  \"Lda\",\r\n  \"Print_Connect\",\r\n  \"Smart_Card_Reader\",\r\n  \"Handheld_Controller\",\r\n  \"Keyboard_Lock_Off\",\r\n  \"Media_Output_Off\",\r\n  \"Mouse_Lock\",\r\n  \"Mouse_Lock_Off\",\r\n  \"Print_Error\",\r\n  \"Watch_Vibration\",\r\n  \"Print_Add\",\r\n  \"Print_Lock\",\r\n  \"Ventilator\",\r\n  \"Smart_Card_Reader_Off\",\r\n  \"Smartphone_Camera\",\r\n  \"Tablet_Camera\",\r\n  \"Watch_Check\",\r\n  \"Dark_Mode\",\r\n  \"Light_Mode\",\r\n  \"Wifi\",\r\n  \"Signal_Cellular_Alt\",\r\n  \"Password\",\r\n  \"Widgets\",\r\n  \"Android\",\r\n  \"Storage\",\r\n  \"Pin\",\r\n  \"Rss_Feed\",\r\n  \"Battery_Full\",\r\n  \"Wifi_Off\",\r\n  \"Bluetooth\",\r\n  \"Battery_Charging_Full\",\r\n  \"Thermostat\",\r\n  \"Graphic_Eq\",\r\n  \"Dvr\",\r\n  \"Nightlight\",\r\n  \"Battery_5_Bar\",\r\n  \"Signal_Wifi_4_Bar\",\r\n  \"Gpp_Maybe\",\r\n  \"Cable\",\r\n  \"Gpp_Bad\",\r\n  \"Data_Usage\",\r\n  \"Signal_Cellular_4_Bar\",\r\n  \"Battery_4_Bar\",\r\n  \"Radar\",\r\n  \"Battery_Full_Alt\",\r\n  \"Airplanemode_Active\",\r\n  \"Battery_0_Bar\",\r\n  \"Cameraswitch\",\r\n  \"Wallpaper\",\r\n  \"Flashlight_On\",\r\n  \"Signal_Disconnected\",\r\n  \"Network_Check\",\r\n  \"Battery_6_Bar\",\r\n  \"Charger\",\r\n  \"Wifi_Tethering\",\r\n  \"Sim_Card_Download\",\r\n  \"Usb\",\r\n  \"Quick_Phrases\",\r\n  \"Splitscreen\",\r\n  \"ADB\",\r\n  \"Battery_3_Bar\",\r\n  \"Battery_1_Bar\",\r\n  \"Network_Wifi_3_Bar\",\r\n  \"Battery_Alert\",\r\n  \"Battery_Low\",\r\n  \"Network_Wifi\",\r\n  \"Bluetooth_Searching\",\r\n  \"Bluetooth_Connected\",\r\n  \"Brightness_High\",\r\n  \"Battery_2_Bar\",\r\n  \"5g\",\r\n  \"Wifi_Find\",\r\n  \"Network_Cell\",\r\n  \"Nfc\",\r\n  \"Pattern\",\r\n  \"Bluetooth_Disabled\",\r\n  \"Data_Saver_On\",\r\n  \"Signal_Wifi_Statusbar_Not_Connected\",\r\n  \"Signal_Cellular_3_Bar\",\r\n  \"Signal_Wifi_Bad\",\r\n  \"Network_Wifi_2_Bar\",\r\n  \"Network_Wifi_1_Bar\",\r\n  \"Brightness_Medium\",\r\n  \"Noise_Control_Off\",\r\n  \"Signal_Wifi_Off\",\r\n  \"Mode_Standby\",\r\n  \"Brightness_Low\",\r\n  \"Battery_Very_Low\",\r\n  \"Signal_Wifi_0_Bar\",\r\n  \"Mobiledata_Off\",\r\n  \"Battery_Saver\",\r\n  \"Battery_Charging_90\",\r\n  \"Battery_Charging_80\",\r\n  \"Battery_Charging_20\",\r\n  \"Grid_4x4\",\r\n  \"Battery_Unknown\",\r\n  \"Flashlight_Off\",\r\n  \"Signal_Wifi_Statusbar_Null\",\r\n  \"Battery_Charging_50\",\r\n  \"Settings_System_Daydream\",\r\n  \"Signal_Cellular_2_Bar\",\r\n  \"Screen_Rotation_Alt\",\r\n  \"Signal_Cellular_1_Bar\",\r\n  \"Badge_Critical_Battery\",\r\n  \"Wifi_Lock\",\r\n  \"4g_Mobiledata\",\r\n  \"Noise_Aware\",\r\n  \"Signal_Cellular_Connected_No_Internet_0_Bar\",\r\n  \"Do_Not_Disturb_On_Total_Silence\",\r\n  \"Battery_Charging_60\",\r\n  \"Nearby_Error\",\r\n  \"Signal_Cellular_0_Bar\",\r\n  \"Signal_Cellular_Connected_No_Internet_4_Bar\",\r\n  \"Battery_Charging_30\",\r\n  \"1x_Mobiledata\",\r\n  \"Network_Ping\",\r\n  \"Brightness_Auto\",\r\n  \"Wifi_Tethering_Error\",\r\n  \"Signal_Cellular_Nodata\",\r\n  \"Edgesensor_High\",\r\n  \"Grid_3x3\",\r\n  \"Wifi_2_Bar\",\r\n  \"Airplanemode_Inactive\",\r\n  \"Devices_Fold\",\r\n  \"LTE_Mobiledata\",\r\n  \"Perm_Data_Setting\",\r\n  \"Signal_Cellular_Alt_2_Bar\",\r\n  \"Bluetooth_Drive\",\r\n  \"Media_Bluetooth_On\",\r\n  \"Perm_Scan_Wifi\",\r\n  \"Network_Locked\",\r\n  \"4g_Plus_Mobiledata\",\r\n  \"Signal_Cellular_Off\",\r\n  \"Signal_Cellular_Alt_1_Bar\",\r\n  \"Timer_10_Select\",\r\n  \"Apk_Install\",\r\n  \"iOS\",\r\n  \"Wifi_Tethering_Off\",\r\n  \"Edgesensor_Low\",\r\n  \"Wifi_1_Bar\",\r\n  \"3g_Mobiledata\",\r\n  \"Usb_Off\",\r\n  \"Signal_Cellular_Null\",\r\n  \"LTE_Plus_Mobiledata\",\r\n  \"Grid_Goldenratio\",\r\n  \"G_Mobiledata\",\r\n  \"Portable_Wifi_Off\",\r\n  \"Noise_Control_On\",\r\n  \"Media_Bluetooth_Off\",\r\n  \"Timer_3_Select\",\r\n  \"Apk_Document\",\r\n  \"E_Mobiledata\",\r\n  \"Nearby_Off\",\r\n  \"H_Mobiledata\",\r\n  \"H_Plus_Mobiledata\",\r\n  \"R_Mobiledata\",\r\n  \"Stylus_Note\",\r\n  \"Dock_To_Left\",\r\n  \"Dual_Screen\",\r\n  \"Stylus\",\r\n  \"Bigtop_Updates\",\r\n  \"Overview_Key\",\r\n  \"Screen_Record\",\r\n  \"Brightness_Alert\",\r\n  \"Screenshot_Region\",\r\n  \"Nearby\",\r\n  \"Screenshot_Frame\",\r\n  \"Dock_To_Right\",\r\n  \"Display_External_Input\",\r\n  \"Network_Wifi_3_Bar_Locked\",\r\n  \"Brightness_Empty\",\r\n  \"Splitscreen_Left\",\r\n  \"Battery_Status_Good\",\r\n  \"Keyboard_Keys\",\r\n  \"Splitscreen_Right\",\r\n  \"Battery_Error\",\r\n  \"Screenshot_Keyboard\",\r\n  \"Magnify_Docked\",\r\n  \"Wallpaper_Slideshow\",\r\n  \"Keyboard_Off\",\r\n  \"Splitscreen_Vertical_Add\",\r\n  \"Battery_Plus\",\r\n  \"Dock_To_Bottom\",\r\n  \"Keyboard_External_Input\",\r\n  \"Magnify_Fullscreen\",\r\n  \"Screen_Rotation_Up\",\r\n  \"1x_Mobiledata_Badge\",\r\n  \"Keyboard_Full\",\r\n  \"Network_Wifi_2_Bar_Locked\",\r\n  \"Network_Wifi_Locked\",\r\n  \"5g_Mobiledata_Badge\",\r\n  \"Timer_5\",\r\n  \"Backlight_Low\",\r\n  \"Battery_Change\",\r\n  \"Keyboard_Capslock_Badge\",\r\n  \"E_Mobiledata_Badge\",\r\n  \"Network_Wifi_1_Bar_Locked\",\r\n  \"Splitscreen_Bottom\",\r\n  \"Splitscreen_Top\",\r\n  \"Keyboard_Previous_Language\",\r\n  \"Wifi_Home\",\r\n  \"Wifi_Notification\",\r\n  \"Backlight_High\",\r\n  \"Contextual_Token\",\r\n  \"Contextual_Token_Add\",\r\n  \"Password_2\",\r\n  \"Splitscreen_Add\",\r\n  \"Backlight_High_Off\",\r\n  \"G_Mobiledata_Badge\",\r\n  \"Grid_3x3_Off\",\r\n  \"H_Mobiledata_Badge\",\r\n  \"H_Plus_Mobiledata_Badge\",\r\n  \"Keyboard_Onscreen\",\r\n  \"LTE_Mobiledata_Badge\",\r\n  \"LTE_Plus_Mobiledata_Badge\",\r\n  \"3g_Mobiledata_Badge\",\r\n  \"4g_Mobiledata_Badge\",\r\n  \"Battery_Share\",\r\n  \"Password_2_Off\",\r\n  \"Signal_Cellular_Pause\",\r\n  \"Timer_5_Shutter\",\r\n  \"Ev_Mobiledata_Badge\",\r\n  \"Wifi_Calling_Bar_1\",\r\n  \"Wifi_Calling_Bar_2\",\r\n  \"Wifi_Calling_Bar_3\",\r\n  \"Badge\",\r\n  \"Verified_User\",\r\n  \"Admin_Panel_Settings\",\r\n  \"Report\",\r\n  \"Security\",\r\n  \"Vpn_Key\",\r\n  \"Shield\",\r\n  \"Policy\",\r\n  \"Exclamation\",\r\n  \"Privacy_Tip\",\r\n  \"Assured_Workload\",\r\n  \"Vpn_Lock\",\r\n  \"Disabled_Visible\",\r\n  \"E911_Emergency\",\r\n  \"Enhanced_Encryption\",\r\n  \"Private_Connectivity\",\r\n  \"Vpn_Key_Off\",\r\n  \"Encrypted\",\r\n  \"Add_Moderator\",\r\n  \"No_Encryption\",\r\n  \"Passkey\",\r\n  \"Sync_Lock\",\r\n  \"Key_Visualizer\",\r\n  \"Wifi_Password\",\r\n  \"Remove_Moderator\",\r\n  \"Report_Off\",\r\n  \"Shield_Lock\",\r\n  \"Shield_Person\",\r\n  \"Shield_Locked\",\r\n  \"Shield_Question\",\r\n  \"Id_Card\",\r\n  \"Vpn_Key_Alert\",\r\n  \"Apartment\",\r\n  \"Location_City\",\r\n  \"Fitness_Center\",\r\n  \"Lunch_Dining\",\r\n  \"Spa\",\r\n  \"Cottage\",\r\n  \"Local_Cafe\",\r\n  \"Hotel\",\r\n  \"Family_Restroom\",\r\n  \"Beach_Access\",\r\n  \"Local_Bar\",\r\n  \"Pool\",\r\n  \"Other_Houses\",\r\n  \"Luggage\",\r\n  \"Liquor\",\r\n  \"Casino\",\r\n  \"Airplane_Ticket\",\r\n  \"Room_Service\",\r\n  \"Sports_Bar\",\r\n  \"Bakery_Dining\",\r\n  \"Ramen_Dining\",\r\n  \"Nightlife\",\r\n  \"Local_Dining\",\r\n  \"Holiday_Village\",\r\n  \"Icecream\",\r\n  \"Escalator_Warning\",\r\n  \"Dinner_Dining\",\r\n  \"Museum\",\r\n  \"Food_Bank\",\r\n  \"Night_Shelter\",\r\n  \"Attractions\",\r\n  \"Festival\",\r\n  \"Golf_Course\",\r\n  \"Stairs\",\r\n  \"Villa\",\r\n  \"Smoke_Free\",\r\n  \"Smoking_Rooms\",\r\n  \"Car_Rental\",\r\n  \"Airline_Seat_Recline_Normal\",\r\n  \"Elevator\",\r\n  \"Gite\",\r\n  \"Child_Friendly\",\r\n  \"Airline_Seat_Recline_Extra\",\r\n  \"Breakfast_Dining\",\r\n  \"Carpenter\",\r\n  \"Car_Repair\",\r\n  \"Cabin\",\r\n  \"Brunch_Dining\",\r\n  \"Do_Not_Touch\",\r\n  \"No_Food\",\r\n  \"Houseboat\",\r\n  \"Tapas\",\r\n  \"Rice_Bowl\",\r\n  \"Wheelchair_Pickup\",\r\n  \"Bento\",\r\n  \"Do_Not_Step\",\r\n  \"No_Drinks\",\r\n  \"Airline_Seat_Flat\",\r\n  \"Bungalow\",\r\n  \"Escalator\",\r\n  \"Airline_Seat_Individual_Suite\",\r\n  \"Travel\",\r\n  \"Chalet\",\r\n  \"No_Luggage\",\r\n  \"Airline_Seat_Legroom_Extra\",\r\n  \"Airline_Seat_Flat_Angled\",\r\n  \"Airline_Seat_Legroom_Normal\",\r\n  \"Airline_Seat_Legroom_Reduced\",\r\n  \"No_Stroller\",\r\n  \"Flights_And_Hotels\",\r\n  \"Personal_Places\",\r\n  \"Trip\",\r\n  \"Travel_Luggage_And_Bags\",\r\n  \"Concierge\",\r\n  \"Personal_Bag\",\r\n  \"Carry_On_Bag_Question\",\r\n  \"Personal_Bag_Question\",\r\n  \"Checked_Bag\",\r\n  \"Carry_On_Bag_Checked\",\r\n  \"Your_Trips\",\r\n  \"Checked_Bag_Question\",\r\n  \"Carry_On_Bag\",\r\n  \"Stairs_2\",\r\n  \"Personal_Bag_Off\",\r\n  \"Carry_On_Bag_Inactive\",\r\n  \"House\",\r\n  \"Bed\",\r\n  \"Ac_Unit\",\r\n  \"Chair\",\r\n  \"Electric_Bolt\",\r\n  \"Coffee\",\r\n  \"Sensors\",\r\n  \"Child_Care\",\r\n  \"Back_Hand\",\r\n  \"Emergency_Home\",\r\n  \"Checkroom\",\r\n  \"Grass\",\r\n  \"Shower\",\r\n  \"Mode_Fan\",\r\n  \"Mop\",\r\n  \"Kitchen\",\r\n  \"Thermometer\",\r\n  \"Styler\",\r\n  \"Yard\",\r\n  \"Bathtub\",\r\n  \"King_Bed\",\r\n  \"Energy_Savings_Leaf\",\r\n  \"Roofing\",\r\n  \"Valve\",\r\n  \"Window\",\r\n  \"Cooking\",\r\n  \"Garage_Home\",\r\n  \"Door_Front\",\r\n  \"Foundation\",\r\n  \"Mode_Heat\",\r\n  \"Light\",\r\n  \"Garage\",\r\n  \"Outdoor_Grill\",\r\n  \"Table_Restaurant\",\r\n  \"Dining\",\r\n  \"Sensor_Occupied\",\r\n  \"Deck\",\r\n  \"Weekend\",\r\n  \"Coffee_Maker\",\r\n  \"Humidity_High\",\r\n  \"Highlight\",\r\n  \"Fireplace\",\r\n  \"Flatware\",\r\n  \"Humidity_Low\",\r\n  \"Mode_Night\",\r\n  \"Electric_Meter\",\r\n  \"Tv_Gen\",\r\n  \"Humidity_Mid\",\r\n  \"Bedroom_Parent\",\r\n  \"Chair_Alt\",\r\n  \"Blender\",\r\n  \"Scene\",\r\n  \"Microwave\",\r\n  \"Heat_Pump\",\r\n  \"Bedroom_Baby\",\r\n  \"Single_Bed\",\r\n  \"Oven_Gen\",\r\n  \"Hardware\",\r\n  \"Bathroom\",\r\n  \"In_Home_Mode\",\r\n  \"Mode_Off_On\",\r\n  \"Hot_Tub\",\r\n  \"Mode_Cool\",\r\n  \"Sprinkler\",\r\n  \"Table_Bar\",\r\n  \"Gas_Meter\",\r\n  \"Crib\",\r\n  \"Propane_Tank\",\r\n  \"Soap\",\r\n  \"Countertops\",\r\n  \"Living\",\r\n  \"Outlet\",\r\n  \"Home_Iot_Device\",\r\n  \"Fire_Extinguisher\",\r\n  \"Remote_Gen\",\r\n  \"Gate\",\r\n  \"Matter\",\r\n  \"Event_Seat\",\r\n  \"Airware\",\r\n  \"Sensor_Door\",\r\n  \"Dishwasher_Gen\",\r\n  \"Faucet\",\r\n  \"Energy_Program_Saving\",\r\n  \"Air_Freshener\",\r\n  \"Detector_Smoke\",\r\n  \"Water_Damage\",\r\n  \"Balcony\",\r\n  \"Wash\",\r\n  \"Camera_Indoor\",\r\n  \"Switch\",\r\n  \"Bedroom_Child\",\r\n  \"House_Siding\",\r\n  \"Microwave_Gen\",\r\n  \"Door_Sliding\",\r\n  \"Iron\",\r\n  \"Energy_Program_Time_Used\",\r\n  \"Desk\",\r\n  \"Water_Heater\",\r\n  \"Umbrella\",\r\n  \"Fence\",\r\n  \"Dresser\",\r\n  \"Doorbell\",\r\n  \"Door_Back\",\r\n  \"Hvac\",\r\n  \"Mode_Fan_Off\",\r\n  \"Emergency_Heat\",\r\n  \"Camera_Outdoor\",\r\n  \"Emergency_Share\",\r\n  \"Kettle\",\r\n  \"Air_Purifier_Gen\",\r\n  \"Stroller\",\r\n  \"Multicooker\",\r\n  \"Curtains\",\r\n  \"Sensors_Off\",\r\n  \"Shield_Moon\",\r\n  \"Mode_Heat_Cool\",\r\n  \"Emergency_Recording\",\r\n  \"Thermostat_Auto\",\r\n  \"Smart_Outlet\",\r\n  \"Controller_Gen\",\r\n  \"Blinds\",\r\n  \"Roller_Shades\",\r\n  \"Apparel\",\r\n  \"Dry\",\r\n  \"Blinds_Closed\",\r\n  \"Roller_Shades_Closed\",\r\n  \"Propane\",\r\n  \"Sensor_Window\",\r\n  \"Thermostat_Carbon\",\r\n  \"Doorbell_3p\",\r\n  \"Range_Hood\",\r\n  \"Tv_With_Assistant\",\r\n  \"Blanket\",\r\n  \"Vertical_Shades_Closed\",\r\n  \"Vertical_Shades\",\r\n  \"Curtains_Closed\",\r\n  \"Mode_Heat_Off\",\r\n  \"Family_Home\",\r\n  \"Health_And_Beauty\",\r\n  \"Mode_Cool_Off\",\r\n  \"Grocery\",\r\n  \"Tamper_Detection_Off\",\r\n  \"Light_Off\",\r\n  \"Thermometer_Gain\",\r\n  \"Vacuum\",\r\n  \"Shelves\",\r\n  \"Skillet\",\r\n  \"Garage_Door\",\r\n  \"Household_Supplies\",\r\n  \"Dishwasher\",\r\n  \"Home_And_Garden\",\r\n  \"Wall_Art\",\r\n  \"Thermometer_Add\",\r\n  \"Air_Purifier\",\r\n  \"Oven\",\r\n  \"Emergency_Heat_2\",\r\n  \"Home_Improvement_And_Tools\",\r\n  \"Stockpot\",\r\n  \"Thermometer_Loss\",\r\n  \"Hallway\",\r\n  \"Thermometer_Minus\",\r\n  \"Emergency_Share_Off\",\r\n  \"Skillet_Cooktop\",\r\n  \"Stadia_Controller\",\r\n  \"Door_Open\",\r\n  \"Nest_Eco_Leaf\",\r\n  \"Device_Reset\",\r\n  \"Nest_Remote_Comfort_Sensor\",\r\n  \"Nest_Clock_Farsight_Analog\",\r\n  \"Laundry\",\r\n  \"Battery_Horiz_075\",\r\n  \"Shield_With_Heart\",\r\n  \"Familiar_Face_And_Zone\",\r\n  \"Temp_Preferences_Eco\",\r\n  \"Tools_Power_Drill\",\r\n  \"Airwave\",\r\n  \"Productivity\",\r\n  \"Battery_Horiz_050\",\r\n  \"Nest_Heat_Link_Gen_3\",\r\n  \"Nest_Display\",\r\n  \"Weather_Snowy\",\r\n  \"Ev_Charger\",\r\n  \"Activity_Zone\",\r\n  \"Nest_Remote\",\r\n  \"Cleaning_Bucket\",\r\n  \"Settings_Alert\",\r\n  \"Nest_Cam_Indoor\",\r\n  \"Arrows_More_Up\",\r\n  \"Home_Storage\",\r\n  \"Nest_Heat_Link_E\",\r\n  \"Nest_Multi_Room\",\r\n  \"Nest_Secure_Alarm\",\r\n  \"Nest_Cam_Outdoor\",\r\n  \"Detection_And_Zone\",\r\n  \"Light_Group\",\r\n  \"Battery_Horiz_000\",\r\n  \"Google_Wifi\",\r\n  \"Mfg_Nest_Yale_Lock\",\r\n  \"Nest_Thermostat_Gen_3\",\r\n  \"Tools_Pliers_Wire_Stripper\",\r\n  \"Detector_Alarm\",\r\n  \"Early_On\",\r\n  \"Nest_Cam_Iq_Outdoor\",\r\n  \"Tools_Ladder\",\r\n  \"Nest_Cam_Iq\",\r\n  \"Floor_Lamp\",\r\n  \"Nest_Mini\",\r\n  \"Nest_Clock_Farsight_Digital\",\r\n  \"Home_Speaker\",\r\n  \"Nest_Hello_Doorbell\",\r\n  \"Nest_Display_Max\",\r\n  \"Nest_Audio\",\r\n  \"Home_Max_Dots\",\r\n  \"Motion_Sensor_Active\",\r\n  \"Zone_Person_Urgent\",\r\n  \"Nest_Wifi_Router\",\r\n  \"Cool_To_Dry\",\r\n  \"House_With_Shield\",\r\n  \"Nest_Farsight_Weather\",\r\n  \"Shield_With_House\",\r\n  \"Chromecast_2\",\r\n  \"Battery_Profile\",\r\n  \"Window_Closed\",\r\n  \"Heat_Pump_Balance\",\r\n  \"Arming_Countdown\",\r\n  \"Self_Care\",\r\n  \"Nest_Found_Savings\",\r\n  \"Window_Open\",\r\n  \"Tools_Level\",\r\n  \"Detector_Status\",\r\n  \"Zone_Person_Alert\",\r\n  \"Nest_Thermostat_Zirconium_Eu\",\r\n  \"Arrows_More_Down\",\r\n  \"Nest_Cam_Wired_Stand\",\r\n  \"Detector\",\r\n  \"Nest_True_Radiant\",\r\n  \"Nest_Detect\",\r\n  \"Door_Sensor\",\r\n  \"Nest_Cam_Floodlight\",\r\n  \"Climate_Mini_Split\",\r\n  \"Nest_Wifi_Point\",\r\n  \"Nest_Doorbell_Visitor\",\r\n  \"Quiet_Time\",\r\n  \"Nest_Tag\",\r\n  \"Tools_Installation_Kit\",\r\n  \"Nest_Thermostat_Sensor\",\r\n  \"Nest_Connect\",\r\n  \"Nest_Sunblock\",\r\n  \"Nest_Thermostat_Sensor_Eu\",\r\n  \"Tools_Phillips\",\r\n  \"Doorbell_Chime\",\r\n  \"Nest_Thermostat_E_Eu\",\r\n  \"Detector_Co\",\r\n  \"Table_Lamp\",\r\n  \"Tools_Flat_Head\",\r\n  \"Detector_Battery\",\r\n  \"Nest_Wake_On_Approach\",\r\n  \"Nest_Wake_On_Press\",\r\n  \"Motion_Sensor_Urgent\",\r\n  \"Tamper_Detection_On\",\r\n  \"Motion_Sensor_Alert\",\r\n  \"Window_Sensor\",\r\n  \"Nest_Cam_Magnet_Mount\",\r\n  \"Zone_Person_Idle\",\r\n  \"Quiet_Time_Active\",\r\n  \"Nest_Cam_Stand\",\r\n  \"Nest_Cam_Wall_Mount\",\r\n  \"Wall_Lamp\",\r\n  \"Detector_Offline\",\r\n  \"Motion_Sensor_Idle\",\r\n  \"Sensors_Krx\",\r\n  \"Water_Pump\",\r\n  \"Nest_Thermostat\",\r\n  \"Heat\",\r\n  \"Assistant_On_Hub\",\r\n  \"Google_Tv_Remote\",\r\n  \"Mode_Dual\",\r\n  \"Nest_Protect\",\r\n  \"Sensors_Krx_Off\",\r\n  \"Aq_Indoor\",\r\n  \"On_Hub_Device\",\r\n  \"Humidity_Indoor\",\r\n  \"Aq\",\r\n  \"Nest_Wifi_Pro_2\",\r\n  \"Nest_Wifi_Pro\",\r\n  \"Farsight_Digital\",\r\n  \"Nest_Gale_Wifi\"\r\n]\r\n"
  },
  {
    "path": "apps/docs/src/views/theme.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  changeColor,\r\n  getCurrentSeedColor,\r\n  getCurrentThemeString\r\n} from '@/utils/theme'\r\nimport { useEffect, useState } from 'react'\r\n\r\nimport { Button } from 'actify'\r\nimport SyntaxHighlighter from '@/components/SyntaxHighlighter'\r\n\r\nexport default () => {\r\n  const [seedColor, setSeedColor] = useState('')\r\n  const [cssString, setCssString] = useState('')\r\n  const exportColors = () => {\r\n    const blob = new Blob([cssString], { type: 'text/css' })\r\n    const url = URL.createObjectURL(blob)\r\n    const link = document.createElement('a')\r\n    link.href = url\r\n    link.download = 'actify-color-theme.css'\r\n    link.click()\r\n    URL.revokeObjectURL(url)\r\n  }\r\n\r\n  useEffect(() => {\r\n    const currentSeedColor = getCurrentSeedColor()\r\n    setSeedColor(currentSeedColor ?? '')\r\n    const colorString = getCurrentThemeString()\r\n    setCssString(colorString ?? '')\r\n  }, [])\r\n\r\n  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n    const { value: color } = e.target\r\n    setSeedColor(color)\r\n    changeColor(color)\r\n    const colorString = getCurrentThemeString()\r\n    setCssString(colorString ?? '')\r\n  }\r\n\r\n  return (\r\n    <>\r\n      <h2>Color scheme</h2>\r\n      <>\r\n        {/* Primary */}\r\n        <div className=\"h-28 flex w-full justify-evenly my-2\">\r\n          <div className=\"rounded-tl-2xl bg-primary text-on-primary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Primary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-primary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-primary\">\r\n              On Primary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-primary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Primary Container\r\n            </div>\r\n          </div>\r\n          <div className=\"rounded-tr-2xl bg-on-primary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-primary\">\r\n              On Primary Container\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {/* Secondary */}\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"bg-secondary text-on-secondary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Secondary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-secondary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-secondary\">\r\n              On Secondary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-secondary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Secondary Container\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-secondary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-secondary\">\r\n              On Secondary Container\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {/* Tertiary */}\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"bg-tertiary text-on-tertiary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Tertiary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-tertiary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-tertiary\">\r\n              On Tertiary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-tertiary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Tertiary Container\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-tertiary-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-tertiary\">\r\n              On Tertiary Container\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {/* Error */}\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"bg-error text-on-error flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">Error</div>\r\n          </div>\r\n          <div className=\"bg-on-error flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-error\">\r\n              On Error\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-error-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Error Container\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-error-container flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-error\">\r\n              On Error Container\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {/* Backgroun And Surface */}\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"bg-background flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Background\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-background flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-background\">\r\n              On Background\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-surface flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Surface\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-on-surface flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-surface\">\r\n              On Surface\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"bg-inverse-surface flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-inverse-on-surface\">\r\n              Inverse Surface\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-inverse-primary flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-primary\">\r\n              Inverse Primary\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-scrim flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-primary\">\r\n              Srim\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-shadow flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-on-primary\">\r\n              Shadow\r\n            </div>\r\n          </div>\r\n        </div>\r\n        {/* Outline And Surface */}\r\n        <div className=\"h-16 flex w-full justify-evenly my-2\">\r\n          <div className=\"rounded-bl-2xl bg-outline flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-surface\">\r\n              Outline\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-outline-variant flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-surface\">\r\n              Outline Variant\r\n            </div>\r\n          </div>\r\n          <div className=\"bg-surface-variant flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center\">\r\n              Surface-Variant\r\n            </div>\r\n          </div>\r\n          <div className=\"rounded-br-2xl bg-on-surface-variant flex-1\">\r\n            <div className=\"w-full h-full grid place-content-center text-surface-variant\">\r\n              On Surface-Variant\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </>\r\n      <div className=\"flex items-center gap-4\">\r\n        <div className=\"mt-2 space-y-4\">\r\n          <label className=\"flex items-center gap-2\">\r\n            <div className=\"text-lg\">Choose Primary Color</div>\r\n            <input\r\n              type=\"color\"\r\n              value={seedColor}\r\n              onChange={handleChange}\r\n              className=\"interactive-bg-surface h-9 w-24 cursor-pointer rounded-md px-1 py-0.5 shadow\"\r\n            />\r\n          </label>\r\n        </div>\r\n        <Button onPress={exportColors}>Export Colors</Button>\r\n      </div>\r\n      <SyntaxHighlighter lang=\"css\">{cssString}</SyntaxHighlighter>\r\n    </>\r\n  )\r\n}\r\n"
  },
  {
    "path": "apps/docs/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"allowJs\": true,\n    \"skipLibCheck\": true,\n    \"strict\": true,\n    \"noEmit\": true,\n    \"esModuleInterop\": true,\n    \"module\": \"esnext\",\n    \"moduleResolution\": \"bundler\",\n    \"resolveJsonModule\": true,\n    \"isolatedModules\": true,\n    \"jsx\": \"preserve\",\n    \"incremental\": true,\n    \"allowImportingTsExtensions\": true,\n    \"plugins\": [{ \"name\": \"next\" }],\n    \"paths\": {\n      \"@/*\": [\"./src/*\"],\n      \"actify\": [\"./../../packages/actify/src\"],\n      \"actify/package.json\": [\"./../../packages/actify/package.json\"]\n    },\n    \"target\": \"ES2017\"\n  },\n  \"include\": [\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\",\n    \"next-env.d.ts\",\n    \"dist/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "biome.json",
    "content": "{\n\t\"$schema\": \"https://biomejs.dev/schemas/2.2.6/schema.json\",\n\t\"vcs\": {\n\t\t\"enabled\": false,\n\t\t\"clientKind\": \"git\",\n\t\t\"useIgnoreFile\": false\n\t},\n\t\"files\": {\n\t\t\"ignoreUnknown\": false\n\t},\n\t\"formatter\": {\n\t\t\"enabled\": true,\n\t\t\"indentStyle\": \"tab\"\n\t},\n\t\"linter\": {\n\t\t\"enabled\": true,\n\t\t\"rules\": {\n\t\t\t\"recommended\": true\n\t\t}\n\t},\n\t\"javascript\": {\n\t\t\"formatter\": {\n\t\t\t\"quoteStyle\": \"double\"\n\t\t}\n\t},\n\t\"assist\": {\n\t\t\"enabled\": true,\n\t\t\"actions\": {\n\t\t\t\"source\": {\n\t\t\t\t\"organizeImports\": \"on\"\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"actifyjs\",\n  \"private\": true,\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"dev\": \"turbo run dev --no-cache --continue\"\n  },\n  \"dependencies\": {\n    \"@changesets/cli\": \"^2.27.9\",\n    \"@manypkg/cli\": \"^0.22.0\",\n    \"eslint\": \"^9.13.0\",\n    \"turbo\": \"^2.2.3\"\n  },\n  \"packageManager\": \"pnpm@9.5.0\",\n  \"devDependencies\": {\n    \"@biomejs/biome\": \"2.2.6\"\n  }\n}"
  },
  {
    "path": "packages/actify/package.json",
    "content": "{\n  \"name\": \"actify\",\n  \"version\": \"0.5.7\",\n  \"license\": \"MIT\",\n  \"author\": \"Lerte Smith\",\n  \"keywords\": [\n    \"actify\",\n    \"react\",\n    \"library\",\n    \"components\",\n    \"material design 3\"\n  ],\n  \"homepage\": \"https://actifyjs.com\",\n  \"description\": \"🌻React Material Design 3 Components Library\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"directory\": \"packages/components\",\n    \"url\": \"git+https://github.com/actifyjs/actify.git\"\n  },\n  \"files\": [\n    \"dist/**\"\n  ],\n  \"sideEffects\": false,\n  \"scripts\": {\n    \"prebuild\": \"rm -rf dist\",\n    \"build\": \"rollup -c rollup.config.mjs\"\n  },\n  \"devDependencies\": {\n    \"@react-aria/toast\": \"^3.0.1\",\n    \"@rollup/plugin-commonjs\": \"^25.0.7\",\n    \"@rollup/plugin-json\": \"^6.1.0\",\n    \"@rollup/plugin-node-resolve\": \"^15.2.3\",\n    \"@rollup/plugin-terser\": \"^0.4.4\",\n    \"@rollup/plugin-typescript\": \"^11.1.6\",\n    \"@types/node\": \"^22.10.1\",\n    \"@types/react\": \"catalog:\",\n    \"@types/react-dom\": \"catalog:\",\n    \"@typescript-eslint/eslint-plugin\": \"^8.12.2\",\n    \"@typescript-eslint/parser\": \"^8.12.2\",\n    \"postcss\": \"^8.4.38\",\n    \"react\": \"catalog:\",\n    \"react-dom\": \"catalog:\",\n    \"rollup\": \"^3.29.4\",\n    \"rollup-plugin-copy\": \"^3.5.0\",\n    \"rollup-plugin-peer-deps-external\": \"^2.2.4\",\n    \"rollup-plugin-postcss\": \"^4.0.2\",\n    \"rollup-plugin-preserve-directives\": \"^0.4.0\",\n    \"rollup-plugin-typescript-paths\": \"^1.4.0\",\n    \"tsc-alias\": \"^1.8.8\",\n    \"tslib\": \"^2.6.2\",\n    \"typescript\": \"^5.4.5\"\n  },\n  \"overrides\": {\n    \"@types/react\": \"catalog:\",\n    \"@types/react-dom\": \"catalog:\"\n  },\n  \"dependencies\": {\n    \"clsx\": \"^2.1.1\",\n    \"date-fns\": \"^4.1.0\",\n    \"es-toolkit\": \"^1.34.1\",\n    \"motion\": \"^12.6.3\",\n    \"react-aria\": \"^3.38.1\",\n    \"react-aria-components\": \"^1.7.1\",\n    \"react-stately\": \"^3.36.1\"\n  },\n  \"peerDependencies\": {\n    \"react\": \"^19.0.0\",\n    \"react-dom\": \"^19.0.0\"\n  },\n  \"main\": \"dist/index.mjs\",\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.com\"\n  }\n}"
  },
  {
    "path": "packages/actify/rollup.config.mjs",
    "content": "import commonjs from '@rollup/plugin-commonjs'\r\nimport { exec } from 'child_process'\r\nimport json from '@rollup/plugin-json'\r\nimport peerDepsExternal from 'rollup-plugin-peer-deps-external'\r\nimport postcss from 'rollup-plugin-postcss'\r\nimport preserveDirectives from 'rollup-plugin-preserve-directives'\r\nimport resolve from '@rollup/plugin-node-resolve'\r\nimport terser from '@rollup/plugin-terser'\r\nimport typescript from '@rollup/plugin-typescript'\r\nimport { typescriptPaths } from 'rollup-plugin-typescript-paths'\r\n\r\nconst outputOptions = {\r\n  sourcemap: false,\r\n  preserveModules: true,\r\n  preserveModulesRoot: 'src'\r\n}\r\n\r\nconst tscAlias = () => {\r\n  return {\r\n    name: 'tsAlias',\r\n    writeBundle: () => {\r\n      return new Promise((resolve, reject) => {\r\n        exec('tsc-alias', function callback(error, stdout, stderr) {\r\n          if (stderr || error) {\r\n            reject(stderr || error)\r\n          } else {\r\n            resolve(stdout)\r\n          }\r\n        })\r\n      })\r\n    }\r\n  }\r\n}\r\n\r\nexport default [\r\n  {\r\n    input: 'src/index.ts',\r\n    output: [\r\n      {\r\n        dir: 'dist',\r\n        format: 'esm',\r\n        entryFileNames: '[name].mjs',\r\n        ...outputOptions\r\n      }\r\n    ],\r\n    external: [\r\n      'clsx',\r\n      'react',\r\n      'motion',\r\n      'tslib',\r\n      'date-fns',\r\n      'react-dom',\r\n      '@babel/runtime'\r\n    ],\r\n    plugins: [\r\n      peerDepsExternal(),\r\n      json(),\r\n      resolve(),\r\n      commonjs(),\r\n      typescript({\r\n        tsconfig: './tsconfig.json'\r\n      }),\r\n      postcss(),\r\n      typescriptPaths(),\r\n      preserveDirectives(),\r\n      terser({ compress: { directives: false } }),\r\n      tscAlias()\r\n    ],\r\n    onwarn(warning, warn) {\r\n      if (warning.code !== 'MODULE_LEVEL_DIRECTIVE') {\r\n        warn(warning)\r\n      }\r\n    }\r\n  }\r\n]\r\n"
  },
  {
    "path": "packages/actify/src/animations/index.ts",
    "content": "const STANDARD = [0.2, 0, 0, 1] as const\r\nconst STANDARD_ACCELERATE = [0.3, 0, 1, 1] as const\r\nconst STANDARD_DECELERATE = [0, 0, 0, 1] as const\r\nconst EMPHASIZED = [0.3, 0, 0, 1] as const\r\nconst EMPHASIZED_ACCELERATE = [0.3, 0, 0.8, 0.15] as const\r\nconst EMPHASIZED_DECELERATE = [0.05, 0.7, 0.1, 1] as const\r\n\r\nexport const EASING = {\r\n  STANDARD: `cubic-bezier(${STANDARD.toString()})`,\r\n  STANDARD_ACCELERATE: `cubic-bezier(${STANDARD_ACCELERATE.toString()})`,\r\n  STANDARD_DECELERATE: `cubic-bezier(${STANDARD_DECELERATE.toString()})`,\r\n  EMPHASIZED: `cubic-bezier(${EMPHASIZED.toString()})`,\r\n  EMPHASIZED_ACCELERATE: `cubic-bezier(${EMPHASIZED_ACCELERATE.toString()})`,\r\n  EMPHASIZED_DECELERATE: `cubic-bezier(${EMPHASIZED_DECELERATE.toString()})`\r\n} as const\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/Accordion.tsx",
    "content": "'use client'\r\n\r\nimport { AccordionProps, AccordionProvider } from './AccordionContext'\r\nimport {\r\n  Children,\r\n  ComponentProps,\r\n  cloneElement,\r\n  isValidElement,\r\n  useState\r\n} from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport styles from './accordion.module.css'\r\n\r\ninterface AccordionRootProps extends AccordionProps, ComponentProps<'div'> {}\r\n\r\nconst Accordion = (props: AccordionRootProps) => {\r\n  const { multiple, children, className, open: openProp, ...rest } = props\r\n  const [open, setOpen] = useState<AccordionProps['open']>(openProp ?? [])\r\n\r\n  return (\r\n    <AccordionProvider {...{ open, setOpen, multiple }}>\r\n      <div {...rest} className={clsx(styles['accordion'], className)}>\r\n        {Children.map(\r\n          children,\r\n          (child, index) =>\r\n            isValidElement(child) &&\r\n            cloneElement(child, {\r\n              index,\r\n              // @ts-ignore\r\n              ...child.props\r\n            })\r\n        )}\r\n      </div>\r\n    </AccordionProvider>\r\n  )\r\n}\r\n\r\nAccordion.displayName = 'Acitfy.Accordion'\r\n\r\nexport { Accordion }\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/AccordionContent.tsx",
    "content": "'use client'\r\n\r\nimport React, { useMemo } from 'react'\r\n\r\nimport { Slot } from './../Slot'\r\nimport { Text } from './../Text'\r\nimport clsx from 'clsx'\r\nimport styles from './accordion.module.css'\r\nimport { useAccordion } from './AccordionContext'\r\n\r\nexport interface AccordionContentProps\r\n  extends Omit<React.ComponentProps<'div'>, 'children'> {\r\n  index?: number\r\n  asChild?: boolean\r\n  children?:\r\n    | React.ReactNode\r\n    | ((props: { active?: boolean }) => React.ReactNode)\r\n}\r\n\r\nconst AccordionContent = (props: AccordionContentProps) => {\r\n  const { index, className, asChild, children, ...rest } = props\r\n  const { open } = useAccordion()\r\n\r\n  const active = useMemo(() => {\r\n    if (open !== undefined) {\r\n      return open[index as number]\r\n    }\r\n  }, [open, index])\r\n\r\n  const classes = clsx(\r\n    styles['accordion-content'],\r\n    active && styles['active'],\r\n    className\r\n  )\r\n\r\n  if (asChild) {\r\n    return (\r\n      <Slot\r\n        {...{\r\n          active,\r\n          ...rest\r\n        }}\r\n        className={classes}\r\n      >\r\n        {typeof children === 'function' ? children({ active }) : children}\r\n      </Slot>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div {...rest} className={classes}>\r\n      <Text style={{ overflow: 'hidden' }}>{children as React.ReactNode}</Text>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { AccordionContent }\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/AccordionContext.tsx",
    "content": "'use client'\r\n\r\nimport React, { createContext, useContext } from 'react'\r\n\r\nexport type AccordionProps = {\r\n  multiple?: boolean\r\n  open?: Array<boolean | undefined>\r\n  setOpen?: (value: boolean[] | undefined) => void\r\n}\r\n\r\nconst AccordionContext = createContext<AccordionProps>({})\r\n\r\ninterface AccordionProviderProps\r\n  extends React.PropsWithChildren<AccordionProps> {}\r\n\r\nexport const AccordionProvider = ({\r\n  children,\r\n  ...props\r\n}: AccordionProviderProps) => {\r\n  return (\r\n    <AccordionContext value={{ ...props }}>\r\n      {children}\r\n    </AccordionContext>\r\n  )\r\n}\r\n\r\nexport const useAccordion = () => {\r\n  const context = useContext(AccordionContext)\r\n  if (context == null) {\r\n    throw new Error('Accordion components must be wrapped in <Accordion />')\r\n  }\r\n  return context\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/AccordionHeader.tsx",
    "content": "'use client'\r\n\r\nimport React, { useMemo } from 'react'\r\n\r\nimport { Icon } from './../Icon'\r\nimport { Slot } from './../Slot'\r\nimport { Text } from './../Text'\r\nimport clsx from 'clsx'\r\nimport styles from './accordion.module.css'\r\nimport { useAccordion } from './AccordionContext'\r\n\r\nexport interface AccordionHeaderProps\r\n  extends Omit<React.ComponentProps<'div'>, 'children'> {\r\n  index?: number\r\n  asChild?: boolean\r\n  children?:\r\n    | ((props: { active?: boolean }) => React.ReactNode)\r\n    | React.ReactNode\r\n}\r\n\r\nconst AccordionHeader = (props: AccordionHeaderProps) => {\r\n  const { index, asChild, className, children, ...rest } = props\r\n  const { multiple, open, setOpen } = useAccordion()\r\n\r\n  const active = useMemo(() => {\r\n    if (open !== undefined) {\r\n      return open[index as number]\r\n    }\r\n  }, [open, index])\r\n\r\n  const handleClick = () => {\r\n    let arr: boolean[] = []\r\n    if (multiple) {\r\n      arr = [...(open as boolean[])]\r\n      arr[index as number] = !arr[index as number]\r\n    } else {\r\n      arr[index as number] = !open?.[index as number]\r\n    }\r\n    setOpen?.([...arr])\r\n  }\r\n\r\n  const classes = clsx(styles['accordion-header'], className)\r\n\r\n  if (asChild) {\r\n    return (\r\n      <Slot\r\n        onClick={handleClick}\r\n        {...{\r\n          active,\r\n          ...rest\r\n        }}\r\n      >\r\n        {typeof children === 'function' ? children({ active }) : children}\r\n      </Slot>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div {...rest} onClick={handleClick} className={classes}>\r\n      <Text>{children as React.ReactNode}</Text>\r\n      <div\r\n        style={{\r\n          transitionDuration: '300ms',\r\n          transitionProperty: 'rotate',\r\n          rotate: active ? '90deg' : 'none'\r\n        }}\r\n      >\r\n        <Icon>keyboard_arrow_down</Icon>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { AccordionHeader }\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/AccordionItem.tsx",
    "content": "'use client'\r\n\r\nimport React, { Children, cloneElement, isValidElement } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport styles from './accordion.module.css'\r\n\r\nexport interface AccordionItemProps extends React.ComponentProps<'div'> {\r\n  index?: number\r\n  children: React.ReactNode\r\n}\r\n\r\nconst AccordionItem = (props: AccordionItemProps) => {\r\n  const { index, className, children, ...rest } = props\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['accordion-item'], className)}>\r\n      {Children.map(\r\n        children,\r\n        (child) =>\r\n          isValidElement(child) &&\r\n          cloneElement(child, {\r\n            index,\r\n            // @ts-ignore\r\n            ...child.props\r\n          })\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { AccordionItem }\r\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/accordion.module.css",
    "content": ".accordion {\n  display: flex;\n  gap: 16px;\n  border-radius: 8px;\n  flex-direction: column;\n}\n\n.accordion-item {\n  padding: 16px;\n  border-width: 1px;\n  border-radius: 6px;\n}\n\n.accordion-header {\n  display: flex;\n  font-weight: 500;\n  cursor: pointer;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.accordion-content {\n  display: grid;\n  transition-duration: 300ms;\n  grid-template-rows: 0fr;\n  transition-property: grid-template-rows;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  font-size: 16px;\n  &.active {\n    grid-template-rows: 1fr;\n  }\n}\n"
  },
  {
    "path": "packages/actify/src/components/Accordion/index.ts",
    "content": "export { Accordion } from './Accordion'\r\nexport { AccordionItem } from './AccordionItem'\r\nexport { AccordionHeader } from './AccordionHeader'\r\nexport { AccordionContent } from './AccordionContent'\r\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/ActionMenu.tsx",
    "content": "import { AriaButtonProps, Placement, useMenuTrigger } from 'react-aria'\nimport type { AriaMenuProps, MenuTriggerProps } from '@react-types/menu'\n\nimport { Button } from './../Buttons'\nimport { Menu } from './Menu'\nimport { Popover } from './../Popover'\nimport React from 'react'\nimport { useMenuTriggerState } from 'react-stately'\n\ninterface MenuButtonProps<T extends object>\n  extends AriaMenuProps<T>,\n    MenuTriggerProps {\n  style?: React.CSSProperties\n  className?: string\n  label?: string\n  placement?: Placement\n  activator?: (\n    ref: React.RefObject<null>,\n    menuTriggerProps: AriaButtonProps<'button'>\n  ) => React.JSX.Element\n}\n\nconst ActionMenu = <T extends object>(props: MenuButtonProps<T>) => {\n  // Create state based on the incoming props\n  const state = useMenuTriggerState(props)\n\n  // Get props for the menu trigger and menu elements\n  const ref = React.useRef(null)\n  const { menuTriggerProps, menuProps } = useMenuTrigger<T>({}, state, ref)\n\n  return (\n    <>\n      {props.label && (\n        <Button {...menuTriggerProps} ref={ref}>\n          {props.label}\n        </Button>\n      )}\n      {props?.activator?.(ref, menuTriggerProps)}\n      {state.isOpen && (\n        <Popover state={state} triggerRef={ref}>\n          <Menu\n            {...props}\n            {...menuProps}\n            autoFocus={state.focusStrategy || true}\n            onClose={() => state.close()}\n          />\n        </Popover>\n      )}\n    </>\n  )\n}\n\nexport { ActionMenu }\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/Menu.tsx",
    "content": "import { AriaMenuProps, useMenu } from 'react-aria'\n\nimport { MenuItem } from './MenuItem'\nimport { MenuItems } from './MenuItems'\nimport React from 'react'\nimport clsx from 'clsx'\nimport styles from './menu.module.css'\nimport { useTreeState } from 'react-stately'\n\ninterface MenuProps<T extends object> extends AriaMenuProps<T> {\n  onClose: () => void\n  style?: React.CSSProperties\n  className?: string\n}\n\nconst Menu = <T extends object>(props: MenuProps<T>) => {\n  // Create state based on the incoming props\n  const state = useTreeState(props)\n\n  // Get props for the menu element\n  const ref = React.useRef(null)\n  const { menuProps } = useMenu(props, state, ref)\n\n  return (\n    <ul\n      ref={ref}\n      {...menuProps}\n      style={props.style}\n      className={clsx(styles['menu-item'], props.className)}\n    >\n      {[...state.collection].map((item) =>\n        item.type == 'section' ? (\n          <MenuItems\n            key={item.key}\n            section={item}\n            state={state}\n            onClose={props.onClose}\n            onAction={() => props.onAction}\n          />\n        ) : (\n          <MenuItem\n            key={item.key}\n            item={item}\n            state={state}\n            onClose={props.onClose}\n            onAction={() => props.onAction}\n          />\n        )\n      )}\n    </ul>\n  )\n}\n\nexport { Menu }\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/MenuItem.tsx",
    "content": "import { mergeProps, useFocusRing, useMenuItem } from 'react-aria'\n\nimport { FocusRing } from './../FocusRing'\nimport { Item } from './../Item'\nimport type { Node } from '@react-types/shared'\nimport React from 'react'\nimport { Ripple } from './../Ripple'\nimport { TreeState } from 'react-stately'\nimport styles from './menu.module.css'\n\ninterface MenuItemProps<T> {\n  item: Node<T>\n  state: TreeState<T>\n  onAction: (key: React.Key) => void\n  onClose: () => void\n}\n\nconst MenuItem = <T extends object>({\n  item,\n  state,\n  onAction,\n  onClose\n}: MenuItemProps<T>) => {\n  // Get props for the menu item element\n  const ref = React.useRef(null)\n  const { focusProps, isFocusVisible } = useFocusRing()\n\n  const { menuItemProps } = useMenuItem(\n    {\n      key: item.key,\n      onAction,\n      onClose\n    },\n    state,\n    ref\n  )\n\n  const Container = () => (\n    <div className={styles['container']}>\n      <Ripple />\n      <FocusRing />\n    </div>\n  )\n\n  return (\n    <li\n      ref={ref}\n      className={styles['list-item']}\n      {...mergeProps(menuItemProps, focusProps)}\n    >\n      <Item container={<Container />}>{item.rendered}</Item>\n      {isFocusVisible && (\n        <FocusRing\n          style={{\n            color: 'var(--md-sys-color-primary)'\n          }}\n        />\n      )}\n    </li>\n  )\n}\n\nexport { MenuItem }\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/MenuItems.tsx",
    "content": "import { MenuItem } from './MenuItem'\nimport type { Node } from '@react-types/shared'\nimport React from 'react'\nimport { TreeState } from 'react-stately'\nimport styles from './menu.module.css'\nimport { useMenuSection } from 'react-aria'\n\ninterface MenuSectionProps<T> {\n  section: Node<T>\n  state: TreeState<T>\n  onAction: (key: React.Key) => void\n  onClose: () => void\n}\n\nconst MenuItems = <T extends object>({\n  section,\n  state,\n  onAction,\n  onClose\n}: MenuSectionProps<T>) => {\n  const { itemProps, groupProps } = useMenuSection({\n    heading: section.rendered,\n    'aria-label': section['aria-label']\n  })\n\n  return (\n    <li {...itemProps}>\n      <ul {...groupProps} className={styles['group']}>\n        {[...section.childNodes].map((node) => (\n          <MenuItem\n            key={node.key}\n            item={node}\n            state={state}\n            onClose={onClose}\n            onAction={onAction}\n          />\n        ))}\n      </ul>\n    </li>\n  )\n}\n\nexport { MenuItems }\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/index.ts",
    "content": "export { ActionMenu } from './ActionMenu'\nexport { Item as MenuItem, Section as MenuSection } from 'react-stately'\n"
  },
  {
    "path": "packages/actify/src/components/ActionMenu/menu.module.css",
    "content": ".menu {\n  display: none;\n  inset: auto;\n  border: none;\n  padding: 0px;\n  overflow: visible;\n  background-color: rgba(0, 0, 0, 0);\n  color: inherit;\n  opacity: 1;\n  z-index: 20;\n  position: absolute;\n  user-select: none;\n  max-height: inherit;\n  height: inherit;\n  min-width: inherit;\n  max-width: inherit;\n  scrollbar-width: inherit;\n  &.open {\n    display: block;\n  }\n}\n.items {\n  display: block;\n  list-style-type: none;\n  margin: 0;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  height: inherit;\n  max-height: inherit;\n  overflow: auto;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: inherit;\n  scrollbar-width: inherit;\n}\n.animating .items {\n  overflow: hidden;\n}\n.item-padding {\n  padding-block: 8px;\n}\n.group {\n  box-sizing: border-box;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.menu-item {\n  box-sizing: border-box;\n  list-style: none;\n  margin: 0;\n  padding: 8px;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n  &:focus-visible {\n    outline: none;\n  }\n}\n.list-item {\n  position: relative; /* for focus ring */\n  list-style: none;\n  background-color: var(--md-menu-item-container-color, transparent);\n  border-radius: var(\n    --md-menu-container-shape,\n    var(--md-sys-shape-corner-extra-small, 4px)\n  );\n  display: flex;\n  flex: 1;\n  max-width: inherit;\n  min-width: inherit;\n  outline: none;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  &:not(.disabled) {\n    cursor: pointer;\n  }\n}\n.container {\n  position: absolute;\n  inset: 0;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Autocomplete/Autocomplete.tsx",
    "content": "import { AriaComboBoxProps, useComboBox, useFilter } from 'react-aria'\nimport { ComboBoxStateOptions, useComboBoxState } from 'react-stately'\n\nimport { Icon } from '../Icon'\nimport { ListBox } from '../ListBox'\nimport { Popover } from '../Popover'\nimport React from 'react'\nimport { TextField } from '../TextFields'\nimport styles from './autocomplete.module.css'\nimport { useResizeObserver } from './../../hooks'\n\ninterface AutocompleteProps<T>\n  extends Omit<AriaComboBoxProps<T>, 'children'>,\n    ComboBoxStateOptions<T> {\n  variant?: 'filled' | 'outlined'\n}\n\nconst Autocomplete = <T extends object>(props: AutocompleteProps<T>) => {\n  // Setup filter function and state\n  const { contains } = useFilter({ sensitivity: 'base' })\n  const state = useComboBoxState({ ...props, defaultFilter: contains })\n\n  // Setup refs and get props for child elements.\n  const ref = React.useRef<HTMLDivElement>(null)\n  const inputRef = React.useRef<HTMLInputElement>(null)\n  const listBoxRef = React.useRef(null)\n  const popoverRef = React.useRef<HTMLDivElement>(null)\n\n  const referenceWidth = useResizeObserver(ref as React.RefObject<HTMLElement>)\n\n  const { inputProps, listBoxProps } = useComboBox(\n    {\n      ...props,\n      inputRef,\n      listBoxRef,\n      popoverRef\n    },\n    state\n  )\n\n  return (\n    <div className={styles['autocomplete']} ref={ref}>\n      <TextField\n        ref={inputRef}\n        label={props.label}\n        variant={props.variant}\n        inputProps={inputProps}\n        onFocus={() => state.setOpen(true)}\n        trailingIcon={\n          <Icon\n            style={{ cursor: 'pointer' }}\n            onClick={() => {\n              state.setOpen(!state.isOpen)\n              // If the input is focused, move the cursor to the end\n              inputRef.current?.setSelectionRange(\n                inputRef.current.value.length,\n                inputRef.current.value.length\n              )\n            }}\n          >\n            Arrow_Drop_Down\n          </Icon>\n        }\n      />\n\n      {state.isOpen && (\n        <Popover\n          state={state}\n          triggerRef={ref}\n          popoverRef={popoverRef}\n          referenceWidth={referenceWidth}\n        >\n          <ListBox\n            state={state}\n            label={props.label}\n            listBoxRef={listBoxRef}\n            listBoxProps={listBoxProps}\n            aria-label={props['aria-label']}\n          />\n        </Popover>\n      )}\n    </div>\n  )\n}\n\nAutocomplete.displayName = 'Actify.Autocomplete'\nexport { Autocomplete }\n"
  },
  {
    "path": "packages/actify/src/components/Autocomplete/autocomplete.module.css",
    "content": ".autocomplete {\n  width: 100%;\n  position: relative;\n  display: inline-flex;\n  flex-direction: column;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Autocomplete/index.ts",
    "content": "export { Autocomplete } from './Autocomplete'\nexport { Item as AutocompleteItem } from 'react-stately'\n"
  },
  {
    "path": "packages/actify/src/components/Avatar/Avatar.tsx",
    "content": "import React from 'react'\r\n\r\nexport interface AvatarProps extends React.ComponentProps<'img'> {}\r\n\r\nconst Avatar = (props: AvatarProps) => {\r\n  const { alt, src, ...rest } = props\r\n\r\n  return (\r\n    <img\r\n      {...rest}\r\n      alt={alt || 'avatar'}\r\n      src={src || 'https://avatars.githubusercontent.com/u/15228321?v=4'}\r\n    />\r\n  )\r\n}\r\n\r\nAvatar.displayName = 'Actify.Avatar'\r\n\r\nexport { Avatar }\r\n"
  },
  {
    "path": "packages/actify/src/components/Avatar/index.ts",
    "content": "export { Avatar } from './Avatar'\r\n"
  },
  {
    "path": "packages/actify/src/components/Badges/Badges.tsx",
    "content": "'use client'\r\n\r\nimport React, { useMemo } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport styles from './badges.module.css'\r\n\r\ninterface BadgeProps extends React.ComponentProps<'div'> {\r\n  value?: string | number\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst Badge = (props: BadgeProps) => {\r\n  const { color = 'error', value, className, style, children, ...rest } = props\r\n\r\n  const badge = useMemo(() => {\r\n    if (!value) return false\r\n    if (parseInt(value.toString()) > 999) {\r\n      return '999+'\r\n    } else {\r\n      return value\r\n    }\r\n  }, [value])\r\n\r\n  const classes = clsx(styles['badge'], styles[color])\r\n\r\n  return (\r\n    <div style={style} className={clsx(styles['root'], className)}>\r\n      {children}\r\n      {badge && (\r\n        <span className={classes} {...rest}>\r\n          {badge}\r\n        </span>\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { Badge }\r\n"
  },
  {
    "path": "packages/actify/src/components/Badges/badges.module.css",
    "content": ".root {\r\n  display: inline-flex;\r\n  position: relative;\r\n}\r\n.badge {\r\n  padding: 4px;\r\n  display: grid;\r\n  font-size: 0.75rem;\r\n  font-weight: 500;\r\n  line-height: 1;\r\n  min-width: 1.5rem;\r\n  min-height: 1.5rem;\r\n  top: 4%;\r\n  position: absolute;\r\n  right: 2%;\r\n  border-radius: 9999px;\r\n  place-items: center;\r\n  transform: translate(50%, -50%);\r\n}\r\n.primary {\r\n  color: var(--md-sys-color-on-primary);\r\n  background-color: var(--md-sys-color-primary);\r\n}\r\n.secondary {\r\n  color: var(--md-sys-color-on-secondary);\r\n  background-color: var(--md-sys-color-secondary);\r\n}\r\n.tertiary {\r\n  color: var(--md-sys-color-on-tertiary);\r\n  background-color: var(--md-sys-color-tertiary);\r\n}\r\n.error {\r\n  color: var(--md-sys-color-on-error);\r\n  background-color: var(--md-sys-color-error);\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Badges/index.tsx",
    "content": "export { Badge } from './Badges'\n"
  },
  {
    "path": "packages/actify/src/components/BeforeAfter/BeforeAfter.tsx",
    "content": "'use client'\r\n\r\nimport { Icon } from './../Icon'\r\nimport React from 'react'\r\nimport styles from './before-after.module.css'\r\n\r\ninterface BeforeAfterProps extends React.ComponentProps<'div'> {\r\n  before?: string\r\n  after?: string\r\n  bgImage?: string\r\n}\r\n\r\nconst BeforeAfter = ({ before, after, bgImage, ...rest }: BeforeAfterProps) => {\r\n  const image = React.useMemo(\r\n    () =>\r\n      `url('${\r\n        bgImage ||\r\n        'data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\"><path fill=\"%23dedede\" d=\"M0 0h8v8H0zM8 8h8v8H8z\"/></svg>'\r\n      }')`,\r\n    [bgImage]\r\n  )\r\n\r\n  return (\r\n    <div {...rest} className={styles['root']}>\r\n      <div\r\n        style={\r\n          {\r\n            '--position': '50%'\r\n          } as React.CSSProperties\r\n        }\r\n        className={styles['inner']}\r\n      >\r\n        <div\r\n          style={\r\n            {\r\n              width: '100%',\r\n              '--bg-url': image\r\n            } as React.CSSProperties\r\n          }\r\n        >\r\n          <img alt=\"before\" src={before} className={styles['before']} />\r\n          <img alt=\"after\" src={after} className={styles['after']} />\r\n        </div>\r\n        <input\r\n          min=\"0\"\r\n          max=\"100\"\r\n          type=\"range\"\r\n          className={styles['control']}\r\n          onInput={({ target }: React.ChangeEvent<HTMLInputElement>) =>\r\n            target.parentElement?.style.setProperty(\r\n              '--position',\r\n              target.value + '%'\r\n            )\r\n          }\r\n        />\r\n        <div className={styles['divider']} />\r\n        <div className={styles['icon']}>\r\n          <Icon>arrow_range</Icon>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { BeforeAfter }\r\n"
  },
  {
    "path": "packages/actify/src/components/BeforeAfter/before-after.module.css",
    "content": ".root {\n  height: fit-content;\n  display: grid;\n  place-content: center;\n}\n.inner {\n  position: relative;\n  display: grid;\n  place-content: center;\n  overflow: hidden;\n  border-radius: 0.5rem /* 8px */;\n}\n.before {\n  position: absolute;\n  top: 0;\n  width: var(--position);\n  height: 100%;\n  object-fit: cover;\n  object-position: left;\n}\n.after {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  object-position: left;\n  background-color: transparent;\n  background-image: var(--bg-url);\n}\n.control {\n  position: absolute;\n  top: 0;\n  opacity: 0;\n  width: 100%;\n  height: 100%;\n  cursor: pointer;\n}\n.divider {\n  position: absolute;\n  top: 0;\n  height: 100%;\n  position: absolute;\n  left: var(--position);\n  width: 0.25rem /* 4px */;\n  background-color: var(--md-sys-color-surface);\n}\n.icon {\n  position: absolute;\n  top: 50%;\n  display: grid;\n  pointer-events: none;\n  border-radius: 9999px;\n  left: var(--position);\n  padding: 0.5rem /* 8px */;\n  transform: translate(-50%, -50%);\n  background-color: var(--md-sys-color-surface);\n  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color),\n    0 1px 2px -1px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n"
  },
  {
    "path": "packages/actify/src/components/BeforeAfter/index.ts",
    "content": "export { BeforeAfter } from './BeforeAfter'\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomAppBar/BottomAppBar.tsx",
    "content": "import { Elevation } from './../Elevation'\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './bottom-app-bar.module.css'\r\n\r\ninterface BottomAppBarProps extends React.ComponentProps<'div'> {}\r\nconst BottomAppBar = ({ className, children }: BottomAppBarProps) => {\r\n  return (\r\n    <div className={clsx(styles['root'], className)}>\r\n      {children}\r\n      <Elevation className=\"[--md-elevation-level:2]\" />\r\n    </div>\r\n  )\r\n}\r\n\r\nBottomAppBar.displayName = 'Actify.BottomAppBar'\r\n\r\nexport { BottomAppBar }\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomAppBar/BottomAppBarFab.tsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\nimport styles from './bottom-app-bar.module.css'\n\ninterface BottomAppBarFabProps extends React.ComponentProps<'div'> {}\n\nconst BottomAppBarFab = ({\n  children,\n  className,\n  ...rest\n}: BottomAppBarFabProps) => {\n  return (\n    <div {...rest} className={clsx(styles['fab'], className)}>\n      {children}\n    </div>\n  )\n}\n\nexport { BottomAppBarFab }\n"
  },
  {
    "path": "packages/actify/src/components/BottomAppBar/BottomAppBarIcons.tsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\nimport styles from './bottom-app-bar.module.css'\n\ninterface BottomAppBarIconsProps extends React.ComponentProps<'div'> {}\n\nconst BottomAppBarIcons = ({\n  children,\n  className,\n  ...rest\n}: BottomAppBarIconsProps) => {\n  return (\n    <div {...rest} className={clsx(styles['icons'], className)}>\n      {children}\n    </div>\n  )\n}\n\nexport { BottomAppBarIcons }\n"
  },
  {
    "path": "packages/actify/src/components/BottomAppBar/bottom-app-bar.module.css",
    "content": ".root {\n  display: flex;\n  padding-left: 1rem /* 16px */;\n  padding-right: 1rem /* 16px */;\n  height: 5rem /* 80px */;\n  width: 100%;\n  position: relative;\n  align-items: center;\n  max-width: 20rem /* 320px */;\n  justify-content: center;\n  background-color: var(--md-sys-color-primary);\n}\n.icons {\n  flex-grow: 1;\n  display: grid;\n  place-items: center;\n  grid-template-columns: repeat(auto-fill, minmax(48px, 1fr));\n}\n.fab {\n  margin-inline-end: 0.25rem /* 4px */;\n  min-width: 3rem /* 48px*/;\n  display: flex;\n  height: 100%;\n  position: relative;\n  align-items: center;\n  justify-content: center;\n}\n"
  },
  {
    "path": "packages/actify/src/components/BottomAppBar/index.ts",
    "content": "export { BottomAppBar } from './BottomAppBar'\nexport { BottomAppBarIcons } from './BottomAppBarIcons'\nexport { BottomAppBarFab } from './BottomAppBarFab'\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/BottomSheets.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  BottomSheetsProvider,\r\n  BottomSheetsProviderProps\r\n} from './BottomSheetsContext'\r\n\r\nconst BottomSheets = (props: BottomSheetsProviderProps) => {\r\n  const { children, ...rest } = props\r\n  return <BottomSheetsProvider {...rest}>{children}</BottomSheetsProvider>\r\n}\r\n\r\nBottomSheets.displayName = 'Actify.BottomSheets'\r\n\r\nexport { BottomSheets }\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/BottomSheetsActivator.tsx",
    "content": "'use client'\r\n\r\nimport React from 'react'\r\nimport { Slot } from './../Slot'\r\nimport { useBottomSheets } from './BottomSheetsContext'\r\n\r\nexport interface BottomSheetsActivatorProps\r\n  extends React.ComponentProps<'div'> {\r\n  asChild?: boolean\r\n}\r\n\r\nconst BottomSheetsActivator = ({\r\n  asChild,\r\n  className,\r\n  children,\r\n  ...rest\r\n}: BottomSheetsActivatorProps) => {\r\n  const { open, setOpen } = useBottomSheets()\r\n\r\n  const handlePress = () => {\r\n    setOpen?.(!open)\r\n  }\r\n\r\n  if (asChild) {\r\n    return (\r\n      <Slot className={className} {...{ ...rest, open, onPress: handlePress }}>\r\n        {children}\r\n      </Slot>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div {...rest} role=\"button\" className={className} onClick={handlePress}>\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { BottomSheetsActivator }\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/BottomSheetsContent.tsx",
    "content": "'use client'\r\n\r\nimport { AnimatePresence, motion } from 'motion/react'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport { createPortal } from 'react-dom'\r\nimport styles from './bottom-sheets.module.css'\r\nimport { useBottomSheets } from './BottomSheetsContext'\r\n\r\nconst BottomSheetsContent = ({\r\n  ref,\r\n  style,\r\n  className,\r\n  children\r\n}: React.ComponentProps<'div'>) => {\r\n  const { open, setOpen } = useBottomSheets()\r\n  const [container, setContainer] = useState<HTMLElement>()\r\n\r\n  useEffect(() => {\r\n    setContainer(document.body)\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    if (!open) return\r\n\r\n    document.body.style.overflow = 'hidden'\r\n    document.addEventListener('keydown', handleKeyDown)\r\n\r\n    return () => {\r\n      document.body.style.overflow = 'auto'\r\n      document.removeEventListener('keydown', handleKeyDown)\r\n    }\r\n  }, [open])\r\n\r\n  const handleKeyDown = (event: KeyboardEvent) => {\r\n    if (!open || event.key !== 'Escape') return\r\n    setOpen?.(false)\r\n  }\r\n\r\n  if (!container) {\r\n    return null\r\n  }\r\n\r\n  return createPortal(\r\n    <AnimatePresence mode=\"wait\" initial={false}>\r\n      {open && (\r\n        <motion.div\r\n          ref={ref}\r\n          style={style}\r\n          initial={{ opacity: 0 }}\r\n          animate={{ opacity: 1 }}\r\n          exit={{ opacity: 0 }}\r\n          // @ts-ignore\r\n          onClick={() => setOpen?.(false)}\r\n          className={clsx(styles['root'], className)}\r\n        >\r\n          <motion.div\r\n            initial={{\r\n              transform: 'translateY(100%)'\r\n            }}\r\n            animate={{\r\n              transform: 'translateY(0)'\r\n            }}\r\n            exit={{\r\n              transform: 'translateY(100%)'\r\n            }}\r\n            className={styles['inner']}\r\n            // @ts-expect-error\r\n            onClick={(e: Event) => e.stopPropagation()}\r\n          >\r\n            <div className={styles['grab']}>\r\n              <div className={styles['grab-item']} />\r\n            </div>\r\n            <div className={styles['content']}>\r\n              <p className={styles['content-inner']}>{children}</p>\r\n            </div>\r\n          </motion.div>\r\n        </motion.div>\r\n      )}\r\n    </AnimatePresence>,\r\n    container\r\n  ) as React.ReactNode\r\n}\r\n\r\nexport { BottomSheetsContent }\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/BottomSheetsContext.tsx",
    "content": "'use client'\r\n\r\nimport React, { createContext, useContext } from 'react'\r\n\r\nimport { useControllableState } from './../../hooks/useControllableState'\r\n\r\ninterface BottomSheetsProps {\r\n  open?: boolean\r\n  defaultOpen?: boolean\r\n  setOpen?: (open: boolean) => void\r\n}\r\n\r\nconst BottomSheetsContext = createContext<BottomSheetsProps | undefined>(\r\n  undefined\r\n)\r\n\r\nexport interface BottomSheetsProviderProps\r\n  extends React.PropsWithChildren<BottomSheetsProps> {}\r\n\r\nexport const BottomSheetsProvider = ({\r\n  children,\r\n  ...props\r\n}: BottomSheetsProviderProps) => {\r\n  const { open, defaultOpen, setOpen } = props\r\n  const [value, setValue] = useControllableState({\r\n    value: open,\r\n    defaultValue: defaultOpen,\r\n    onChange: setOpen\r\n  })\r\n\r\n  return (\r\n    <BottomSheetsContext value={{ open: value, setOpen: setValue }}>\r\n      {children}\r\n    </BottomSheetsContext>\r\n  )\r\n}\r\n\r\nexport function useBottomSheets() {\r\n  const context = useContext(BottomSheetsContext)\r\n  if (!context) {\r\n    throw new Error(\r\n      'BottomSheets components must be wrapped in <BottomSheets />'\r\n    )\r\n  }\r\n  return context\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/bottom-sheets.module.css",
    "content": ".root {\n  position: fixed;\n  overflow: hidden;\n  z-index: 50;\n  inset: 0;\n  opacity: 0;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-property: opacity;\n  transition-duration: 500ms;\n  background-color: rgba(0, 0, 0, 0.32);\n}\n.inner {\n  position: absolute;\n  display: flex;\n  flex-direction: column;\n  background-color: transparent;\n  left: 2.5rem /* 40px */;\n  right: 2.5rem /* 40px */;\n  bottom: 0px;\n  --tw-translate-y: 100%;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n  transition-property: transform;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n.grab {\n  display: inline-flex;\n  height: 2.25rem /* 36px */;\n  width: 100%;\n  cursor: grab;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-start;\n  gap: 0.75rem /* 12px */;\n  padding: 1rem /* 16px */;\n  background-color: var(--md-sys-color-surface);\n  border-top-left-radius: 6.25rem /* 100px */;\n  border-top-right-radius: 6.25rem /* 100px */;\n}\n.grab-item {\n  height: 0.25rem /* 4px */;\n  width: 2rem /* 32px */;\n  background-color: var(--md-sys-color-outline) / 0.4;\n  border-radius: 6.25rem /* 100px */;\n}\n.content {\n  flex: 1 1 0%;\n  overflow-y: auto;\n  max-height: calc(100vh - 4.5rem);\n}\n.content-inner {\n  padding: 0.5rem /* 8px */;\n  background-color: var(--md-sys-color-surface);\n}\n"
  },
  {
    "path": "packages/actify/src/components/BottomSheets/index.ts",
    "content": "export { BottomSheets } from './BottomSheets'\n\nexport { BottomSheetsActivator } from './BottomSheetsActivator'\nexport { BottomSheetsContent } from './BottomSheetsContent'\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/Button.tsx",
    "content": "'use client'\n\nimport {\n  Button as AriaButton,\n  ButtonProps as AriaButtonProps\n} from 'react-aria-components'\nimport { mergeProps, useFocusRing } from 'react-aria'\n\nimport { Elevation } from './../Elevation'\nimport { FocusRing } from './../FocusRing'\nimport React from 'react'\nimport { Ripple } from './../Ripple'\nimport buttons from './styles/button.module.css'\nimport clsx from 'clsx'\nimport colors from './styles/color.module.css'\nimport variants from './styles/variant.module.css'\n\ninterface ButtonProps extends AriaButtonProps {\n  ref?: React.RefObject<HTMLButtonElement | null>\n  ripple?: boolean\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\n  variant?: 'elevated' | 'filled' | 'tonal' | 'outlined' | 'text'\n}\n\nconst Button = (props: ButtonProps) => {\n  const {\n    ref,\n    style,\n    children,\n    className,\n    ripple = true,\n    color = 'primary',\n    variant = 'elevated',\n    isDisabled = false\n  } = props\n\n  const { focusProps, isFocusVisible } = useFocusRing()\n\n  return (\n    <AriaButton\n      ref={ref}\n      {...mergeProps(props, focusProps)}\n      style={style}\n      className={clsx(\n        buttons['btn'],\n        colors[color],\n        variants[variant],\n        isDisabled && buttons['disabled'],\n        className\n      )}\n    >\n      <div className={buttons['button']}>\n        <span className={buttons['background']} />\n        <span className={buttons['touch']} />\n        <span className={buttons['label']}>\n          <>{children}</>\n        </span>\n        {variant == 'outlined' && <div className={buttons['outline']} />}\n        {/* Elevation */}\n        <Elevation disabled={isDisabled} />\n        {/* FocusRing */}\n        {isFocusVisible && <FocusRing />}\n        {/* Ripple */}\n        {ripple && <Ripple id={props.id} disabled={isDisabled} />}\n      </div>\n    </AriaButton>\n  )\n}\n\nButton.displayName = 'Actify.Button'\n\nexport { Button }\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/Fab.tsx",
    "content": "'use client'\n\nimport {\n  AriaButtonProps,\n  mergeProps,\n  useButton,\n  useFocusRing\n} from 'react-aria'\nimport React, { useId } from 'react'\n\nimport { Elevation } from './../Elevation'\nimport { FocusRing } from './../FocusRing'\nimport { Ripple } from './../Ripple'\nimport clsx from 'clsx'\nimport styles from './fab.module.css'\n\ntype FabProps = {\n  label?: string\n  icon?: React.ReactNode\n  size?: 'small' | 'medium' | 'large'\n  variant?: 'surface' | 'primary' | 'secondary' | 'tertiary'\n} & Omit<React.ComponentProps<'button'>, 'disabled'> &\n  AriaButtonProps\n\nconst Fab = (props: FabProps) => {\n  const {\n    id,\n    ref,\n    icon,\n    label,\n    size = 'medium',\n    isDisabled = false,\n    className,\n    children\n  } = props\n\n  const fabRef = ref || React.useRef(null)\n  const { buttonProps } = useButton(\n    props,\n    fabRef as React.RefObject<HTMLButtonElement>\n  )\n  const fabId = id || `actify-fab${useId()}`\n  const { focusProps, isFocusVisible } = useFocusRing()\n\n  return (\n    <button\n      id={fabId}\n      ref={fabRef}\n      className={clsx(styles['fab'], styles[size], className)}\n      {...mergeProps(buttonProps, focusProps)}\n    >\n      {icon}\n      {children}\n      {label}\n      <Elevation className=\"[--md-elevation-level:3]\" />\n      {isFocusVisible && <FocusRing />}\n      <Ripple id={fabId} disabled={isDisabled} />\n    </button>\n  )\n}\n\nFab.displayName = 'Actify.Fab'\n\nexport { Fab }\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/IconButton.tsx",
    "content": "'use client'\n\nimport {\n  Button as AriaButton,\n  ButtonProps as AriaButtonProps\n} from 'react-aria-components'\nimport React, { useId } from 'react'\nimport { mergeProps, useButton, useFocusRing } from 'react-aria'\n\nimport { FocusRing } from './../FocusRing'\nimport { Ripple } from './../Ripple'\nimport clsx from 'clsx'\nimport styles from './icon-button.module.css'\n\ninterface IconButtonProps extends AriaButtonProps {\n  ref?: React.RefObject<HTMLButtonElement | null>\n  ripple?: boolean\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\n  variant?: 'standard' | 'outlined' | 'filled' | 'filled-tonal'\n}\n\nconst IconButton = (props: IconButtonProps) => {\n  const { ref, ripple = true, children, className, isDisabled } = props\n\n  const { focusProps, isFocusVisible } = useFocusRing()\n\n  return (\n    <AriaButton\n      ref={ref}\n      {...mergeProps(props, focusProps)}\n      className={clsx(\n        styles['btn'],\n        isDisabled && styles['text-outline'],\n        className\n      )}\n    >\n      {/* FocusRing */}\n      {isFocusVisible && <FocusRing />}\n      {/* Ripple */}\n      {ripple && <Ripple id={props.id} disabled={isDisabled} />}\n      <>{children}</>\n      <span className={styles['icon-button']} />\n    </AriaButton>\n  )\n}\n\nIconButton.displayName = 'Actify.IconButton'\n\nexport { IconButton }\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/LinkButton.tsx",
    "content": "'use client'\n\nimport { AriaButtonProps, useFocusRing } from 'react-aria'\nimport React, { useId } from 'react'\n\nimport { Elevation } from './../Elevation'\nimport { FocusRing } from './../FocusRing'\nimport { Ripple } from './../Ripple'\nimport { StyleProps } from '../../utils'\nimport buttons from './styles/button.module.css'\nimport clsx from 'clsx'\nimport colors from './styles/color.module.css'\nimport variants from './styles/variant.module.css'\n\ninterface LinkButtonProps extends AriaButtonProps, StyleProps {\n  ref?: React.RefObject<HTMLButtonElement | null>\n  ripple?: boolean\n  trailingIcon?: boolean\n  popoverTarget?: string\n  popoverTargetAction?: 'show' | 'toggle' | 'hide'\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\n  variant?: 'elevated' | 'filled' | 'tonal' | 'outlined' | 'text'\n}\n\nconst LinkButton = (props: LinkButtonProps) => {\n  const _buttonRef = React.useRef<HTMLButtonElement>(null)\n  const {\n    id,\n    ref = _buttonRef,\n    style,\n    ripple = true,\n    color = 'primary',\n    variant = 'elevated',\n    isDisabled = false,\n    className,\n    children\n  } = props\n\n  const buttonId = id || `actify-button${useId()}`\n\n  const { focusProps, isFocusVisible } = useFocusRing()\n\n  return (\n    <button\n      id={buttonId}\n      style={style}\n      className={clsx(\n        buttons['btn'],\n        colors[color],\n        variants[variant],\n        isDisabled && buttons['disabled'],\n        className\n      )}\n      ref={ref}\n      {...focusProps}\n    >\n      <div className={buttons['button']}>\n        <span className={buttons['background']} />\n        <span className={buttons['touch']} />\n        <span className={buttons['label']}>{children}</span>\n        {variant == 'outlined' && <div className={buttons['outline']} />}\n        {/* Elevation */}\n        <Elevation disabled={isDisabled} />\n        {/* FocusRing */}\n        {isFocusVisible && <FocusRing />}\n        {/* Ripple */}\n        {ripple && <Ripple id={buttonId} disabled={isDisabled} />}\n      </div>\n    </button>\n  )\n}\n\nLinkButton.displayName = 'Actify.LinkButton'\n\nexport { LinkButton }\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/fab.module.css",
    "content": ".fab {\n  border: 0 solid #e5e7eb;\n  appearance: button;\n  background-color: transparent;\n  background-image: none;\n  font-feature-settings: inherit;\n  font-variation-settings: inherit;\n  letter-spacing: inherit;\n  color: inherit;\n  padding: 0;\n  cursor: pointer;\n\n  width: fit-content;\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n}\n.fab:focus-visible {\n  outline: none;\n}\n.small {\n  height: 2.5rem;\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n  border-radius: 0.75rem /* 12px */;\n  --md-focus-ring-shape: 0.75rem;\n}\n\n.medium {\n  height: 3.5rem /* 56px */;\n  padding-left: 1rem;\n  padding-right: 1rem;\n  border-radius: 1rem /* 16px */;\n  --md-focus-ring-shape: 1rem;\n}\n\n.large {\n  height: 6rem /* 96px */;\n  padding-left: 2rem;\n  padding-right: 2rem;\n  border-radius: 1.75rem /* 12px */;\n  --md-focus-ring-shape: 1.75rem;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/icon-button.module.css",
    "content": ".btn {\n  border: 0 solid #e5e7eb;\n  appearance: button;\n  background-color: transparent;\n  background-image: none;\n  font-feature-settings: inherit;\n  font-variation-settings: inherit;\n  letter-spacing: inherit;\n  color: inherit;\n  padding: 0;\n  cursor: pointer;\n\n  width: 2.5rem /* 40px */;\n  height: 2.5rem /* 40px */;\n  position: relative;\n  color: currentColor;\n  display: inline-flex;\n  align-items: center;\n  border-radius: 9999px;\n  justify-content: center;\n}\n.btn:focus-visible {\n  outline: none;\n}\n.text-outline {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-outline) / var(--tw-text-opacity);\n}\n.icon-button {\n  position: absolute;\n  width: max(48px, 100%);\n  height: max(48px, 100%);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/index.ts",
    "content": "export { Button } from './Button'\nexport { Fab } from './Fab'\nexport { IconButton } from './IconButton'\nexport { LinkButton } from './LinkButton'\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/styles/button.module.css",
    "content": ".btn {\n  border: 0 solid #e5e7eb;\n  appearance: button;\n  background-color: transparent;\n  background-image: none;\n\n  border-start-start-radius: var(--_container-shape-start-start);\n  border-start-end-radius: var(--_container-shape-start-end);\n  border-end-start-radius: var(--_container-shape-end-start);\n  border-end-end-radius: var(--_container-shape-end-end);\n  box-sizing: border-box;\n  cursor: pointer;\n  display: inline-flex;\n  gap: 8px;\n  min-height: var(--_container-height);\n  outline: none;\n  padding-block: calc(\n    (\n        var(--_container-height) -\n          max(var(--_label-text-line-height), var(--_icon-size))\n      ) / 2\n  );\n  padding-inline-start: var(--_leading-space);\n  padding-inline-end: var(--_trailing-space);\n  place-content: center;\n  place-items: center;\n  position: relative;\n  font-family: var(--_label-text-font);\n  font-size: var(--_label-text-size);\n  line-height: var(--_label-text-line-height);\n  font-weight: var(--_label-text-weight);\n  text-overflow: ellipsis;\n  text-wrap: nowrap;\n  user-select: none;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  vertical-align: top;\n  --md-ripple-hover-color: var(--_hover-state-layer-color);\n  --md-ripple-pressed-color: var(--_pressed-state-layer-color);\n  --md-ripple-hover-opacity: var(--_hover-state-layer-opacity);\n  --md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity);\n}\n\n.disabled {\n  cursor: default;\n  pointer-events: none;\n}\n\n.button {\n  text-overflow: inherit;\n  border-radius: inherit;\n  cursor: inherit;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  border: none;\n  outline: none;\n  appearance: none;\n  vertical-align: middle;\n  background: rgba(0, 0, 0, 0);\n  text-decoration: none;\n  min-width: calc(64px - var(--_leading-space) - var(--_trailing-space));\n  width: 100%;\n  z-index: 0;\n  height: 100%;\n  font: inherit;\n  color: var(--_label-text-color);\n  padding: 0px;\n  gap: inherit;\n  text-transform: inherit;\n}\n\n.touch {\n  position: absolute;\n  top: 50%;\n  height: 48px;\n  left: 0px;\n  right: 0px;\n  transform: translateY(-50%);\n}\n\n.outline {\n  outline-style: none;\n  border-width: var(--_outline-width);\n  inset: 0px;\n  border-style: solid;\n  position: absolute;\n  box-sizing: border-box;\n  border-color: var(--_outline-color);\n  border-radius: inherit;\n}\n\n.background {\n  background-color: var(--_container-color);\n  border-radius: inherit;\n  inset: 0;\n  position: absolute;\n}\n.disabled .background {\n  opacity: var(--_disabled-container-opacity);\n  background-color: var(--_disabled-container-color);\n}\n\n.label {\n  text-overflow: inherit;\n  overflow: hidden;\n  display: inherit;\n  gap: inherit;\n  z-index: 1;\n  align-items: inherit;\n}\n.disabled .label {\n  color: var(--_disabled-label-text-color);\n  opacity: var(--_disabled-label-text-opacity);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/styles/color.module.css",
    "content": ".secondary {\n  --md-sys-color-primary: var(--md-sys-color-secondary);\n}\n.tertiary {\n  --md-sys-color-primary: var(--md-sys-color-tertiary);\n}\n.error {\n  --md-sys-color-primary: var(--md-sys-color-error);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Buttons/styles/variant.module.css",
    "content": ".filled {\n  --_container-color: var(\n    --md-filled-button-container-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_container-elevation: var(--md-filled-button-container-elevation, 0);\n  --_container-height: var(--md-filled-button-container-height, 40px);\n  --_container-shadow-color: var(\n    --md-filled-button-container-shadow-color,\n    var(--md-sys-color-shadow, #000000)\n  );\n  --_container-shape: var(--md-filled-button-container-shape, 9999px);\n  --_disabled-container-color: var(\n    --md-filled-button-disabled-container-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-container-elevation: var(\n    --md-filled-button-disabled-container-elevation,\n    0\n  );\n  --_disabled-container-opacity: var(\n    --md-filled-button-disabled-container-opacity,\n    0.12\n  );\n  --_disabled-label-text-color: var(\n    --md-filled-button-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-filled-button-disabled-label-text-opacity,\n    0.38\n  );\n  --_focus-container-elevation: var(\n    --md-filled-button-focus-container-elevation,\n    0\n  );\n  --_focus-label-text-color: var(\n    --md-filled-button-focus-label-text-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_hover-container-elevation: var(\n    --md-filled-button-hover-container-elevation,\n    1\n  );\n  --_hover-label-text-color: var(\n    --md-filled-button-hover-label-text-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_hover-state-layer-color: var(\n    --md-filled-button-hover-state-layer-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-filled-button-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-filled-button-label-text-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_label-text-font: var(\n    --md-filled-button-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-filled-button-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-filled-button-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-filled-button-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_pressed-container-elevation: var(\n    --md-filled-button-pressed-container-elevation,\n    0\n  );\n  --_pressed-label-text-color: var(\n    --md-filled-button-pressed-label-text-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_pressed-state-layer-color: var(\n    --md-filled-button-pressed-state-layer-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-filled-button-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-icon-color: var(\n    --md-filled-button-disabled-icon-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-icon-opacity: var(--md-filled-button-disabled-icon-opacity, 0.38);\n  --_focus-icon-color: var(\n    --md-filled-button-focus-icon-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_hover-icon-color: var(\n    --md-filled-button-hover-icon-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_icon-color: var(\n    --md-filled-button-icon-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_icon-size: var(--md-filled-button-icon-size, 18px);\n  --_pressed-icon-color: var(\n    --md-filled-button-pressed-icon-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_leading-space: var(--md-filled-button-leading-space, 24px);\n  --_trailing-space: var(--md-filled-button-trailing-space, 24px);\n  --_with-leading-icon-leading-space: var(\n    --md-filled-button-with-leading-icon-leading-space,\n    16px\n  );\n  --_with-leading-icon-trailing-space: var(\n    --md-filled-button-with-leading-icon-trailing-space,\n    24px\n  );\n  --_with-trailing-icon-leading-space: var(\n    --md-filled-button-with-trailing-icon-leading-space,\n    24px\n  );\n  --_with-trailing-icon-trailing-space: var(\n    --md-filled-button-with-trailing-icon-trailing-space,\n    16px\n  );\n  --_container-shape-start-start: var(\n    --md-filled-button-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-filled-button-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-filled-button-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-filled-button-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n.elevated {\n  --_container-color: var(\n    --md-elevated-button-container-color,\n    var(--md-sys-color-surface-container-low, f7f2fa)\n  );\n  --_container-elevation: var(--md-elevated-button-container-elevation, 1);\n  --_container-height: var(--md-elevated-button-container-height, 40px);\n  --_container-shadow-color: var(\n    --md-elevated-button-container-shadow-color,\n    var(--md-sys-color-shadow, #000000)\n  );\n  --_container-shape: var(--md-elevated-button-container-shape, 9999px);\n  --_disabled-container-color: var(\n    --md-elevated-button-disabled-container-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-container-elevation: var(\n    --md-elevated-button-disabled-container-elevation,\n    0\n  );\n  --_disabled-container-opacity: var(\n    --md-elevated-button-disabled-container-opacity,\n    0.12\n  );\n  --_disabled-label-text-color: var(\n    --md-elevated-button-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-elevated-button-disabled-label-text-opacity,\n    0.38\n  );\n  --_focus-container-elevation: var(\n    --md-elevated-button-focus-container-elevation,\n    1\n  );\n  --_focus-label-text-color: var(\n    --md-elevated-button-focus-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-container-elevation: var(\n    --md-elevated-button-hover-container-elevation,\n    2\n  );\n  --_hover-label-text-color: var(\n    --md-elevated-button-hover-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-color: var(\n    --md-elevated-button-hover-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-elevated-button-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-elevated-button-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_label-text-font: var(\n    --md-elevated-button-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-elevated-button-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-elevated-button-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-elevated-button-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_pressed-container-elevation: var(\n    --md-elevated-button-pressed-container-elevation,\n    1\n  );\n  --_pressed-label-text-color: var(\n    --md-elevated-button-pressed-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-color: var(\n    --md-elevated-button-pressed-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-elevated-button-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-icon-color: var(\n    --md-elevated-button-disabled-icon-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-icon-opacity: var(\n    --md-elevated-button-disabled-icon-opacity,\n    0.38\n  );\n  --_focus-icon-color: var(\n    --md-elevated-button-focus-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-icon-color: var(\n    --md-elevated-button-hover-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-color: var(\n    --md-elevated-button-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-size: var(--md-elevated-button-icon-size, 18px);\n  --_pressed-icon-color: var(\n    --md-elevated-button-pressed-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_leading-space: var(--md-elevated-button-leading-space, 24px);\n  --_trailing-space: var(--md-elevated-button-trailing-space, 24px);\n  --_with-leading-icon-leading-space: var(\n    --md-elevated-button-with-leading-icon-leading-space,\n    16px\n  );\n  --_with-leading-icon-trailing-space: var(\n    --md-elevated-button-with-leading-icon-trailing-space,\n    24px\n  );\n  --_with-trailing-icon-leading-space: var(\n    --md-elevated-button-with-trailing-icon-leading-space,\n    24px\n  );\n  --_with-trailing-icon-trailing-space: var(\n    --md-elevated-button-with-trailing-icon-trailing-space,\n    16px\n  );\n  --_container-shape-start-start: var(\n    --md-elevated-button-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-elevated-button-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-elevated-button-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-elevated-button-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n.outlined {\n  --_container-height: var(--md-outlined-button-container-height, 40px);\n  --_container-shape: var(--md-outlined-button-container-shape, 9999px);\n  --_disabled-label-text-color: var(\n    --md-outlined-button-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-outlined-button-disabled-label-text-opacity,\n    0.38\n  );\n  --_disabled-outline-color: var(\n    --md-outlined-button-disabled-outline-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-outline-opacity: var(\n    --md-outlined-button-disabled-outline-opacity,\n    0.12\n  );\n  --_focus-label-text-color: var(\n    --md-outlined-button-focus-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-label-text-color: var(\n    --md-outlined-button-hover-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-color: var(\n    --md-outlined-button-hover-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-outlined-button-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-outlined-button-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_label-text-font: var(\n    --md-outlined-button-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-outlined-button-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-outlined-button-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-outlined-button-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_outline-color: var(\n    --md-outlined-button-outline-color,\n    var(--md-sys-color-outline,#79747e)\n  );\n  --_outline-width: var(--md-outlined-button-outline-width, 1px);\n  --_pressed-label-text-color: var(\n    --md-outlined-button-pressed-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-outline-color: var(\n    --md-outlined-button-pressed-outline-color,\n    var(--md-sys-color-outline, #79747e)\n  );\n  --_pressed-state-layer-color: var(\n    --md-outlined-button-pressed-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-outlined-button-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-icon-color: var(\n    --md-outlined-button-disabled-icon-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-icon-opacity: var(\n    --md-outlined-button-disabled-icon-opacity,\n    0.38\n  );\n  --_focus-icon-color: var(\n    --md-outlined-button-focus-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-icon-color: var(\n    --md-outlined-button-hover-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-color: var(\n    --md-outlined-button-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-size: var(--md-outlined-button-icon-size, 18px);\n  --_pressed-icon-color: var(\n    --md-outlined-button-pressed-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_leading-space: var(--md-outlined-button-leading-space, 24px);\n  --_trailing-space: var(--md-outlined-button-trailing-space, 24px);\n  --_with-leading-icon-leading-space: var(\n    --md-outlined-button-with-leading-icon-leading-space,\n    16px\n  );\n  --_with-leading-icon-trailing-space: var(\n    --md-outlined-button-with-leading-icon-trailing-space,\n    24px\n  );\n  --_with-trailing-icon-leading-space: var(\n    --md-outlined-button-with-trailing-icon-leading-space,\n    24px\n  );\n  --_with-trailing-icon-trailing-space: var(\n    --md-outlined-button-with-trailing-icon-trailing-space,\n    16px\n  );\n  --_container-color: none;\n  --_disabled-container-color: none;\n  --_disabled-container-opacity: 0;\n  --_container-shape-start-start: var(\n    --md-outlined-button-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-outlined-button-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-outlined-button-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-outlined-button-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n.tonal {\n  --_container-color: var(\n    --md-filled-tonal-button-container-color,\n    var(--md-sys-color-secondary-container, #e8def8)\n  );\n  --_container-elevation: var(--md-filled-tonal-button-container-elevation, 0);\n  --_container-height: var(--md-filled-tonal-button-container-height, 40px);\n  --_container-shadow-color: var(\n    --md-filled-tonal-button-container-shadow-color,\n    var(--md-sys-color-shadow, #000000)\n  );\n  --_container-shape: var(--md-filled-tonal-button-container-shape, 9999px);\n  --_disabled-container-color: var(\n    --md-filled-tonal-button-disabled-container-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-container-elevation: var(\n    --md-filled-tonal-button-disabled-container-elevation,\n    0\n  );\n  --_disabled-container-opacity: var(\n    --md-filled-tonal-button-disabled-container-opacity,\n    0.12\n  );\n  --_disabled-label-text-color: var(\n    --md-filled-tonal-button-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-filled-tonal-button-disabled-label-text-opacity,\n    0.38\n  );\n  --_focus-container-elevation: var(\n    --md-filled-tonal-button-focus-container-elevation,\n    0\n  );\n  --_focus-label-text-color: var(\n    --md-filled-tonal-button-focus-label-text-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_hover-container-elevation: var(\n    --md-filled-tonal-button-hover-container-elevation,\n    1\n  );\n  --_hover-label-text-color: var(\n    --md-filled-tonal-button-hover-label-text-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_hover-state-layer-color: var(\n    --md-filled-tonal-button-hover-state-layer-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-filled-tonal-button-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-filled-tonal-button-label-text-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_label-text-font: var(\n    --md-filled-tonal-button-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-filled-tonal-button-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-filled-tonal-button-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-filled-tonal-button-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_pressed-container-elevation: var(\n    --md-filled-tonal-button-pressed-container-elevation,\n    0\n  );\n  --_pressed-label-text-color: var(\n    --md-filled-tonal-button-pressed-label-text-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_pressed-state-layer-color: var(\n    --md-filled-tonal-button-pressed-state-layer-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-filled-tonal-button-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-icon-color: var(\n    --md-filled-tonal-button-disabled-icon-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-icon-opacity: var(\n    --md-filled-tonal-button-disabled-icon-opacity,\n    0.38\n  );\n  --_focus-icon-color: var(\n    --md-filled-tonal-button-focus-icon-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_hover-icon-color: var(\n    --md-filled-tonal-button-hover-icon-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_icon-color: var(\n    --md-filled-tonal-button-icon-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_icon-size: var(--md-filled-tonal-button-icon-size, 18px);\n  --_pressed-icon-color: var(\n    --md-filled-tonal-button-pressed-icon-color,\n    var(--md-sys-color-on-secondary-container, #1d192b)\n  );\n  --_leading-space: var(--md-filled-tonal-button-leading-space, 24px);\n  --_trailing-space: var(--md-filled-tonal-button-trailing-space, 24px);\n  --_with-leading-icon-leading-space: var(\n    --md-filled-tonal-button-with-leading-icon-leading-space,\n    16px\n  );\n  --_with-leading-icon-trailing-space: var(\n    --md-filled-tonal-button-with-leading-icon-trailing-space,\n    24px\n  );\n  --_with-trailing-icon-leading-space: var(\n    --md-filled-tonal-button-with-trailing-icon-leading-space,\n    24px\n  );\n  --_with-trailing-icon-trailing-space: var(\n    --md-filled-tonal-button-with-trailing-icon-trailing-space,\n    16px\n  );\n  --_container-shape-start-start: var(\n    --md-filled-tonal-button-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-filled-tonal-button-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-filled-tonal-button-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-filled-tonal-button-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n.text {\n  --_container-height: var(--md-text-button-container-height, 40px);\n  --_container-shape: var(--md-text-button-container-shape, 9999px);\n  --_disabled-label-text-color: var(\n    --md-text-button-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-text-button-disabled-label-text-opacity,\n    0.38\n  );\n  --_focus-label-text-color: var(\n    --md-text-button-focus-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-label-text-color: var(\n    --md-text-button-hover-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-color: var(\n    --md-text-button-hover-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-text-button-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-text-button-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_label-text-font: var(\n    --md-text-button-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-text-button-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-text-button-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-text-button-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_pressed-label-text-color: var(\n    --md-text-button-pressed-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-color: var(\n    --md-text-button-pressed-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-text-button-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-icon-color: var(\n    --md-text-button-disabled-icon-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-icon-opacity: var(--md-text-button-disabled-icon-opacity, 0.38);\n  --_focus-icon-color: var(\n    --md-text-button-focus-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-icon-color: var(\n    --md-text-button-hover-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-color: var(\n    --md-text-button-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_icon-size: var(--md-text-button-icon-size, 18px);\n  --_pressed-icon-color: var(\n    --md-text-button-pressed-icon-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_leading-space: var(--md-text-button-leading-space, 12px);\n  --_trailing-space: var(--md-text-button-trailing-space, 12px);\n  --_with-leading-icon-leading-space: var(\n    --md-text-button-with-leading-icon-leading-space,\n    12px\n  );\n  --_with-leading-icon-trailing-space: var(\n    --md-text-button-with-leading-icon-trailing-space,\n    16px\n  );\n  --_with-trailing-icon-leading-space: var(\n    --md-text-button-with-trailing-icon-leading-space,\n    16px\n  );\n  --_with-trailing-icon-trailing-space: var(\n    --md-text-button-with-trailing-icon-trailing-space,\n    12px\n  );\n  --_container-color: none;\n  --_disabled-container-color: none;\n  --_disabled-container-opacity: 0;\n  --_container-shape-start-start: var(\n    --md-text-button-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-text-button-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-text-button-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-text-button-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n"
  },
  {
    "path": "packages/actify/src/components/Cards/Card.tsx",
    "content": "'use client'\r\n\r\nimport { Elevation } from './../Elevation'\r\nimport React from 'react'\r\nimport { Ripple } from './../Ripple'\r\nimport clsx from 'clsx'\r\nimport styles from './card.module.css'\r\n\r\ninterface CardProps extends React.ComponentProps<'div'> {\r\n  ripple?: boolean\r\n  elevation?: number\r\n  variant?: 'elevated' | 'filled' | 'outlined'\r\n}\r\n\r\nconst Card = (props: CardProps) => {\r\n  const {\r\n    id,\r\n    ripple = false,\r\n    variant = 'elevated',\r\n    elevation = 1,\r\n    children,\r\n    className,\r\n    ...rest\r\n  } = props\r\n\r\n  const cardId = id || `actify-card${React.useId()}`\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], styles[variant], className)}>\r\n      <div className={styles['card']}>{children}</div>\r\n      {ripple && <Ripple id={cardId} />}\r\n      {variant === 'elevated' && (\r\n        <Elevation className={`[--md-elevation-level:${elevation}]`} />\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nCard.displayName = 'Actify.Card'\r\n\r\nexport { Card }\r\n"
  },
  {
    "path": "packages/actify/src/components/Cards/card.module.css",
    "content": ".root {\n  position: relative;\n  display: inline-flex;\n  flex-direction: column;\n  border-radius: 0.75rem /* 12px */;\n}\n.filled {\n  background-color: var(--md-sys-color-inverse-surface);\n}\n.outlined {\n  border-width: 1px;\n  --tw-border-opacity: 1;\n  border-color: var(--md-sys-color-outline) / var(--tw-border-opacity);\n}\n.card {\n  position: relative;\n  overflow: hidden;\n  border-top-left-radius: 0.75rem /* 12px */;\n  border-top-right-radius: 0.75rem /* 12px */;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Cards/index.ts",
    "content": "export { Card } from './Card'\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/Carousel.tsx",
    "content": "'use client'\r\n\r\nimport { CarouselContent } from './CarouselContent'\r\nimport { CarouselControl } from './CarouselControl'\r\nimport { CarouselIndicator } from './CarouselIndicator'\r\nimport { CarouselProvider } from './CarouselContext'\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './carousel.module.css'\r\n\r\ninterface CarouselProps extends React.ComponentProps<'div'> {\r\n  autoPlay?: boolean\r\n  control?: boolean\r\n  infinite?: boolean\r\n  indicator?: boolean\r\n  children?: React.ReactNode[]\r\n}\r\n\r\nconst Carousel = (props: CarouselProps) => {\r\n  const {\r\n    autoPlay,\r\n    control,\r\n    infinite,\r\n    indicator,\r\n    children,\r\n    className,\r\n    ...rest\r\n  } = props\r\n\r\n  return (\r\n    <CarouselProvider {...{ total: children?.length, ...rest }}>\r\n      <div {...rest} className={clsx(styles['carousel'], className)}>\r\n        <CarouselContent>{children}</CarouselContent>\r\n        <CarouselControl {...{ control, autoPlay, infinite }} />\r\n        {indicator && <CarouselIndicator />}\r\n      </div>\r\n    </CarouselProvider>\r\n  )\r\n}\r\n\r\nCarousel.displayName = 'Actify.Carousel'\r\n\r\nexport { Carousel }\r\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/CarouselContent.tsx",
    "content": "'use client'\r\n\r\nimport { AnimatePresence, motion, wrap } from 'motion/react'\r\nimport React, { Children, isValidElement, useEffect } from 'react'\r\n\r\nimport { useCarousel } from './CarouselContext'\r\n\r\nconst variants = {\r\n  enter: (direction: number) => {\r\n    return {\r\n      x: direction > 0 ? 1000 : -1000,\r\n      opacity: 0\r\n    }\r\n  },\r\n  center: {\r\n    zIndex: 1,\r\n    x: 0,\r\n    opacity: 1\r\n  },\r\n  exit: (direction: number) => {\r\n    return {\r\n      zIndex: 0,\r\n      x: direction < 0 ? 1000 : -1000,\r\n      opacity: 0\r\n    }\r\n  }\r\n}\r\n\r\nconst swipeConfidenceThreshold = 10000\r\nconst swipePower = (offset: number, velocity: number) => {\r\n  return Math.abs(offset) * velocity\r\n}\r\n\r\nconst CarouselContent = ({ children }: React.ComponentProps<'div'>) => {\r\n  const { page: pages, setPage, current, setCurrent } = useCarousel()\r\n  const [page, direction] = pages as Array<number>\r\n\r\n  // @ts-expect-error\r\n  const images = Children.toArray(children).map((child) => child.props.src)\r\n\r\n  useEffect(() => {\r\n    setCurrent?.(wrap(0, images.length, page))\r\n  }, [page, images.length])\r\n\r\n  const paginate = (newDirection: number) => {\r\n    setPage?.([page + newDirection, newDirection])\r\n  }\r\n\r\n  return (\r\n    <AnimatePresence initial={false} custom={direction}>\r\n      {Children.map(children, (child, index) => {\r\n        if (isValidElement(child)) {\r\n          const MotionComponent = motion(child.type)\r\n          if (current == index) {\r\n            return (\r\n              <MotionComponent\r\n                // @ts-expect-error\r\n                {...child.props}\r\n                style={{ position: 'absolute' }}\r\n                variants={variants}\r\n                key={page}\r\n                custom={direction}\r\n                initial=\"enter\"\r\n                animate=\"center\"\r\n                exit=\"exit\"\r\n                transition={{\r\n                  x: { type: 'spring', stiffness: 300, damping: 30 },\r\n                  opacity: { duration: 0.2 }\r\n                }}\r\n                drag=\"x\"\r\n                dragConstraints={{ left: 0, right: 0 }}\r\n                dragElastic={1}\r\n                onDragEnd={(e: any, { offset, velocity }: any) => {\r\n                  const swipe = swipePower(offset.x, velocity.x)\r\n                  if (swipe < -swipeConfidenceThreshold) {\r\n                    paginate(1)\r\n                  } else if (swipe > swipeConfidenceThreshold) {\r\n                    paginate(-1)\r\n                  }\r\n                }}\r\n              />\r\n            )\r\n          }\r\n        }\r\n      })}\r\n    </AnimatePresence>\r\n  )\r\n}\r\n\r\nexport { CarouselContent }\r\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/CarouselContext.tsx",
    "content": "'use client'\n\nimport { createContext, useContext, useState } from 'react'\n\ninterface CarouselProps {\n  control?: boolean\n  autoPlay?: boolean\n  infinite?: boolean\n\n  page?: [number, number]\n  total?: number\n  current?: number\n  interval?: number\n\n  setPage?: (page: [number, number]) => void\n  setTotal?: (total: number) => void\n  setCurrent?: (current: number) => void\n  setInterval?: (interval: number) => void\n}\n\nconst CarouselContext = createContext<CarouselProps | undefined>(undefined)\n\nexport interface CarouselProviderProps\n  extends React.PropsWithChildren<CarouselProps> {}\n\nexport const CarouselProvider = ({\n  children,\n  ...props\n}: CarouselProviderProps) => {\n  const {\n    control = false,\n    autoPlay = false,\n    infinite = false,\n\n    page = [0, 0],\n    total = 0,\n    current = 0,\n    interval = 3000\n  } = props\n\n  const [pageValue, setPageValue] = useState(page)\n  const [totalValue, setTotalValue] = useState(total)\n  const [currentValue, setCurrentValue] = useState(current)\n  const [intervalValue, setIntervalValue] = useState(interval)\n\n  return (\n    <CarouselContext\n      value={{\n        control,\n        infinite,\n        autoPlay,\n\n        page: pageValue,\n        total: totalValue,\n        current: currentValue,\n        interval: intervalValue,\n        setPage: setPageValue,\n        setTotal: setTotalValue,\n        setCurrent: setCurrentValue,\n        setInterval: setIntervalValue\n      }}\n    >\n      {children}\n    </CarouselContext>\n  )\n}\n\nexport function useCarousel() {\n  const context = useContext(CarouselContext)\n  if (!context) {\n    throw new Error('Carousel components must be wrapped in <Carousel />')\n  }\n  return context\n}\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/CarouselControl.tsx",
    "content": "'use client'\n\nimport { Icon } from './../Icon'\nimport { IconButton } from './../Buttons'\nimport { PressEvent } from 'react-aria'\nimport React from 'react'\nimport clsx from 'clsx'\nimport styles from './carousel-control.module.css'\nimport { useCarousel } from './CarouselContext'\nimport { useInterval } from './../../hooks'\n\ntype CarouselControlProps = {\n  control?: boolean\n  autoPlay?: boolean\n  infinite?: boolean\n}\n\nconst CarouselControl = ({\n  control,\n  autoPlay,\n  infinite\n}: CarouselControlProps) => {\n  const { total, page, setPage, current, interval } = useCarousel()\n  const [pressCount, setPressCount] = React.useState(0)\n\n  const prev = (e?: PressEvent) => {\n    if (!infinite && current == 0) {\n      return\n    }\n    setPage?.([(page?.[0] ?? 0) - 1, -1])\n    if (e) setPressCount((old) => old + 1)\n  }\n  const next = (e?: PressEvent) => {\n    if (!infinite && current == (total ?? 0) - 1) {\n      return\n    }\n    setPage?.([(page?.[0] ?? 0) + 1, 1])\n    if (e) setPressCount((old) => old + 1)\n  }\n\n  if (autoPlay) {\n    useInterval(next, interval ?? 0, [pressCount])\n  }\n\n  return (\n    control && (\n      <React.Fragment>\n        <IconButton\n          onPress={prev}\n          className={clsx(styles['control'], styles['left'])}\n        >\n          <Icon className={styles['icon']}>chevron_backward</Icon>\n          <span className=\"sr-only\">Previous</span>\n        </IconButton>\n        <IconButton\n          onPress={next}\n          className={clsx(styles['control'], styles['right'])}\n        >\n          <Icon className={styles['icon']}>chevron_forward</Icon>\n          <span className=\"sr-only\">Next</span>\n        </IconButton>\n      </React.Fragment>\n    )\n  )\n}\n\nexport { CarouselControl }\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/CarouselIndicator.tsx",
    "content": "'use client'\n\nimport clsx from 'clsx'\nimport styles from './carousel-indicator.module.css'\nimport { useCarousel } from './CarouselContext'\n\nconst CarouselIndicator = () => {\n  const { total, current, setCurrent } = useCarousel()\n\n  return (\n    <div className={styles['carousel-indicator']}>\n      {[...Array(total)].map((_, index) => (\n        <button\n          key={index}\n          onClick={() => setCurrent?.(index)}\n          className={clsx(\n            styles['button'],\n            index == current ? styles['active'] : styles['indicator']\n          )}\n        ></button>\n      ))}\n    </div>\n  )\n}\n\nexport { CarouselIndicator }\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/CarouselItem.tsx",
    "content": "import React from 'react'\r\n\r\nconst CarouselItem = (props: React.ComponentProps<'div'>) => {\r\n  const { className, children, ...rest } = props\r\n\r\n  return (\r\n    <div {...rest} className={className}>\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { CarouselItem }\r\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/carousel-control.module.css",
    "content": ".control {\n  top: 50%;\n  z-index: 30;\n  position: absolute;\n  transform: translateY(-50%);\n  background-color: var(--md-sys-color-primary);\n}\n.left {\n  left: 1rem;\n}\n.right {\n  right: 1rem;\n}\n.icon {\n  color: white;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/carousel-indicator.module.css",
    "content": ".carousel-indicator {\n  position: absolute;\n  bottom: 1.25rem;\n  left: 50%;\n  z-index: 30;\n  display: flex;\n  transform: translateX(-50%);\n  gap: 0.75rem;\n}\n.button {\n  border: 0 solid #e5e7eb;\n  appearance: button;\n  background-image: none;\n  cursor: pointer;\n\n  width: 0.75rem /* 12px */;\n  height: 0.75rem /* 12px */;\n  border-radius: 9999px;\n}\n.indicator {\n  background-color: var(--md-sys-color-background);\n}\n.indicator:hover {\n  background-color: var(--md-sys-color-on-primary);\n}\n.active {\n  background-color: var(--md-sys-color-primary-container);\n}\n.active:hover {\n  background-color: var(--md-sys-color-on-primary-container);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/carousel.module.css",
    "content": ".carousel {\n  display: inline-flex;\n  width: 100%;\n  min-height: 25rem /* 400px */;\n  position: relative;\n  border-radius: 0.5rem /* 8px */;\n  align-items: center;\n  justify-content: center;\n  overflow: hidden;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Carousel/index.ts",
    "content": "export { Carousel } from './Carousel'\nexport { CarouselItem } from './CarouselItem'\n"
  },
  {
    "path": "packages/actify/src/components/Checkbox/Checkbox.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  AriaCheckboxGroupItemProps,\r\n  AriaCheckboxProps,\r\n  mergeProps,\r\n  useCheckbox,\r\n  useFocusRing\r\n} from 'react-aria'\r\nimport { CheckboxGroupState, useToggleState } from 'react-stately'\r\nimport React, { useId } from 'react'\r\n\r\nimport { CheckboxGroupContext } from './CheckboxGroup'\r\nimport { FocusRing } from './../FocusRing'\r\nimport { Label } from './../Label'\r\nimport { Ripple } from './../Ripple'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './checkbox.module.css'\r\nimport { useCheckboxGroupItem } from 'react-aria'\r\n\r\ninterface CheckboxProps extends AriaCheckboxProps, StyleProps {\r\n  ref?: React.RefObject<HTMLInputElement>\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst Checkbox = (props: CheckboxProps) => {\r\n  const _inputRef = React.useRef(null)\r\n\r\n  const { ref: inputRef = _inputRef } = props\r\n\r\n  const groupState = React.useContext(CheckboxGroupContext)\r\n  const toggleState = useToggleState(props)\r\n\r\n  const state = groupState ?? toggleState\r\n\r\n  const { inputProps, labelProps } = groupState\r\n    ? useCheckboxGroupItem(\r\n        props as AriaCheckboxGroupItemProps,\r\n        state as CheckboxGroupState,\r\n        inputRef\r\n      )\r\n    : useCheckbox(props, toggleState, inputRef)\r\n\r\n  const isSelected = groupState\r\n    ? (state as CheckboxGroupState).isSelected(props.value as string)\r\n    : state.isSelected && !props.isIndeterminate\r\n  const isDisabled = groupState\r\n    ? (state as CheckboxGroupState).isDisabled\r\n    : props.isDisabled\r\n\r\n  const { isFocusVisible, focusProps } = useFocusRing()\r\n\r\n  return (\r\n    <div className={styles['checkbox-wrapper']}>\r\n      <Label\r\n        style={props.style}\r\n        className={clsx(styles['checkbox'], props.className)}\r\n      >\r\n        <div className={styles['container']}>\r\n          <input\r\n            ref={inputRef}\r\n            className={styles['input']}\r\n            {...mergeProps(inputProps, focusProps)}\r\n            aria-checked={props.isIndeterminate ? 'mixed' : undefined}\r\n          />\r\n\r\n          <span\r\n            className={clsx([\r\n              styles['outline'],\r\n              isDisabled && styles['disabled']\r\n            ])}\r\n          />\r\n          <span\r\n            className={clsx([\r\n              styles['background'],\r\n              props.isIndeterminate || isSelected\r\n                ? styles['selected']\r\n                : styles['unselected']\r\n            ])}\r\n          />\r\n\r\n          <Ripple\r\n            id={inputProps.id}\r\n            disabled={isDisabled}\r\n            style={{\r\n              inset: 'unset',\r\n              borderRadius: '50%',\r\n              width: 'var(--md-checkbox-state-layer-size, 40px)',\r\n              height: 'var(--md-checkbox-state-layer-size, 40px)'\r\n            }}\r\n          />\r\n          {isFocusVisible && (\r\n            <FocusRing\r\n              style={{\r\n                width: '44px',\r\n                height: '44px',\r\n                inset: 'unset',\r\n                borderRadius: '50%'\r\n              }}\r\n            />\r\n          )}\r\n          <svg\r\n            aria-hidden=\"true\"\r\n            viewBox=\"0 0 18 18\"\r\n            className={clsx([\r\n              styles['icon'],\r\n              props.isIndeterminate || isSelected\r\n                ? styles['selected']\r\n                : styles['unselected']\r\n            ])}\r\n          >\r\n            <rect\r\n              className={clsx([\r\n                styles['mark'],\r\n                styles['short'],\r\n                props.isIndeterminate && styles['indeterminate'],\r\n                isSelected ? styles['checked'] : styles['unselected']\r\n              ])}\r\n            />\r\n            <rect\r\n              className={clsx([\r\n                styles['mark'],\r\n                styles['long'],\r\n                props.isIndeterminate && styles['indeterminate'],\r\n                isSelected ? styles['checked'] : styles['unselected']\r\n              ])}\r\n            />\r\n          </svg>\r\n        </div>\r\n      </Label>\r\n      <Label {...labelProps}>{props.children}</Label>\r\n    </div>\r\n  )\r\n}\r\n\r\nCheckbox.displayName = 'Actify.Checkbox'\r\n\r\nexport { Checkbox }\r\n"
  },
  {
    "path": "packages/actify/src/components/Checkbox/CheckboxGroup.tsx",
    "content": "import { AriaCheckboxGroupProps, useCheckboxGroup } from 'react-aria'\nimport { CheckboxGroupState, useCheckboxGroupState } from 'react-stately'\n\nimport { Label } from '../Label'\nimport React from 'react'\nimport { StyleProps } from '../../utils'\nimport styles from './checkbox-group.module.css'\n\nexport const CheckboxGroupContext =\n  React.createContext<CheckboxGroupState | null>(null)\n\ninterface Props extends AriaCheckboxGroupProps, StyleProps {\n  children?: React.ReactNode\n}\nconst CheckboxGroup = (props: Props) => {\n  const { children, label, description, style, className } = props\n  const state = useCheckboxGroupState(props)\n  const {\n    groupProps,\n    labelProps,\n    descriptionProps,\n    errorMessageProps,\n    isInvalid,\n    validationErrors\n  } = useCheckboxGroup(props, state)\n\n  return (\n    <div {...groupProps} style={style} className={className}>\n      {label && <Label {...labelProps}>{label}</Label>}\n      <CheckboxGroupContext value={state}>{children}</CheckboxGroupContext>\n      {description && (\n        <div {...descriptionProps} className={styles['description']}>\n          {description}\n        </div>\n      )}\n      {isInvalid && (\n        <div {...errorMessageProps} className={styles['error-message']}>\n          {validationErrors.join(' ')}\n        </div>\n      )}\n    </div>\n  )\n}\n\nexport { CheckboxGroup }\n"
  },
  {
    "path": "packages/actify/src/components/Checkbox/checkbox-group.module.css",
    "content": ".checkbox-group[aria-orientation='horizontal'] {\n  gap: 14px;\n  align-items: center;\n}\n.checkbox-group[aria-orientation='vertical'] {\n  flex-direction: column;\n}\n.description {\n  font-size: 12px;\n}\n.error-message {\n  font-size: 12px;\n  color: var(--md-sys-color-error);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Checkbox/checkbox.module.css",
    "content": ".checkbox-wrapper {\r\n  gap: 8px;\r\n  display: flex;\r\n  align-items: center;\r\n}\r\n.checkbox {\r\n  margin: max(0px, (48px - var(--md-checkbox-container-size, 18px)) / 2);\r\n  border-start-start-radius: var(\r\n    --md-checkbox-container-shape-start-start,\r\n    var(--md-checkbox-container-shape, 2px)\r\n  );\r\n  border-start-end-radius: var(\r\n    --md-checkbox-container-shape-start-end,\r\n    var(--md-checkbox-container-shape, 2px)\r\n  );\r\n  border-end-end-radius: var(\r\n    --md-checkbox-container-shape-end-end,\r\n    var(--md-checkbox-container-shape, 2px)\r\n  );\r\n  border-end-start-radius: var(\r\n    --md-checkbox-container-shape-end-start,\r\n    var(--md-checkbox-container-shape, 2px)\r\n  );\r\n  display: inline-flex;\r\n  height: var(--md-checkbox-container-size, 18px);\r\n  position: relative;\r\n  vertical-align: top;\r\n  width: var(--md-checkbox-container-size, 18px);\r\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\r\n  cursor: pointer;\r\n  &:has(.disabled) {\r\n    cursor: default;\r\n  }\r\n  &:where(.selected) :is(.a-checkbox-background, .a-checkbox-icon) {\r\n    opacity: 1;\r\n    transition-duration: 350ms, 50ms;\r\n    transition-timing-function: cubic-bezier(0.05, 0.7, 0.1, 1), linear;\r\n    transform: scale(1);\r\n  }\r\n}\r\n.container {\r\n  border-radius: inherit;\r\n  display: flex;\r\n  height: 100%;\r\n  place-content: center;\r\n  place-items: center;\r\n  position: relative;\r\n  width: 100%;\r\n}\r\n.input {\r\n  appearance: none;\r\n  height: 48px;\r\n  margin: 0;\r\n  opacity: 0;\r\n  outline: none;\r\n  position: absolute;\r\n  width: 48px;\r\n  z-index: 1;\r\n  cursor: inherit;\r\n}\r\n.outline {\r\n  inset: 0;\r\n  position: absolute;\r\n  border-radius: inherit;\r\n  border-color: var(\r\n    --md-checkbox-outline-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  border-style: solid;\r\n  border-width: var(--md-checkbox-outline-width, 2px);\r\n  box-sizing: border-box;\r\n  &.disabled {\r\n    border-color: var(\r\n      --md-checkbox-disabled-outline-color,\r\n      var(--md-sys-color-on-surface)\r\n    );\r\n    border-width: var(--md-checkbox-disabled-outline-width, 2px);\r\n    opacity: var(--md-checkbox-disabled-container-opacity, 0.38);\r\n  }\r\n  &.disabled.selected {\r\n    visibility: hidden;\r\n  }\r\n}\r\n.background {\r\n  inset: 0;\r\n  position: absolute;\r\n  border-radius: inherit;\r\n  background-color: var(\r\n    --md-checkbox-selected-container-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  opacity: 0;\r\n  transition-duration: 150ms, 50ms;\r\n  transition-property: transform, opacity;\r\n  transition-timing-function: cubic-bezier(0.3, 0, 0.8, 0.15), linear;\r\n  transform: scale(0.6);\r\n  &.selected {\r\n    opacity: 1;\r\n    transition-duration: 350ms, 50ms;\r\n    transition-timing-function: cubic-bezier(0.05, 0.7, 0.1, 1), linear;\r\n    transform: scale(1);\r\n  }\r\n  &.selected.disabled {\r\n    background: var(\r\n      --md-checkbox-selected-disabled-container-color,\r\n      var(--md-sys-color-on-surface)\r\n    );\r\n    opacity: var(--md-checkbox-selected-disabled-container-opacity, 0.38);\r\n  }\r\n}\r\n.icon {\r\n  inset: 0;\r\n  position: absolute;\r\n  fill: var(\r\n    --md-checkbox-selected-icon-color,\r\n    var(--md-sys-color-on-primary)\r\n  );\r\n  height: var(--md-checkbox-icon-size, 18px);\r\n  width: var(--md-checkbox-icon-size, 18px);\r\n  opacity: 0;\r\n  transition-duration: 150ms, 50ms;\r\n  transition-property: transform, opacity;\r\n  transition-timing-function: cubic-bezier(0.3, 0, 0.8, 0.15), linear;\r\n  transform: scale(0.6);\r\n  &.selected {\r\n    opacity: 1;\r\n    transition-duration: 350ms, 50ms;\r\n    transition-timing-function: cubic-bezier(0.05, 0.7, 0.1, 1), linear;\r\n    transform: scale(1);\r\n  }\r\n}\r\n.mark {\r\n  animation-duration: 150ms;\r\n  transition-duration: 150ms;\r\n  transform: scaleY(-1) translate(7px, -14px) rotate(45deg);\r\n  animation-timing-function: cubic-bezier(0.3, 0, 0.8, 0.15);\r\n  transition-timing-function: cubic-bezier(0.3, 0, 0.8, 0.15);\r\n  &.indeterminate,\r\n  &.prev-indeterminate.unselected {\r\n    transform: scaleY(-1) translate(4px, -10px) rotate(0deg);\r\n  }\r\n}\r\n.short {\r\n  width: 2px;\r\n  height: 2px;\r\n  transition-property: transform, height;\r\n  &.checked,\r\n  &.prev-checked.unselected {\r\n    height: 5.6568542495px;\r\n  }\r\n}\r\n.long {\r\n  height: 2px;\r\n  width: 10px;\r\n  transition-property: transform, width;\r\n  &.checked,\r\n  &.prev-checked.unselected {\r\n    width: 11.313708499px;\r\n  }\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Checkbox/index.ts",
    "content": "export { Checkbox } from './Checkbox'\r\nexport { CheckboxGroup } from './CheckboxGroup'\r\n"
  },
  {
    "path": "packages/actify/src/components/Chips/Chip.tsx",
    "content": "import { AriaTagProps, useFocusRing, useTag } from 'react-aria'\r\n\r\nimport { FocusRing } from '../FocusRing'\r\nimport { Icon } from '../Icon'\r\nimport { IconButton } from './../Buttons'\r\nimport { ListState } from 'react-stately'\r\nimport React from 'react'\r\nimport { Ripple } from '../Ripple'\r\nimport clsx from 'clsx'\r\nimport styles from './chip.module.css'\r\n\r\ninterface ChipProps<T> extends AriaTagProps<T> {\r\n  state: ListState<T>\r\n}\r\n\r\nconst Chip = <T extends object>(props: ChipProps<T>) => {\r\n  let { item, state } = props\r\n  let ref = React.useRef(null)\r\n  let { focusProps, isFocusVisible } = useFocusRing({ within: true })\r\n  let { rowProps, gridCellProps, removeButtonProps, allowsRemoving } = useTag(\r\n    props,\r\n    state,\r\n    ref\r\n  )\r\n\r\n  return (\r\n    <div\r\n      ref={ref}\r\n      {...rowProps}\r\n      {...focusProps}\r\n      className={styles['chip']}\r\n      data-focus-visible={isFocusVisible}\r\n    >\r\n      <div\r\n        {...gridCellProps}\r\n        className={clsx(\r\n          styles['cell'],\r\n          allowsRemoving && styles['has-trailing']\r\n        )}\r\n      >\r\n        {/* outline */}\r\n        <span className={styles['outline']} />\r\n        {/* focus ring */}\r\n        {isFocusVisible && <FocusRing />}\r\n        {/* ripple */}\r\n        <Ripple />\r\n        {/* leading icon */}\r\n        <span className={styles['leading-icon']}>\r\n          <Icon\r\n            style={\r\n              { '--md-icon-size': 'var(--_icon-size)' } as React.CSSProperties\r\n            }\r\n          >\r\n            check\r\n          </Icon>\r\n        </span>\r\n        <span className={styles['label']}>{item.rendered}</span>\r\n        {allowsRemoving && (\r\n          <IconButton {...removeButtonProps}>\r\n            <Icon\r\n              style={\r\n                { '--md-icon-size': 'var(--_icon-size)' } as React.CSSProperties\r\n              }\r\n            >\r\n              close\r\n            </Icon>\r\n          </IconButton>\r\n        )}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { Chip }\r\n"
  },
  {
    "path": "packages/actify/src/components/Chips/ChipGroup.tsx",
    "content": "import type { AriaTagGroupProps } from 'react-aria'\nimport { Chip } from './Chip'\nimport { Label } from '../Label'\nimport React from 'react'\nimport styles from './chip-group.module.css'\nimport { useListState } from 'react-stately'\nimport { useTagGroup } from 'react-aria'\n\nconst ChipGroup = <T extends object>(props: AriaTagGroupProps<T>) => {\n  const { label, description, errorMessage } = props\n  const ref = React.useRef(null)\n\n  const state = useListState(props)\n  const { gridProps, labelProps, descriptionProps, errorMessageProps } =\n    useTagGroup(props, state, ref)\n\n  return (\n    <div className={styles['chip-group']}>\n      <Label {...labelProps}>{label}</Label>\n      <div {...gridProps} ref={ref}>\n        {[...state.collection].map((item) => (\n          <Chip key={item.key} item={item} state={state} />\n        ))}\n      </div>\n      {description && (\n        <div {...descriptionProps} className=\"description\">\n          {description}\n        </div>\n      )}\n      {errorMessage && (\n        <div {...errorMessageProps} className=\"error-message\">\n          {errorMessage}\n        </div>\n      )}\n    </div>\n  )\n}\n\nexport { ChipGroup }\n"
  },
  {
    "path": "packages/actify/src/components/Chips/chip-group.module.css",
    "content": ".chip-group {\n  display: flex;\n  flex-direction: column;\n  gap: 4px;\n}\n\n.chip-group [role='grid'] {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 8px;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Chips/chip.module.css",
    "content": ".chip {\n  --_container-height: var(--md-assist-chip-container-height, 32px);\n  --_disabled-label-text-color: var(\n    --md-assist-chip-disabled-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-assist-chip-disabled-label-text-opacity,\n    0.38\n  );\n  --_elevated-container-color: var(\n    --md-assist-chip-elevated-container-color,\n    var(--md-sys-color-surface-container-low)\n  );\n  --_elevated-container-elevation: var(\n    --md-assist-chip-elevated-container-elevation,\n    1\n  );\n  --_elevated-container-shadow-color: var(\n    --md-assist-chip-elevated-container-shadow-color,\n    var(--md-sys-color-shadow)\n  );\n  --_elevated-disabled-container-color: var(\n    --md-assist-chip-elevated-disabled-container-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_elevated-disabled-container-elevation: var(\n    --md-assist-chip-elevated-disabled-container-elevation,\n    0\n  );\n  --_elevated-disabled-container-opacity: var(\n    --md-assist-chip-elevated-disabled-container-opacity,\n    0.12\n  );\n  --_elevated-focus-container-elevation: var(\n    --md-assist-chip-elevated-focus-container-elevation,\n    1\n  );\n  --_elevated-hover-container-elevation: var(\n    --md-assist-chip-elevated-hover-container-elevation,\n    2\n  );\n  --_elevated-pressed-container-elevation: var(\n    --md-assist-chip-elevated-pressed-container-elevation,\n    1\n  );\n  --_focus-label-text-color: var(\n    --md-assist-chip-focus-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_hover-label-text-color: var(\n    --md-assist-chip-hover-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_hover-state-layer-color: var(\n    --md-assist-chip-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-assist-chip-hover-state-layer-opacity,\n    0.08\n  );\n  --_label-text-color: var(\n    --md-assist-chip-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_label-text-font: var(\n    --md-assist-chip-label-text-font,\n    var(\n      --md-sys-typescale-label-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-assist-chip-label-text-line-height,\n    var(--md-sys-typescale-label-large-line-height, 1.25rem)\n  );\n  --_label-text-size: var(\n    --md-assist-chip-label-text-size,\n    var(--md-sys-typescale-label-large-size, 0.875rem)\n  );\n  --_label-text-weight: var(\n    --md-assist-chip-label-text-weight,\n    var(\n      --md-sys-typescale-label-large-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  --_pressed-label-text-color: var(\n    --md-assist-chip-pressed-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_pressed-state-layer-color: var(\n    --md-assist-chip-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-assist-chip-pressed-state-layer-opacity,\n    0.12\n  );\n  --_disabled-outline-color: var(\n    --md-assist-chip-disabled-outline-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_disabled-outline-opacity: var(\n    --md-assist-chip-disabled-outline-opacity,\n    0.12\n  );\n  --_focus-outline-color: var(\n    --md-assist-chip-focus-outline-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_outline-color: var(\n    --md-assist-chip-outline-color,\n    var(--md-sys-color-outline)\n  );\n  --_outline-width: var(--md-assist-chip-outline-width, 1px);\n  --_selected-container-color: var(\n    --md-filter-chip-selected-container-color,\n    var(--md-sys-color-secondary-container)\n  );\n  --_selected-outline-width: var(--md-filter-chip-selected-outline-width, 0px);\n  --_selected-label-text-color: var(\n    --md-filter-chip-selected-label-text-color,\n    var(--md-sys-color-on-secondary-container)\n  );\n  --_disabled-leading-icon-color: var(\n    --md-assist-chip-disabled-leading-icon-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_disabled-leading-icon-opacity: var(\n    --md-assist-chip-disabled-leading-icon-opacity,\n    0.38\n  );\n  --_focus-leading-icon-color: var(\n    --md-assist-chip-focus-leading-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_hover-leading-icon-color: var(\n    --md-assist-chip-hover-leading-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_leading-icon-color: var(\n    --md-assist-chip-leading-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_icon-size: var(--md-assist-chip-icon-size, 18px);\n  --_pressed-leading-icon-color: var(\n    --md-assist-chip-pressed-leading-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_container-shape-start-start: var(\n    --md-assist-chip-container-shape-start-start,\n    var(--md-assist-chip-container-shape, var(--md-sys-shape-corner-small, 8px))\n  );\n  --_container-shape-start-end: var(\n    --md-assist-chip-container-shape-start-end,\n    var(--md-assist-chip-container-shape, var(--md-sys-shape-corner-small, 8px))\n  );\n  --_container-shape-end-end: var(\n    --md-assist-chip-container-shape-end-end,\n    var(--md-assist-chip-container-shape, var(--md-sys-shape-corner-small, 8px))\n  );\n  --_container-shape-end-start: var(\n    --md-assist-chip-container-shape-end-start,\n    var(--md-assist-chip-container-shape, var(--md-sys-shape-corner-small, 8px))\n  );\n  --_leading-space: var(--md-assist-chip-leading-space, 16px);\n  --_trailing-space: var(--md-assist-chip-trailing-space, 16px);\n  --_icon-label-space: var(--md-assist-chip-icon-label-space, 8px);\n  --_with-leading-icon-leading-space: var(\n    --md-assist-chip-with-leading-icon-leading-space,\n    8px\n  );\n  --_icon-size: var(--md-filter-chip-icon-size, 18px);\n  outline: none;\n}\n.cell {\n  position: relative;\n  padding-inline-start: var(--_leading-space);\n  padding-inline-end: var(--_trailing-space);\n  border-start-start-radius: var(--_container-shape-start-start);\n  border-start-end-radius: var(--_container-shape-start-end);\n  border-end-start-radius: var(--_container-shape-end-start);\n  border-end-end-radius: var(--_container-shape-end-end);\n  display: inline-flex;\n  align-items: center;\n  height: var(--_container-height);\n  cursor: pointer;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  --md-ripple-hover-color: var(--_hover-state-layer-color);\n  --md-ripple-hover-opacity: var(--_hover-state-layer-opacity);\n  --md-ripple-pressed-color: var(--_pressed-state-layer-color);\n  --md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity);\n}\n.cell:before {\n  border-radius: inherit;\n  content: '';\n  inset: 0;\n  pointer-events: none;\n  position: absolute;\n}\n[aria-selected='true'] .cell:before {\n  background: var(--_selected-container-color);\n}\n.leading-icon {\n  display: none;\n  padding-inline-end: var(--_icon-label-space);\n}\n[aria-selected='true'] .leading-icon {\n  display: flex;\n  z-index: 1;\n}\n.cell.has-trailing {\n  padding-inline-end: 0;\n}\n.label {\n  z-index: 1;\n  align-items: center;\n  color: var(--_label-text-color);\n  display: flex;\n  font-family: var(--_label-text-font);\n  font-size: var(--_label-text-size);\n  font-weight: var(--_label-text-weight);\n  height: 100%;\n  line-height: var(--_label-text-line-height);\n  overflow: hidden;\n  user-select: none;\n}\n[aria-selected='true'] .label {\n  color: var(--_selected-label-text-color);\n}\n.outline {\n  border: var(--_outline-width) solid var(--_outline-color);\n  border-radius: inherit;\n  inset: 0;\n  pointer-events: none;\n  position: absolute;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Chips/index.ts",
    "content": "export { ChipGroup } from './ChipGroup'\nexport { useListData, Item as ChipItem, type Selection } from 'react-stately'\n"
  },
  {
    "path": "packages/actify/src/components/CircularProgress/CircularProgress.tsx",
    "content": "'use client'\r\n\r\nimport { AriaProgressBarProps, useProgressBar } from 'react-aria'\r\n\r\nimport React from 'react'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './circular-progress.module.css'\r\n\r\nconst ActiveIndicatorWidth = 25 / 3\r\n\r\ninterface CircularProgressProp extends AriaProgressBarProps, StyleProps {\r\n  size?: 'xs' | 'md' | 'lg' | 'xl' | '2xl'\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst CircularProgress = (props: CircularProgressProp) => {\r\n  const {\r\n    value = 0,\r\n    minValue = 0,\r\n    maxValue = 100,\r\n    size = 'sm',\r\n    color = 'primary',\r\n    isIndeterminate,\r\n    className\r\n  } = props\r\n\r\n  const { progressBarProps } = useProgressBar(props)\r\n\r\n  return (\r\n    <React.Fragment>\r\n      <div\r\n        {...progressBarProps}\r\n        className={clsx(\r\n          styles[`size-${size}`],\r\n          styles[`color-${color}`],\r\n          isIndeterminate && styles['animating'],\r\n          className\r\n        )}\r\n      >\r\n        {isIndeterminate ? (\r\n          <div className={styles['indeterminate']}>\r\n            <div className={styles['spinner-wrapper-left']}>\r\n              <div\r\n                className={clsx(\r\n                  styles['spinner'],\r\n                  styles[`spinner-${size}`],\r\n                  styles['spinner-left']\r\n                )}\r\n              />\r\n            </div>\r\n            <div className={styles['spinner-wrapper-right']}>\r\n              <div\r\n                className={clsx(\r\n                  styles['spinner'],\r\n                  styles[`spinner-${size}`],\r\n                  styles['spinner-right']\r\n                )}\r\n              />\r\n            </div>\r\n          </div>\r\n        ) : (\r\n          <svg viewBox=\"0 0 4800 4800\" className={styles['svg']}>\r\n            <circle\r\n              pathLength=\"100\"\r\n              style={\r\n                {\r\n                  cx: '50%',\r\n                  cy: '50%',\r\n                  fill: 'transparent',\r\n                  stroke: 'currentColor',\r\n                  strokeDasharray: 100,\r\n                  strokeWidth: `${ActiveIndicatorWidth}%`,\r\n                  r: `${50 * (1 - ActiveIndicatorWidth * 0.01)}%`\r\n                } as React.CSSProperties\r\n              }\r\n              strokeDashoffset={(1 - value / (maxValue - minValue)) * 100}\r\n            />\r\n          </svg>\r\n        )}\r\n      </div>\r\n    </React.Fragment>\r\n  )\r\n}\r\n\r\nCircularProgress.displayName = 'Actify.CircularProgress'\r\n\r\nexport { CircularProgress }\r\n"
  },
  {
    "path": "packages/actify/src/components/CircularProgress/circular-progress.module.css",
    "content": "@keyframes linear-rotate {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n\n@keyframes expand-arc {\n  0% {\n    transform: rotate(265deg);\n  }\n  50% {\n    transform: rotate(130deg);\n  }\n  100% {\n    transform: rotate(265deg);\n  }\n}\n\n@keyframes rotate-arc {\n  12.5% {\n    transform: rotate(135deg);\n  }\n  25% {\n    transform: rotate(270deg);\n  }\n  37.5% {\n    transform: rotate(405deg);\n  }\n  50% {\n    transform: rotate(540deg);\n  }\n  62.5% {\n    transform: rotate(675deg);\n  }\n  75% {\n    transform: rotate(810deg);\n  }\n  87.5% {\n    transform: rotate(945deg);\n  }\n  100% {\n    transform: rotate(1080deg);\n  }\n}\n\n.animating {\n  animation: 1568.24ms linear 0s infinite normal none running linear-rotate;\n}\n.color-primary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-primary) / var(--tw-text-opacity);\n}\n.color-secondary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-secondary) / var(--tw-text-opacity);\n}\n.color-tertiary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-tertiary) / var(--tw-text-opacity);\n}\n.color-error {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-error) / var(--tw-text-opacity);\n}\n.size-xs {\n  width: 2.25rem /* 36px */;\n  height: 2.25rem /* 36px */;\n}\n.size-sm {\n  width: 3rem /* 48px */;\n  height: 3rem /* 48px */;\n}\n.size-md {\n  width: 3.75rem;\n  height: 3.75rem;\n}\n.size-lg {\n  width: 4.5rem /* 36px */;\n  height: 4.5rem /* 36px */;\n}\n.size-xl {\n  width: 5.25rem /* 36px */;\n  height: 5.25rem /* 36px */;\n}\n.size-2xl {\n  width: 6rem /* 96px */;\n  height: 6rem /* 96px */;\n}\n\n.indeterminate {\n  position: absolute;\n  inset: 0;\n  animation: 5332ms cubic-bezier(0.4, 0, 0.2, 1) 0s infinite normal both running\n    rotate-arc;\n}\n.spinner-wrapper-left {\n  position: absolute;\n  overflow: hidden;\n  inset: 0 50% 0 0;\n}\n.spinner-wrapper-right {\n  position: absolute;\n  overflow: hidden;\n  inset: 0 0 0 50%;\n}\n.spinner {\n  position: absolute;\n  border-radius: 9999px;\n  border-style: solid;\n  border-color: currentColor currentColor transparent transparent;\n  animation:\n    1333ms cubic-bezier(0.4, 0, 0.2, 1) 0s infinite normal both running\n      expand-arc,\n    5332ms;\n}\n.spinner-left {\n  inset: 0 -100% 0 0;\n  --tw-rotate: 135deg;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.spinner-right {\n  inset: 0 0 0 -100%;\n  --tw-rotate: 100deg;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.spinner-xs {\n  border-width: 0.1875rem;\n}\n.spinner-sm {\n  border-width: 0.25rem;\n}\n.spinner-md {\n  border-width: 0.3125rem;\n}\n.spinner-lg {\n  border-width: 0.375rem;\n}\n.spinner-xl {\n  border-width: 0.4375rem;\n}\n.spinner-2xl {\n  border-width: 0.5rem;\n}\n.svg {\n  --tw-rotate: -90deg;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n"
  },
  {
    "path": "packages/actify/src/components/CircularProgress/index.ts",
    "content": "export { CircularProgress } from './CircularProgress'\n"
  },
  {
    "path": "packages/actify/src/components/Dialogs/Dialog.tsx",
    "content": "import type { AriaDialogProps } from 'react-aria'\r\nimport React from 'react'\r\nimport { useDialog } from 'react-aria'\r\n\r\ninterface DialogProps extends AriaDialogProps {\r\n  title?: React.ReactNode\r\n  children: React.ReactNode\r\n}\r\n\r\nconst Dialog = ({ title, children, ...props }: DialogProps) => {\r\n  const ref = React.useRef(null)\r\n  const { dialogProps, titleProps } = useDialog(props, ref)\r\n\r\n  return (\r\n    <div {...dialogProps} ref={ref} style={{ padding: 30 }}>\r\n      {title && (\r\n        <h3 {...titleProps} style={{ marginTop: 0 }}>\r\n          {title}\r\n        </h3>\r\n      )}\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nDialog.displayName = 'Actify.Dialog'\r\n\r\nexport { Dialog }\r\n"
  },
  {
    "path": "packages/actify/src/components/Dialogs/DialogActivator.tsx",
    "content": "import { OverlayTriggerProps, useOverlayTriggerState } from 'react-stately'\n\nimport { Button } from '../Buttons'\nimport { Modal } from '../Modal'\nimport React from 'react'\nimport { useOverlayTrigger } from 'react-aria'\n\ninterface DialogActivatorProps extends OverlayTriggerProps {\n  label: string\n  children: (close: () => void) => React.JSX.Element\n}\n\nconst DialogActivator = ({\n  label,\n  children,\n  ...props\n}: DialogActivatorProps) => {\n  const state = useOverlayTriggerState(props)\n  const { triggerProps, overlayProps } = useOverlayTrigger(\n    {\n      type: 'dialog'\n    },\n    state\n  )\n\n  return (\n    <>\n      <Button {...triggerProps}>{label}</Button>\n      {state.isOpen && (\n        <Modal state={state}>\n          {React.cloneElement(children(state.close), overlayProps)}\n        </Modal>\n      )}\n    </>\n  )\n}\n\nexport { DialogActivator }\n"
  },
  {
    "path": "packages/actify/src/components/Dialogs/animation.ts",
    "content": "import { EASING } from '../../animations'\r\n\r\nexport type DialogAnimationArgs = Parameters<Element['animate']>\r\n\r\nexport interface DialogAnimation {\r\n  /**\r\n   * Animations for the dialog itself.\r\n   */\r\n  dialog?: DialogAnimationArgs[]\r\n  /**\r\n   * Animations for the scrim backdrop.\r\n   */\r\n  scrim?: DialogAnimationArgs[]\r\n  /**\r\n   * Animations for the container of the dialog.\r\n   */\r\n  container?: DialogAnimationArgs[]\r\n  /**\r\n   * Animations for the headline section.\r\n   */\r\n  headline?: DialogAnimationArgs[]\r\n  /**\r\n   * Animations for the contents section.\r\n   */\r\n  content?: DialogAnimationArgs[]\r\n  /**\r\n   * Animations for the actions section.\r\n   */\r\n  actions?: DialogAnimationArgs[]\r\n}\r\n\r\n/**\r\n * The default dialog open animation.\r\n */\r\nexport const DIALOG_DEFAULT_OPEN_ANIMATION: DialogAnimation = {\r\n  dialog: [\r\n    [\r\n      // Dialog slide down\r\n      [{ transform: 'translateY(-50px)' }, { transform: 'translateY(0)' }],\r\n      { duration: 500, easing: EASING.EMPHASIZED }\r\n    ]\r\n  ],\r\n  scrim: [\r\n    [\r\n      // Scrim fade in\r\n      [{ opacity: 0 }, { opacity: 0.32 }],\r\n      { duration: 500, easing: 'linear' }\r\n    ]\r\n  ],\r\n  container: [\r\n    [\r\n      // Container fade in\r\n      [{ opacity: 0 }, { opacity: 1 }],\r\n      { duration: 50, easing: 'linear', pseudoElement: '::before' }\r\n    ],\r\n    [\r\n      // Container grow\r\n      // Note: current spec says to grow from 0dp->100% and shrink from\r\n      // 100%->35%. We change this to 35%->100% to simplify the animation that\r\n      // is supposed to clip content as it grows. From 0dp it's possible to see\r\n      // text/actions appear before the container has fully grown.\r\n      [{ height: '35%' }, { height: '100%' }],\r\n      { duration: 500, easing: EASING.EMPHASIZED, pseudoElement: '::before' }\r\n    ]\r\n  ],\r\n  headline: [\r\n    [\r\n      // Headline fade in\r\n      [{ opacity: 0 }, { opacity: 0, offset: 0.2 }, { opacity: 1 }],\r\n      { duration: 250, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ],\r\n  content: [\r\n    [\r\n      // Content fade in\r\n      [{ opacity: 0 }, { opacity: 0, offset: 0.2 }, { opacity: 1 }],\r\n      { duration: 250, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ],\r\n  actions: [\r\n    [\r\n      // Actions fade in\r\n      [{ opacity: 0 }, { opacity: 0, offset: 0.5 }, { opacity: 1 }],\r\n      { duration: 300, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ]\r\n}\r\n/**\r\n * The default dialog close animation.\r\n */\r\nexport const DIALOG_DEFAULT_CLOSE_ANIMATION: DialogAnimation = {\r\n  dialog: [\r\n    [\r\n      // Dialog slide up\r\n      [{ transform: 'translateY(0)' }, { transform: 'translateY(-50px)' }],\r\n      { duration: 150, easing: EASING.EMPHASIZED_ACCELERATE }\r\n    ]\r\n  ],\r\n  scrim: [\r\n    [\r\n      // Scrim fade out\r\n      [{ opacity: 0.32 }, { opacity: 0 }],\r\n      { duration: 150, easing: 'linear' }\r\n    ]\r\n  ],\r\n  container: [\r\n    [\r\n      // Container shrink\r\n      [{ height: '100%' }, { height: '35%' }],\r\n      {\r\n        duration: 150,\r\n        easing: EASING.EMPHASIZED_ACCELERATE,\r\n        pseudoElement: '::before'\r\n      }\r\n    ],\r\n    [\r\n      // Container fade out\r\n      [{ opacity: '1' }, { opacity: '0' }],\r\n      { delay: 100, duration: 50, easing: 'linear', pseudoElement: '::before' }\r\n    ]\r\n  ],\r\n  headline: [\r\n    [\r\n      // Headline fade out\r\n      [{ opacity: 1 }, { opacity: 0 }],\r\n      { duration: 100, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ],\r\n  content: [\r\n    [\r\n      // Content fade out\r\n      [{ opacity: 1 }, { opacity: 0 }],\r\n      { duration: 100, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ],\r\n  actions: [\r\n    [\r\n      // Actions fade out\r\n      [{ opacity: 1 }, { opacity: 0 }],\r\n      { duration: 100, easing: 'linear', fill: 'forwards' }\r\n    ]\r\n  ]\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Dialogs/dialog.module.css",
    "content": ".host {\n  border-start-start-radius: var(\n    --md-dialog-container-shape-start-start,\n    var(\n      --md-dialog-container-shape,\n      var(--md-sys-shape-corner-extra-large, 28px)\n    )\n  );\n  border-start-end-radius: var(\n    --md-dialog-container-shape-start-end,\n    var(\n      --md-dialog-container-shape,\n      var(--md-sys-shape-corner-extra-large, 28px)\n    )\n  );\n  border-end-end-radius: var(\n    --md-dialog-container-shape-end-end,\n    var(\n      --md-dialog-container-shape,\n      var(--md-sys-shape-corner-extra-large, 28px)\n    )\n  );\n  border-end-start-radius: var(\n    --md-dialog-container-shape-end-start,\n    var(\n      --md-dialog-container-shape,\n      var(--md-sys-shape-corner-extra-large, 28px)\n    )\n  );\n  display: contents;\n  margin: auto;\n  max-height: min(560px, 100% - 48px);\n  max-width: min(560px, 100% - 48px);\n  min-height: 140px;\n  min-width: 280px;\n  position: fixed;\n  height: fit-content;\n  width: fit-content;\n}\n.scrim {\n  background: var(--md-sys-color-scrim);\n  display: none;\n  inset: 0px;\n  opacity: 0.32;\n  pointer-events: none;\n  position: fixed;\n  z-index: 99;\n  &.open {\n    display: flex;\n  }\n}\n.dialog {\n  z-index: 99;\n  background: rgba(0, 0, 0, 0);\n  border: none;\n  border-radius: inherit;\n  flex-direction: column;\n  height: inherit;\n  margin: inherit;\n  max-height: inherit;\n  max-width: inherit;\n  min-height: inherit;\n  min-width: inherit;\n  outline: none;\n  overflow: visible;\n  padding: 0px;\n  width: inherit;\n  &[open] {\n    display: flex;\n  }\n}\n.container {\n  border-radius: inherit;\n  display: flex;\n  flex-direction: column;\n  flex-grow: 1;\n  overflow: hidden;\n  position: relative;\n  transform-origin: center top;\n  &:before {\n    background: var(\n      --md-dialog-container-color,\n      var(--md-sys-color-surface-container-high)\n    );\n    border-radius: inherit;\n    content: '';\n    inset: 0px;\n    position: absolute;\n  }\n}\n.headline {\n  align-items: center;\n  color: var(--md-dialog-headline-color, var(--md-sys-color-on-surface));\n  display: flex;\n  flex-direction: column;\n  font-family: var(\n    --md-dialog-headline-font,\n    var(\n      --md-sys-typescale-headline-small-font,\n      var(--md-ref-typeface-brand, Roboto)\n    )\n  );\n  font-size: var(\n    --md-dialog-headline-size,\n    var(--md-sys-typescale-headline-small-size, 1.5rem)\n  );\n  line-height: var(\n    --md-dialog-headline-line-height,\n    var(--md-sys-typescale-headline-small-line-height, 2rem)\n  );\n  font-weight: var(\n    --md-dialog-headline-weight,\n    var(\n      --md-sys-typescale-headline-small-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  gap: 8px;\n  display: flex;\n  position: relative;\n  align-items: center;\n  padding: 24px 24px 0;\n}\n.scroller {\n  display: flex;\n  flex: 1;\n  z-index: 1;\n  overflow-y: auto;\n  overflow-x: hidden;\n  flex-direction: column;\n}\n.content {\n  color: var(\n    --md-dialog-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  font-family: var(\n    --md-dialog-supporting-text-font,\n    var(\n      --md-sys-typescale-body-medium-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  font-size: var(\n    --md-dialog-supporting-text-size,\n    var(--md-sys-typescale-body-medium-size, 0.875rem)\n  );\n  line-height: var(\n    --md-dialog-supporting-text-line-height,\n    var(--md-sys-typescale-body-medium-line-height, 1.25rem)\n  );\n  font-weight: var(\n    --md-dialog-supporting-text-weight,\n    var(\n      --md-sys-typescale-body-medium-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  height: min-content;\n  padding: 24px 24px 8px;\n}\n.top.anchor {\n  top: 0;\n}\n.anchor {\n  position: absolute;\n}\n.bottom.anchor {\n  bottom: 0;\n}\n.icon {\n  display: flex;\n}\n.actions {\n  display: flex;\n  gap: 8px;\n  justify-content: flex-end;\n  padding: 16px 24px 24px;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Dialogs/index.ts",
    "content": "export { Dialog } from './Dialog'\nexport { DialogActivator } from './DialogActivator'\nexport { useOverlayTriggerState as useDialogState } from 'react-stately'\n"
  },
  {
    "path": "packages/actify/src/components/Divider/Divider.tsx",
    "content": "import { SeparatorProps, useSeparator } from 'react-aria'\r\n\r\nimport React from 'react'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './divider.module.css'\r\n\r\ninterface DividerProps extends SeparatorProps, StyleProps {\r\n  inset?: boolean\r\n  insetStart?: boolean\r\n  insetEnd?: boolean\r\n}\r\nconst Divider = (props: DividerProps) => {\r\n  const {\r\n    className,\r\n    inset,\r\n    insetStart,\r\n    insetEnd,\r\n    orientation = 'horizontal'\r\n  } = props\r\n\r\n  const { separatorProps } = useSeparator(props)\r\n\r\n  return (\r\n    <div\r\n      {...separatorProps}\r\n      className={clsx(\r\n        styles['divider'],\r\n        inset && styles['inset'],\r\n        insetStart && styles['inset-start'],\r\n        insetEnd && styles['inset-end'],\r\n        styles[orientation],\r\n        className\r\n      )}\r\n    />\r\n  )\r\n}\r\n\r\nexport { Divider }\r\n"
  },
  {
    "path": "packages/actify/src/components/Divider/divider.module.css",
    "content": ".divider {\n  color: var(--md-divider-color, var(--md-sys-color-outline-variant));\n  display: flex;\n  &:before {\n    background: currentcolor;\n    content: '';\n    height: 100%;\n    width: 100%;\n  }\n}\n.divider.inset,\n.divider.inset-start {\n  padding-inline-start: 16px;\n}\n.divider.inset,\n.divider.inset-end {\n  padding-inline-end: 16px;\n}\n.divider.horizontal {\n  width: 100%;\n  height: var(--md-divider-thickness, 1px);\n}\n.divider.vertical {\n  width: var(--md-divider-thickness, 1px);\n  height: inherit;\n  margin: 0 4px;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Divider/index.ts",
    "content": "export { Divider } from './Divider'\n"
  },
  {
    "path": "packages/actify/src/components/Elevation/Elevation.tsx",
    "content": "'use client'\r\n\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport elevation from './elevation.module.css'\r\n\r\ninterface ElevationProps\r\n  extends Omit<React.ComponentProps<'span'>, 'children'> {\r\n  disabled?: boolean\r\n}\r\n\r\nconst Elevation = ({ disabled = false, ...rest }: ElevationProps) => {\r\n  const classes = clsx(elevation['shadow'], disabled && elevation['disabled'])\r\n  return <span {...rest} aria-hidden=\"true\" className={classes} />\r\n}\r\n\r\nElevation.displayName = 'Actify.Elevation'\r\n\r\nexport { Elevation }\r\n"
  },
  {
    "path": "packages/actify/src/components/Elevation/elevation.module.css",
    "content": ".shadow {\r\n  border-radius: inherit;\r\n  inset: 0px;\r\n  position: absolute;\r\n  transition-duration: inherit;\r\n  transition-property: inherit;\r\n  transition-timing-function: inherit;\r\n  --md-elevation-level: var(--_container-elevation);\r\n  --md-elevation-shadow-color: var(--_container-shadow-color);\r\n  transition-duration: 280ms;\r\n  display: flex;\r\n  pointer-events: none;\r\n  &:before,\r\n  &:after {\r\n    border-radius: inherit;\r\n    inset: 0px;\r\n    position: absolute;\r\n    transition-duration: inherit;\r\n    transition-property: inherit;\r\n    transition-timing-function: inherit;\r\n    content: '';\r\n    transition-property: box-shadow, opacity;\r\n    --_level: var(--md-elevation-level, 0);\r\n    --_shadow-color: var(\r\n      --md-elevation-shadow-color,\r\n      var(--md-sys-color-shadow, #000)\r\n    );\r\n  }\r\n  &:before {\r\n    box-shadow: 0px\r\n      calc(\r\n        1px *\r\n          (\r\n            clamp(0, var(--_level), 1) + clamp(0, var(--_level) - 3, 1) + 2 *\r\n              clamp(0, var(--_level) - 4, 1)\r\n          )\r\n      )\r\n      calc(\r\n        1px *\r\n          (\r\n            2 * clamp(0, var(--_level), 1) + clamp(0, var(--_level) - 2, 1) +\r\n              clamp(0, var(--_level) - 4, 1)\r\n          )\r\n      )\r\n      0px var(--_shadow-color);\r\n    opacity: 0.3;\r\n  }\r\n  &:after {\r\n    box-shadow: 0px\r\n      calc(\r\n        1px *\r\n          (\r\n            clamp(0, var(--_level), 1) + clamp(0, var(--_level) - 1, 1) + 2 *\r\n              clamp(0, var(--_level) - 2, 3)\r\n          )\r\n      )\r\n      calc(\r\n        1px *\r\n          (3 * clamp(0, var(--_level), 2) + 2 * clamp(0, var(--_level) - 2, 3))\r\n      )\r\n      calc(\r\n        1px * (clamp(0, var(--_level), 4) + 2 * clamp(0, var(--_level) - 4, 1))\r\n      )\r\n      var(--_shadow-color);\r\n    opacity: 0.15;\r\n  }\r\n}\r\n\r\n.disabled .shadow {\r\n  transition: none 0s ease 0s;\r\n  --md-elevation-level: var(--_disabled-container-elevation);\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Elevation/index.ts",
    "content": "export { Elevation } from './Elevation'\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/Field.tsx",
    "content": "import { SupportingText, SupportingTextProps } from './SupportingText'\r\nimport { cubicBezier, motion } from 'motion/react'\r\n\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './styles/field.module.css'\r\n\r\nexport interface FieldProps extends SupportingTextProps {\r\n  label?: React.ReactNode\r\n\r\n  focused?: boolean\r\n  populated?: boolean\r\n  required?: boolean\r\n  disabled?: boolean\r\n  resizable?: boolean\r\n\r\n  className?: string | undefined\r\n  children?: React.ReactNode\r\n  leadingIcon?: React.ReactNode\r\n  trailingIcon?: React.ReactNode\r\n\r\n  renderBackground?: () => React.JSX.Element\r\n  renderIndicator?: (focused: boolean) => React.JSX.Element\r\n  renderOutline?: (floatingLabel: React.JSX.Element | '') => React.JSX.Element\r\n}\r\nconst Field = (props: FieldProps) => {\r\n  const {\r\n    disabled,\r\n    className,\r\n    label = '',\r\n    max,\r\n    count,\r\n    focused = false,\r\n    populated = false,\r\n    required = false,\r\n    children,\r\n    leadingIcon,\r\n    trailingIcon,\r\n    error,\r\n    errorText,\r\n    supportingText,\r\n    renderOutline,\r\n    renderIndicator,\r\n    renderBackground,\r\n    ...rest\r\n  } = props\r\n\r\n  const layoutId = React.useId()\r\n\r\n  const renderLabel = (isFloating: boolean) => {\r\n    if (!label) {\r\n      return ''\r\n    }\r\n\r\n    let visible: boolean\r\n    if (isFloating) {\r\n      visible = focused || populated\r\n    } else {\r\n      visible = !focused && !populated\r\n    }\r\n\r\n    // Add '*' if a label is present and the field is required\r\n    const labelText = `${label}${required ? '*' : ''}`\r\n\r\n    return visible ? (\r\n      <motion.span\r\n        layoutId={layoutId}\r\n        transition={{\r\n          duration: 0.15,\r\n          easings: [cubicBezier(0.2, 0, 0, 1)]\r\n        }}\r\n        aria-hidden={!visible}\r\n        // @ts-ignore\r\n        className={clsx(\r\n          styles['label'],\r\n          !visible && styles['visible'],\r\n          isFloating ? styles['floating'] : styles['resting']\r\n        )}\r\n      >\r\n        {labelText}\r\n      </motion.span>\r\n    ) : (\r\n      ''\r\n    )\r\n  }\r\n\r\n  const floatingLabel = renderLabel(true)\r\n  const restingLabel = renderLabel(false)\r\n\r\n  const outline = renderOutline?.(floatingLabel)\r\n\r\n  const classes = clsx(\r\n    styles['field'],\r\n    error && styles['error'],\r\n    focused && styles['focused'],\r\n    disabled && styles['disabled'],\r\n    populated && styles['populated'],\r\n    !label && styles['no-label'],\r\n    !!leadingIcon && styles['with-start'],\r\n    !!trailingIcon && styles['with-end']\r\n  )\r\n\r\n  return (\r\n    <div className={classes} {...rest}>\r\n      <div className={clsx(styles['container-overflow'], className)}>\r\n        {renderBackground?.()}\r\n        {renderIndicator?.(focused)}\r\n        {outline}\r\n        <div className={styles['container']}>\r\n          <div className={styles['start']}>{leadingIcon}</div>\r\n          <div className={styles['middle']}>\r\n            <span className={styles['label-wrapper']}>\r\n              {restingLabel}\r\n              {outline ? '' : floatingLabel}\r\n            </span>\r\n            <div className={styles['content']}>{children}</div>\r\n          </div>\r\n          <div className={styles['end']}>{trailingIcon}</div>\r\n        </div>\r\n      </div>\r\n      <SupportingText\r\n        max={max}\r\n        count={count}\r\n        error={error}\r\n        errorText={errorText}\r\n        supportingText={supportingText}\r\n      />\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { Field }\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/FilledField.tsx",
    "content": "import { Field, FieldProps } from './Field'\r\n\r\nimport React from 'react'\r\nimport styles from './styles/field.module.css'\r\n\r\ninterface FilledFieldProps extends FieldProps, React.ComponentProps<'div'> {}\r\n\r\nconst renderBackground = () => {\r\n  return (\r\n    <React.Fragment>\r\n      <div className={styles['background']} />\r\n      <div className={styles['state-layer']} />\r\n    </React.Fragment>\r\n  )\r\n}\r\nconst renderIndicator = () => <div className={styles['active-indicator']} />\r\n\r\nconst FilledField = (props: FilledFieldProps) => {\r\n  const { children, ...rest } = props\r\n\r\n  return (\r\n    <Field\r\n      {...rest}\r\n      className={styles['filled']}\r\n      renderBackground={renderBackground}\r\n      renderIndicator={renderIndicator}\r\n    >\r\n      <div className={styles['input-wrapper']}>{children}</div>\r\n    </Field>\r\n  )\r\n}\r\n\r\nexport { FilledField }\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/OutlinedField.tsx",
    "content": "import { Field, FieldProps } from './Field'\r\n\r\nimport React from 'react'\r\nimport styles from './styles/field.module.css'\r\n\r\nexport interface OutlinedFieldProps\r\n  extends FieldProps,\r\n    React.ComponentProps<'div'> {}\r\n\r\nconst renderOutline = (floatingLabel: React.JSX.Element | '') => (\r\n  <div className={styles['outline']}>\r\n    <div className={styles['outline-start']} />\r\n    <div className={styles['outline-notch']}>\r\n      <div className={styles['outline-panel-inactive']} />\r\n      <div className={styles['outline-panel-active']} />\r\n      <div className={styles['outline-label']}>{floatingLabel}</div>\r\n    </div>\r\n    <div className={styles['outline-end']} />\r\n  </div>\r\n)\r\n\r\nconst OutlinedField = (props: OutlinedFieldProps) => {\r\n  const { children, ...rest } = props\r\n\r\n  return (\r\n    <Field\r\n      {...rest}\r\n      className={styles['outlined']}\r\n      renderOutline={renderOutline}\r\n    >\r\n      <div className={styles['input-wrapper']}>{children}</div>\r\n    </Field>\r\n  )\r\n}\r\n\r\nexport { OutlinedField }\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/SupportingText.tsx",
    "content": "import React from 'react'\r\nimport supporting from './styles/supporting.module.css'\r\n\r\nexport interface SupportingTextProps {\r\n  max?: number\r\n  count?: number\r\n  error?: boolean\r\n  errorText?: string\r\n  supportingText?: string\r\n  refreshErrorAlert?: boolean\r\n}\r\nconst SupportingText = ({\r\n  max = -1,\r\n  count = -1,\r\n  error,\r\n  errorText,\r\n  supportingText,\r\n  refreshErrorAlert\r\n}: SupportingTextProps) => {\r\n  const shouldErrorAnnounce = error && errorText && !refreshErrorAlert\r\n  const role = shouldErrorAnnounce ? 'alert' : ''\r\n\r\n  const counterText = () => {\r\n    if (count < 0 || max <= 0) {\r\n      return ''\r\n    }\r\n    return `${count} / ${max}`\r\n  }\r\n\r\n  const supportingOrErrorText = () => {\r\n    return error && errorText ? errorText : supportingText\r\n  }\r\n\r\n  return (\r\n    <React.Fragment>\r\n      <div role={role} className={supporting['text']}>\r\n        <span>{supportingOrErrorText()}</span>\r\n        <span className={supporting['counter']}>{counterText()}</span>\r\n      </div>\r\n      <div hidden id=\"description\">\r\n        {`${supportingOrErrorText()} ${counterText()}`}\r\n      </div>\r\n    </React.Fragment>\r\n  )\r\n}\r\n\r\nexport { SupportingText }\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/index.ts",
    "content": "export { FilledField } from './FilledField'\r\nexport { OutlinedField } from './OutlinedField'\r\n"
  },
  {
    "path": "packages/actify/src/components/Field/styles/field.module.css",
    "content": ".filled {\n  --_active-indicator-color: var(\n    --md-filled-field-active-indicator-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_active-indicator-height: var(\n    --md-filled-field-active-indicator-height,\n    1px\n  );\n  --_bottom-space: var(--md-filled-field-bottom-space, 16px);\n  --_container-color: var(\n    --md-filled-field-container-color,\n    var(--md-sys-color-surface-container-highest, #e6e0e9)\n  );\n  --_container-shape-start-start: var(\n    --md-filled-field-container-shape-start-start,\n    var(--md-filled-field-container-shape, 4px)\n  );\n  --_container-shape-start-end: var(\n    --md-filled-field-container-shape-start-end,\n    var(--md-filled-field-container-shape, 4px)\n  );\n  --_container-shape-end-end: var(\n    --md-filled-field-container-shape-end-end,\n    var(--md-filled-field-container-shape, 0px)\n  );\n  --_container-shape-end-start: var(\n    --md-filled-field-container-shape-end-start,\n    var(--md-filled-field-container-shape, 0px)\n  );\n  --_content-color: var(\n    --md-filled-field-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_content-font: var(\n    --md-filled-field-content-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_content-line-height: var(\n    --md-filled-field-content-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_content-size: var(\n    --md-filled-field-content-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_content-weight: var(\n    --md-filled-field-content-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_disabled-active-indicator-color: var(\n    --md-filled-field-disabled-active-indicator-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-active-indicator-height: var(\n    --md-filled-field-disabled-active-indicator-height,\n    1px\n  );\n  --_disabled-active-indicator-opacity: var(\n    --md-filled-field-disabled-active-indicator-opacity,\n    0.38\n  );\n  --_disabled-container-color: var(\n    --md-filled-field-disabled-container-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-container-opacity: var(\n    --md-filled-field-disabled-container-opacity,\n    0.04\n  );\n  --_disabled-content-color: var(\n    --md-filled-field-disabled-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-content-opacity: var(\n    --md-filled-field-disabled-content-opacity,\n    0.38\n  );\n  --_disabled-label-text-color: var(\n    --md-filled-field-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-filled-field-disabled-label-text-opacity,\n    0.38\n  );\n  --_disabled-leading-content-color: var(\n    --md-filled-field-disabled-leading-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-leading-content-opacity: var(\n    --md-filled-field-disabled-leading-content-opacity,\n    0.38\n  );\n  --_disabled-supporting-text-color: var(\n    --md-filled-field-disabled-supporting-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-supporting-text-opacity: var(\n    --md-filled-field-disabled-supporting-text-opacity,\n    0.38\n  );\n  --_disabled-trailing-content-color: var(\n    --md-filled-field-disabled-trailing-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-trailing-content-opacity: var(\n    --md-filled-field-disabled-trailing-content-opacity,\n    0.38\n  );\n  --_error-active-indicator-color: var(\n    --md-filled-field-error-active-indicator-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-content-color: var(\n    --md-filled-field-error-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-focus-active-indicator-color: var(\n    --md-filled-field-error-focus-active-indicator-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-content-color: var(\n    --md-filled-field-error-focus-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-focus-label-text-color: var(\n    --md-filled-field-error-focus-label-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-leading-content-color: var(\n    --md-filled-field-error-focus-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-focus-supporting-text-color: var(\n    --md-filled-field-error-focus-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-trailing-content-color: var(\n    --md-filled-field-error-focus-trailing-content-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-hover-active-indicator-color: var(\n    --md-filled-field-error-hover-active-indicator-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-hover-content-color: var(\n    --md-filled-field-error-hover-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-hover-label-text-color: var(\n    --md-filled-field-error-hover-label-text-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-hover-leading-content-color: var(\n    --md-filled-field-error-hover-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-hover-state-layer-color: var(\n    --md-filled-field-error-hover-state-layer-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-hover-state-layer-opacity: var(\n    --md-filled-field-error-hover-state-layer-opacity,\n    0.08\n  );\n  --_error-hover-supporting-text-color: var(\n    --md-filled-field-error-hover-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-hover-trailing-content-color: var(\n    --md-filled-field-error-hover-trailing-content-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-label-text-color: var(\n    --md-filled-field-error-label-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-leading-content-color: var(\n    --md-filled-field-error-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-supporting-text-color: var(\n    --md-filled-field-error-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-trailing-content-color: var(\n    --md-filled-field-error-trailing-content-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_focus-active-indicator-color: var(\n    --md-filled-field-focus-active-indicator-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_focus-active-indicator-height: var(\n    --md-filled-field-focus-active-indicator-height,\n    3px\n  );\n  --_focus-content-color: var(\n    --md-filled-field-focus-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_focus-label-text-color: var(\n    --md-filled-field-focus-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_focus-leading-content-color: var(\n    --md-filled-field-focus-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_focus-supporting-text-color: var(\n    --md-filled-field-focus-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_focus-trailing-content-color: var(\n    --md-filled-field-focus-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-active-indicator-color: var(\n    --md-filled-field-hover-active-indicator-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-active-indicator-height: var(\n    --md-filled-field-hover-active-indicator-height,\n    1px\n  );\n  --_hover-content-color: var(\n    --md-filled-field-hover-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-label-text-color: var(\n    --md-filled-field-hover-label-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-leading-content-color: var(\n    --md-filled-field-hover-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-state-layer-color: var(\n    --md-filled-field-hover-state-layer-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-filled-field-hover-state-layer-opacity,\n    0.08\n  );\n  --_hover-supporting-text-color: var(\n    --md-filled-field-hover-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-trailing-content-color: var(\n    --md-filled-field-hover-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_label-text-color: var(\n    --md-filled-field-label-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_label-text-font: var(\n    --md-filled-field-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-filled-field-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_label-text-populated-line-height: var(\n    --md-filled-field-label-text-populated-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_label-text-populated-size: var(\n    --md-filled-field-label-text-populated-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_label-text-size: var(\n    --md-filled-field-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_label-text-weight: var(\n    --md-filled-field-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_leading-content-color: var(\n    --md-filled-field-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_leading-space: var(--md-filled-field-leading-space, 16px);\n  --_supporting-text-color: var(\n    --md-filled-field-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_supporting-text-font: var(\n    --md-filled-field-supporting-text-font,\n    var(\n      --md-sys-typescale-body-small-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_supporting-text-leading-space: var(\n    --md-filled-field-supporting-text-leading-space,\n    16px\n  );\n  --_supporting-text-line-height: var(\n    --md-filled-field-supporting-text-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_supporting-text-size: var(\n    --md-filled-field-supporting-text-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_supporting-text-top-space: var(\n    --md-filled-field-supporting-text-top-space,\n    4px\n  );\n  --_supporting-text-trailing-space: var(\n    --md-filled-field-supporting-text-trailing-space,\n    16px\n  );\n  --_supporting-text-weight: var(\n    --md-filled-field-supporting-text-weight,\n    var(\n      --md-sys-typescale-body-small-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_top-space: var(--md-filled-field-top-space, 16px);\n  --_trailing-content-color: var(\n    --md-filled-field-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_trailing-space: var(--md-filled-field-trailing-space, 16px);\n  --_with-label-bottom-space: var(\n    --md-filled-field-with-label-bottom-space,\n    8px\n  );\n  --_with-label-top-space: var(--md-filled-field-with-label-top-space, 8px);\n}\n\n.outlined {\n  --_bottom-space: var(--md-outlined-field-bottom-space, 16px);\n  --_container-shape: var(--md-outlined-field-container-shape, 4px);\n  --_content-color: var(\n    --md-outlined-field-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_content-font: var(\n    --md-outlined-field-content-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_content-line-height: var(\n    --md-outlined-field-content-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_content-size: var(\n    --md-outlined-field-content-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_content-weight: var(\n    --md-outlined-field-content-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_disabled-content-color: var(\n    --md-outlined-field-disabled-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-content-opacity: var(\n    --md-outlined-field-disabled-content-opacity,\n    0.38\n  );\n  --_disabled-label-text-color: var(\n    --md-outlined-field-disabled-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-label-text-opacity: var(\n    --md-outlined-field-disabled-label-text-opacity,\n    0.38\n  );\n  --_disabled-leading-content-color: var(\n    --md-outlined-field-disabled-leading-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-leading-content-opacity: var(\n    --md-outlined-field-disabled-leading-content-opacity,\n    0.38\n  );\n  --_disabled-outline-color: var(\n    --md-outlined-field-disabled-outline-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-outline-opacity: var(\n    --md-outlined-field-disabled-outline-opacity,\n    0.12\n  );\n  --_disabled-outline-width: var(\n    --md-outlined-field-disabled-outline-width,\n    1px\n  );\n  --_disabled-supporting-text-color: var(\n    --md-outlined-field-disabled-supporting-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-supporting-text-opacity: var(\n    --md-outlined-field-disabled-supporting-text-opacity,\n    0.38\n  );\n  --_disabled-trailing-content-color: var(\n    --md-outlined-field-disabled-trailing-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-trailing-content-opacity: var(\n    --md-outlined-field-disabled-trailing-content-opacity,\n    0.38\n  );\n  --_error-content-color: var(\n    --md-outlined-field-error-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-focus-content-color: var(\n    --md-outlined-field-error-focus-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-focus-label-text-color: var(\n    --md-outlined-field-error-focus-label-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-leading-content-color: var(\n    --md-outlined-field-error-focus-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-focus-outline-color: var(\n    --md-outlined-field-error-focus-outline-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-supporting-text-color: var(\n    --md-outlined-field-error-focus-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-focus-trailing-content-color: var(\n    --md-outlined-field-error-focus-trailing-content-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-hover-content-color: var(\n    --md-outlined-field-error-hover-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_error-hover-label-text-color: var(\n    --md-outlined-field-error-hover-label-text-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-hover-leading-content-color: var(\n    --md-outlined-field-error-hover-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-hover-outline-color: var(\n    --md-outlined-field-error-hover-outline-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-hover-supporting-text-color: var(\n    --md-outlined-field-error-hover-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-hover-trailing-content-color: var(\n    --md-outlined-field-error-hover-trailing-content-color,\n    var(--md-sys-color-on-error-container, #410e0b)\n  );\n  --_error-label-text-color: var(\n    --md-outlined-field-error-label-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-leading-content-color: var(\n    --md-outlined-field-error-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_error-outline-color: var(\n    --md-outlined-field-error-outline-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-supporting-text-color: var(\n    --md-outlined-field-error-supporting-text-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_error-trailing-content-color: var(\n    --md-outlined-field-error-trailing-content-color,\n    var(--md-sys-color-error, #b3261e)\n  );\n  --_focus-content-color: var(\n    --md-outlined-field-focus-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_focus-label-text-color: var(\n    --md-outlined-field-focus-label-text-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_focus-leading-content-color: var(\n    --md-outlined-field-focus-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_focus-outline-color: var(\n    --md-outlined-field-focus-outline-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_focus-outline-width: var(--md-outlined-field-focus-outline-width, 3px);\n  --_focus-supporting-text-color: var(\n    --md-outlined-field-focus-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_focus-trailing-content-color: var(\n    --md-outlined-field-focus-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-content-color: var(\n    --md-outlined-field-hover-content-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-label-text-color: var(\n    --md-outlined-field-hover-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-leading-content-color: var(\n    --md-outlined-field-hover-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-outline-color: var(\n    --md-outlined-field-hover-outline-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_hover-outline-width: var(--md-outlined-field-hover-outline-width, 1px);\n  --_hover-supporting-text-color: var(\n    --md-outlined-field-hover-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_hover-trailing-content-color: var(\n    --md-outlined-field-hover-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_label-text-color: var(\n    --md-outlined-field-label-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_label-text-font: var(\n    --md-outlined-field-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-outlined-field-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_label-text-padding-bottom: var(\n    --md-outlined-field-label-text-padding-bottom,\n    8px\n  );\n  --_label-text-populated-line-height: var(\n    --md-outlined-field-label-text-populated-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_label-text-populated-size: var(\n    --md-outlined-field-label-text-populated-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_label-text-size: var(\n    --md-outlined-field-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_label-text-weight: var(\n    --md-outlined-field-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_leading-content-color: var(\n    --md-outlined-field-leading-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_leading-space: var(--md-outlined-field-leading-space, 16px);\n  --_outline-color: var(\n    --md-outlined-field-outline-color,\n    var(--md-sys-color-outline, #79747e)\n  );\n  --_outline-label-padding: var(--md-outlined-field-outline-label-padding, 4px);\n  --_outline-width: var(--md-outlined-field-outline-width, 1px);\n  --_supporting-text-color: var(\n    --md-outlined-field-supporting-text-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_supporting-text-font: var(\n    --md-outlined-field-supporting-text-font,\n    var(\n      --md-sys-typescale-body-small-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_supporting-text-leading-space: var(\n    --md-outlined-field-supporting-text-leading-space,\n    16px\n  );\n  --_supporting-text-line-height: var(\n    --md-outlined-field-supporting-text-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_supporting-text-size: var(\n    --md-outlined-field-supporting-text-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_supporting-text-top-space: var(\n    --md-outlined-field-supporting-text-top-space,\n    4px\n  );\n  --_supporting-text-trailing-space: var(\n    --md-outlined-field-supporting-text-trailing-space,\n    16px\n  );\n  --_supporting-text-weight: var(\n    --md-outlined-field-supporting-text-weight,\n    var(\n      --md-sys-typescale-body-small-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_top-space: var(--md-outlined-field-top-space, 16px);\n  --_trailing-content-color: var(\n    --md-outlined-field-trailing-content-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_trailing-space: var(--md-outlined-field-trailing-space, 16px);\n  --_container-shape-start-start: var(\n    --md-outlined-field-container-shape-start-start,\n    var(--_container-shape)\n  );\n  --_container-shape-start-end: var(\n    --md-outlined-field-container-shape-start-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-end: var(\n    --md-outlined-field-container-shape-end-end,\n    var(--_container-shape)\n  );\n  --_container-shape-end-start: var(\n    --md-outlined-field-container-shape-end-start,\n    var(--_container-shape)\n  );\n}\n\n.field {\n  --_with-leading-content-leading-space: var(\n    --md-filled-field-with-leading-content-leading-space,\n    12px\n  );\n  --_content-space: var(--md-filled-field-content-space, 16px);\n  --_with-trailing-content-trailing-space: var(\n    --md-filled-field-with-trailing-content-trailing-space,\n    12px\n  );\n  width: 100%;\n  cursor: text;\n  display: flex;\n  resize: inherit;\n  flex: 1;\n  outline: none;\n  flex-direction: column;\n  writing-mode: horizontal-tb;\n  max-width: 100%;\n  &:hover .outline {\n    border-color: var(--_hover-outline-color);\n    color: var(--_hover-outline-color);\n  }\n}\n\n.container-overflow {\n  resize: inherit;\n  border-start-start-radius: var(--_container-shape-start-start);\n  border-start-end-radius: var(--_container-shape-start-end);\n  border-end-end-radius: var(--_container-shape-end-end);\n  border-end-start-radius: var(--_container-shape-end-start);\n  display: flex;\n  height: 100%;\n  position: relative;\n}\n\n.container {\n  align-items: center;\n  border-radius: inherit;\n  display: flex;\n  flex: 1;\n  max-height: 100%;\n  min-height: 100%;\n  min-width: min-content;\n  position: relative;\n}\n\n.start {\n  height: 100%;\n  display: flex;\n  position: relative;\n  align-items: center;\n  box-sizing: border-box;\n  justify-content: center;\n  color: var(--_leading-content-color);\n}\n.end {\n  height: 100%;\n  display: flex;\n  position: relative;\n  align-items: center;\n  box-sizing: border-box;\n  justify-content: center;\n  color: var(--_trailing-content-color);\n}\n\n.with-start .start {\n  margin-inline: var(--_with-leading-content-leading-space)\n    var(--_content-space);\n}\n.with-end .end {\n  margin-inline: var(--_content-space)\n    var(--_with-trailing-content-trailing-space);\n}\n\n.middle {\n  display: flex;\n  box-sizing: border-box;\n  height: 100%;\n  position: relative;\n  align-items: stretch;\n  align-self: baseline;\n  flex: 1;\n}\n\n.focused .end {\n  color: var(--_focus-trailing-content-color);\n}\n\n.content {\n  color: var(--_content-color);\n  display: flex;\n  flex: 1 1 0%;\n  opacity: 0;\n  transition: opacity 83ms cubic-bezier(0.2, 0, 0, 1) 0s;\n}\n.focused .content,\n.populated .content {\n  opacity: 1;\n  transition-delay: 67ms;\n}\n\n.input {\n  caret-color: var(--_caret-color);\n  overflow-x: hidden;\n  text-align: inherit;\n}\n\n.label {\n  box-sizing: border-box;\n  color: var(--_label-text-color);\n  overflow: hidden;\n  max-width: 100%;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  z-index: 1;\n  font-family: var(--_label-text-font);\n  font-size: var(--_label-text-size);\n  line-height: var(--_label-text-line-height);\n  font-weight: var(--_label-text-weight);\n  width: min-content;\n  &.resting {\n    position: absolute;\n    top: var(--_top-space);\n  }\n  &.floating {\n    font-size: var(--_label-text-populated-size);\n    line-height: var(--_label-text-populated-line-height);\n    transform-origin: top left;\n  }\n  &.visible {\n    opacity: 0;\n  }\n}\n.error .label {\n  color: var(--_error-label-text-color);\n}\n\n.input-wrapper {\n  all: unset;\n  color: currentColor;\n  font-family: var(--_content-font);\n  font-size: var(--_content-size);\n  line-height: var(--_content-line-height);\n  font-weight: var(--_content-weight);\n  width: 100%;\n  overflow-wrap: revert;\n  white-space: revert;\n  display: flex;\n  padding-top: var(--_top-space);\n  padding-bottom: var(--_bottom-space);\n  & > input,\n  & > textarea {\n    all: inherit;\n    padding: 0;\n  }\n}\n.field:not(.no-label) .filled .input-wrapper {\n  padding-bottom: var(--_with-label-bottom-space);\n  padding-top: calc(\n    var(--_with-label-top-space) + var(--_label-text-populated-line-height)\n  );\n}\n.field:not(.with-start) .filled .input-wrapper {\n  padding-inline-start: var(--_leading-space);\n}\n.field:not(.with-end) .filled .input-wrapper {\n  padding-inline-end: var(--_trailing-space);\n}\n\n.field:not(.no-label) .outlined .input-wrapper {\n  padding-top: var(--_top-space);\n  padding-bottom: var(--_bottom-space);\n}\n\n.field:not(.with-start) .outlined .input-wrapper {\n  padding-inline-start: max(\n    var(--_leading-space),\n    max(var(--_container-shape-start-start), var(--_container-shape-end-start)) +\n      var(--_outline-label-padding)\n  );\n}\n.field:not(.with-end) .outlined .input-wrapper {\n  padding-inline-end: max(\n    var(--_trailing-space),\n    max(var(--_container-shape-start-end), var(--_container-shape-end-end))\n  );\n}\n\n.background {\n  background-color: var(--_container-color);\n  border-radius: inherit;\n  inset: 0;\n  position: absolute;\n}\n\n.state-layer {\n  border-radius: inherit;\n  inset: 0;\n  pointer-events: none;\n  position: absolute;\n  visibility: hidden;\n}\n:hover .state-layer {\n  background: var(--_hover-state-layer-color);\n  opacity: var(--_hover-state-layer-opacity);\n}\n.field:not(.disabled):hover .state-layer {\n  visibility: visible;\n}\n\n.active-indicator {\n  inset: auto 0 0 0;\n  pointer-events: none;\n  position: absolute;\n  width: 100%;\n  z-index: 1;\n  &:before {\n    border-bottom: var(--_active-indicator-height) solid\n      var(--_active-indicator-color);\n    inset: auto 0 0 0;\n    content: '';\n    position: absolute;\n    width: 100%;\n    border-bottom-color: var(--_hover-active-indicator-color);\n    border-bottom-width: var(--_hover-active-indicator-height);\n  }\n  &:after {\n    border-bottom: var(--_active-indicator-height) solid\n      var(--_active-indicator-color);\n    inset: auto 0 0 0;\n    content: '';\n    position: absolute;\n    width: 100%;\n    opacity: 0;\n    transition: opacity 150ms cubic-bezier(0.2, 0, 0, 1);\n    border-bottom-color: var(--_focus-active-indicator-color);\n    border-bottom-width: var(--_focus-active-indicator-height);\n  }\n}\n.focused .active-indicator:after {\n  opacity: 1;\n}\n\n.label-wrapper {\n  inset: 0;\n  pointer-events: none;\n  position: absolute;\n  text-align: initial;\n}\n\n.field:not(.with-start) .filled .label-wrapper {\n  margin-inline-start: var(--_leading-space);\n}\n.field:not(.with-end) .filled .label-wrapper {\n  margin-inline-end: var(--_trailing-space);\n}\n\n.field:not(.with-start) .outlined .label-wrapper {\n  margin-inline-start: max(\n    var(--_leading-space),\n    max(var(--_container-shape-start-start), var(--_container-shape-end-start)) +\n      var(--_outline-label-padding)\n  );\n}\n.field:not(.with-end) .outlined .label-wrapper {\n  margin-inline-end: max(\n    var(--_trailing-space),\n    max(var(--_container-shape-start-end), var(--_container-shape-end-end))\n  );\n}\n\n.outline {\n  border-color: var(--_outline-color);\n  border-radius: inherit;\n  display: flex;\n  pointer-events: none;\n  height: 100%;\n  position: absolute;\n  width: 100%;\n  z-index: 1;\n}\n\n.field.focused .outline {\n  color: var(--_focus-outline-color);\n  border-color: var(--_focus-outline-color);\n}\n.error .outline {\n  border-color: var(--_error-outline-color);\n  color: var(--_error-outline-color);\n}\n\n.outline-start {\n  border: inherit;\n  border-radius: inherit;\n  box-sizing: border-box;\n  position: relative;\n  padding-inline-start: max(\n    var(--_leading-space),\n    max(var(--_container-shape-start-start), var(--_container-shape-end-start)) +\n      var(--_outline-label-padding)\n  );\n  &:before,\n  &:after {\n    border: inherit;\n    content: '';\n    inset: 0;\n    position: absolute;\n  }\n  &:before {\n    border-width: var(--_outline-width);\n    border-inline-start-style: solid;\n    border-inline-end-style: none;\n    border-start-start-radius: inherit;\n    border-start-end-radius: 0;\n    border-end-start-radius: inherit;\n    border-end-end-radius: 0;\n    margin-inline-end: var(--_outline-label-padding);\n    border-bottom-style: solid;\n    border-top-style: solid;\n  }\n  &:after {\n    border-width: var(--_focus-outline-width);\n    border-inline-start-style: solid;\n    border-inline-end-style: none;\n    border-start-start-radius: inherit;\n    border-start-end-radius: 0;\n    border-end-start-radius: inherit;\n    border-end-end-radius: 0;\n    margin-inline-end: var(--_outline-label-padding);\n    opacity: 0;\n    transition: opacity 150ms cubic-bezier(0.2, 0, 0, 1);\n    border-bottom-style: solid;\n    border-top-style: solid;\n  }\n}\n\n.outline-notch {\n  align-items: flex-start;\n  border: inherit;\n  display: flex;\n  margin-inline-start: calc(-1 * var(--_outline-label-padding));\n  margin-inline-end: var(--_outline-label-padding);\n  max-width: calc(100% - var(--_leading-space) - var(--_trailing-space));\n  padding: 0 var(--_outline-label-padding);\n  position: relative;\n}\n.no-label .outline-notch {\n  display: none;\n}\n\n.outline-end {\n  border: inherit;\n  border-radius: inherit;\n  box-sizing: border-box;\n  position: relative;\n  flex-grow: 1;\n  margin-inline-start: calc(-1 * var(--_outline-label-padding));\n  &:before,\n  &:after {\n    border: inherit;\n    content: '';\n    inset: 0;\n    position: absolute;\n  }\n  &:before {\n    border-width: var(--_outline-width);\n    border-inline-start-style: none;\n    border-inline-end-style: solid;\n    border-start-start-radius: 0;\n    border-start-end-radius: inherit;\n    border-end-start-radius: 0;\n    border-end-end-radius: inherit;\n    border-bottom-style: solid;\n    border-top-style: solid;\n  }\n  &:after {\n    border-width: var(--_focus-outline-width);\n    border-inline-start-style: none;\n    border-inline-end-style: solid;\n    border-start-start-radius: 0;\n    border-start-end-radius: inherit;\n    border-end-start-radius: 0;\n    border-end-end-radius: inherit;\n    opacity: 0;\n    transition: opacity 150ms cubic-bezier(0.2, 0, 0, 1);\n    border-bottom-style: solid;\n    border-top-style: solid;\n  }\n}\n\n.outline-panel-inactive {\n  border-width: var(--_outline-width);\n  content: '';\n  inset: 0;\n  position: absolute;\n  border-left-style: none;\n  border-right-style: none;\n  border-top-style: none;\n  border-color: inherit;\n  border-bottom-style: solid;\n  &:before,\n  &:after {\n    border: inherit;\n    content: '';\n    inset: 0;\n    position: absolute;\n    border-width: var(--_outline-width);\n    border-top-style: solid;\n    border-bottom: none;\n    bottom: auto;\n    transform: scaleX(1);\n    transition: transform 150ms cubic-bezier(0.2, 0, 0, 1);\n  }\n  &:before {\n    right: 50%;\n    transform-origin: top left;\n  }\n  &:after {\n    left: 50%;\n    transform-origin: top right;\n  }\n}\n\n.outline-panel-active {\n  border: inherit;\n  content: '';\n  inset: 0;\n  position: absolute;\n  border-width: var(--_focus-outline-width);\n  opacity: 0;\n  border-top-style: none;\n  border-left-style: none;\n  border-right-style: none;\n  border-bottom-style: solid;\n  transition: opacity 150ms cubic-bezier(0.2, 0, 0, 1);\n  &:before,\n  &:after {\n    border: inherit;\n    content: '';\n    inset: 0;\n    position: absolute;\n    border-width: var(--_focus-outline-width);\n    border-top-style: solid;\n    border-bottom: none;\n    bottom: auto;\n    transform: scaleX(1);\n    transition: transform 150ms cubic-bezier(0.2, 0, 0, 1);\n  }\n  &:before {\n    right: 50%;\n    transform-origin: top left;\n  }\n  &:before {\n    left: 50%;\n    transform-origin: top right;\n  }\n}\n\n.focused .outline-start:after,\n.focused .outline-end:after,\n.focused .outline-panel-active {\n  opacity: 1;\n}\n.populated .outline-panel-inactive:before,\n.populated .outline-panel-inactive:after,\n.populated .outline-panel-active:before,\n.populated .outline-panel-active:after,\n.focused .outline-panel-inactive:before,\n.focused .outline-panel-inactive:after,\n.focused .outline-panel-active:before,\n.focused .outline-panel-active:after {\n  transform: scaleX(0);\n}\n\n.outline-label {\n  display: flex;\n  max-width: 100%;\n  transform: translateY(calc(-100% + var(--_label-text-padding-bottom)));\n}\n"
  },
  {
    "path": "packages/actify/src/components/Field/styles/supporting.module.css",
    "content": ".text {\r\n  color: var(--_supporting-text-color);\r\n  display: flex;\r\n  font-family: var(--_supporting-text-font);\r\n  font-size: var(--_supporting-text-size);\r\n  line-height: var(--_supporting-text-line-height);\r\n  font-weight: var(--_supporting-text-weight);\r\n  gap: 16px;\r\n  justify-content: space-between;\r\n  padding-inline-start: var(--_supporting-text-leading-space);\r\n  padding-inline-end: var(--_supporting-text-trailing-space);\r\n  padding-top: var(--_supporting-text-top-space);\r\n}\r\n.counter {\r\n  flex-shrink: 0;\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/FocusRing/FocusRing.tsx",
    "content": "import { CSSProperties } from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './focusring.module.css'\r\n\r\ntype FocusRingProps = {\r\n  style?: CSSProperties\r\n  className?: string\r\n  type?: 'outward' | 'inward'\r\n  as?: keyof HTMLElementTagNameMap | React.ElementType\r\n}\r\n\r\nconst FocusRing = ({ as: As = 'span', type = 'outward', style, className }: FocusRingProps) => {\r\n  return <As style={style} className={clsx(styles['focus-ring'], className)} inward={type === 'inward' ? 'true' : undefined}/>\r\n}\r\n\r\nFocusRing.displayName = 'Actify.FocusRing'\r\n\r\nexport { FocusRing }\r\n"
  },
  {
    "path": "packages/actify/src/components/FocusRing/focusring.module.css",
    "content": "@keyframes outward-grow {\n  from {\n    outline-width: 0;\n  }\n  to {\n    outline-width: var(--md-focus-ring-active-width, 8px);\n  }\n}\n@keyframes outward-shrink {\n  from {\n    outline-width: var(--md-focus-ring-active-width, 8px);\n  }\n}\n@keyframes inward-grow {\n  from {\n    border-width: 0;\n  }\n  to {\n    border-width: var(--md-focus-ring-active-width, 8px);\n  }\n}\n@keyframes inward-shrink {\n  from {\n    border-width: var(--md-focus-ring-active-width, 8px);\n  }\n}\n.focus-ring {\n  z-index: 1;\n  animation-delay: 0s, calc(var(--md-focus-ring-duration, 600ms) * 0.25);\n  animation-duration: calc(var(--md-focus-ring-duration, 600ms) * 0.25),\n    calc(var(--md-focus-ring-duration, 600ms) * 0.75);\n  animation-timing-function: cubic-bezier(0.2, 0, 0, 1);\n  box-sizing: border-box;\n  color: var(\n    --md-focus-ring-color,\n    var(--md-sys-color-secondary, #625b71)\n  );\n  pointer-events: none;\n  position: absolute;\n  &:not([inward]) {\n    animation-name: outward-grow, outward-shrink;\n    border-radius: inherit;\n    inset: calc(-1 * var(--md-focus-ring-outward-offset, 2px));\n    outline: var(--md-focus-ring-width, 3px) solid currentColor;\n  }\n  &[inward] {\n    animation-name: inward-grow, inward-shrink;\n    border-radius: calc(\n      var(--md-focus-ring-shape, inherit) - var(--md-focus-ring-inward-offset, 0px)\n    );\n    border: var(--md-focus-ring-width, 3px) solid currentColor;\n    inset: var(--md-focus-ring-inward-offset, 0px);\n  }\n  @media (prefers-reduced-motion) {\n    .a-focus-ring {\n      animation: none;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/actify/src/components/FocusRing/index.ts",
    "content": "export { FocusRing } from './FocusRing'\r\n"
  },
  {
    "path": "packages/actify/src/components/Icon/Icon.tsx",
    "content": "import React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './icon.module.css'\r\n\r\ninterface IconProps extends React.ComponentProps<'span'> {\r\n  fill?: boolean\r\n}\r\nconst Icon = ({ className, children, fill, ...rest }: IconProps) => {\r\n  return (\r\n    <React.Suspense\r\n      fallback={\r\n        <span className={clsx(styles['icon'], className)}>\r\n          <span\r\n            style={{\r\n              display: 'block',\r\n              width: 'var(--md-icon-size,24px)',\r\n              height: 'var(--md-icon-size,24px)'\r\n            }}\r\n          />\r\n        </span>\r\n      }\r\n    >\r\n      <link\r\n        rel=\"stylesheet\"\r\n        precedence=\"default\"\r\n        href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:FILL@0..1&display=swap\"\r\n      />\r\n      <span\r\n        {...rest}\r\n        className={clsx(\r\n          styles['icon'],\r\n          fill && styles['icon-filled'],\r\n          className\r\n        )}\r\n      >\r\n        <i aria-hidden=\"true\">{children}</i>\r\n      </span>\r\n    </React.Suspense>\r\n  )\r\n}\r\n\r\nIcon.displayName = 'Actify.Icon'\r\n\r\nexport { Icon }\r\n"
  },
  {
    "path": "packages/actify/src/components/Icon/icon.module.css",
    "content": ".icon {\n  display: inline-flex;\n  & i {\n    font-size: var(--md-icon-size, 24px);\n    width: var(--md-icon-size, 24px);\n    height: var(--md-icon-size, 24px);\n    color: inherit;\n    font-variation-settings: inherit;\n    font-weight: 400;\n    font-family: var(--md-icon-font, Material Symbols Outlined);\n    display: inline-flex;\n    font-style: normal;\n    place-items: center;\n    place-content: center;\n    line-height: 1;\n    overflow: hidden;\n    letter-spacing: normal;\n    text-transform: none;\n    user-select: none;\n    white-space: nowrap;\n    overflow-wrap: normal;\n    flex-shrink: 0;\n    -webkit-font-smoothing: antialiased;\n    text-rendering: optimizelegibility;\n  }\n}\n\n.icon-filled i {\n  font-variation-settings: 'FILL' 1;\n}"
  },
  {
    "path": "packages/actify/src/components/Icon/index.ts",
    "content": "export { Icon } from './Icon'\r\n"
  },
  {
    "path": "packages/actify/src/components/Item/Item.tsx",
    "content": "import React from 'react'\r\nimport styles from './item.module.css'\r\n\r\nexport interface ItemProps extends React.ComponentProps<'div'> {\r\n  container?: React.ReactNode\r\n  start?: React.ReactNode\r\n  overline?: React.ReactNode\r\n  headline?: React.ReactNode\r\n  supportingText?: React.ReactNode\r\n  trailingSupportingText?: React.ReactNode\r\n  end?: React.ReactNode\r\n}\r\nconst Item = (props: ItemProps) => {\r\n  const {\r\n    container,\r\n    start,\r\n    overline,\r\n    headline,\r\n    supportingText,\r\n    trailingSupportingText,\r\n    end,\r\n    children,\r\n    ...rest\r\n  } = props\r\n  return (\r\n    <div {...rest} className={styles['item']}>\r\n      {container}\r\n      {start}\r\n      {end}\r\n      {children}\r\n      {overline}\r\n      {headline}\r\n      {supportingText}\r\n      {trailingSupportingText}\r\n    </div>\r\n  )\r\n}\r\n\r\nItem.displayName = 'Actify.Item'\r\n\r\nexport { Item }\r\n"
  },
  {
    "path": "packages/actify/src/components/Item/index.ts",
    "content": "export { Item, type ItemProps } from './Item'\r\n"
  },
  {
    "path": "packages/actify/src/components/Item/item.module.css",
    "content": ".item {\n  color: var(--md-sys-color-on-surface, #1d1b20);\n  font-family: var(\n    --md-sys-typescale-body-large-font,\n    var(--md-ref-typeface-plain, Roboto)\n  );\n  font-size: var(--md-sys-typescale-body-large-size, 1rem);\n  font-weight: var(\n    --md-sys-typescale-body-large-weight,\n    var(--md-ref-typeface-weight-regular, 400)\n  );\n  line-height: var(--md-sys-typescale-body-large-line-height, 1.5rem);\n  align-items: center;\n  box-sizing: border-box;\n  display: flex;\n  gap: 16px;\n  min-height: 56px;\n  overflow: hidden;\n  padding: 12px 16px;\n  position: relative;\n  text-overflow: ellipsis;\n\n  border-radius: inherit;\n  flex: 1;\n  color: var(\n    --md-menu-item-label-text-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  font-family: var(\n    --md-menu-item-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  font-size: var(\n    --md-menu-item-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  line-height: var(\n    --md-menu-item-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  font-weight: var(\n    --md-menu-item-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  min-height: var(--md-menu-item-one-line-container-height, 56px);\n  padding-top: var(--md-menu-item-top-space, 12px);\n  padding-bottom: var(--md-menu-item-bottom-space, 12px);\n  padding-inline-start: var(--md-menu-item-leading-space, 16px);\n  padding-inline-end: var(--md-menu-item-trailing-space, 16px);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Label/Label.tsx",
    "content": "'use client'\r\n\r\nimport { LabelAriaProps } from 'react-aria'\r\nimport React from 'react'\r\n\r\ninterface LabelProps extends LabelAriaProps, React.ComponentProps<'label'> {\r\n  children?: React.ReactNode\r\n}\r\n\r\nconst Label = ({ ref, children, ...props }: LabelProps) => {\r\n  return (\r\n    <label\r\n      ref={ref}\r\n      {...props}\r\n      onMouseDown={(event) => {\r\n        // only prevent text selection if clicking inside the label itself\r\n        const target = event.target as HTMLElement\r\n        if (target.closest('button, input, select, textarea')) return\r\n\r\n        props.onMouseDown?.(event)\r\n        // prevent text selection when double clicking label\r\n        if (!event.defaultPrevented && event.detail > 1) event.preventDefault()\r\n      }}\r\n    >\r\n      {children}\r\n    </label>\r\n  )\r\n}\r\n\r\nLabel.displayName = 'Actify.Label'\r\n\r\nexport { Label }\r\n"
  },
  {
    "path": "packages/actify/src/components/Label/index.ts",
    "content": "export { Label } from './Label'\r\n"
  },
  {
    "path": "packages/actify/src/components/LinearProgress/LinearProgress.tsx",
    "content": "'use client'\r\n\r\nimport { AriaProgressBarProps, useProgressBar } from 'react-aria'\r\n\r\nimport React from 'react'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './linear-progress.module.css'\r\n\r\ninterface LinearProgressProps extends AriaProgressBarProps, StyleProps {\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst LinearProgress = (props: LinearProgressProps) => {\r\n  const {\r\n    value = 0,\r\n    className,\r\n    minValue = 0,\r\n    maxValue = 100,\r\n    color = 'primary',\r\n    isIndeterminate = false\r\n  } = props\r\n\r\n  const { progressBarProps } = useProgressBar(props)\r\n\r\n  return (\r\n    <div\r\n      {...progressBarProps}\r\n      className={clsx(\r\n        styles['progress'],\r\n        styles[`progress-${color}`],\r\n        className\r\n      )}\r\n    >\r\n      <div\r\n        style={\r\n          {\r\n            position: 'absolute',\r\n            inset: 0,\r\n            transform: 'scaleX(1)',\r\n            transformOrigin: 'left center',\r\n            backgroundColor: 'var(--md-sys-color-surface)',\r\n            transition: 'transform 250ms cubic-bezier(0.4, 0, 0.6, 1) 0s'\r\n          } as React.CSSProperties\r\n        }\r\n      />\r\n      <div\r\n        className={clsx(\r\n          styles['bar'],\r\n          isIndeterminate && styles['bar-primary']\r\n        )}\r\n        style={{\r\n          blockSize: '100%',\r\n          inlineSize: '100%',\r\n          transition: 'none 0s ease 0s',\r\n          transformOrigin: 'left center',\r\n          insetInlineStart: isIndeterminate ? '-145.167%' : 0,\r\n          transform: `scaleX(${isIndeterminate ? 1 : value / (maxValue - minValue)})`\r\n        }}\r\n      >\r\n        <div\r\n          className={clsx(\r\n            styles['bar-inner'],\r\n            isIndeterminate && styles['bar-inner-primary']\r\n          )}\r\n        />\r\n      </div>\r\n      <div\r\n        style={{\r\n          blockSize: '100%',\r\n          inlineSize: '100%',\r\n          transition: 'none 0s ease 0s',\r\n          transformOrigin: 'left center',\r\n          insetInlineStart: '-54.8889%'\r\n        }}\r\n        className={clsx(\r\n          styles['bar'],\r\n          isIndeterminate ? styles['bar-secondary'] : styles['bar-hidden']\r\n        )}\r\n      >\r\n        <div\r\n          className={clsx(\r\n            styles['bar-inner'],\r\n            isIndeterminate && styles['bar-inner-secondary']\r\n          )}\r\n        />\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nLinearProgress.displayName = 'Actify.LinearProgress'\r\n\r\nexport { LinearProgress }\r\n"
  },
  {
    "path": "packages/actify/src/components/LinearProgress/index.ts",
    "content": "export { LinearProgress } from './LinearProgress'\r\n"
  },
  {
    "path": "packages/actify/src/components/LinearProgress/linear-progress.module.css",
    "content": "@keyframes primary-indeterminate-scale {\n  0% {\n    transform: scaleX(0.08);\n  }\n  36.65% {\n    animation-timing-function: cubic-bezier(0.334731, 0.12482, 0.785844, 1);\n    transform: scaleX(0.08);\n  }\n  69.15% {\n    animation-timing-function: cubic-bezier(0.06, 0.11, 0.6, 1);\n    transform: scaleX(0.661479);\n  }\n  100% {\n    transform: scaleX(0.08);\n  }\n}\n@keyframes primary-indeterminate-translate {\n  0% {\n    transform: translateX(0px);\n  }\n  20% {\n    animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);\n    transform: translateX(0px);\n  }\n  59.15% {\n    animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);\n    transform: translateX(calc(83.6714%));\n  }\n  100% {\n    transform: translateX(calc(200.611%));\n  }\n}\n\n@keyframes secondary-indeterminate-scale {\n  0% {\n    animation-timing-function: cubic-bezier(\n      0.205028,\n      0.057051,\n      0.57661,\n      0.453971\n    );\n    transform: scaleX(0.08);\n  }\n  19.15% {\n    animation-timing-function: cubic-bezier(\n      0.152313,\n      0.196432,\n      0.648374,\n      1.00432\n    );\n    transform: scaleX(0.457104);\n  }\n  44.15% {\n    animation-timing-function: cubic-bezier(\n      0.257759,\n      -0.003163,\n      0.211762,\n      1.38179\n    );\n    transform: scaleX(0.72796);\n  }\n  100% {\n    transform: scaleX(0.08);\n  }\n}\n@keyframes secondary-indeterminate-translate {\n  0% {\n    animation-timing-function: cubic-bezier(0.15, 0, 0.515058, 0.409685);\n    transform: translateX(0px);\n  }\n  25% {\n    animation-timing-function: cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);\n    transform: translateX(calc(37.6519%));\n  }\n  48.35% {\n    animation-timing-function: cubic-bezier(0.4, 0.627035, 0.6, 0.902026);\n    transform: translateX(calc(84.3862%));\n  }\n  100% {\n    transform: translateX(calc(160.278%));\n  }\n}\n\n.progress {\n  height: 0.25rem /* 4px */;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.progress-primary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-primary) / var(--tw-text-opacity);\n}\n.progress-secondary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-secondary) / var(--tw-text-opacity);\n}\n.progress-tertiary {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-tertiary) / var(--tw-text-opacity);\n}\n.progress-error {\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-error) / var(--tw-text-opacity);\n}\n\n.bar {\n  position: absolute;\n  transition-duration: 150ms;\n  transition-property: transform;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  animation: auto ease 0s 1 normal none running none;\n}\n.bar-hidden {\n  display: none;\n}\n.bar-primary {\n  animation: 2s linear 0s infinite normal none running\n    primary-indeterminate-translate;\n}\n.bar-secondary {\n  animation: 2s linear 0s infinite normal none running\n    secondary-indeterminate-translate;\n}\n\n.bar-inner {\n  position: absolute;\n  inset: 0;\n  background-color: var(--md-sys-color-primary);\n  animation: auto ease 0s 1 normal none running none;\n}\n.bar-inner-primary {\n  animation: 2s linear 0s infinite normal none running\n    primary-indeterminate-scale;\n}\n.bar-inner-secondary {\n  animation: 2s linear 0s infinite normal none running\n    secondary-indeterminate-scale;\n}\n"
  },
  {
    "path": "packages/actify/src/components/ListBox/ListBox.tsx",
    "content": "import { AriaListBoxOptions, useListBox } from 'react-aria'\n\nimport { ListBoxOption } from './ListBoxOption'\nimport { ListState } from 'react-stately'\nimport React from 'react'\nimport styles from './listbox.module.css'\n\ninterface ListBoxProps<T> extends AriaListBoxOptions<T> {\n  state: ListState<T>\n  listBoxProps?: AriaListBoxOptions<T>\n  listBoxRef?: React.RefObject<HTMLElement | null>\n}\n\nconst ListBox = <T extends object>(props: ListBoxProps<T>) => {\n  const ref = React.useRef(null)\n  const { listBoxRef = ref, state } = props\n  const { listBoxProps } = useListBox(props, state, listBoxRef)\n\n  return (\n    <ul\n      {...listBoxProps}\n      className={styles['items']}\n      ref={listBoxRef as React.RefObject<HTMLUListElement>}\n    >\n      {[...state.collection].map((item) => (\n        <ListBoxOption key={item.key} item={item} state={state} />\n      ))}\n    </ul>\n  )\n}\n\nexport { ListBox }\n"
  },
  {
    "path": "packages/actify/src/components/ListBox/ListBoxOption.tsx",
    "content": "import {\n  AriaFocusRingProps,\n  AriaOptionProps,\n  mergeProps,\n  useFocusRing,\n  useOption\n} from 'react-aria'\nimport { ListState, Node } from 'react-stately'\n\nimport { FocusRing } from '../FocusRing'\nimport React from 'react'\nimport { Ripple } from './../Ripple'\nimport clsx from 'clsx'\nimport styles from './option.module.css'\n\ninterface OptionProps<T> extends AriaOptionProps, AriaFocusRingProps {\n  item: Node<T>\n  state: ListState<T>\n}\n\nconst ListBoxOption = <T extends object>({\n  item,\n  state,\n  ...props\n}: OptionProps<T>) => {\n  const ref = React.useRef(null)\n  const { focusProps, isFocusVisible } = useFocusRing(props)\n  const { optionProps, isSelected } = useOption({ key: item.key }, state, ref)\n\n  return (\n    <li\n      ref={ref}\n      {...mergeProps(focusProps, optionProps)}\n      className={clsx(styles['item'], isSelected && styles['selected'])}\n    >\n      {item.rendered}\n      {isFocusVisible && (\n        <FocusRing\n          type=\"inward\"\n          style={\n            {\n              color: 'var(--md-sys-color-primary)',\n              '--md-focus-ring-shape': '8px'\n            } as React.CSSProperties\n          }\n        />\n      )}\n      <Ripple />\n    </li>\n  )\n}\n\nexport { ListBoxOption }\n"
  },
  {
    "path": "packages/actify/src/components/ListBox/index.ts",
    "content": "export { ListBox } from './ListBox'\nexport { ListBoxOption } from './ListBoxOption'\n"
  },
  {
    "path": "packages/actify/src/components/ListBox/listbox.module.css",
    "content": ".items {\n  list-style: none;\n  margin: 0;\n  display: block;\n  padding-block: 8px;\n  list-style-type: none;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  width: var(--reference-width);\n  height: inherit;\n  max-height: inherit;\n  overflow: auto;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: inherit;\n  scrollbar-width: inherit;\n}\n"
  },
  {
    "path": "packages/actify/src/components/ListBox/option.module.css",
    "content": ".item {\n  display: flex;\n  align-items: center;\n  cursor: pointer;\n  position: relative;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n  background-color: var(--md-menu-item-container-color, transparent);\n  border-radius: inherit;\n  flex: 1;\n  color: var(\n    --md-menu-item-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  font-family: var(\n    --md-menu-item-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  font-size: var(\n    --md-menu-item-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  line-height: var(\n    --md-menu-item-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  font-weight: var(\n    --md-menu-item-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  min-height: var(--md-menu-item-one-line-container-height, 56px);\n  padding-top: var(--md-menu-item-top-space, 12px);\n  padding-bottom: var(--md-menu-item-bottom-space, 12px);\n  padding-inline-start: var(--md-menu-item-leading-space, 16px);\n  padding-inline-end: var(--md-menu-item-trailing-space, 16px);\n}\n.item:focus-visible {\n  outline: none;\n}\n.item.selected {\n  background-color: var(\n    --md-menu-item-selected-container-color,\n    var(--md-sys-color-secondary-container)\n  );\n}\n"
  },
  {
    "path": "packages/actify/src/components/Lists/List.tsx",
    "content": "'use client'\r\n\r\nimport React, { useId } from 'react'\r\n\r\nimport { ListContext } from './ListContext'\r\nimport { Transition } from 'motion/react'\r\nimport clsx from 'clsx'\r\nimport styles from './list.module.css'\r\n\r\ninterface ListProps extends React.ComponentProps<'ul'> {\r\n  transition?: Transition\r\n}\r\n\r\nconst List = (props: ListProps) => {\r\n  const { className, children, transition, ...rest } = props\r\n  const layoutId = useId()\r\n\r\n  return (\r\n    <ListContext value={{ layoutId, transition }}>\r\n      <ul {...rest} className={clsx(styles['ul'], className)}>\r\n        {children}\r\n      </ul>\r\n    </ListContext>\r\n  )\r\n}\r\n\r\nList.displayName = 'Actify.List'\r\n\r\nexport { List }\r\n"
  },
  {
    "path": "packages/actify/src/components/Lists/ListContext.tsx",
    "content": "'use client'\r\n\r\nimport { Transition } from 'motion/react'\r\nimport { createContext } from 'react'\r\n\r\nconst ListContext = createContext({\r\n  layoutId: '',\r\n  transition: undefined as undefined | Transition\r\n})\r\n\r\nexport { ListContext }\r\n"
  },
  {
    "path": "packages/actify/src/components/Lists/ListGroup.tsx",
    "content": "'use client'\r\n\r\nimport React, {\r\n  Children,\r\n  cloneElement,\r\n  isValidElement,\r\n  useContext,\r\n  useState\r\n} from 'react'\r\n\r\nimport { Icon } from './../Icon'\r\nimport { ListContext } from './ListContext'\r\nimport clsx from 'clsx'\r\nimport { motion } from 'motion/react'\r\nimport styles from './list-group.module.css'\r\n\r\ninterface ListItemProps extends React.ComponentProps<'li'> {\r\n  label?: string\r\n  icon?: React.ReactNode\r\n}\r\n\r\nconst ListGroup = (props: ListItemProps) => {\r\n  const [open, setOpen] = useState(false)\r\n  const [hovered, setHovered] = useState(false)\r\n  const { className, label, icon, children, ...rest } = props\r\n\r\n  const { layoutId } = useContext(ListContext)\r\n\r\n  return (\r\n    <li {...rest} className={clsx(styles['root'], className)}>\r\n      <div\r\n        className={styles['item']}\r\n        onMouseOver={() => setHovered(true)}\r\n        onMouseOut={() => setHovered(false)}\r\n        onClick={() => setOpen(!open)}\r\n      >\r\n        {icon}\r\n        {label}\r\n        <div className={clsx(styles['icon'], open && styles['icon-open'])}>\r\n          <Icon>keyboard_arrow_down</Icon>\r\n        </div>\r\n      </div>\r\n      {hovered && (\r\n        <motion.div\r\n          layoutId={layoutId}\r\n          // @ts-ignore\r\n          className={styles['hovered']}\r\n        />\r\n      )}\r\n      <div className={clsx(styles['content'], open && styles['content-open'])}>\r\n        <ul\r\n          style={{\r\n            overflow: 'hidden'\r\n          }}\r\n        >\r\n          {Children.map(\r\n            children,\r\n            (child) =>\r\n              isValidElement(child) &&\r\n              cloneElement(child, {\r\n                // @ts-ignore\r\n                ...child.props\r\n              })\r\n          )}\r\n        </ul>\r\n      </div>\r\n    </li>\r\n  )\r\n}\r\n\r\nListGroup.displayName = 'Actify.ListGroup'\r\n\r\nexport { ListGroup }\r\n"
  },
  {
    "path": "packages/actify/src/components/Lists/ListItem.tsx",
    "content": "'use client'\n\nimport React, { useContext, useId, useMemo, useState } from 'react'\n\nimport { ListContext } from './ListContext'\nimport { Ripple } from './../Ripple'\nimport clsx from 'clsx'\nimport { motion } from 'motion/react'\nimport styles from './list-item.module.css'\n\ninterface ListItemProps extends React.ComponentProps<'li'> {\n  index?: number\n}\n\nconst ListItem = (props: ListItemProps) => {\n  const { id, index, className, children, ...rest } = props\n  const [current, setCurrent] = useState<string | undefined>('')\n  const { layoutId, transition } = useContext(ListContext)\n\n  const listItemId = id || `actify-list-item${useId()}`\n\n  const handleMouseOver = () => {\n    if (typeof children === 'string') {\n      setCurrent(children)\n    }\n    if (Array.isArray(children)) {\n      setCurrent(index?.toString())\n    }\n  }\n\n  const isHovered = useMemo(() => {\n    if (typeof children === 'string') {\n      return children == current\n    }\n    if (Array.isArray(children)) {\n      return index == current\n    }\n  }, [current, children])\n\n  return (\n    <li\n      {...rest}\n      id={listItemId}\n      onMouseOver={handleMouseOver}\n      onMouseOut={() => setCurrent(undefined)}\n      className={clsx(styles['root'], className)}\n    >\n      {children}\n      {isHovered && (\n        <motion.div\n          layoutId={layoutId}\n          transition={transition}\n          // @ts-ignore\n          className={styles['hovered']}\n        />\n      )}\n      <Ripple id={listItemId} />\n    </li>\n  )\n}\n\nListItem.displayName = 'Actify.ListItem'\n\nexport { ListItem }\n"
  },
  {
    "path": "packages/actify/src/components/Lists/index.ts",
    "content": "export { List } from './List'\r\n\r\nexport { ListItem } from './ListItem'\r\nexport { ListGroup } from './ListGroup'\r\n"
  },
  {
    "path": "packages/actify/src/components/Lists/list-group.module.css",
    "content": ".root {\n  position: relative;\n  cursor: pointer;\n  isolation: isolate;\n  padding-left: 1rem /* 16px */;\n  padding-right: 1rem /* 16px */;\n}\n.item {\n  display: flex;\n  align-items: center;\n  height: 3.5rem /* 56px */;\n  justify-content: space-between;\n}\n.icon {\n  transition-property: transform;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-duration: 150ms;\n}\n.icon-open {\n  --tw-rotate: 90deg;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n.hovered {\n  position: absolute;\n  inset: 0;\n  z-index: -1;\n  height: 3.5rem /* 56px */;\n  background-color: var(--md-sys-color-surface-variant);\n}\n.content {\n  display: grid;\n  grid-template-rows: 0fr;\n  transition-property: all;\n  transition-duration: 300ms;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.content-open {\n  grid-template-rows: 1fr;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Lists/list-item.module.css",
    "content": ".root {\n  display: flex;\n  padding-left: 1rem /* 16px */;\n  padding-top: 0.5rem /* 8px */;\n  padding-bottom: 0.5rem /* 8px */;\n  isolation: isolate;\n  min-height: 3.5rem /* 56px */;\n  position: relative;\n  align-items: center;\n  line-height: 1.5;\n  cursor: pointer;\n}\n.hovered {\n  position: absolute;\n  inset: 0;\n  z-index: -1;\n  background-color: var(--md-sys-color-surface-variant);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Lists/list.module.css",
    "content": ".ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  padding-top: 0.5rem /* 8px */;\n  padding-bottom: 0.5rem /* 8px */;\n  overflow: hidden;\n  background-color: var(--md-sys-color-surface);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Menus/ListBox.tsx",
    "content": "'use client'\n\nimport { ListBox as AriaListBox, ListBoxProps } from 'react-aria-components'\n\nimport styles from './listbox.module.css'\n\nconst ListBox = <T extends object>({ children, ...props }: ListBoxProps<T>) => {\n  return (\n    <AriaListBox {...props} className={styles['items']}>\n      {children}\n    </AriaListBox>\n  )\n}\n\nexport { ListBox }\n"
  },
  {
    "path": "packages/actify/src/components/Menus/ListBoxItem.tsx",
    "content": "'use client'\n\nimport {\n  ListBoxItem as AriaListBoxItem,\n  ListBoxItemProps\n} from 'react-aria-components'\n\nimport { FocusRing } from '../FocusRing'\nimport { Ripple } from '../Ripple'\nimport clsx from 'clsx'\nimport styles from './listbox-item.module.css'\n\nconst ListBoxItem = ({ style, className, ...props }: ListBoxItemProps) => {\n  return (\n    <AriaListBoxItem\n      {...props}\n      style={style}\n      className={clsx(styles['item'], className)}\n    >\n      <>{props.children}</>\n      <FocusRing className={styles['focus-ring']} type=\"inward\" />\n      <Ripple />\n    </AriaListBoxItem>\n  )\n}\n\nexport { ListBoxItem }\n"
  },
  {
    "path": "packages/actify/src/components/Menus/Menu.tsx",
    "content": "'use client'\r\n\r\nimport { Menu as AriaMenu, MenuProps } from 'react-aria-components'\r\n\r\nimport styles from './menu.module.css'\r\n\r\nconst Menu = <T extends object>(props: MenuProps<T>) => {\r\n  return <AriaMenu {...props} className={styles['menu']} />\r\n}\r\n\r\nexport { Menu }\r\n"
  },
  {
    "path": "packages/actify/src/components/Menus/MenuButton.tsx",
    "content": "'use client'\n\nimport { MenuProps, MenuTrigger, MenuTriggerProps } from 'react-aria-components'\n\nimport { Button } from '../Buttons'\nimport { Menu } from './Menu'\nimport { MenuPopover, PopoverProps } from './MenuPopover'\nimport React from 'react'\n\nexport interface MenuButtonProps<T>\n  extends MenuProps<T>,\n    Omit<MenuTriggerProps, 'children'> {\n  label?: React.ReactNode;\n  popoverProps?: Omit<PopoverProps, 'children'>;\n}\n\nconst MenuButton = <T extends object>({\n  label,\n  children,\n  popoverProps,\n  ...props\n}: MenuButtonProps<T>) => {\n  return (\n    <MenuTrigger {...props}>\n      {typeof label == 'string' ? <Button>{label}</Button> : label}\n      <MenuPopover {...popoverProps}>\n        <Menu>{children}</Menu>\n      </MenuPopover>\n    </MenuTrigger>\n  )\n}\n\nexport { MenuButton }\n"
  },
  {
    "path": "packages/actify/src/components/Menus/MenuItem.tsx",
    "content": "'use client'\r\n\r\nimport { MenuItem as AriaMenuItem, MenuItemProps } from 'react-aria-components'\r\nimport { mergeProps, useFocusRing } from 'react-aria'\r\n\r\nimport { FocusRing } from './../FocusRing'\r\nimport { Icon } from './../Icon'\r\nimport { Item } from './../Item'\r\nimport { Ripple } from './../Ripple'\r\nimport styles from './menu.module.css'\r\n\r\nconst Container = () => (\r\n  <div className={styles['container']}>\r\n    <Ripple />\r\n    <FocusRing />\r\n  </div>\r\n)\r\n\r\nconst MenuItem = (props: MenuItemProps) => {\r\n  const textValue =\r\n    props.textValue ||\r\n    (typeof props.children === 'string' ? props.children : undefined)\r\n\r\n  const { focusProps, isFocusVisible } = useFocusRing()\r\n\r\n  return (\r\n    <AriaMenuItem\r\n      {...mergeProps(props, focusProps)}\r\n      className={styles['menu-item']}\r\n      textValue={textValue}\r\n    >\r\n      {({ hasSubmenu }) => (\r\n        <>\r\n          <Item container={<Container />}>\r\n            <>\r\n              {props.children}\r\n              {hasSubmenu && <Icon>Chevron_Right</Icon>}\r\n            </>\r\n          </Item>\r\n          {isFocusVisible && (\r\n            <FocusRing\r\n              type=\"inward\"\r\n              style={\r\n                {\r\n                  color: 'var(--md-sys-color-primary)',\r\n                  '--md-focus-ring-shape': '8px'\r\n                } as React.CSSProperties\r\n              }\r\n            />\r\n          )}\r\n        </>\r\n      )}\r\n    </AriaMenuItem>\r\n  )\r\n}\r\n\r\nexport { MenuItem }\r\n"
  },
  {
    "path": "packages/actify/src/components/Menus/MenuPopover.tsx",
    "content": "'use client'\n\nimport {\n  Popover as AriaPopover,\n  PopoverProps as AriaPopoverProps,\n  Dialog,\n  OverlayArrow\n} from 'react-aria-components'\n\nimport React from 'react'\nimport { motion } from 'motion/react'\nimport styles from './menu-popover.module.css'\nimport clsx from 'clsx'\n\nexport interface PopoverProps extends Omit<AriaPopoverProps, 'children'> {\n  children: React.ReactNode\n  referenceWidth?: number\n}\n\nconst MenuPopover = ({ children, ...props }: PopoverProps) => {\n  const dialogRef = React.useRef<HTMLDivElement>(null);\n\n  const onAnimationComplete = React.useCallback(() => {\n    dialogRef.current?.classList.add(styles['open']);\n  }, [dialogRef])\n\n  // make the width of the popover the same as the reference element\n  if (props.referenceWidth) {\n    props.style = {\n      ...props.style,\n      '--reference-width': props.referenceWidth + 'px'\n    } as React.CSSProperties\n  }\n\n  return (\n    <AriaPopover {...props} style={props.style} className={clsx(styles['popover'], props.className)}>\n      <motion.div\n        initial={{\n          height: 0,\n          overflow: 'hidden'\n        }}\n        animate={{\n          height: 'auto',\n          maxHeight: 'inherit',\n        }}\n        transition={{\n          duration: 0.3\n        }}\n        onAnimationComplete={onAnimationComplete}\n      >\n        <OverlayArrow className={styles['underlay']} />\n        <Dialog aria-label=\"dialog\" className={styles['dialog']} ref={dialogRef}>\n          {children}\n        </Dialog>\n      </motion.div>\n    </AriaPopover>\n  )\n}\n\nexport { MenuPopover }\n"
  },
  {
    "path": "packages/actify/src/components/Menus/Submenu.tsx",
    "content": "'use client'\n\nimport {\n  SubmenuTrigger as AriaSubmenuTrigger,\n  SubmenuTriggerProps\n} from 'react-aria-components'\n\nconst Submenu = (props: SubmenuTriggerProps) => {\n  return <AriaSubmenuTrigger {...props} />\n}\n\nexport { Submenu }\n"
  },
  {
    "path": "packages/actify/src/components/Menus/index.ts",
    "content": "export { Menu } from './Menu'\nexport { Submenu } from './Submenu'\nexport { MenuItem } from './MenuItem'\nexport { MenuButton } from './MenuButton'\nexport { MenuPopover } from './MenuPopover'\n"
  },
  {
    "path": "packages/actify/src/components/Menus/listbox-item.module.css",
    "content": ".item {\n  display: flex;\n  cursor: pointer;\n  position: relative;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n  background-color: var(--md-menu-item-container-color, transparent);\n  border-radius: inherit;\n  flex: 1;\n  color: var(\n    --md-menu-item-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  font-family: var(\n    --md-menu-item-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  font-size: var(\n    --md-menu-item-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  line-height: var(\n    --md-menu-item-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  font-weight: var(\n    --md-menu-item-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  min-height: var(--md-menu-item-one-line-container-height, 56px);\n  padding-top: var(--md-menu-item-top-space, 12px);\n  padding-bottom: var(--md-menu-item-bottom-space, 12px);\n  padding-inline-start: var(--md-menu-item-leading-space, 16px);\n  padding-inline-end: var(--md-menu-item-trailing-space, 16px);\n}\n.item:focus-visible {\n  outline: none;\n}\n.item[data-selected='true'] {\n  background-color: var(\n    --md-menu-item-selected-container-color,\n    var(--md-sys-color-secondary-container)\n  );\n}\n.focus-ring {\n  display: none;\n  color: var(--md-sys-color-primary);\n}\n\n.item[data-focus-visible='true'] .focus-ring {\n  display: block;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Menus/listbox.module.css",
    "content": ".items {\n  list-style: none;\n  margin: 0;\n  display: block;\n  padding-block: 8px;\n  list-style-type: none;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  width: var(--reference-width);\n  height: inherit;\n  max-height: inherit;\n  overflow: auto;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: inherit;\n  scrollbar-width: inherit;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Menus/menu-popover.module.css",
    "content": ".popover {\n  box-shadow: 0 2px 6px 2px rgb(0, 0, 0, .15);\n  border-radius: 4px;\n  overflow: hidden;\n}\n\n.popover:focus-visible {\n  outline: none;\n}\n\n.underlay {\n  position: fixed;\n  inset: 0;\n}\n\n.dialog {\n  display: block;\n  list-style-type: none;\n  margin: 0;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  height: inherit;\n  max-height: inherit;\n  overflow: hidden;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: var(\n    --md-menu-container-shape,\n    var(--md-sys-shape-corner-extra-small, 4px)\n  );\n  scrollbar-width: inherit;\n}\n\n.dialog.open {\n  overflow: auto;\n}"
  },
  {
    "path": "packages/actify/src/components/Menus/menu.module.css",
    "content": ".menu-root {\n  display: none;\n  inset: auto;\n  border: none;\n  padding: 0px;\n  overflow: visible;\n  background-color: rgba(0, 0, 0, 0);\n  color: inherit;\n  opacity: 1;\n  z-index: 20;\n  position: absolute;\n  user-select: none;\n  max-height: inherit;\n  height: inherit;\n  min-width: inherit;\n  max-width: inherit;\n  scrollbar-width: inherit;\n  &.open {\n    display: block;\n  }\n}\n.items {\n  display: block;\n  list-style-type: none;\n  margin: 0;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  height: inherit;\n  max-height: inherit;\n  overflow: auto;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: inherit;\n  scrollbar-width: inherit;\n}\n.animating .items {\n  overflow: hidden;\n}\n.item-padding {\n  padding-block: 8px;\n}\n.group {\n  box-sizing: border-box;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n}\n.menu {\n  box-sizing: border-box;\n  list-style: none;\n  margin: 0;\n  padding-block: 8px;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n  &:focus-visible {\n    outline: none;\n  }\n}\n.menu-item {\n  position: relative; /* for focus ring */\n  list-style: none;\n  background-color: var(--md-menu-item-container-color, transparent);\n  border-radius: var(\n    --md-menu-container-shape,\n    var(--md-sys-shape-corner-extra-small, 4px)\n  );\n  display: flex;\n  flex: 1;\n  max-width: inherit;\n  min-width: inherit;\n  outline: none;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  &:not(.disabled) {\n    cursor: pointer;\n  }\n}\n.container {\n  position: absolute;\n  inset: 0;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Modal/Modal.tsx",
    "content": "import { AriaModalOverlayProps, Overlay, useModalOverlay } from 'react-aria'\n\nimport { OverlayTriggerState } from 'react-stately'\nimport React from 'react'\nimport styles from './modal.module.css'\n\ninterface ModalProps extends AriaModalOverlayProps {\n  children: React.ReactNode\n  state: OverlayTriggerState\n}\nexport function Modal({ state, children, ...props }: ModalProps) {\n  const ref = React.useRef(null)\n  const { modalProps, underlayProps } = useModalOverlay(props, state, ref)\n  const [exited, setExited] = React.useState(!state.isOpen)\n\n  // Don't render anything if the modal is not open and we're not animating out.\n  if (!(state.isOpen || !exited)) {\n    return null\n  }\n\n  return (\n    <Overlay>\n      <div className={styles['modal']} {...underlayProps}>\n        <div className={styles['scrim']} />\n        <div ref={ref} className={styles['content']} {...modalProps}>\n          {children}\n        </div>\n      </div>\n    </Overlay>\n  )\n}\n"
  },
  {
    "path": "packages/actify/src/components/Modal/index.ts",
    "content": "export { Modal } from './Modal'\n"
  },
  {
    "path": "packages/actify/src/components/Modal/modal.module.css",
    "content": ".modal {\n  position: fixed;\n  inset: 0;\n  z-index: 9999;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.scrim {\n  position: absolute;\n  inset: 0;\n  opacity: 32%;\n  background: var(--md-sys-color-scrim, #000000);\n}\n\n.content {\n  z-index: 1;\n  background: var(\n    --md-dialog-container-color,\n    var(--md-sys-color-surface-container-high, #ece6f0)\n  );\n}\n.content [role='dialog']:focus-visible {\n  outline: none;\n}\n"
  },
  {
    "path": "packages/actify/src/components/NavigationBar/NavigationBar.tsx",
    "content": "'use client'\r\n\r\nimport { List } from './../Lists'\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './navigation-bar.module.css'\r\n\r\ninterface NavigationBarProps extends React.ComponentProps<'div'> {}\r\n\r\nconst NavigationBar = (props: NavigationBarProps) => {\r\n  const { children, className, ...rest } = props\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], className)}>\r\n      <List className={styles['list']}>{children}</List>\r\n    </div>\r\n  )\r\n}\r\n\r\nNavigationBar.displayName = 'Actify.NavigationBar'\r\n\r\nexport { NavigationBar }\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationBar/index.ts",
    "content": "export { NavigationBar } from './NavigationBar'\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationBar/navigation-bar.module.css",
    "content": ".root {\n  width: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 5rem /* 80px */;\n  background-color: var(--md-sys-color-surface);\n}\n.list {\n  display: grid;\n  width: 100%;\n  height: 100%;\n  gap: 0.5rem /* 8px */;\n  padding: 0.75rem 0.5rem 1rem;\n  grid-template-columns: repeat(4, minmax(0, 1fr));\n}\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/DrawerActivator.tsx",
    "content": "'use client'\r\n\r\nimport React, { cloneElement, isValidElement } from 'react'\r\n\r\nimport { useDrawer } from './DrawerContext'\r\n\r\nexport interface DrawerActivatorProps extends React.ComponentProps<'div'> {\r\n  asChild?: boolean\r\n}\r\n\r\nconst DrawerActivator = (props: DrawerActivatorProps) => {\r\n  const { setOpen } = useDrawer()\r\n  const { ref, className, asChild, children, ...rest } = props\r\n\r\n  const handlePress = () => {\r\n    setOpen?.(true)\r\n  }\r\n\r\n  // `asChild` allows the user to pass any element as the activator\r\n  if (asChild && isValidElement(children)) {\r\n    return cloneElement(children, {\r\n      ref,\r\n      ...rest,\r\n      // @ts-ignore\r\n      ...children.props,\r\n      role: 'button',\r\n      onPress: handlePress\r\n    })\r\n  }\r\n\r\n  return (\r\n    <div {...rest} role=\"button\" onClick={handlePress}>\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { DrawerActivator }\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/DrawerContent.tsx",
    "content": "'use client'\r\n\r\nimport { AnimatePresence, motion } from 'motion/react'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport { createPortal } from 'react-dom'\r\nimport styles from './drawer.module.css'\r\nimport { useDrawer } from './DrawerContext'\r\n\r\nexport interface DrawerContentProps extends React.ComponentProps<'div'> {}\r\nconst DrawerContent = ({ style, className, children }: DrawerContentProps) => {\r\n  const [container, setContainer] = useState<HTMLElement>()\r\n  const { open, placement, setOpen } = useDrawer()\r\n\r\n  useEffect(() => {\r\n    setContainer(document.body)\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    if (!open) return\r\n\r\n    document.body.style.overflow = 'hidden'\r\n    document.addEventListener('keydown', handleKeyDown)\r\n\r\n    return () => {\r\n      document.body.style.overflow = 'auto'\r\n      document.removeEventListener('keydown', handleKeyDown)\r\n    }\r\n  }, [open])\r\n\r\n  const handleKeyDown = (event: KeyboardEvent) => {\r\n    if (!open || event.key !== 'Escape') return\r\n    setOpen?.(false)\r\n  }\r\n\r\n  if (!container) {\r\n    return null\r\n  }\r\n\r\n  const getAnimationProps = () => {\r\n    switch (placement) {\r\n      case 'left':\r\n        return {\r\n          initial: {\r\n            transform: 'translateX(-100%)'\r\n          },\r\n          animate: {\r\n            transform: 'translateX(0)'\r\n          },\r\n          exit: {\r\n            transform: 'translateX(-100%)'\r\n          }\r\n        }\r\n      case 'right':\r\n        return {\r\n          initial: {\r\n            transform: 'translateX(100%)'\r\n          },\r\n          animate: {\r\n            transform: 'translateX(0)'\r\n          },\r\n          exit: {\r\n            transform: 'translateX(100%)'\r\n          }\r\n        }\r\n      case 'top':\r\n        return {\r\n          initial: {\r\n            transform: 'translateY(-100%)'\r\n          },\r\n          animate: {\r\n            transform: 'translateY(0)'\r\n          },\r\n          exit: {\r\n            transform: 'translateY(-100%)'\r\n          }\r\n        }\r\n      case 'bottom':\r\n        return {\r\n          initial: {\r\n            transform: 'translateY(100%)'\r\n          },\r\n          animate: {\r\n            transform: 'translateY(0)'\r\n          },\r\n          exit: {\r\n            transform: 'translateY(100%)'\r\n          }\r\n        }\r\n    }\r\n  }\r\n\r\n  return createPortal(\r\n    <AnimatePresence mode=\"wait\" initial={false}>\r\n      {open && (\r\n        <motion.nav\r\n          initial={{ opacity: 0 }}\r\n          animate={{ opacity: 1 }}\r\n          exit={{ opacity: 0 }}\r\n          // @ts-ignore\r\n          className={clsx(\r\n            styles['root'],\r\n            open && styles['root-open'],\r\n            open &&\r\n              (placement == 'left' || placement == 'right') &&\r\n              styles['placement-x'],\r\n            open &&\r\n              (placement == 'top' || placement == 'bottom') &&\r\n              styles['placement-y']\r\n          )}\r\n        >\r\n          <motion.div\r\n            {...getAnimationProps()}\r\n            style={style}\r\n            // @ts-ignore\r\n            className={clsx(\r\n              styles['content'],\r\n              styles[`content-${placement}`],\r\n              (placement == 'left' || placement == 'right') && [\r\n                styles['content-x']\r\n              ],\r\n              (placement == 'top' || placement == 'bottom') && [\r\n                styles['content-y']\r\n              ],\r\n              className\r\n            )}\r\n          >\r\n            {children}\r\n          </motion.div>\r\n          {/* scrim */}\r\n          <div\r\n            onClick={() => setOpen?.(false)}\r\n            style={{ width: '100vw', height: '100vh' }}\r\n          />\r\n        </motion.nav>\r\n      )}\r\n    </AnimatePresence>,\r\n    container\r\n  ) as React.ReactNode\r\n}\r\n\r\nexport { DrawerContent }\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/DrawerContext.tsx",
    "content": "'use client'\r\n\r\nimport React, { createContext, useContext } from 'react'\r\n\r\nimport { useControllableState } from './../../hooks/useControllableState'\r\n\r\ntype Placement = 'left' | 'right' | 'top' | 'bottom'\r\n\r\ninterface DrawerProps {\r\n  open?: boolean\r\n  placement?: Placement\r\n  defaultOpen?: boolean\r\n  setOpen?: (open: boolean) => void\r\n}\r\n\r\nconst DrawerContext = createContext<DrawerProps | undefined>(undefined)\r\n\r\nexport interface DrawerProviderProps\r\n  extends React.PropsWithChildren<DrawerProps> {}\r\n\r\nexport const DrawerProvider = ({ children, ...props }: DrawerProviderProps) => {\r\n  const { open, placement, defaultOpen, setOpen } = props\r\n\r\n  const [value, setValue] = useControllableState({\r\n    value: open,\r\n    defaultValue: defaultOpen,\r\n    onChange: setOpen\r\n  })\r\n\r\n  return (\r\n    <DrawerContext\r\n      value={{ placement, open: value, setOpen: setValue }}\r\n    >\r\n      {children}\r\n    </DrawerContext>\r\n  )\r\n}\r\n\r\nexport function useDrawer() {\r\n  const context = useContext(DrawerContext)\r\n  if (!context) {\r\n    throw new Error('Drawer components must be wrapped in <Drawer />')\r\n  }\r\n  return context\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/NavigationDrawer.tsx",
    "content": "'use client'\r\n\r\nimport { DrawerProvider, DrawerProviderProps } from './DrawerContext'\r\n\r\nimport React from 'react'\r\n\r\ninterface NavigationDrawerProps extends DrawerProviderProps {\r\n  className?: string\r\n  style?: React.CSSProperties\r\n}\r\n\r\nconst NavigationDrawer = (props: NavigationDrawerProps) => {\r\n  const { className, children, ...rest } = props\r\n\r\n  return (\r\n    <DrawerProvider {...rest}>\r\n      <div className={className} style={{ position: 'relative' }}>\r\n        {children}\r\n      </div>\r\n    </DrawerProvider>\r\n  )\r\n}\r\n\r\nNavigationDrawer.displayName = 'Actify.NavigationDrawer'\r\n\r\nexport { NavigationDrawer }\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/drawer.module.css",
    "content": ".root {\n  position: fixed;\n  overflow: hidden;\n  inset: 0;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  transition-property: opacity;\n  transition-duration: 500ms;\n  pointer-events: none;\n  z-index: 50;\n  background-color: rgba(0, 0, 0, 0.32);\n}\n.root-open {\n  pointer-events: auto;\n}\n/* placement left and right */\n.placement-x {\n  --tw-translate-x: 0px;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n/* placement top and bottom */\n.placement-y {\n  --tw-translate-y: 0px;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.content {\n  position: absolute;\n  overflow-y: auto;\n  background-color: var(--md-sys-color-surface);\n  --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),\n    0 8px 10px -6px rgb(0 0 0 / 0.1);\n  --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color),\n    0 8px 10px -6px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n  transition-property: all;\n  transition-duration: 500ms;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.content-left {\n  left: 0;\n  border-top-right-radius: 1rem;\n  border-bottom-right-radius: 1rem;\n}\n.content-right {\n  right: 0;\n  border-top-left-radius: 1rem;\n  border-bottom-left-radius: 1rem;\n}\n.content-top {\n  top: 0;\n  border-bottom-right-radius: 1rem;\n  border-bottom-left-radius: 1rem;\n}\n.content-bottom {\n  bottom: 0;\n  border-top-left-radius: 1rem;\n  border-top-right-radius: 1rem;\n}\n.content-x {\n  width: 100%;\n  height: 100%;\n  max-width: 20rem;\n}\n.content-y {\n  height: 100vh;\n  width: 100%;\n  max-height: 20rem;\n}\n"
  },
  {
    "path": "packages/actify/src/components/NavigationDrawer/index.ts",
    "content": "export { NavigationDrawer } from './NavigationDrawer'\r\n\r\nexport { DrawerActivator } from './DrawerActivator'\r\nexport { DrawerContent } from './DrawerContent'\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationRail/NavigationRail.tsx",
    "content": "'use client'\r\n\r\nimport { Badge } from '../Badges'\r\nimport { Icon } from '../Icon'\r\nimport React from 'react'\r\nimport { Ripple } from '../Ripple'\r\nimport clsx from 'clsx'\r\nimport styles from './navigation-rail.module.css'\r\nimport { useControllableState } from '../../hooks'\r\n\r\ninterface Item extends React.ComponentProps<'button'> {\r\n  label: string\r\n  icon: React.ReactNode\r\n  badge?: number | string\r\n  isActive?: boolean\r\n}\r\n\r\ninterface NavigationRailProps extends React.ComponentProps<'div'> {\r\n  items: Item[]\r\n  menu?: React.ReactNode\r\n  value?: number\r\n  defaultValue?: number\r\n  setValue?: (index: number) => void\r\n}\r\n\r\nconst Item = (props: Item) => {\r\n  const { icon, label, badge, isActive, ...rest } = props\r\n\r\n  return (\r\n    <button\r\n      {...rest}\r\n      className={clsx(styles['item'], isActive && styles['active'])}\r\n    >\r\n      <Ripple />\r\n      <Badge value={badge}>\r\n        {typeof icon == 'string' ? <Icon>{icon}</Icon> : icon}\r\n      </Badge>\r\n      <label className={styles['label']}>{label}</label>\r\n    </button>\r\n  )\r\n}\r\n\r\nconst NavigationRail = (props: NavigationRailProps) => {\r\n  const {\r\n    menu,\r\n    value,\r\n    children,\r\n    className,\r\n    items = [],\r\n    defaultValue,\r\n    setValue,\r\n    ...rest\r\n  } = props\r\n\r\n  const [activeIndex, setActiveIndex] = useControllableState({\r\n    value,\r\n    defaultValue,\r\n    onChange: setValue\r\n  })\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], className)}>\r\n      {/* Menu icon (optional) */}\r\n      {menu}\r\n      {/* Navigation Items */}\r\n      <nav className={styles['items']}>\r\n        {items.map((item, index) => {\r\n          const { icon, label, badge } = item\r\n          const isActive = index == activeIndex\r\n          return (\r\n            <Item\r\n              key={index}\r\n              icon={icon}\r\n              label={label}\r\n              badge={badge}\r\n              isActive={isActive}\r\n              onClick={() => setActiveIndex(index)}\r\n            />\r\n          )\r\n        })}\r\n      </nav>\r\n    </div>\r\n  )\r\n}\r\n\r\nNavigationRail.displayName = 'Actify.NavigationRail'\r\n\r\nexport { NavigationRail }\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationRail/index.ts",
    "content": "export { NavigationRail } from './NavigationRail'\r\n"
  },
  {
    "path": "packages/actify/src/components/NavigationRail/navigation-rail.module.css",
    "content": ".root {\n  display: inline-flex;\n}\n.items {\n  width: 80px;\n  min-height: 540px;\n  display: flex;\n  gap: 12px;\n  justify-content: center;\n  flex-direction: column;\n  background-color: var(--md-sys-color-surface);\n}\n.item {\n  height: 56px;\n  width: 100%;\n  display: flex;\n  position: relative;\n  align-items: center;\n  flex-direction: column;\n}\n.active {\n  color: var(--md-sys-color-on-primary);\n  background-color: var(--md-sys-color-primary);\n}\n.label {\n  font-size: 12px;\n  font-weight: 600;\n  margin-top: 4px;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Pagination/Pagination.tsx",
    "content": "'use client'\r\n\r\nimport { ActionMenu, MenuItem } from '../ActionMenu'\r\nimport { Button, IconButton } from './../Buttons'\r\n\r\nimport { Icon } from './../Icon'\r\nimport { PaginationNumber } from './PaginationNumber'\r\nimport React from 'react'\r\nimport { generatePagination } from './generatePagination'\r\nimport styles from './pagination.module.css'\r\n\r\nexport interface PaginationProps extends React.ComponentProps<'nav'> {\r\n  currentPage?: number\r\n  totalPages?: number\r\n  pageSizes?: number[]\r\n  onPageChange?: (page: number) => void\r\n  selectedPageSize?: number\r\n  setSelectedPageSize?: React.Dispatch<React.SetStateAction<number>>\r\n}\r\n\r\nconst Pagination = (props: PaginationProps) => {\r\n  const {\r\n    pageSizes = [5, 10, 20],\r\n    currentPage = 1,\r\n    totalPages = 1,\r\n    selectedPageSize,\r\n    setSelectedPageSize,\r\n    onPageChange,\r\n    className,\r\n    ...rest\r\n  } = props\r\n\r\n  const allPages = generatePagination(currentPage, totalPages)\r\n  const handleAction = (key: string | number) => {\r\n    setSelectedPageSize?.(key as number)\r\n  }\r\n\r\n  return (\r\n    <nav {...rest} className={styles['pagination']}>\r\n      <ul className={styles['ul']}>\r\n        <li>\r\n          <IconButton\r\n            isDisabled={currentPage <= 1}\r\n            onPress={() => onPageChange?.(currentPage - 1)}\r\n          >\r\n            <Icon>chevron_left</Icon>\r\n          </IconButton>\r\n        </li>\r\n        {allPages.map((page, index) => {\r\n          let position: 'first' | 'last' | 'single' | 'middle' | undefined\r\n          if (index == 0) position = 'first'\r\n          if (index == allPages.length - 1) position = 'last'\r\n          if (allPages.length == 1) position = 'single'\r\n          if (page == '...') position = 'middle'\r\n\r\n          return (\r\n            <li key={index}>\r\n              <PaginationNumber\r\n                page={page}\r\n                position={position}\r\n                isActive={currentPage === page}\r\n                onPageChange={onPageChange}\r\n              />\r\n            </li>\r\n          )\r\n        })}\r\n        <li>\r\n          <IconButton\r\n            isDisabled={currentPage >= totalPages}\r\n            onPress={() => onPageChange?.(currentPage + 1)}\r\n          >\r\n            <Icon>chevron_right</Icon>\r\n          </IconButton>\r\n        </li>\r\n      </ul>\r\n      {pageSizes ? (\r\n        <div className={styles['page-size']}>\r\n          <div className={styles['page-size-wrapper']}>\r\n            <p className={styles['item-per-page']}>Items per page:</p>\r\n\r\n            <ActionMenu\r\n              activator={(ref, menuTriggerProps) => (\r\n                <Button\r\n                  ref={ref}\r\n                  {...menuTriggerProps}\r\n                  style={{ margin: '0 .625rem' }}\r\n                >\r\n                  <div className=\"flex flex-row items-center\">\r\n                    <p className=\"text-md mr-2\">{selectedPageSize}</p>\r\n                    <Icon>arrow_drop_down</Icon>\r\n                  </div>\r\n                </Button>\r\n              )}\r\n              onAction={handleAction}\r\n            >\r\n              {pageSizes.map((page) => (\r\n                <MenuItem key={page}>{page.toString()}</MenuItem>\r\n              ))}\r\n            </ActionMenu>\r\n            <span>\r\n              {1 + (currentPage - 1) * selectedPageSize!} of{' '}\r\n              {currentPage * selectedPageSize!}\r\n            </span>\r\n            <IconButton\r\n              isDisabled={currentPage <= 1}\r\n              onPress={() => onPageChange?.(currentPage - 1)}\r\n            >\r\n              <Icon>chevron_left</Icon>\r\n            </IconButton>\r\n            <IconButton\r\n              isDisabled={currentPage >= totalPages}\r\n              onPress={() => onPageChange?.(currentPage + 1)}\r\n            >\r\n              <Icon>chevron_right</Icon>\r\n            </IconButton>\r\n          </div>\r\n        </div>\r\n      ) : null}\r\n    </nav>\r\n  )\r\n}\r\n\r\nexport { Pagination }\r\n"
  },
  {
    "path": "packages/actify/src/components/Pagination/PaginationNumber.tsx",
    "content": "'use client'\r\n\r\nimport { Button } from './../Buttons'\r\n\r\nconst PaginationNumber = ({\r\n  page,\r\n  isActive,\r\n  position,\r\n  onPageChange\r\n}: {\r\n  isActive: boolean\r\n  page: number | string\r\n  onPageChange?: (_: number) => void\r\n  position?: 'first' | 'last' | 'middle' | 'single'\r\n}) => {\r\n  return isActive || position === 'middle' ? (\r\n    <Button variant={isActive ? 'filled' : 'tonal'}>{page}</Button>\r\n  ) : (\r\n    <Button variant=\"tonal\" onPress={() => onPageChange?.(page as number)}>\r\n      {page}\r\n    </Button>\r\n  )\r\n}\r\n\r\nexport { PaginationNumber }\r\n"
  },
  {
    "path": "packages/actify/src/components/Pagination/generatePagination.ts",
    "content": "const generatePagination = (currentPage: number, totalPages: number) => {\r\n  // If the total number of pages is 7 or less,\r\n  // display all pages without any ellipsis.\r\n  if (totalPages <= 7) {\r\n    return Array.from({ length: totalPages }, (_, i) => i + 1)\r\n  }\r\n\r\n  // If the current page is among the first 3 pages,\r\n  // show the first 3, an ellipsis, and the last 2 pages.\r\n  if (currentPage <= 3) {\r\n    return [1, 2, 3, '...', totalPages - 1, totalPages]\r\n  }\r\n\r\n  // If the current page is among the last 3 pages,\r\n  // show the first 2, an ellipsis, and the last 3 pages.\r\n  if (currentPage >= totalPages - 2) {\r\n    return [1, 2, '...', totalPages - 2, totalPages - 1, totalPages]\r\n  }\r\n\r\n  // If the current page is somewhere in the middle,\r\n  // show the first page, an ellipsis, the current page and its neighbors,\r\n  // another ellipsis, and the last page.\r\n  return [\r\n    1,\r\n    '...',\r\n    currentPage - 1,\r\n    currentPage,\r\n    currentPage + 1,\r\n    '...',\r\n    totalPages\r\n  ]\r\n}\r\n\r\nexport { generatePagination }\r\n"
  },
  {
    "path": "packages/actify/src/components/Pagination/index.ts",
    "content": "export { Pagination } from './Pagination'\r\nexport type { PaginationProps } from './Pagination'\r\nexport { PaginationNumber } from './PaginationNumber'\r\n"
  },
  {
    "path": "packages/actify/src/components/Pagination/pagination.module.css",
    "content": ".pagination {\n  display: flex;\n  padding: 1rem;\n  align-items: center;\n  border-radius: 0.5rem;\n  justify-content: center;\n  background-color: var(--md-sys-color-surface);\n}\n.ul {\n  list-style: none;\n  margin: 0;\n  padding: 0;\n\n  display: none;\n  gap: 1rem;\n}\n@media (min-width: 1024px) {\n  .ul {\n    display: flex;\n  }\n}\n.page-size {\n  width: 100%;\n  display: flex;\n  flex-direction: row;\n  padding-left: 0.75rem /* 12px */;\n  padding-right: 0.75rem /* 12px */;\n  padding-top: 0.25rem /* 4px */;\n  padding-bottom: 0.25rem /* 4px */;\n  background-color: var(--md-sys-color-surface);\n}\n.page-size-wrapper {\n  display: flex;\n  margin-left: auto;\n  flex-direction: row;\n  align-items: center;\n}\n.item-per-page {\n  font-size: 0.875rem /* 14px */;\n  line-height: 1.25rem /* 20px */;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Popover/Popover.tsx",
    "content": "import styles from './popover.module.css'\n\nimport { motion } from 'motion/react'\nimport {\n  DismissButton,\n  Overlay,\n  usePopover,\n  type AriaPopoverProps\n} from 'react-aria'\n\nimport type {\n  OverlayTriggerProps,\n  PlacementAxis,\n  PositionProps\n} from '@react-types/overlays'\n\nimport React from 'react'\nimport { RenderProps, SlotProps } from './../../utils'\nimport { OverlayTriggerState } from 'react-stately'\nimport clsx from 'clsx'\n\ninterface PopoverRenderProps {\n  /**\n   * The name of the component that triggered the popover, e.g. \"DialogTrigger\" or \"ComboBox\".\n   * @selector [data-trigger=\"...\"]\n   */\n  trigger: string | null\n  /**\n   * The placement of the popover relative to the trigger.\n   * @selector [data-placement=\"left | right | top | bottom\"]\n   */\n  placement: PlacementAxis\n  /**\n   * Whether the popover is currently entering. Use this to apply animations.\n   * @selector [data-entering]\n   */\n  isEntering: boolean\n  /**\n   * Whether the popover is currently exiting. Use this to apply animations.\n   * @selector [data-exiting]\n   */\n  isExiting: boolean\n}\n\nexport interface PopoverProps\n  extends PositionProps,\n    Omit<AriaPopoverProps, 'triggerRef' | 'popoverRef'>,\n    OverlayTriggerProps,\n    RenderProps<PopoverRenderProps>,\n    SlotProps {\n  triggerRef?: React.RefObject<Element | null>\n  popoverRef?: React.RefObject<Element | null>\n\n  state: OverlayTriggerState\n  referenceWidth?: number\n}\n\nconst Popover = (props: PopoverProps & React.RefAttributes<HTMLElement>) => {\n  const _triggerRef = React.useRef<HTMLDivElement>(null)\n  const _popoverRef = React.useRef<HTMLDivElement>(null)\n\n  const {\n    state,\n    children,\n    referenceWidth,\n    triggerRef = _triggerRef,\n    popoverRef = _popoverRef\n  } = props\n\n  const { popoverProps, underlayProps } = usePopover(\n    {\n      ...props,\n      triggerRef,\n      popoverRef\n    },\n    state\n  )\n\n  // make the width of the popover the same as the reference element\n  if (referenceWidth) {\n    popoverProps.style = {\n      ...popoverProps.style,\n      '--reference-width': referenceWidth + 'px'\n    } as React.CSSProperties\n  }\n\n  // apply a class that enables scrolling if necessary\n  const onAnimationComplete = React.useCallback(() => {\n    popoverRef.current?.classList.add(styles['open']);\n  }, [popoverRef])\n\n  return (\n    <Overlay>\n      <div {...underlayProps} className={styles['underlay']} />\n      {/* @ts-expect-error */}\n      <motion.div\n        {...popoverProps}\n        className={clsx(styles['popover'], props.className)}\n        initial={{\n          height: 0,\n          overflow: 'hidden'\n        }}\n        onAnimationComplete={onAnimationComplete}\n        animate={{\n          height: 'auto'\n        }}\n        transition={{\n          duration: 0.3\n        }}\n        ref={popoverRef as React.RefObject<HTMLDivElement>}\n      >\n        <DismissButton onDismiss={state.close} />\n        <>{children}</>\n        <DismissButton onDismiss={state.close} />\n      </motion.div>\n    </Overlay>\n  )\n}\n\nexport { Popover }\n"
  },
  {
    "path": "packages/actify/src/components/Popover/index.ts",
    "content": "export { Popover } from './Popover'\n"
  },
  {
    "path": "packages/actify/src/components/Popover/popover.module.css",
    "content": ".underlay {\n  position: fixed;\n  inset: 0;\n}\n\n.popover {\n  display: block;\n  list-style-type: none;\n  margin: 0;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  height: inherit;\n  max-height: inherit;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: var(\n    --md-menu-container-shape,\n    var(--md-sys-shape-corner-extra-small, 4px)\n  );\n  scrollbar-width: inherit;\n  box-shadow: 0 2px 6px 2px rgba(0, 0, 0, .15);\n}\n\n.popover > ul {\n  overflow: hidden;\n}\n\n.popover.open > ul {\n  overflow: auto;\n}\n"
  },
  {
    "path": "packages/actify/src/components/PopoverMenu/PopoverMenu.tsx",
    "content": "'use client'\n\nimport { useControllableState, useOnClickOutside } from '../../hooks'\n\nimport { EASING } from '../../animations'\nimport { Elevation } from '../Elevation'\nimport React from 'react'\nimport clsx from 'clsx'\nimport styles from './menu.module.css'\n\ninterface PopoverMenuContextProps {\n  open: boolean\n  setOpen: (open: boolean) => void\n}\nexport const PopoverMenuContext =\n  React.createContext<PopoverMenuContextProps | null>(null)\n\nexport interface PopoverMenuRef {\n  show: () => void\n  close: () => void\n  toggle: () => void\n}\n\ninterface PopoverMenuProps extends Omit<React.ComponentProps<'div'>, 'ref'> {\n  anchor?: string\n  positioning?: 'absolute' | 'popover' | 'fixed' | 'document'\n  /** Skips the opening and closing animations */\n  quick?: boolean\n  typeaheadDelay?: number\n  anchorCorner?: string\n  menuCorner?: string\n  stayOpenOnOutsideClick?: boolean\n  stayOpenOnFocusout?: boolean\n  skipRestoreFocus?: boolean\n  defaultFocus?: string\n  noNavigationWrap?: boolean\n  isSubmenu?: boolean\n  ref?: React.Ref<PopoverMenuRef>\n  open?: boolean\n  defaultOpen?: boolean\n  setOpen?: (open: boolean) => void\n  setFocused?: (focus: boolean) => void\n}\n\nexport const PopoverMenu = (props: PopoverMenuProps) => {\n  const {\n    ref,\n    style,\n    children,\n    className,\n    setFocused,\n    defaultOpen,\n    open: propOpen,\n    setOpen: propSetOpen,\n    positioning = 'absolute',\n    ...rest\n  } = props\n\n  const menuRef = React.useRef<HTMLDivElement>(null)\n  const slotRef = React.useRef<HTMLDivElement>(null)\n\n  const [open, setOpen] = useControllableState({\n    value: propOpen,\n    onChange: propSetOpen,\n    defaultValue: defaultOpen\n  })\n\n  useOnClickOutside(menuRef, () => {\n    setOpen(false)\n    setFocused?.(false)\n  })\n\n  React.useImperativeHandle(\n    ref,\n    () => ({\n      show: () => setOpen(true),\n      close: () => setOpen(false),\n      toggle: () => setOpen(!open)\n    }),\n    []\n  )\n\n  const animateOpen = async () => {\n    const surfaceEl = menuRef.current\n    const slotEl = slotRef.current\n    if (!surfaceEl || !slotEl) return true\n    const openingUpwards = false\n    // needs to be imperative because we don't want to mix animation and Lit\n    // render timing\n    surfaceEl.classList.toggle(styles['animating'], true)\n    const height = surfaceEl.offsetHeight\n    const items = React.Children.toArray(children)\n\n    const FULL_DURATION = 500\n    const SURFACE_OPACITY_DURATION = 50\n    const ITEM_OPACITY_DURATION = 250\n    // We want to fit every child fade-in animation within the full duration of\n    // the animation.\n    const DELAY_BETWEEN_ITEMS =\n      (FULL_DURATION - ITEM_OPACITY_DURATION) / items.length\n    const surfaceHeightAnimation = surfaceEl.animate(\n      [{ height: '0px' }, { height: `${height}px` }],\n      {\n        duration: FULL_DURATION,\n        easing: EASING.EMPHASIZED\n      }\n    )\n    // When we are opening upwards, we want to make sure the last item is always\n    // in view, so we need to translate it upwards the opposite direction of the\n    // height animation\n    const upPositionCorrectionAnimation = slotEl.animate(\n      [\n        { transform: openingUpwards ? `translateY(-${height}px)` : '' },\n        { transform: '' }\n      ],\n      { duration: FULL_DURATION, easing: EASING.EMPHASIZED }\n    )\n    const surfaceOpacityAnimation = surfaceEl.animate(\n      [{ opacity: 0 }, { opacity: 1 }],\n      SURFACE_OPACITY_DURATION\n    )\n\n    let resolveAnimation = (_: boolean) => {}\n    const animationFinished = new Promise((resolve) => {\n      resolveAnimation = resolve\n    })\n\n    surfaceHeightAnimation.addEventListener('finish', () => {\n      surfaceEl.classList.toggle(styles['animating'], false)\n      resolveAnimation(false)\n    })\n    return await animationFinished\n  }\n\n  React.useEffect(() => {\n    if (open) {\n      animateOpen()\n    }\n  }, [open])\n\n  const classes = clsx(styles['menu'], open && styles['open'], className)\n\n  return (\n    <div {...rest} ref={menuRef} style={style} className={classes}>\n      <Elevation style={{ '--md-elevation-level': 2 } as React.CSSProperties} />\n      <PopoverMenuContext value={{ open, setOpen }}>\n        <div className={styles['items']}>\n          <div className={styles['item-padding']} ref={slotRef}>\n            {children}\n          </div>\n        </div>\n      </PopoverMenuContext>\n    </div>\n  )\n}\n"
  },
  {
    "path": "packages/actify/src/components/PopoverMenu/PopoverMenuItem.tsx",
    "content": "import { Item, ItemProps } from './../Item'\n\nimport { FocusRing } from './../FocusRing'\nimport { PopoverMenuContext } from './PopoverMenu'\nimport React from 'react'\nimport { Ripple } from './../Ripple'\nimport styles from './menu.module.css'\n\ninterface PopoverMenuItemProps extends Omit<ItemProps, 'container'> {}\n\nexport const PopoverMenuItem = (props: PopoverMenuItemProps) => {\n  const { children, onClick, ...rest } = props\n  const context = React.useContext(PopoverMenuContext)\n\n  const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\n    onClick?.(event)\n    context?.setOpen(false)\n  }\n\n  const Container = () => (\n    <div className={styles['container']}>\n      <Ripple />\n      <FocusRing />\n    </div>\n  )\n\n  return (\n    <div className={styles['menu-item']} tabIndex={-1} role=\"presentation\">\n      <li tabIndex={0} role=\"menuitem\" className={styles['list-item']}>\n        <Item onClick={handleClick} {...rest} container={<Container />}>\n          {children}\n        </Item>\n      </li>\n    </div>\n  )\n}\n"
  },
  {
    "path": "packages/actify/src/components/PopoverMenu/index.ts",
    "content": "export { PopoverMenu } from './PopoverMenu'\nexport { PopoverMenuItem } from './PopoverMenuItem'\n"
  },
  {
    "path": "packages/actify/src/components/PopoverMenu/menu.module.css",
    "content": ".menu {\n  border-radius: var(\n    --md-menu-container-shape,\n    var(--md-sys-shape-corner-extra-small, 4px)\n  );\n  display: none;\n  inset: auto;\n  border: none;\n  padding: 0px;\n  overflow: visible;\n  background-color: rgba(0, 0, 0, 0);\n  color: inherit;\n  opacity: 1;\n  z-index: 20;\n  position: absolute;\n  user-select: none;\n  max-height: inherit;\n  height: inherit;\n  min-width: inherit;\n  max-width: inherit;\n  scrollbar-width: inherit;\n  &.open {\n    display: block;\n  }\n}\n.items {\n  display: block;\n  list-style-type: none;\n  margin: 0;\n  outline: none;\n  box-sizing: border-box;\n  background-color: var(\n    --md-menu-container-color,\n    var(--md-sys-color-surface-container, #f3edf7)\n  );\n  height: inherit;\n  max-height: inherit;\n  overflow: auto;\n  min-width: inherit;\n  max-width: inherit;\n  border-radius: inherit;\n  scrollbar-width: inherit;\n}\n.animating .items {\n  overflow: hidden;\n}\n.item-padding {\n  padding-block: 8px;\n}\n.menu-item {\n  display: flex;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n}\n.list-item {\n  list-style: none;\n  background-color: var(--md-menu-item-container-color, transparent);\n  border-radius: inherit;\n  display: flex;\n  flex: 1;\n  max-width: inherit;\n  min-width: inherit;\n  outline: none;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  &:not(.disabled) {\n    cursor: pointer;\n  }\n}\n.container {\n  position: absolute;\n  inset: 0;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Radio/Radio.tsx",
    "content": "import { AriaRadioProps, mergeProps, useFocusRing, useRadio } from 'react-aria'\r\n\r\nimport { FocusRing } from '../FocusRing/FocusRing'\r\nimport { Label } from '../Label'\r\nimport { RadioGroupContext } from './RadioGroup'\r\nimport { RadioGroupState } from 'react-stately'\r\nimport React from 'react'\r\nimport { Ripple } from '../Ripple/Ripple'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './radio.module.css'\r\n\r\ninterface RadioProps extends AriaRadioProps, StyleProps {\r\n  ref?: React.RefObject<HTMLInputElement>\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst Radio = (props: RadioProps) => {\r\n  const _inputRef = React.useRef(null)\r\n  const { ref: inputRef = _inputRef } = props\r\n\r\n  const state = React.useContext(RadioGroupContext) as RadioGroupState\r\n  const { inputProps, labelProps, isSelected } = useRadio(\r\n    props,\r\n    state,\r\n    inputRef\r\n  )\r\n\r\n  const { isFocusVisible, focusProps } = useFocusRing()\r\n  const cutoutId = `radio-cutout${React.useId()}`\r\n\r\n  return (\r\n    <div className={styles['radio-wrapper']}>\r\n      <Label\r\n        style={props.style}\r\n        className={clsx(styles['radio'], props.className)}\r\n      >\r\n        <div\r\n          className={clsx(styles['container'], isSelected && styles['checked'])}\r\n        >\r\n          <input\r\n            ref={inputRef}\r\n            className={styles['input']}\r\n            {...mergeProps(inputProps, focusProps)}\r\n          />\r\n\r\n          <Ripple\r\n            id={inputProps.id}\r\n            style={{\r\n              inset: 'unset',\r\n              borderRadius: '50%',\r\n              width: 'var(--md-radio-state-layer-size, 40px)',\r\n              height: 'var(--md-radio-state-layer-size, 40px)'\r\n            }}\r\n          />\r\n          {isFocusVisible && (\r\n            <FocusRing\r\n              style={{\r\n                width: '44px',\r\n                height: '44px',\r\n                inset: 'unset',\r\n                borderRadius: '50%'\r\n              }}\r\n            />\r\n          )}\r\n          <svg className={styles['icon']} viewBox=\"0 0 20 20\">\r\n            <mask id={cutoutId}>\r\n              <rect width=\"100%\" height=\"100%\" fill=\"white\" />\r\n              <circle cx=\"10\" cy=\"10\" r=\"8\" fill=\"black\" />\r\n            </mask>\r\n            <circle\r\n              r=\"10\"\r\n              cx=\"10\"\r\n              cy=\"10\"\r\n              mask={`url(#${cutoutId})`}\r\n              className={clsx(styles['outer'], styles['circle'])}\r\n            />\r\n            <circle\r\n              r=\"5\"\r\n              cx=\"10\"\r\n              cy=\"10\"\r\n              className={clsx(styles['inner'], styles['circle'])}\r\n            />\r\n          </svg>\r\n        </div>\r\n      </Label>\r\n      <Label {...labelProps}>{props.children}</Label>\r\n    </div>\r\n  )\r\n}\r\n\r\nRadio.displayName = 'Actify.Radio'\r\nexport { Radio }\r\n"
  },
  {
    "path": "packages/actify/src/components/Radio/RadioGroup.tsx",
    "content": "import { AriaRadioGroupProps, useRadioGroup } from 'react-aria'\r\nimport { RadioGroupState, useRadioGroupState } from 'react-stately'\r\n\r\nimport { Label } from '../Label'\r\nimport React from 'react'\r\nimport { StyleProps } from '../../utils'\r\nimport clsx from 'clsx'\r\nimport styles from './radio-group.module.css'\r\n\r\nexport const RadioGroupContext = React.createContext<RadioGroupState | {}>({})\r\n\r\ninterface RadioGroupProps extends AriaRadioGroupProps, StyleProps {\r\n  children?: React.ReactNode\r\n}\r\n\r\nconst RadioGroup = (props: RadioGroupProps) => {\r\n  const {\r\n    style,\r\n    className,\r\n    description,\r\n    errorMessage,\r\n    orientation = 'vertical'\r\n  } = props\r\n  const state = useRadioGroupState(props)\r\n  const { radioGroupProps, labelProps, descriptionProps, errorMessageProps } =\r\n    useRadioGroup({ ...props, orientation }, state)\r\n\r\n  return (\r\n    <div\r\n      {...radioGroupProps}\r\n      style={style}\r\n      className={clsx(styles['radio-group'], className)}\r\n    >\r\n      {props.label && <Label {...labelProps}>{props.label}</Label>}\r\n      <RadioGroupContext value={state}>{props.children}</RadioGroupContext>\r\n      {description && (\r\n        <div {...descriptionProps} className={styles['description']}>\r\n          {description}\r\n        </div>\r\n      )}\r\n      {errorMessage && state.isInvalid && (\r\n        <div {...errorMessageProps} className={styles['error-message']}>\r\n          <>{errorMessage}</>\r\n        </div>\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { RadioGroup }\r\n"
  },
  {
    "path": "packages/actify/src/components/Radio/index.ts",
    "content": "export { Radio } from './Radio'\nexport { RadioGroup } from './RadioGroup'\n"
  },
  {
    "path": "packages/actify/src/components/Radio/radio-group.module.css",
    "content": ".radio-group {\n  display: flex;\n}\n.radio-group[aria-orientation='horizontal'] {\n  gap: 14px;\n  align-items: center;\n}\n.radio-group[aria-orientation='vertical'] {\n  flex-direction: column;\n}\n.description {\n  font-size: 12px;\n}\n.error-message {\n  font-size: 12px;\n  color: var(--md-sys-color-error);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Radio/radio.module.css",
    "content": ".radio-wrapper {\n  gap: 8px;\n  height: 48px;\n  display: inline-flex;\n  align-items: center;\n}\n.radio {\n  outline: none;\n  display: inline-flex;\n  height: var(--md-radio-icon-size, 20px);\n  position: relative;\n  vertical-align: top;\n  width: var(--md-radio-icon-size, 20px);\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  cursor: pointer;\n  --md-ripple-hover-color: var(\n    --md-radio-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(--md-radio-hover-state-layer-opacity, 0.08);\n  --md-ripple-pressed-color: var(\n    --md-radio-pressed-state-layer-color,\n    var(--md-sys-color-primary)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-radio-pressed-state-layer-opacity,\n    0.12\n  );\n}\n.container {\n  display: flex;\n  height: 100%;\n  place-content: center;\n  place-items: center;\n  width: 100%;\n}\n.checked .icon {\n  fill: var(--md-radio-selected-icon-color, var(--md-sys-color-primary));\n}\n.icon {\n  fill: var(--md-radio-icon-color, var(--md-sys-color-on-surface-variant));\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  position: absolute;\n}\n.outer.circle {\n  transition: fill 50ms linear;\n}\n.checked .inner.circle {\n  animation: 300ms cubic-bezier(0.05, 0.7, 0.1, 1) 0s 1 normal none running\n    inner-circle-grow;\n  opacity: 1;\n}\n.inner.circle {\n  opacity: 0;\n  transform-origin: center;\n  transition: opacity 50ms linear;\n}\n.input {\n  appearance: none;\n  outline: none;\n  height: 48px;\n  margin: 0;\n  position: absolute;\n  width: 48px;\n  cursor: inherit;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Ripple/Ripple.tsx",
    "content": "'use client'\r\n\r\nimport React, { useEffect, useId, useRef, useState } from 'react'\r\n\r\nimport { EASING } from './../../animations'\r\nimport clsx from 'clsx'\r\nimport styles from './ripple.module.css'\r\nimport { useAttachable } from './../../hooks'\r\n\r\nconst TOUCH_DELAY_MS = 150\r\nconst PRESS_GROW_MS = 450\r\nconst MINIMUM_PRESS_MS = 225\r\nconst INITIAL_ORIGIN_SCALE = 0.2\r\nconst PADDING = 10\r\nconst SOFT_EDGE_MINIMUM_SIZE = 75\r\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35\r\nconst PRESS_PSEUDO = '::after'\r\nconst ANIMATION_FILL = 'forwards'\r\n\r\nenum State {\r\n  /**\r\n   * Initial state of the control, no touch in progress.\r\n   *\r\n   * Transitions:\r\n   *   - on touch down: transition to `TOUCH_DELAY`.\r\n   *   - on mouse down: transition to `WAITING_FOR_CLICK`.\r\n   */\r\n  INACTIVE,\r\n  /**\r\n   * Touch down has been received, waiting to determine if it's a swipe or\r\n   * scroll.\r\n   *\r\n   * Transitions:\r\n   *   - on touch up: begin press; transition to `WAITING_FOR_CLICK`.\r\n   *   - on cancel: transition to `INACTIVE`.\r\n   *   - after `TOUCH_DELAY_MS`: begin press; transition to `HOLDING`.\r\n   */\r\n  TOUCH_DELAY,\r\n  /**\r\n   * A touch has been deemed to be a press\r\n   *\r\n   * Transitions:\r\n   *  - on up: transition to `WAITING_FOR_CLICK`.\r\n   */\r\n  HOLDING,\r\n  /**\r\n   * The user touch has finished, transition into rest state.\r\n   *\r\n   * Transitions:\r\n   *   - on click end press; transition to `INACTIVE`.\r\n   */\r\n  WAITING_FOR_CLICK\r\n}\r\n\r\nconst EVENTS = [\r\n  'click',\r\n  'keydown',\r\n  'contextmenu',\r\n  'pointercancel',\r\n  'pointerdown',\r\n  'pointerenter',\r\n  'pointerleave',\r\n  'pointerup'\r\n]\r\n\r\ninterface RippleProps extends React.ComponentProps<'label'> {\r\n  disabled?: boolean\r\n}\r\n\r\nconst Ripple = (props: RippleProps) => {\r\n  const { id, disabled = false, style, className } = props\r\n  const rippleId = id || `actify-ripple${useId()}`\r\n\r\n  const [hovered, setHovered] = useState(false)\r\n  const [pressed, setPressed] = useState(false)\r\n\r\n  const ref = useRef<HTMLLabelElement>(null)\r\n  const control = useAttachable(ref)\r\n  const state = useRef(State.INACTIVE)\r\n  const rippleSize = useRef('')\r\n  const rippleScale = useRef('')\r\n  const initialSize = useRef(0)\r\n  const growAnimation = useRef<Animation>(null)\r\n  const rippleStartEvent = useRef<PointerEvent>(null)\r\n  const checkBoundsAfterContextMenu = useRef(false)\r\n\r\n  const isTouch = ({ pointerType }: PointerEvent) => {\r\n    return pointerType === 'touch'\r\n  }\r\n\r\n  const inBounds = ({ x, y }: PointerEvent) => {\r\n    const { top, left, bottom, right } = ref.current!.getBoundingClientRect()\r\n    return x >= left && x <= right && y >= top && y <= bottom\r\n  }\r\n\r\n  const determineRippleSize = () => {\r\n    const { height, width } = ref.current!.getBoundingClientRect()\r\n    const maxDim = Math.max(height, width)\r\n    const softEdgeSize = Math.max(\r\n      SOFT_EDGE_CONTAINER_RATIO * maxDim,\r\n      SOFT_EDGE_MINIMUM_SIZE\r\n    )\r\n\r\n    const _initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE)\r\n\r\n    const hypotenuse = Math.sqrt(width ** 2 + height ** 2)\r\n    const maxRadius = hypotenuse + PADDING\r\n\r\n    initialSize.current = _initialSize\r\n    rippleScale.current = `${(maxRadius + softEdgeSize) / _initialSize}`\r\n    rippleSize.current = `${initialSize.current}px`\r\n  }\r\n\r\n  const getNormalizedPointerEventCoords = (\r\n    pointerEvent: PointerEvent\r\n  ): {\r\n    x: number\r\n    y: number\r\n  } => {\r\n    const { scrollX, scrollY } = window\r\n    const { left, top } = ref.current!.getBoundingClientRect()\r\n    const documentX = scrollX + left\r\n    const documentY = scrollY + top\r\n    const { pageX, pageY } = pointerEvent\r\n    return { x: pageX - documentX, y: pageY - documentY }\r\n  }\r\n\r\n  const getTranslationCoordinates = (positionEvent?: Event | null) => {\r\n    const { height, width } = ref.current!.getBoundingClientRect()\r\n    // end in the center\r\n    const endPoint = {\r\n      x: (width - initialSize.current) / 2,\r\n      y: (height - initialSize.current) / 2\r\n    }\r\n\r\n    let startPoint\r\n    if (positionEvent instanceof PointerEvent) {\r\n      startPoint = getNormalizedPointerEventCoords(positionEvent)\r\n    } else {\r\n      startPoint = {\r\n        x: width / 2,\r\n        y: height / 2\r\n      }\r\n    }\r\n\r\n    // center around start point\r\n    startPoint = {\r\n      x: startPoint.x - initialSize.current / 2,\r\n      y: startPoint.y - initialSize.current / 2\r\n    }\r\n\r\n    return { startPoint, endPoint }\r\n  }\r\n\r\n  const startPressAnimation = (positionEvent?: Event | null) => {\r\n    if (!ref.current) {\r\n      return\r\n    }\r\n    setPressed(true)\r\n    growAnimation.current?.cancel()\r\n    determineRippleSize()\r\n    const { startPoint, endPoint } = getTranslationCoordinates(positionEvent)\r\n    const translateStart = `${startPoint.x}px, ${startPoint.y}px`\r\n    const translateEnd = `${endPoint.x}px, ${endPoint.y}px`\r\n\r\n    growAnimation.current = ref.current?.animate(\r\n      {\r\n        top: [0, 0],\r\n        left: [0, 0],\r\n        height: [rippleSize.current, rippleSize.current],\r\n        width: [rippleSize.current, rippleSize.current],\r\n        transform: [\r\n          `translate(${translateStart}) scale(1)`,\r\n          `translate(${translateEnd}) scale(${rippleScale.current})`\r\n        ]\r\n      },\r\n      {\r\n        pseudoElement: PRESS_PSEUDO,\r\n        duration: PRESS_GROW_MS,\r\n        easing: EASING.STANDARD,\r\n        fill: ANIMATION_FILL\r\n      }\r\n    )\r\n  }\r\n\r\n  const endPressAnimation = async () => {\r\n    rippleStartEvent.current = null\r\n    state.current = State.INACTIVE\r\n    const animation = growAnimation.current\r\n    let pressAnimationPlayState = Infinity\r\n    if (typeof animation?.currentTime === 'number') {\r\n      pressAnimationPlayState = animation.currentTime\r\n    } else if (animation?.currentTime) {\r\n      pressAnimationPlayState = animation.currentTime.to('ms').value\r\n    }\r\n    if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\r\n      setPressed(false)\r\n      return\r\n    }\r\n    await new Promise((_) =>\r\n      setTimeout(_, MINIMUM_PRESS_MS - pressAnimationPlayState)\r\n    )\r\n    if (growAnimation.current !== animation) {\r\n      // A new press animation was started. The old animation was canceled and\r\n      // should not finish the pressed state.\r\n      return\r\n    }\r\n    setPressed(false)\r\n  }\r\n\r\n  const shouldReactToEvent = (event: PointerEvent) => {\r\n    if (disabled || !event.isPrimary) {\r\n      return false\r\n    }\r\n    if (\r\n      rippleStartEvent.current &&\r\n      rippleStartEvent.current.pointerId !== event.pointerId\r\n    ) {\r\n      return false\r\n    }\r\n    if (event.type === 'pointerenter' || event.type === 'pointerleave') {\r\n      return !isTouch(event)\r\n    }\r\n    const isPrimaryButton = event.buttons === 1\r\n    return isTouch(event) || isPrimaryButton\r\n  }\r\n\r\n  const handleClick = () => {\r\n    if (state.current === State.WAITING_FOR_CLICK) {\r\n      endPressAnimation()\r\n      return\r\n    }\r\n    if (state.current === State.INACTIVE) {\r\n      // keyboard synthesized click event\r\n      startPressAnimation()\r\n      endPressAnimation()\r\n    }\r\n  }\r\n\r\n  const handleContextmenu = () => {\r\n    if (disabled) {\r\n      return\r\n    }\r\n    checkBoundsAfterContextMenu.current = true\r\n    endPressAnimation()\r\n  }\r\n\r\n  const handlePointercancel = (event: PointerEvent) => {\r\n    if (!shouldReactToEvent(event)) {\r\n      return\r\n    }\r\n    endPressAnimation()\r\n  }\r\n\r\n  const handlePointerdown = async (event: PointerEvent) => {\r\n    if (!shouldReactToEvent(event)) {\r\n      return\r\n    }\r\n    rippleStartEvent.current = event\r\n    if (!isTouch(event)) {\r\n      state.current = State.WAITING_FOR_CLICK\r\n      startPressAnimation(event)\r\n      return\r\n    }\r\n    // after a longpress contextmenu event, an extra `pointerdown` can be\r\n    // dispatched to the pressed element. Check that the down is within\r\n    // bounds of the element in this case.\r\n    if (checkBoundsAfterContextMenu.current && !inBounds(event)) {\r\n      return\r\n    }\r\n    checkBoundsAfterContextMenu.current = false\r\n\r\n    // Wait for a hold after touch delay\r\n    state.current = State.TOUCH_DELAY\r\n    await new Promise((resolve) => {\r\n      setTimeout(resolve, TOUCH_DELAY_MS)\r\n    })\r\n    if (state.current !== State.TOUCH_DELAY) {\r\n      return\r\n    }\r\n    state.current = State.HOLDING\r\n    startPressAnimation(event)\r\n  }\r\n\r\n  const handlePointerenter = (event: PointerEvent) => {\r\n    if (!shouldReactToEvent(event)) {\r\n      return\r\n    }\r\n    setHovered(true)\r\n  }\r\n\r\n  const handlePointerleave = (event: PointerEvent) => {\r\n    if (!shouldReactToEvent(event)) {\r\n      return\r\n    }\r\n    setHovered(false)\r\n    // release a held mouse or pen press that moves outside the element\r\n    if (state.current !== State.INACTIVE) {\r\n      endPressAnimation()\r\n    }\r\n  }\r\n\r\n  const handlePointerup = (event: PointerEvent) => {\r\n    if (!shouldReactToEvent(event)) {\r\n      return\r\n    }\r\n    if (state.current === State.HOLDING) {\r\n      state.current = State.WAITING_FOR_CLICK\r\n      return\r\n    }\r\n    if (state.current === State.TOUCH_DELAY) {\r\n      state.current = State.WAITING_FOR_CLICK\r\n      startPressAnimation(rippleStartEvent.current)\r\n      return\r\n    }\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (control) {\r\n      for (const e of EVENTS) {\r\n        control.addEventListener(e, async (event) => {\r\n          if (\r\n            event.type != 'keydown' ||\r\n            // @ts-ignore\r\n            event.code == 'Enter' ||\r\n            // @ts-ignore\r\n            event.code == 'Space'\r\n          ) {\r\n            switch (event.type) {\r\n              case 'click':\r\n              case 'keydown':\r\n                handleClick()\r\n                break\r\n              case 'contextmenu':\r\n                handleContextmenu()\r\n                break\r\n              case 'pointercancel':\r\n                handlePointercancel(event as PointerEvent)\r\n                break\r\n              case 'pointerdown':\r\n                await handlePointerdown(event as PointerEvent)\r\n                break\r\n              case 'pointerenter':\r\n                handlePointerenter(event as PointerEvent)\r\n                break\r\n              case 'pointerleave':\r\n                handlePointerleave(event as PointerEvent)\r\n                break\r\n              case 'pointerup':\r\n                handlePointerup(event as PointerEvent)\r\n                break\r\n              default:\r\n                break\r\n            }\r\n          }\r\n        })\r\n      }\r\n    }\r\n  }, [ref.current, disabled])\r\n\r\n  return (\r\n    <label\r\n      ref={ref}\r\n      style={style}\r\n      htmlFor={rippleId}\r\n      aria-hidden=\"true\"\r\n      className={clsx(\r\n        styles['ripple'],\r\n        hovered && styles['hovered'],\r\n        pressed && styles['pressed'],\r\n        className\r\n      )}\r\n    />\r\n  )\r\n}\r\n\r\nRipple.displayName = 'Actify.Ripple'\r\n\r\nexport { Ripple }\r\n"
  },
  {
    "path": "packages/actify/src/components/Ripple/index.ts",
    "content": "export { Ripple } from './Ripple'\r\n"
  },
  {
    "path": "packages/actify/src/components/Ripple/ripple.module.css",
    "content": ".ripple {\n  inset: 0;\n  cursor: inherit;\n  overflow: hidden;\n  position: absolute;\n  border-radius: inherit;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  &:before,\n  &:after {\n    content: '';\n    opacity: 0;\n    position: absolute;\n  }\n  &:before {\n    background-color: var(\n      --md-ripple-hover-color,\n      var(--md-sys-color-on-surface)\n    );\n    inset: 0;\n    transition:\n      opacity 15ms linear,\n      background-color 15ms linear;\n  }\n  &:after {\n    background: radial-gradient(\n      closest-side,\n      var(--md-ripple-pressed-color, var(--md-sys-color-on-surface))\n        max(100% - 70px, 65%),\n      transparent 100%\n    );\n    transform-origin: center center;\n    transition: opacity 375ms linear;\n  }\n  &.hovered:before {\n    background-color: var(\n      --md-ripple-hover-color,\n      var(--md-sys-color-on-surface)\n    );\n    opacity: var(--md-ripple-hover-opacity, 0.08);\n  }\n  &.pressed:after {\n    opacity: var(--md-ripple-pressed-opacity, 0.12);\n    transition-duration: 105ms;\n  }\n}\n"
  },
  {
    "path": "packages/actify/src/components/SegmentedButton/SegmentedButton.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  AriaButtonProps,\r\n  mergeProps,\r\n  useButton,\r\n  useFocusRing\r\n} from 'react-aria'\r\n\r\nimport { FocusRing } from '../FocusRing'\r\nimport React from 'react'\r\nimport { Ripple } from '../Ripple'\r\nimport clsx from 'clsx'\r\nimport styles from './segmented-buttont.module.css'\r\n\r\ntype SegmentedButtonProps = {\r\n  label?: string\r\n  selected?: boolean\r\n  icon?: React.ReactNode\r\n  noCheckmark?: boolean\r\n} & Omit<React.ComponentProps<'button'>, 'children'> &\r\n  AriaButtonProps\r\n\r\nconst SegmentedButton = (props: SegmentedButtonProps) => {\r\n  const { id, icon, label, disabled, selected, className, noCheckmark } = props\r\n\r\n  const buttonRef = React.useRef(null)\r\n  const { buttonProps } = useButton(props, buttonRef)\r\n  const buttonId = id || `actify-segmented-button${React.useId()}`\r\n\r\n  const animState = React.useMemo(\r\n    () => (selected ? 'selecting' : 'deselecting'),\r\n    [selected]\r\n  )\r\n\r\n  const classes = clsx(\r\n    styles['segmented-button'],\r\n    icon && styles['with-icon'],\r\n    styles[animState],\r\n    selected ? styles['selected'] : styles['unselected'],\r\n    label ? styles['with-label'] : styles['without-label'],\r\n    noCheckmark ? styles['without-checkmark'] : styles['with-checkmark'],\r\n    className\r\n  )\r\n\r\n  const { focusProps, isFocusVisible } = useFocusRing()\r\n\r\n  return (\r\n    <div role=\"presentation\" className={styles['host']}>\r\n      <button\r\n        id={buttonId}\r\n        ref={buttonRef}\r\n        className={classes}\r\n        tabIndex={disabled ? -1 : 0}\r\n        {...mergeProps(buttonProps, focusProps)}\r\n      >\r\n        {isFocusVisible && <FocusRing />}\r\n        <Ripple id={buttonId} disabled={disabled} />\r\n        <span className={styles['outline']} />\r\n        <span className={styles['leading']} aria-hidden=\"true\">\r\n          <span className={styles['graphic']}>\r\n            <svg className={styles['checkmark']} viewBox=\"0 0 24 24\">\r\n              <path\r\n                fill=\"none\"\r\n                className={styles['checkmark-path']}\r\n                d=\"M1.73,12.91 8.1,19.28 22.79,4.59\"\r\n              />\r\n            </svg>\r\n            {label && (\r\n              <span className={styles['icon']} aria-hidden=\"true\">\r\n                {icon}\r\n              </span>\r\n            )}\r\n          </span>\r\n          {!label && (\r\n            <span className={styles['icon']} aria-hidden=\"true\">\r\n              {icon}\r\n            </span>\r\n          )}\r\n        </span>\r\n        <span className={styles['label-text']}>{label}</span>\r\n        <span className={styles['touch']} />\r\n      </button>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { SegmentedButton }\r\n"
  },
  {
    "path": "packages/actify/src/components/SegmentedButton/SegmentedButtonSet.tsx",
    "content": "import React from 'react'\r\n\r\ninterface SegmentedButtonSetProps extends React.ComponentProps<'div'> {}\r\nconst SegmentedButtonSet = (props: SegmentedButtonSetProps) => {\r\n  const { children, ...rest } = props\r\n\r\n  return (\r\n    <div {...rest} role=\"presentation\">\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { SegmentedButtonSet }\r\n"
  },
  {
    "path": "packages/actify/src/components/SegmentedButton/index.ts",
    "content": "export { SegmentedButton } from './SegmentedButton'\r\nexport { SegmentedButtonSet } from './SegmentedButtonSet'\r\n"
  },
  {
    "path": "packages/actify/src/components/SegmentedButton/segmented-buttont.module.css",
    "content": ".host {\n\t--_container-height: var(\n\t\t--md-outlined-segmented-button-container-height,\n\t\t40px\n\t);\n\t--_disabled-icon-color: var(\n\t\t--md-outlined-segmented-button-disabled-icon-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_disabled-label-text-color: var(\n\t\t--md-outlined-segmented-button-disabled-label-text-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_disabled-outline-color: var(\n\t\t--md-outlined-segmented-button-disabled-outline-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_hover-state-layer-opacity: var(\n\t\t--md-outlined-segmented-button-hover-state-layer-opacity,\n\t\t0.08\n\t);\n\t--_label-text-font: var(\n\t\t--md-outlined-segmented-button-label-text-font,\n\t\tvar(\n\t\t\t--md-sys-typescale-label-large-font,\n\t\t\tvar(--md-ref-typeface-plain, Roboto)\n\t\t)\n\t);\n\t--_label-text-line-height: var(\n\t\t--md-outlined-segmented-button-label-text-line-height,\n\t\tvar(--md-sys-typescale-label-large-line-height, 1.25rem)\n\t);\n\t--_label-text-size: var(\n\t\t--md-outlined-segmented-button-label-text-size,\n\t\tvar(--md-sys-typescale-label-large-size, 0.875rem)\n\t);\n\t--_label-text-weight: var(\n\t\t--md-outlined-segmented-button-label-text-weight,\n\t\tvar(\n\t\t\t--md-sys-typescale-label-large-weight,\n\t\t\tvar(--md-ref-typeface-weight-medium, 500)\n\t\t)\n\t);\n\t--_outline-color: var(\n\t\t--md-outlined-segmented-button-outline-color,\n\t\tvar(--md-sys-color-outline, #79747e)\n\t);\n\t--_pressed-state-layer-opacity: var(\n\t\t--md-outlined-segmented-button-pressed-state-layer-opacity,\n\t\t0.12\n\t);\n\t--_selected-container-color: var(\n\t\t--md-outlined-segmented-button-selected-container-color,\n\t\tvar(--md-sys-color-secondary-container, #e8def8)\n\t);\n\t--_selected-focus-icon-color: var(\n\t\t--md-outlined-segmented-button-selected-focus-icon-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-focus-label-text-color: var(\n\t\t--md-outlined-segmented-button-selected-focus-label-text-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-hover-icon-color: var(\n\t\t--md-outlined-segmented-button-selected-hover-icon-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-hover-label-text-color: var(\n\t\t--md-outlined-segmented-button-selected-hover-label-text-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-hover-state-layer-color: var(\n\t\t--md-outlined-segmented-button-selected-hover-state-layer-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-label-text-color: var(\n\t\t--md-outlined-segmented-button-selected-label-text-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-pressed-icon-color: var(\n\t\t--md-outlined-segmented-button-selected-pressed-icon-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-pressed-label-text-color: var(\n\t\t--md-outlined-segmented-button-selected-pressed-label-text-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_selected-pressed-state-layer-color: var(\n\t\t--md-outlined-segmented-button-selected-pressed-state-layer-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_shape: var(\n\t\t--md-outlined-segmented-button-shape,\n\t\tvar(--md-sys-shape-corner-full, 9999px)\n\t);\n\t--_unselected-focus-icon-color: var(\n\t\t--md-outlined-segmented-button-unselected-focus-icon-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-focus-label-text-color: var(\n\t\t--md-outlined-segmented-button-unselected-focus-label-text-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-hover-icon-color: var(\n\t\t--md-outlined-segmented-button-unselected-hover-icon-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-hover-label-text-color: var(\n\t\t--md-outlined-segmented-button-unselected-hover-label-text-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-hover-state-layer-color: var(\n\t\t--md-outlined-segmented-button-unselected-hover-state-layer-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-label-text-color: var(\n\t\t--md-outlined-segmented-button-unselected-label-text-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-pressed-icon-color: var(\n\t\t--md-outlined-segmented-button-unselected-pressed-icon-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-pressed-label-text-color: var(\n\t\t--md-outlined-segmented-button-unselected-pressed-label-text-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_unselected-pressed-state-layer-color: var(\n\t\t--md-outlined-segmented-button-unselected-pressed-state-layer-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_icon-size: var(--md-outlined-segmented-button-icon-size, 18px);\n\t--_selected-icon-color: var(\n\t\t--md-outlined-segmented-button-selected-icon-color,\n\t\tvar(--md-sys-color-on-secondary-container, #1d192b)\n\t);\n\t--_unselected-icon-color: var(\n\t\t--md-outlined-segmented-button-unselected-icon-color,\n\t\tvar(--md-sys-color-on-surface, #1d1b20)\n\t);\n\t--_shape-start-start: var(\n\t\t--md-outlined-segmented-button-shape-start-start,\n\t\tvar(--md-sys-shape-corner-full, 9999px)\n\t);\n\t--_shape-start-end: var(\n\t\t--md-outlined-segmented-button-shape-start-end,\n\t\tvar(--md-sys-shape-corner-full, 9999px)\n\t);\n\t--_shape-end-end: var(\n\t\t--md-outlined-segmented-button-shape-end-end,\n\t\tvar(--md-sys-shape-corner-full, 9999px)\n\t);\n\t--_shape-end-start: var(\n\t\t--md-outlined-segmented-button-shape-end-start,\n\t\tvar(--md-sys-shape-corner-full, 9999px)\n\t);\n\t--_spacing-leading: var(--md-outlined-segmented-button-spacing-leading, 12px);\n\t--_spacing-trailing: var(\n\t\t--md-outlined-segmented-button-spacing-trailing,\n\t\t12px\n\t);\n\tdisplay: inline-flex;\n\toutline: none;\n\t-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\n.segmented-button {\n\tcursor: pointer;\n\t--md-ripple-hover-color: var(--_unselected-hover-state-layer-color);\n\t--md-ripple-hover-opacity: var(--_hover-state-layer-opacity);\n\t--md-ripple-pressed-color: var(--_unselected-pressed-state-layer-color);\n\t--md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity);\n\talign-items: center;\n\tbackground: rgba(0, 0, 0, 0);\n\tborder: none;\n\tdisplay: flex;\n\tflex: 1;\n\tjustify-content: center;\n\toutline: none;\n\tposition: relative;\n\tvertical-align: middle;\n\tpadding-inline-start: var(--_spacing-leading);\n\tpadding-inline-end: var(--_spacing-trailing);\n\ttext-transform: inherit;\n\t&.selected {\n\t\tbackground-color: var(--_selected-container-color);\n\t\t--md-ripple-hover-color: var(--_selected-hover-state-layer-color);\n\t\t--md-ripple-hover-opacity: var(--_hover-state-layer-opacity);\n\t\t--md-ripple-pressed-color: var(--_selected-pressed-state-layer-color);\n\t\t--md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity);\n\t}\n\t&.unselected {\n\t\t--md-ripple-hover-color: var(--_unselected-hover-state-layer-color);\n\t\t--md-ripple-hover-opacity: var(--_hover-state-layer-opacity);\n\t\t--md-ripple-pressed-color: var(--_unselected-pressed-state-layer-color);\n\t\t--md-ripple-pressed-opacity: var(--_pressed-state-layer-opacity);\n\t}\n}\n\n.outline {\n\tborder-color: var(--_outline-color);\n\tborder-radius: inherit;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tinset: 0px -0.5px;\n\tpointer-events: none;\n\tposition: absolute;\n}\n.leading {\n\tdisplay: inline-flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n}\n.graphic {\n\toverflow: hidden;\n\tposition: relative;\n\theight: var(--_icon-size);\n\twidth: var(--_icon-size);\n\tfont-size: var(--_icon-size);\n\tdisplay: inline-flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\ttransition: width 150ms cubic-bezier(0.4, 0, 0.2, 1);\n}\n.unselected .graphic {\n\twidth: 0;\n}\n.with-label .graphic,\n.selected .graphic {\n\twidth: calc(var(--_icon-size) + 8px);\n}\n\n.checkmark {\n\theight: var(--_icon-size);\n\twidth: var(--_icon-size);\n\tfont-size: var(--_icon-size);\n\ttransition: opacity 50ms ease-out;\n}\n.with-label .checkmark {\n\tdisplay: inline-flex;\n\tposition: absolute;\n}\n.unselected .checkmark {\n\topacity: 0;\n}\n.selected .checkmark {\n\tstroke: var(--_selected-icon-color);\n}\n\n@keyframes md3-segmented-button-simple-fade-out {\n\t0% {\n\t\topacity: 1;\n\t}\n\t100% {\n\t\topacity: 0;\n\t}\n}\n.deselecting .checkmark {\n\tanimation: md3-segmented-button-simple-fade-out;\n\tanimation-duration: 50ms;\n\tanimation-timing-function: linear;\n\tanimation-fill-mode: forwards;\n}\n\n.checkmark-path {\n\tstroke-width: 2px;\n\tstroke-dasharray: 29.7833;\n}\n@keyframes md3-segmented-button-checkmark-selection-draw-in {\n\t0% {\n\t\tstroke-dashoffset: 29.7833385;\n\t}\n\t100% {\n\t\tstroke-dashoffset: 0;\n\t}\n}\n.selecting .checkmark-path {\n\tstroke-dashoffset: 29.7833385;\n\tanimation: md3-segmented-button-checkmark-selection-draw-in;\n\tanimation-duration: 150ms;\n\tanimation-delay: 50ms;\n\tanimation-fill-mode: forwards;\n\tanimation-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n.icon {\n\tdisplay: flex;\n\t--md-icon-size: 18px;\n\theight: var(--_icon-size);\n\twidth: var(--_icon-size);\n\tfont-size: var(--_icon-size);\n}\n.selected.with-label .icon {\n\topacity: 0;\n}\n.label-text {\n\tfont-family: var(--_label-text-font);\n\tfont-size: var(--_label-text-size);\n\tline-height: var(--_label-text-line-height);\n\tfont-weight: var(--_label-text-weight);\n}\n.selected .label-text {\n\tcolor: var(--_selected-label-text-color);\n}\n.unselected .label-text {\n\tcolor: var(--_unselected-label-text-color);\n}\n.touch {\n\tposition: absolute;\n\ttop: 50%;\n\theight: 48px;\n\tleft: 50%;\n\twidth: 100%;\n\ttransform: translate(-50%, -50%);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Select/FilledField.tsx",
    "content": "'use client'\n\nimport {\n  AriaButtonProps,\n  mergeProps,\n  useButton,\n  useFocusRing,\n  useHover\n} from 'react-aria'\n\nimport React from 'react'\nimport clsx from 'clsx'\nimport styles from './filled-field.module.css'\n\ntype OutlinedFieldProps = React.ComponentProps<'button'> & AriaButtonProps\n\nconst FilledField = (props: OutlinedFieldProps) => {\n  const { ref, children } = props\n\n  const buttonRef = React.useRef<HTMLButtonElement>(null)\n  const { buttonProps } = useButton(props, buttonRef)\n  const { hoverProps, isHovered } = useHover(props)\n  const { focusProps, isFocused } = useFocusRing()\n\n  return (\n    <div className={styles['filled-field']}>\n      {/* field */}\n      <div className={styles['field']}>\n        {/* container-overflow */}\n        <div className={styles['container-overflow']}>\n          {/* trigger button */}\n          <button\n            ref={ref || buttonRef}\n            className={styles['trigger-button']}\n            {...mergeProps(buttonProps, hoverProps, focusProps)}\n          >\n            {children}\n          </button>\n          {/* background */}\n          <span\n            className={clsx(\n              styles['background'],\n              isHovered && styles['hovered']\n            )}\n          />\n          {/* state-layer */}\n          <span className={styles['state-layer']} />\n          {/* active-indicator */}\n          <span\n            className={clsx(\n              styles['active-indicator'],\n              isFocused && styles['focused']\n            )}\n          />\n        </div>\n      </div>\n    </div>\n  )\n}\n\nexport { FilledField }\n"
  },
  {
    "path": "packages/actify/src/components/Select/OutlinedField.tsx",
    "content": "'use client'\n\nimport {\n  AriaButtonProps,\n  mergeProps,\n  useButton,\n  useFocusRing,\n  useHover\n} from 'react-aria'\n\nimport React from 'react'\nimport clsx from 'clsx'\nimport styles from './outlined-field.module.css'\n\ntype OutlinedFieldProps = React.ComponentProps<'button'> & AriaButtonProps\n\nconst OutlinedField = (props: OutlinedFieldProps) => {\n  const { ref, children } = props\n\n  const buttonRef = React.useRef<HTMLButtonElement>(null)\n  const { buttonProps } = useButton(props, buttonRef)\n  const { hoverProps, isHovered } = useHover(props)\n  const { focusProps, isFocused } = useFocusRing()\n\n  return (\n    <div className={styles['outlined-field']}>\n      {/* outline */}\n      <span\n        className={clsx(\n          styles['outline'],\n          isHovered && styles['hovered'],\n          isFocused && styles['focused']\n        )}\n      />\n\n      {/* trigger button */}\n      <button\n        ref={ref || buttonRef}\n        className={styles['trigger-button']}\n        {...mergeProps(buttonProps, hoverProps, focusProps)}\n      >\n        {children}\n      </button>\n    </div>\n  )\n}\n\nexport { OutlinedField }\n"
  },
  {
    "path": "packages/actify/src/components/Select/Select.tsx",
    "content": "import { AriaSelectOptions, HiddenSelect, Placement, useSelect } from 'react-aria'\r\nimport { SelectStateOptions, useSelectState } from 'react-stately'\r\n\r\nimport { FilledField } from './FilledField'\r\nimport { Label } from '../Label/Label'\r\nimport { ListBox } from '../ListBox'\r\nimport { OutlinedField } from './OutlinedField'\r\nimport { Popover, PopoverProps } from '../Popover/Popover'\r\nimport React from 'react'\r\nimport { TrailingIcon } from './TrailingIcon'\r\nimport clsx from 'clsx'\r\nimport styles from './select.module.css'\r\nimport { useResizeObserver } from '../../hooks'\r\n\r\ninterface SelectProps<T> extends AriaSelectOptions<T>, SelectStateOptions<T> {\r\n  className?: string\r\n  style?: React.CSSProperties\r\n  leadingIcon?: React.ReactNode\r\n  trailingIcon?: React.ReactNode\r\n  popoverProps?: Omit<PopoverProps, 'state'>\r\n  variant?: 'filled' | 'outlined'\r\n}\r\n\r\nconst Select = <T extends object>(props: SelectProps<T>) => {\r\n  const state = useSelectState(props)\r\n  const ref = React.useRef<HTMLButtonElement>(null)\r\n\r\n  const { triggerProps, valueProps, menuProps } = useSelect(props, state, ref)\r\n\r\n  const { variant = 'filled', popoverProps } = props;\r\n\r\n  let Tag = FilledField\r\n  if (variant == 'filled') {\r\n    Tag = FilledField\r\n  }\r\n  if (variant == 'outlined') {\r\n    Tag = OutlinedField\r\n  }\r\n\r\n  const referenceWidth = useResizeObserver(ref as React.RefObject<HTMLElement>)\r\n\r\n  return (\r\n    <div\r\n      style={props.style}\r\n      className={clsx(styles['select'], props.className)}\r\n    >\r\n      <HiddenSelect\r\n        state={state}\r\n        triggerRef={ref}\r\n        name={props.name}\r\n        label={props.label}\r\n        isDisabled={props.isDisabled}\r\n      />\r\n\r\n      <Tag ref={ref} {...triggerProps}>\r\n        <Label {...valueProps} style={{ lineHeight: '24px' }}>\r\n          {state.selectedItem ? state.selectedItem.rendered : props.label}\r\n        </Label>\r\n        <TrailingIcon isOpen={state.isOpen} />\r\n      </Tag>\r\n\r\n      {state.isOpen && (\r\n        <Popover\r\n          offset={2}\r\n          state={state}\r\n          triggerRef={ref}\r\n          referenceWidth={referenceWidth}\r\n          placement={popoverProps?.placement ?? 'bottom start'}\r\n          {...popoverProps}\r\n        >\r\n          <ListBox {...menuProps} state={state} />\r\n        </Popover>\r\n      )}\r\n    </div>\r\n  )\r\n}\r\n\r\nSelect.displayName = 'Actify.Select'\r\n\r\nexport { Select }\r\n"
  },
  {
    "path": "packages/actify/src/components/Select/SelectOption.tsx",
    "content": "export { Item as SelectOption } from 'react-stately'\r\n"
  },
  {
    "path": "packages/actify/src/components/Select/TrailingIcon.tsx",
    "content": "import { Icon } from '../Icon'\nimport clsx from 'clsx'\nimport styles from './trailingIcon.module.css'\n\nexport const TrailingIcon = ({ isOpen }: { isOpen: boolean }) => {\n  return (\n    <Icon className={clsx(styles['trailing-icon'], isOpen && styles['open'])}>\n      Arrow_Drop_Down\n    </Icon>\n  )\n}\n"
  },
  {
    "path": "packages/actify/src/components/Select/filled-field.module.css",
    "content": ".filled-field {\n  position: relative;\n  min-height: 56px;\n  min-width: 210px;\n  display: inline-flex;\n  justify-content: center;\n  flex-direction: column;\n  --_container-color: var(\n    --md-filled-field-container-color,\n    var(--md-sys-color-surface-container-highest)\n  );\n  --_active-indicator-color: var(\n    --md-filled-field-active-indicator-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_active-indicator-height: var(\n    --md-filled-field-active-indicator-height,\n    1px\n  );\n  --_focus-active-indicator-color: var(\n    --md-filled-field-focus-active-indicator-color,\n    var(--md-sys-color-primary)\n  );\n  --_focus-active-indicator-height: var(\n    --md-filled-field-focus-active-indicator-height,\n    3px\n  );\n  --_content-space: var(--md-outlined-field-content-space, 16px);\n  --_with-trailing-content-trailing-space: var(\n    --md-outlined-field-with-trailing-content-trailing-space,\n    12px\n  );\n  --_outline-label-padding: var(--md-outlined-field-outline-label-padding, 4px);\n  --_leading-space: var(--md-outlined-field-leading-space, 16px);\n  --_container-shape-start-start: var(\n    --md-filled-field-container-shape-start-start,\n    var(\n      --md-filled-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_container-shape-start-end: var(\n    --md-filled-field-container-shape-start-end,\n    var(\n      --md-filled-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_container-shape-end-end: var(\n    --md-filled-field-container-shape-end-end,\n    var(--md-filled-field-container-shape, var(--md-sys-shape-corner-none, 0px))\n  );\n  --_container-shape-end-start: var(\n    --md-filled-field-container-shape-end-start,\n    var(--md-filled-field-container-shape, var(--md-sys-shape-corner-none, 0px))\n  );\n\n  --_hover-state-layer-color: var(\n    --md-filled-field-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-filled-field-hover-state-layer-opacity,\n    0.08\n  );\n}\n.field {\n  display: flex;\n  flex: 1;\n  flex-direction: column;\n  writing-mode: horizontal-tb;\n  max-width: 100%;\n}\n.trigger-button {\n  z-index: 1;\n  width: 100%;\n  display: inline-flex;\n  align-items: center;\n  justify-content: space-between;\n  padding-inline-start: max(\n    var(--_leading-space),\n    max(var(--_container-shape-start-start), var(--_container-shape-end-start)) +\n      var(--_outline-label-padding)\n  );\n}\n\n.trigger-button:focus-visible {\n  outline: none;\n}\n\n.container-overflow {\n  border-start-start-radius: var(--_container-shape-start-start);\n  border-start-end-radius: var(--_container-shape-start-end);\n  border-end-end-radius: var(--_container-shape-end-end);\n  border-end-start-radius: var(--_container-shape-end-start);\n  display: flex;\n  height: 100%;\n  position: relative;\n}\n\n.background {\n  position: absolute;\n  inset: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  background: var(--_container-color);\n}\n\n.state-layer {\n  position: absolute;\n  inset: 0;\n  visibility: visible;\n}\n.filled-field:hover .state-layer {\n  background: var(--_hover-state-layer-color);\n  opacity: var(--_hover-state-layer-opacity);\n}\n\n.active-indicator {\n  inset: auto 0 0 0;\n  pointer-events: none;\n  position: absolute;\n  width: 100%;\n  z-index: 2;\n}\n.active-indicator::before,\n.active-indicator::after {\n  border-bottom: var(--_active-indicator-height) solid\n    var(--_active-indicator-color);\n  inset: auto 0 0 0;\n  content: '';\n  position: absolute;\n  width: 100%;\n}\n.active-indicator::after {\n  opacity: 0;\n  transition: opacity 150ms cubic-bezier(0.2, 0, 0, 1);\n  border-bottom-color: var(--_focus-active-indicator-color);\n  border-bottom-width: var(--_focus-active-indicator-height);\n}\n.focused.active-indicator:after {\n  opacity: 1;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Select/index.ts",
    "content": "export { Select } from './Select'\r\nexport { SelectOption } from './SelectOption'\r\n"
  },
  {
    "path": "packages/actify/src/components/Select/outlined-field.module.css",
    "content": ".outlined-field {\n  position: relative;\n  min-height: 56px;\n  min-width: 210px;\n  display: inline-flex;\n  justify-content: center;\n  flex-direction: column;\n  border-radius: 4px;\n  --_top-space: var(--md-filled-field-top-space, 16px);\n  --_bottom-space: var(--md-filled-field-bottom-space, 16px);\n  --_content-space: var(--md-outlined-field-content-space, 16px);\n  --_with-trailing-content-trailing-space: var(\n    --md-outlined-field-with-trailing-content-trailing-space,\n    12px\n  );\n  --_outline-label-padding: var(--md-outlined-field-outline-label-padding, 4px);\n  --_leading-space: var(--md-outlined-field-leading-space, 16px);\n  --_container-shape-start-start: var(\n    --md-outlined-field-container-shape-start-start,\n    var(\n      --md-outlined-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_container-shape-start-end: var(\n    --md-outlined-field-container-shape-start-end,\n    var(\n      --md-outlined-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_container-shape-end-end: var(\n    --md-outlined-field-container-shape-end-end,\n    var(\n      --md-outlined-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_container-shape-end-start: var(\n    --md-outlined-field-container-shape-end-start,\n    var(\n      --md-outlined-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_outline-color: var(\n    --md-outlined-field-outline-color,\n    var(--md-sys-color-outline, #79747e)\n  );\n  --_hover-outline-color: var(\n    --md-outlined-field-hover-outline-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_focus-outline-color: var(\n    --md-outlined-field-focus-outline-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_focus-outline-width: var(--md-outlined-field-focus-outline-width, 3px);\n}\n\n.outline {\n  position: absolute;\n  inset: 0;\n  z-index: 1;\n  border-width: 1px;\n  pointer-events: none;\n  border-radius: inherit;\n  border-color: var(--_outline-color);\n}\n.outline.hovered {\n  color: var(--_hover-outline-color);\n  border-color: var(--_hover-outline-color);\n}\n.outline.focused {\n  border-width: var(--_focus-outline-width);\n  color: var(--_focus-outline-color);\n  border-color: var(--_focus-outline-color);\n}\n\n.trigger-button {\n  padding-top: var(--_top-space);\n  padding-bottom: var(--_bottom-space);\n  display: inline-flex;\n  align-items: center;\n  justify-content: space-between;\n  padding-inline-start: max(\n    var(--_leading-space),\n    max(var(--_container-shape-start-start), var(--_container-shape-end-start)) +\n      var(--_outline-label-padding)\n  );\n}\n\n.trigger-button:focus-visible {\n  outline: none;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Select/select.module.css",
    "content": ".select {\n  width: 100%;\n  height: 56px;\n  outline: none;\n  min-width: inherit;\n  max-width: inherit;\n  display: inline-flex;\n  position: relative;\n  flex-direction: column;\n}\n.filled-select {\n  display: inline-flex;\n  color: unset;\n  min-width: 210px;\n  --_text-field-active-indicator-color: var(\n    --md-filled-select-text-field-active-indicator-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-active-indicator-height: var(\n    --md-filled-select-text-field-active-indicator-height,\n    1px\n  );\n  --_text-field-container-color: var(\n    --md-filled-select-text-field-container-color,\n    var(--md-sys-color-surface-container-highest)\n  );\n  --_text-field-disabled-active-indicator-color: var(\n    --md-filled-select-text-field-disabled-active-indicator-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-active-indicator-height: var(\n    --md-filled-select-text-field-disabled-active-indicator-height,\n    1px\n  );\n  --_text-field-disabled-active-indicator-opacity: var(\n    --md-filled-select-text-field-disabled-active-indicator-opacity,\n    0.38\n  );\n  --_text-field-disabled-container-color: var(\n    --md-filled-select-text-field-disabled-container-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-container-opacity: var(\n    --md-filled-select-text-field-disabled-container-opacity,\n    0.04\n  );\n  --_text-field-disabled-input-text-color: var(\n    --md-filled-select-text-field-disabled-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-input-text-opacity: var(\n    --md-filled-select-text-field-disabled-input-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-label-text-color: var(\n    --md-filled-select-text-field-disabled-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-label-text-opacity: var(\n    --md-filled-select-text-field-disabled-label-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-leading-icon-color: var(\n    --md-filled-select-text-field-disabled-leading-icon-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-leading-icon-opacity: var(\n    --md-filled-select-text-field-disabled-leading-icon-opacity,\n    0.38\n  );\n  --_text-field-disabled-supporting-text-color: var(\n    --md-filled-select-text-field-disabled-supporting-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-supporting-text-opacity: var(\n    --md-filled-select-text-field-disabled-supporting-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-trailing-icon-color: var(\n    --md-filled-select-text-field-disabled-trailing-icon-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-trailing-icon-opacity: var(\n    --md-filled-select-text-field-disabled-trailing-icon-opacity,\n    0.38\n  );\n  --_text-field-error-active-indicator-color: var(\n    --md-filled-select-text-field-error-active-indicator-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-active-indicator-color: var(\n    --md-filled-select-text-field-error-focus-active-indicator-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-input-text-color: var(\n    --md-filled-select-text-field-error-focus-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-focus-label-text-color: var(\n    --md-filled-select-text-field-error-focus-label-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-leading-icon-color: var(\n    --md-filled-select-text-field-error-focus-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-focus-supporting-text-color: var(\n    --md-filled-select-text-field-error-focus-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-trailing-icon-color: var(\n    --md-filled-select-text-field-error-focus-trailing-icon-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-hover-active-indicator-color: var(\n    --md-filled-select-text-field-error-hover-active-indicator-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-hover-input-text-color: var(\n    --md-filled-select-text-field-error-hover-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-hover-label-text-color: var(\n    --md-filled-select-text-field-error-hover-label-text-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-hover-leading-icon-color: var(\n    --md-filled-select-text-field-error-hover-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-hover-state-layer-color: var(\n    --md-filled-select-text-field-error-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-hover-state-layer-opacity: var(\n    --md-filled-select-text-field-error-hover-state-layer-opacity,\n    0.08\n  );\n  --_text-field-error-hover-supporting-text-color: var(\n    --md-filled-select-text-field-error-hover-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-hover-trailing-icon-color: var(\n    --md-filled-select-text-field-error-hover-trailing-icon-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-input-text-color: var(\n    --md-filled-select-text-field-error-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-label-text-color: var(\n    --md-filled-select-text-field-error-label-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-leading-icon-color: var(\n    --md-filled-select-text-field-error-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-supporting-text-color: var(\n    --md-filled-select-text-field-error-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-trailing-icon-color: var(\n    --md-filled-select-text-field-error-trailing-icon-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-focus-active-indicator-color: var(\n    --md-filled-select-text-field-focus-active-indicator-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-focus-active-indicator-height: var(\n    --md-filled-select-text-field-focus-active-indicator-height,\n    3px\n  );\n  --_text-field-focus-input-text-color: var(\n    --md-filled-select-text-field-focus-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-focus-label-text-color: var(\n    --md-filled-select-text-field-focus-label-text-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-focus-leading-icon-color: var(\n    --md-filled-select-text-field-focus-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-focus-supporting-text-color: var(\n    --md-filled-select-text-field-focus-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-focus-trailing-icon-color: var(\n    --md-filled-select-text-field-focus-trailing-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-hover-active-indicator-color: var(\n    --md-filled-select-text-field-hover-active-indicator-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-active-indicator-height: var(\n    --md-filled-select-text-field-hover-active-indicator-height,\n    1px\n  );\n  --_text-field-hover-input-text-color: var(\n    --md-filled-select-text-field-hover-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-label-text-color: var(\n    --md-filled-select-text-field-hover-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-leading-icon-color: var(\n    --md-filled-select-text-field-hover-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-hover-state-layer-color: var(\n    --md-filled-select-text-field-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-state-layer-opacity: var(\n    --md-filled-select-text-field-hover-state-layer-opacity,\n    0.08\n  );\n  --_text-field-hover-supporting-text-color: var(\n    --md-filled-select-text-field-hover-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-hover-trailing-icon-color: var(\n    --md-filled-select-text-field-hover-trailing-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-input-text-color: var(\n    --md-filled-select-text-field-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-input-text-font: var(\n    --md-filled-select-text-field-input-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-input-text-line-height: var(\n    --md-filled-select-text-field-input-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_text-field-input-text-size: var(\n    --md-filled-select-text-field-input-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_text-field-input-text-weight: var(\n    --md-filled-select-text-field-input-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-label-text-color: var(\n    --md-filled-select-text-field-label-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-label-text-font: var(\n    --md-filled-select-text-field-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-label-text-line-height: var(\n    --md-filled-select-text-field-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_text-field-label-text-populated-line-height: var(\n    --md-filled-select-text-field-label-text-populated-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_text-field-label-text-populated-size: var(\n    --md-filled-select-text-field-label-text-populated-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_text-field-label-text-size: var(\n    --md-filled-select-text-field-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_text-field-label-text-weight: var(\n    --md-filled-select-text-field-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-leading-icon-color: var(\n    --md-filled-select-text-field-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-leading-icon-size: var(\n    --md-filled-select-text-field-leading-icon-size,\n    24px\n  );\n  --_text-field-supporting-text-color: var(\n    --md-filled-select-text-field-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-supporting-text-font: var(\n    --md-filled-select-text-field-supporting-text-font,\n    var(\n      --md-sys-typescale-body-small-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-supporting-text-line-height: var(\n    --md-filled-select-text-field-supporting-text-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_text-field-supporting-text-size: var(\n    --md-filled-select-text-field-supporting-text-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_text-field-supporting-text-weight: var(\n    --md-filled-select-text-field-supporting-text-weight,\n    var(\n      --md-sys-typescale-body-small-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-trailing-icon-color: var(\n    --md-filled-select-text-field-trailing-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-trailing-icon-size: var(\n    --md-filled-select-text-field-trailing-icon-size,\n    24px\n  );\n  --_text-field-container-shape-start-start: var(\n    --md-filled-select-text-field-container-shape-start-start,\n    var(\n      --md-filled-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_text-field-container-shape-start-end: var(\n    --md-filled-select-text-field-container-shape-start-end,\n    var(\n      --md-filled-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_text-field-container-shape-end-end: var(\n    --md-filled-select-text-field-container-shape-end-end,\n    var(\n      --md-filled-select-text-field-container-shape,\n      var(--md-sys-shape-corner-none, 0px)\n    )\n  );\n  --_text-field-container-shape-end-start: var(\n    --md-filled-select-text-field-container-shape-end-start,\n    var(\n      --md-filled-select-text-field-container-shape,\n      var(--md-sys-shape-corner-none, 0px)\n    )\n  );\n  --md-filled-field-active-indicator-color: var(\n    --_text-field-active-indicator-color\n  );\n  --md-filled-field-active-indicator-height: var(\n    --_text-field-active-indicator-height\n  );\n  --md-filled-field-container-color: var(--_text-field-container-color);\n  --md-filled-field-container-shape-end-end: var(\n    --_text-field-container-shape-end-end\n  );\n  --md-filled-field-container-shape-end-start: var(\n    --_text-field-container-shape-end-start\n  );\n  --md-filled-field-container-shape-start-end: var(\n    --_text-field-container-shape-start-end\n  );\n  --md-filled-field-container-shape-start-start: var(\n    --_text-field-container-shape-start-start\n  );\n  --md-filled-field-content-color: var(--_text-field-input-text-color);\n  --md-filled-field-content-font: var(--_text-field-input-text-font);\n  --md-filled-field-content-line-height: var(\n    --_text-field-input-text-line-height\n  );\n  --md-filled-field-content-size: var(--_text-field-input-text-size);\n  --md-filled-field-content-weight: var(--_text-field-input-text-weight);\n  --md-filled-field-disabled-active-indicator-color: var(\n    --_text-field-disabled-active-indicator-color\n  );\n  --md-filled-field-disabled-active-indicator-height: var(\n    --_text-field-disabled-active-indicator-height\n  );\n  --md-filled-field-disabled-active-indicator-opacity: var(\n    --_text-field-disabled-active-indicator-opacity\n  );\n  --md-filled-field-disabled-container-color: var(\n    --_text-field-disabled-container-color\n  );\n  --md-filled-field-disabled-container-opacity: var(\n    --_text-field-disabled-container-opacity\n  );\n  --md-filled-field-disabled-content-color: var(\n    --_text-field-disabled-input-text-color\n  );\n  --md-filled-field-disabled-content-opacity: var(\n    --_text-field-disabled-input-text-opacity\n  );\n  --md-filled-field-disabled-label-text-color: var(\n    --_text-field-disabled-label-text-color\n  );\n  --md-filled-field-disabled-label-text-opacity: var(\n    --_text-field-disabled-label-text-opacity\n  );\n  --md-filled-field-disabled-leading-content-color: var(\n    --_text-field-disabled-leading-icon-color\n  );\n  --md-filled-field-disabled-leading-content-opacity: var(\n    --_text-field-disabled-leading-icon-opacity\n  );\n  --md-filled-field-disabled-supporting-text-color: var(\n    --_text-field-disabled-supporting-text-color\n  );\n  --md-filled-field-disabled-supporting-text-opacity: var(\n    --_text-field-disabled-supporting-text-opacity\n  );\n  --md-filled-field-disabled-trailing-content-color: var(\n    --_text-field-disabled-trailing-icon-color\n  );\n  --md-filled-field-disabled-trailing-content-opacity: var(\n    --_text-field-disabled-trailing-icon-opacity\n  );\n  --md-filled-field-error-active-indicator-color: var(\n    --_text-field-error-active-indicator-color\n  );\n  --md-filled-field-error-content-color: var(\n    --_text-field-error-input-text-color\n  );\n  --md-filled-field-error-focus-active-indicator-color: var(\n    --_text-field-error-focus-active-indicator-color\n  );\n  --md-filled-field-error-focus-content-color: var(\n    --_text-field-error-focus-input-text-color\n  );\n  --md-filled-field-error-focus-label-text-color: var(\n    --_text-field-error-focus-label-text-color\n  );\n  --md-filled-field-error-focus-leading-content-color: var(\n    --_text-field-error-focus-leading-icon-color\n  );\n  --md-filled-field-error-focus-supporting-text-color: var(\n    --_text-field-error-focus-supporting-text-color\n  );\n  --md-filled-field-error-focus-trailing-content-color: var(\n    --_text-field-error-focus-trailing-icon-color\n  );\n  --md-filled-field-error-hover-active-indicator-color: var(\n    --_text-field-error-hover-active-indicator-color\n  );\n  --md-filled-field-error-hover-content-color: var(\n    --_text-field-error-hover-input-text-color\n  );\n  --md-filled-field-error-hover-label-text-color: var(\n    --_text-field-error-hover-label-text-color\n  );\n  --md-filled-field-error-hover-leading-content-color: var(\n    --_text-field-error-hover-leading-icon-color\n  );\n  --md-filled-field-error-hover-state-layer-color: var(\n    --_text-field-error-hover-state-layer-color\n  );\n  --md-filled-field-error-hover-state-layer-opacity: var(\n    --_text-field-error-hover-state-layer-opacity\n  );\n  --md-filled-field-error-hover-supporting-text-color: var(\n    --_text-field-error-hover-supporting-text-color\n  );\n  --md-filled-field-error-hover-trailing-content-color: var(\n    --_text-field-error-hover-trailing-icon-color\n  );\n  --md-filled-field-error-label-text-color: var(\n    --_text-field-error-label-text-color\n  );\n  --md-filled-field-error-leading-content-color: var(\n    --_text-field-error-leading-icon-color\n  );\n  --md-filled-field-error-supporting-text-color: var(\n    --_text-field-error-supporting-text-color\n  );\n  --md-filled-field-error-trailing-content-color: var(\n    --_text-field-error-trailing-icon-color\n  );\n  --md-filled-field-focus-active-indicator-color: var(\n    --_text-field-focus-active-indicator-color\n  );\n  --md-filled-field-focus-active-indicator-height: var(\n    --_text-field-focus-active-indicator-height\n  );\n  --md-filled-field-focus-content-color: var(\n    --_text-field-focus-input-text-color\n  );\n  --md-filled-field-focus-label-text-color: var(\n    --_text-field-focus-label-text-color\n  );\n  --md-filled-field-focus-leading-content-color: var(\n    --_text-field-focus-leading-icon-color\n  );\n  --md-filled-field-focus-supporting-text-color: var(\n    --_text-field-focus-supporting-text-color\n  );\n  --md-filled-field-focus-trailing-content-color: var(\n    --_text-field-focus-trailing-icon-color\n  );\n  --md-filled-field-hover-active-indicator-color: var(\n    --_text-field-hover-active-indicator-color\n  );\n  --md-filled-field-hover-active-indicator-height: var(\n    --_text-field-hover-active-indicator-height\n  );\n  --md-filled-field-hover-content-color: var(\n    --_text-field-hover-input-text-color\n  );\n  --md-filled-field-hover-label-text-color: var(\n    --_text-field-hover-label-text-color\n  );\n  --md-filled-field-hover-leading-content-color: var(\n    --_text-field-hover-leading-icon-color\n  );\n  --md-filled-field-hover-state-layer-color: var(\n    --_text-field-hover-state-layer-color\n  );\n  --md-filled-field-hover-state-layer-opacity: var(\n    --_text-field-hover-state-layer-opacity\n  );\n  --md-filled-field-hover-supporting-text-color: var(\n    --_text-field-hover-supporting-text-color\n  );\n  --md-filled-field-hover-trailing-content-color: var(\n    --_text-field-hover-trailing-icon-color\n  );\n  --md-filled-field-label-text-color: var(--_text-field-label-text-color);\n  --md-filled-field-label-text-font: var(--_text-field-label-text-font);\n  --md-filled-field-label-text-line-height: var(\n    --_text-field-label-text-line-height\n  );\n  --md-filled-field-label-text-populated-line-height: var(\n    --_text-field-label-text-populated-line-height\n  );\n  --md-filled-field-label-text-populated-size: var(\n    --_text-field-label-text-populated-size\n  );\n  --md-filled-field-label-text-size: var(--_text-field-label-text-size);\n  --md-filled-field-label-text-weight: var(--_text-field-label-text-weight);\n  --md-filled-field-leading-content-color: var(\n    --_text-field-leading-icon-color\n  );\n  --md-filled-field-supporting-text-color: var(\n    --_text-field-supporting-text-color\n  );\n  --md-filled-field-supporting-text-font: var(\n    --_text-field-supporting-text-font\n  );\n  --md-filled-field-supporting-text-line-height: var(\n    --_text-field-supporting-text-line-height\n  );\n  --md-filled-field-supporting-text-size: var(\n    --_text-field-supporting-text-size\n  );\n  --md-filled-field-supporting-text-weight: var(\n    --_text-field-supporting-text-weight\n  );\n  --md-filled-field-trailing-content-color: var(\n    --_text-field-trailing-icon-color\n  );\n}\n.outlined-select {\n  display: inline-flex;\n  color: unset;\n  min-width: 210px;\n  --_text-field-disabled-input-text-color: var(\n    --md-outlined-select-text-field-disabled-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-input-text-opacity: var(\n    --md-outlined-select-text-field-disabled-input-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-label-text-color: var(\n    --md-outlined-select-text-field-disabled-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-label-text-opacity: var(\n    --md-outlined-select-text-field-disabled-label-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-leading-icon-color: var(\n    --md-outlined-select-text-field-disabled-leading-icon-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-leading-icon-opacity: var(\n    --md-outlined-select-text-field-disabled-leading-icon-opacity,\n    0.38\n  );\n  --_text-field-disabled-outline-color: var(\n    --md-outlined-select-text-field-disabled-outline-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-outline-opacity: var(\n    --md-outlined-select-text-field-disabled-outline-opacity,\n    0.12\n  );\n  --_text-field-disabled-outline-width: var(\n    --md-outlined-select-text-field-disabled-outline-width,\n    1px\n  );\n  --_text-field-disabled-supporting-text-color: var(\n    --md-outlined-select-text-field-disabled-supporting-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-supporting-text-opacity: var(\n    --md-outlined-select-text-field-disabled-supporting-text-opacity,\n    0.38\n  );\n  --_text-field-disabled-trailing-icon-color: var(\n    --md-outlined-select-text-field-disabled-trailing-icon-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-disabled-trailing-icon-opacity: var(\n    --md-outlined-select-text-field-disabled-trailing-icon-opacity,\n    0.38\n  );\n  --_text-field-error-focus-input-text-color: var(\n    --md-outlined-select-text-field-error-focus-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-focus-label-text-color: var(\n    --md-outlined-select-text-field-error-focus-label-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-leading-icon-color: var(\n    --md-outlined-select-text-field-error-focus-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-focus-outline-color: var(\n    --md-outlined-select-text-field-error-focus-outline-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-supporting-text-color: var(\n    --md-outlined-select-text-field-error-focus-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-focus-trailing-icon-color: var(\n    --md-outlined-select-text-field-error-focus-trailing-icon-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-hover-input-text-color: var(\n    --md-outlined-select-text-field-error-hover-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-hover-label-text-color: var(\n    --md-outlined-select-text-field-error-hover-label-text-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-hover-leading-icon-color: var(\n    --md-outlined-select-text-field-error-hover-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-hover-outline-color: var(\n    --md-outlined-select-text-field-error-hover-outline-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-hover-supporting-text-color: var(\n    --md-outlined-select-text-field-error-hover-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-hover-trailing-icon-color: var(\n    --md-outlined-select-text-field-error-hover-trailing-icon-color,\n    var(--md-sys-color-on-error-container)\n  );\n  --_text-field-error-input-text-color: var(\n    --md-outlined-select-text-field-error-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-error-label-text-color: var(\n    --md-outlined-select-text-field-error-label-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-leading-icon-color: var(\n    --md-outlined-select-text-field-error-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-error-outline-color: var(\n    --md-outlined-select-text-field-error-outline-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-supporting-text-color: var(\n    --md-outlined-select-text-field-error-supporting-text-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-error-trailing-icon-color: var(\n    --md-outlined-select-text-field-error-trailing-icon-color,\n    var(--md-sys-color-error)\n  );\n  --_text-field-focus-input-text-color: var(\n    --md-outlined-select-text-field-focus-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-focus-label-text-color: var(\n    --md-outlined-select-text-field-focus-label-text-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-focus-leading-icon-color: var(\n    --md-outlined-select-text-field-focus-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-focus-outline-color: var(\n    --md-outlined-select-text-field-focus-outline-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-focus-outline-width: var(\n    --md-outlined-select-text-field-focus-outline-width,\n    3px\n  );\n  --_text-field-focus-supporting-text-color: var(\n    --md-outlined-select-text-field-focus-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-focus-trailing-icon-color: var(\n    --md-outlined-select-text-field-focus-trailing-icon-color,\n    var(--md-sys-color-primary)\n  );\n  --_text-field-hover-input-text-color: var(\n    --md-outlined-select-text-field-hover-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-label-text-color: var(\n    --md-outlined-select-text-field-hover-label-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-leading-icon-color: var(\n    --md-outlined-select-text-field-hover-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-hover-outline-color: var(\n    --md-outlined-select-text-field-hover-outline-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-hover-outline-width: var(\n    --md-outlined-select-text-field-hover-outline-width,\n    1px\n  );\n  --_text-field-hover-supporting-text-color: var(\n    --md-outlined-select-text-field-hover-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-hover-trailing-icon-color: var(\n    --md-outlined-select-text-field-hover-trailing-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-input-text-color: var(\n    --md-outlined-select-text-field-input-text-color,\n    var(--md-sys-color-on-surface)\n  );\n  --_text-field-input-text-font: var(\n    --md-outlined-select-text-field-input-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-input-text-line-height: var(\n    --md-outlined-select-text-field-input-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_text-field-input-text-size: var(\n    --md-outlined-select-text-field-input-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_text-field-input-text-weight: var(\n    --md-outlined-select-text-field-input-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-label-text-color: var(\n    --md-outlined-select-text-field-label-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-label-text-font: var(\n    --md-outlined-select-text-field-label-text-font,\n    var(\n      --md-sys-typescale-body-large-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-label-text-line-height: var(\n    --md-outlined-select-text-field-label-text-line-height,\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\n  );\n  --_text-field-label-text-populated-line-height: var(\n    --md-outlined-select-text-field-label-text-populated-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_text-field-label-text-populated-size: var(\n    --md-outlined-select-text-field-label-text-populated-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_text-field-label-text-size: var(\n    --md-outlined-select-text-field-label-text-size,\n    var(--md-sys-typescale-body-large-size, 1rem)\n  );\n  --_text-field-label-text-weight: var(\n    --md-outlined-select-text-field-label-text-weight,\n    var(\n      --md-sys-typescale-body-large-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-leading-icon-color: var(\n    --md-outlined-select-text-field-leading-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-leading-icon-size: var(\n    --md-outlined-select-text-field-leading-icon-size,\n    24px\n  );\n  --_text-field-outline-color: var(\n    --md-outlined-select-text-field-outline-color,\n    var(--md-sys-color-outline)\n  );\n  --_text-field-outline-width: var(\n    --md-outlined-select-text-field-outline-width,\n    1px\n  );\n  --_text-field-supporting-text-color: var(\n    --md-outlined-select-text-field-supporting-text-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-supporting-text-font: var(\n    --md-outlined-select-text-field-supporting-text-font,\n    var(\n      --md-sys-typescale-body-small-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_text-field-supporting-text-line-height: var(\n    --md-outlined-select-text-field-supporting-text-line-height,\n    var(--md-sys-typescale-body-small-line-height, 1rem)\n  );\n  --_text-field-supporting-text-size: var(\n    --md-outlined-select-text-field-supporting-text-size,\n    var(--md-sys-typescale-body-small-size, 0.75rem)\n  );\n  --_text-field-supporting-text-weight: var(\n    --md-outlined-select-text-field-supporting-text-weight,\n    var(\n      --md-sys-typescale-body-small-weight,\n      var(--md-ref-typeface-weight-regular, 400)\n    )\n  );\n  --_text-field-trailing-icon-color: var(\n    --md-outlined-select-text-field-trailing-icon-color,\n    var(--md-sys-color-on-surface-variant)\n  );\n  --_text-field-trailing-icon-size: var(\n    --md-outlined-select-text-field-trailing-icon-size,\n    24px\n  );\n  --_text-field-container-shape-start-start: var(\n    --md-outlined-select-text-field-container-shape-start-start,\n    var(\n      --md-outlined-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_text-field-container-shape-start-end: var(\n    --md-outlined-select-text-field-container-shape-start-end,\n    var(\n      --md-outlined-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_text-field-container-shape-end-end: var(\n    --md-outlined-select-text-field-container-shape-end-end,\n    var(\n      --md-outlined-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --_text-field-container-shape-end-start: var(\n    --md-outlined-select-text-field-container-shape-end-start,\n    var(\n      --md-outlined-select-text-field-container-shape,\n      var(--md-sys-shape-corner-extra-small, 4px)\n    )\n  );\n  --md-outlined-field-container-shape-end-end: var(\n    --_text-field-container-shape-end-end\n  );\n  --md-outlined-field-container-shape-end-start: var(\n    --_text-field-container-shape-end-start\n  );\n  --md-outlined-field-container-shape-start-end: var(\n    --_text-field-container-shape-start-end\n  );\n  --md-outlined-field-container-shape-start-start: var(\n    --_text-field-container-shape-start-start\n  );\n  --md-outlined-field-content-color: var(--_text-field-input-text-color);\n  --md-outlined-field-content-font: var(--_text-field-input-text-font);\n  --md-outlined-field-content-line-height: var(\n    --_text-field-input-text-line-height\n  );\n  --md-outlined-field-content-size: var(--_text-field-input-text-size);\n  --md-outlined-field-content-weight: var(--_text-field-input-text-weight);\n  --md-outlined-field-disabled-content-color: var(\n    --_text-field-disabled-input-text-color\n  );\n  --md-outlined-field-disabled-content-opacity: var(\n    --_text-field-disabled-input-text-opacity\n  );\n  --md-outlined-field-disabled-label-text-color: var(\n    --_text-field-disabled-label-text-color\n  );\n  --md-outlined-field-disabled-label-text-opacity: var(\n    --_text-field-disabled-label-text-opacity\n  );\n  --md-outlined-field-disabled-leading-content-color: var(\n    --_text-field-disabled-leading-icon-color\n  );\n  --md-outlined-field-disabled-leading-content-opacity: var(\n    --_text-field-disabled-leading-icon-opacity\n  );\n  --md-outlined-field-disabled-outline-color: var(\n    --_text-field-disabled-outline-color\n  );\n  --md-outlined-field-disabled-outline-opacity: var(\n    --_text-field-disabled-outline-opacity\n  );\n  --md-outlined-field-disabled-outline-width: var(\n    --_text-field-disabled-outline-width\n  );\n  --md-outlined-field-disabled-supporting-text-color: var(\n    --_text-field-disabled-supporting-text-color\n  );\n  --md-outlined-field-disabled-supporting-text-opacity: var(\n    --_text-field-disabled-supporting-text-opacity\n  );\n  --md-outlined-field-disabled-trailing-content-color: var(\n    --_text-field-disabled-trailing-icon-color\n  );\n  --md-outlined-field-disabled-trailing-content-opacity: var(\n    --_text-field-disabled-trailing-icon-opacity\n  );\n  --md-outlined-field-error-content-color: var(\n    --_text-field-error-input-text-color\n  );\n  --md-outlined-field-error-focus-content-color: var(\n    --_text-field-error-focus-input-text-color\n  );\n  --md-outlined-field-error-focus-label-text-color: var(\n    --_text-field-error-focus-label-text-color\n  );\n  --md-outlined-field-error-focus-leading-content-color: var(\n    --_text-field-error-focus-leading-icon-color\n  );\n  --md-outlined-field-error-focus-outline-color: var(\n    --_text-field-error-focus-outline-color\n  );\n  --md-outlined-field-error-focus-supporting-text-color: var(\n    --_text-field-error-focus-supporting-text-color\n  );\n  --md-outlined-field-error-focus-trailing-content-color: var(\n    --_text-field-error-focus-trailing-icon-color\n  );\n  --md-outlined-field-error-hover-content-color: var(\n    --_text-field-error-hover-input-text-color\n  );\n  --md-outlined-field-error-hover-label-text-color: var(\n    --_text-field-error-hover-label-text-color\n  );\n  --md-outlined-field-error-hover-leading-content-color: var(\n    --_text-field-error-hover-leading-icon-color\n  );\n  --md-outlined-field-error-hover-outline-color: var(\n    --_text-field-error-hover-outline-color\n  );\n  --md-outlined-field-error-hover-supporting-text-color: var(\n    --_text-field-error-hover-supporting-text-color\n  );\n  --md-outlined-field-error-hover-trailing-content-color: var(\n    --_text-field-error-hover-trailing-icon-color\n  );\n  --md-outlined-field-error-label-text-color: var(\n    --_text-field-error-label-text-color\n  );\n  --md-outlined-field-error-leading-content-color: var(\n    --_text-field-error-leading-icon-color\n  );\n  --md-outlined-field-error-outline-color: var(\n    --_text-field-error-outline-color\n  );\n  --md-outlined-field-error-supporting-text-color: var(\n    --_text-field-error-supporting-text-color\n  );\n  --md-outlined-field-error-trailing-content-color: var(\n    --_text-field-error-trailing-icon-color\n  );\n  --md-outlined-field-focus-content-color: var(\n    --_text-field-focus-input-text-color\n  );\n  --md-outlined-field-focus-label-text-color: var(\n    --_text-field-focus-label-text-color\n  );\n  --md-outlined-field-focus-leading-content-color: var(\n    --_text-field-focus-leading-icon-color\n  );\n  --md-outlined-field-focus-outline-color: var(\n    --_text-field-focus-outline-color\n  );\n  --md-outlined-field-focus-outline-width: var(\n    --_text-field-focus-outline-width\n  );\n  --md-outlined-field-focus-supporting-text-color: var(\n    --_text-field-focus-supporting-text-color\n  );\n  --md-outlined-field-focus-trailing-content-color: var(\n    --_text-field-focus-trailing-icon-color\n  );\n  --md-outlined-field-hover-content-color: var(\n    --_text-field-hover-input-text-color\n  );\n  --md-outlined-field-hover-label-text-color: var(\n    --_text-field-hover-label-text-color\n  );\n  --md-outlined-field-hover-leading-content-color: var(\n    --_text-field-hover-leading-icon-color\n  );\n  --md-outlined-field-hover-outline-color: var(\n    --_text-field-hover-outline-color\n  );\n  --md-outlined-field-hover-outline-width: var(\n    --_text-field-hover-outline-width\n  );\n  --md-outlined-field-hover-supporting-text-color: var(\n    --_text-field-hover-supporting-text-color\n  );\n  --md-outlined-field-hover-trailing-content-color: var(\n    --_text-field-hover-trailing-icon-color\n  );\n  --md-outlined-field-label-text-color: var(--_text-field-label-text-color);\n  --md-outlined-field-label-text-font: var(--_text-field-label-text-font);\n  --md-outlined-field-label-text-line-height: var(\n    --_text-field-label-text-line-height\n  );\n  --md-outlined-field-label-text-populated-line-height: var(\n    --_text-field-label-text-populated-line-height\n  );\n  --md-outlined-field-label-text-populated-size: var(\n    --_text-field-label-text-populated-size\n  );\n  --md-outlined-field-label-text-size: var(--_text-field-label-text-size);\n  --md-outlined-field-label-text-weight: var(--_text-field-label-text-weight);\n  --md-outlined-field-leading-content-color: var(\n    --_text-field-leading-icon-color\n  );\n  --md-outlined-field-outline-color: var(--_text-field-outline-color);\n  --md-outlined-field-outline-width: var(--_text-field-outline-width);\n  --md-outlined-field-supporting-text-color: var(\n    --_text-field-supporting-text-color\n  );\n  --md-outlined-field-supporting-text-font: var(\n    --_text-field-supporting-text-font\n  );\n  --md-outlined-field-supporting-text-line-height: var(\n    --_text-field-supporting-text-line-height\n  );\n  --md-outlined-field-supporting-text-size: var(\n    --_text-field-supporting-text-size\n  );\n  --md-outlined-field-supporting-text-weight: var(\n    --_text-field-supporting-text-weight\n  );\n  --md-outlined-field-trailing-content-color: var(\n    --_text-field-trailing-icon-color\n  );\n}\n\n.select-option {\n  display: flex;\n  --md-ripple-hover-color: var(\n    --md-menu-item-hover-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-hover-opacity: var(\n    --md-menu-item-hover-state-layer-opacity,\n    0.08\n  );\n  --md-ripple-pressed-color: var(\n    --md-menu-item-pressed-state-layer-color,\n    var(--md-sys-color-on-surface)\n  );\n  --md-ripple-pressed-opacity: var(\n    --md-menu-item-pressed-state-layer-opacity,\n    0.12\n  );\n}\n.list-item {\n  border-radius: inherit;\n  display: flex;\n  flex: 1 1 0%;\n  max-width: inherit;\n  min-width: inherit;\n  outline: none;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  &.selected {\n    background-color: var(\n      --md-menu-item-selected-container-color,\n      var(--md-sys-color-secondary-container)\n    );\n  }\n  &:not(.disabled) {\n    cursor: pointer;\n  }\n}\n.container {\n  inset: 0px;\n  cursor: pointer;\n  position: absolute;\n}\n.icon {\n  min-width: 48px;\n}\n.icon.trailing {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  margin-inline-start: 4px;\n  font-size: var(--_text-field-trailing-icon-size);\n  height: var(--_text-field-trailing-icon-size);\n  width: var(--_text-field-trailing-icon-size);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Select/trailingIcon.module.css",
    "content": ".trailing-icon {\n  height: 100%;\n  display: inline-flex;\n  align-items: center;\n  margin-inline: var(--_content-space)\n    var(--_with-trailing-content-trailing-space);\n}\n.open {\n  rotate: 180deg;\n}\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheets.tsx",
    "content": "'use client'\r\n\r\nimport React from 'react'\r\nimport { SideSheetsProvider } from './SideSheetsContext'\r\n\r\ntype SideSheetsProps = Omit<React.ComponentProps<'div'>, 'onChange'> & {\r\n  divider?: boolean\r\n  onChange?: () => void\r\n}\r\n\r\nconst SideSheets = ({ children, ...rest }: SideSheetsProps) => {\r\n  return <SideSheetsProvider {...rest}>{children}</SideSheetsProvider>\r\n}\r\n\r\nSideSheets.displayName = 'Actify.SideSheets'\r\n\r\nexport { SideSheets }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsAction.tsx",
    "content": "import React from 'react'\r\nimport styles from './side-sheets.module.css'\r\n\r\nconst SideSheetsAction = ({ children }: React.ComponentProps<'div'>) => {\r\n  return <div className={styles['action']}>{children}</div>\r\n}\r\n\r\nexport { SideSheetsAction }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsActivator.tsx",
    "content": "'use client'\r\n\r\nimport React from 'react'\r\nimport { Slot } from './../Slot'\r\nimport { useSideSheets } from './SideSheetsContext'\r\n\r\nexport interface ActivatorProps extends React.ComponentProps<'div'> {\r\n  asChild?: boolean\r\n}\r\nconst SideSheetsActivator = ({\r\n  asChild,\r\n  className,\r\n  children,\r\n  ...rest\r\n}: ActivatorProps) => {\r\n  const { open, setOpen } = useSideSheets()\r\n\r\n  const handleClick = () => {\r\n    setOpen?.(!open)\r\n  }\r\n\r\n  if (asChild) {\r\n    return (\r\n      <Slot className={className} {...{ ...rest, open, onClick: handleClick }}>\r\n        {children}\r\n      </Slot>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div {...rest} role=\"button\" className={className} onClick={handleClick}>\r\n      {children}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { SideSheetsActivator }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsBody.tsx",
    "content": "'use client'\r\n\r\nimport { Divider } from './../Divider'\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './side-sheets.module.css'\r\nimport { useSideSheets } from './SideSheetsContext'\r\n\r\nconst SideSheetsBody = (props: React.ComponentProps<'div'>) => {\r\n  const { divider } = useSideSheets()\r\n  const { className, children } = props\r\n\r\n  return (\r\n    <React.Fragment>\r\n      {divider && <Divider />}\r\n      <div className={clsx(styles['body'], className)}>{children}</div>\r\n      {divider && <Divider />}\r\n    </React.Fragment>\r\n  )\r\n}\r\n\r\nexport { SideSheetsBody }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsContent.tsx",
    "content": "'use client'\r\n\r\nimport { AnimatePresence, motion } from 'motion/react'\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport { createPortal } from 'react-dom'\r\nimport styles from './side-sheets.module.css'\r\nimport { useSideSheets } from './SideSheetsContext'\r\n\r\nexport interface ContentProps extends React.ComponentProps<'div'> {\r\n  divider?: boolean\r\n}\r\n\r\nconst SideSheetsContent = (props: ContentProps) => {\r\n  const { style, className, children } = props\r\n\r\n  const { open, setOpen } = useSideSheets()\r\n  const [container, setContainer] = useState<HTMLElement>()\r\n\r\n  useEffect(() => {\r\n    setContainer(document.body)\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    if (!open) return\r\n\r\n    document.body.style.overflow = 'hidden'\r\n    document.addEventListener('keydown', handleKeyDown)\r\n\r\n    return () => {\r\n      document.body.style.overflow = 'auto'\r\n      document.removeEventListener('keydown', handleKeyDown)\r\n    }\r\n  }, [open])\r\n\r\n  const handleKeyDown = (event: KeyboardEvent) => {\r\n    if (!open || event.key !== 'Escape') return\r\n    setOpen?.(false)\r\n  }\r\n\r\n  if (!container) {\r\n    return null\r\n  }\r\n\r\n  return createPortal(\r\n    <AnimatePresence mode=\"wait\" initial={false}>\r\n      {open && (\r\n        <motion.div\r\n          style={style}\r\n          initial={{ opacity: 0 }}\r\n          animate={{ opacity: 1 }}\r\n          exit={{ opacity: 0 }}\r\n          // @ts-ignore\r\n          onClick={() => setOpen?.(false)}\r\n          className={clsx(styles['content'], className)}\r\n        >\r\n          <motion.div\r\n            initial={{\r\n              transform: 'translateX(100%)'\r\n            }}\r\n            animate={{\r\n              transform: 'translateX(0)'\r\n            }}\r\n            exit={{\r\n              transform: 'translateX(100%)'\r\n            }}\r\n            className={styles['content-inner']}\r\n            // @ts-expect-error\r\n            onClick={(e: Event) => e.stopPropagation()}\r\n          >\r\n            {children}\r\n          </motion.div>\r\n        </motion.div>\r\n      )}\r\n    </AnimatePresence>,\r\n    container\r\n  ) as React.ReactNode\r\n}\r\n\r\nexport { SideSheetsContent }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsContext.tsx",
    "content": "'use client'\r\n\r\nimport React, { createContext, useContext } from 'react'\r\n\r\nimport { useControllableState } from './../../hooks/useControllableState'\r\n\r\ninterface SideSheetsProps {\r\n  open?: boolean\r\n  defaultOpen?: boolean\r\n  divider?: boolean\r\n  setOpen?: (open: boolean) => void\r\n}\r\n\r\nconst SideSheetsContext = createContext<SideSheetsProps | undefined>(undefined)\r\n\r\nexport interface SideSheetsProviderProps\r\n  extends React.PropsWithChildren<SideSheetsProps> {}\r\n\r\nexport const SideSheetsProvider = ({\r\n  children,\r\n  ...props\r\n}: SideSheetsProviderProps) => {\r\n  const { open, defaultOpen, divider, setOpen } = props\r\n  const [value, setValue] = useControllableState({\r\n    value: open,\r\n    defaultValue: defaultOpen,\r\n    onChange: setOpen\r\n  })\r\n\r\n  return (\r\n    <SideSheetsContext\r\n      value={{ divider, open: value, setOpen: setValue }}\r\n    >\r\n      {children}\r\n    </SideSheetsContext>\r\n  )\r\n}\r\n\r\nexport function useSideSheets() {\r\n  const context = useContext(SideSheetsContext)\r\n  if (!context) {\r\n    throw new Error('SideSheets must be wrappered in the <SideSheets />')\r\n  }\r\n  return context\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/SideSheetsHeader.tsx",
    "content": "'use client'\r\n\r\nimport { Icon } from './../Icon'\r\nimport { IconButton } from './../Buttons'\r\nimport React from 'react'\r\nimport clsx from 'clsx'\r\nimport styles from './side-sheets.module.css'\r\nimport { useSideSheets } from './SideSheetsContext'\r\n\r\nconst SideSheetsHeader = ({\r\n  className,\r\n  children\r\n}: React.ComponentProps<'div'>) => {\r\n  const { setOpen } = useSideSheets()\r\n\r\n  return (\r\n    <div className={styles['header']}>\r\n      <div className={clsx(styles['header-inner'], className)}>{children}</div>\r\n      <IconButton onPress={() => setOpen?.(false)}>\r\n        <Icon>close</Icon>\r\n      </IconButton>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { SideSheetsHeader }\r\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/index.ts",
    "content": "export { SideSheets } from './SideSheets'\n\nexport { SideSheetsAction } from './SideSheetsAction'\nexport { SideSheetsActivator } from './SideSheetsActivator'\nexport { SideSheetsBody } from './SideSheetsBody'\nexport { SideSheetsContent } from './SideSheetsContent'\nexport { SideSheetsHeader } from './SideSheetsHeader'\n"
  },
  {
    "path": "packages/actify/src/components/SideSheets/side-sheets.module.css",
    "content": ".action {\n  padding-top: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.body {\n  padding-top: 1.5rem;\n  padding-left: 1.5rem;\n  display: flex;\n  flex-direction: column;\n  min-height: 7.5rem;\n  overflow-y: auto;\n  height: calc(100vh - 11rem);\n}\n.header {\n  padding-left: 1.5rem;\n  padding-right: 0.75rem;\n  padding-top: 0.75rem;\n  padding-bottom: 1rem;\n  display: flex;\n  align-items: center;\n}\n.header-inner {\n  flex-grow: 1;\n  font-size: 22px;\n}\n.content {\n  z-index: 50;\n  background-color: rgba(0, 0, 0, 0.32);\n  position: fixed;\n  overflow: hidden;\n  inset: 0;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n  opacity: 0;\n  transition-property: opacity;\n  transition-duration: 500ms;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n.content-inner {\n  position: absolute;\n  height: 100vh;\n  max-width: 20rem;\n  width: 100%;\n  background-color: var(--md-sys-color-surface);\n  border-top-left-radius: 1rem;\n  border-bottom-left-radius: 1rem;\n  overflow: hidden;\n  top: 0;\n  right: 0;\n  --tw-translate-x: 100%;\n  transform: translate(var(--tw-translate-x), var(--tw-translate-y))\n    rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y))\n    scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n  transition-duration: 150ms;\n  transition-property: transform;\n  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Sliders/Slider.tsx",
    "content": "import { AriaSliderProps, useNumberFormatter, useSlider } from 'react-aria'\r\n\r\nimport { Label } from '../Label/Label'\r\nimport React from 'react'\r\nimport { Thumb } from './Thumb'\r\nimport clsx from 'clsx'\r\nimport styles from './slider.module.css'\r\nimport { useSliderState } from 'react-stately'\r\n\r\ninterface SliderProps extends AriaSliderProps {\r\n  labeled?: boolean\r\n  className?: string\r\n  formatOptions?: Record<string, string>\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst Slider = (props: SliderProps) => {\r\n  const { labeled, minValue = 0, maxValue = 100 } = props\r\n\r\n  const trackRef = React.useRef(null)\r\n  const numberFormatter = useNumberFormatter(props.formatOptions)\r\n  const state = useSliderState({ ...props, numberFormatter })\r\n  const { groupProps, trackProps, labelProps, outputProps } = useSlider(\r\n    props,\r\n    state,\r\n    trackRef\r\n  )\r\n\r\n  const percent =\r\n    (Number(state.getThumbValueLabel(0)) - minValue) / (maxValue - minValue)\r\n\r\n  return (\r\n    <div\r\n      {...groupProps}\r\n      style={\r\n        {\r\n          '--_tick-count': 100,\r\n          '--_start-fraction': 0,\r\n          '--_end-fraction': percent\r\n        } as React.CSSProperties\r\n      }\r\n      className={clsx(styles['slider'], styles[state.orientation])}\r\n    >\r\n      {/* Create a container for the label and output element. */}\r\n      {props.label && (\r\n        <div className={styles['label-container']}>\r\n          <Label {...labelProps}>{props.label}</Label>\r\n          <output {...outputProps}>\r\n            {state.values\r\n              .map((_, index) => `${state.getThumbValueLabel(index)}`)\r\n              .join(' - ')}\r\n          </output>\r\n        </div>\r\n      )}\r\n      {/* The track element holds the visible track line and the thumb. */}\r\n      <div\r\n        {...trackProps}\r\n        ref={trackRef}\r\n        className={clsx(\r\n          styles['track'],\r\n          state.isDisabled && styles['disabled']\r\n        )}\r\n      >\r\n        {state.values.map((_, index) => (\r\n          <Thumb\r\n            key={index}\r\n            index={index}\r\n            state={state}\r\n            labeled={labeled}\r\n            trackRef={trackRef}\r\n          />\r\n        ))}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { Slider }\r\n"
  },
  {
    "path": "packages/actify/src/components/Sliders/Thumb.tsx",
    "content": "import {\n  AriaSliderThumbProps,\n  VisuallyHidden,\n  mergeProps,\n  useFocusRing,\n  useSliderThumb\n} from 'react-aria'\n\nimport { Elevation } from '../Elevation/Elevation'\nimport { FocusRing } from '../FocusRing'\nimport React from 'react'\nimport { Ripple } from '../Ripple/Ripple'\nimport { SliderState } from 'react-stately'\nimport clsx from 'clsx'\nimport styles from './slider.module.css'\n\ninterface ThumbProps extends AriaSliderThumbProps {\n  labeled?: boolean\n  state: SliderState\n  outputProps?: React.OutputHTMLAttributes<HTMLOutputElement>\n  trackRef: React.RefObject<null>\n}\n\nconst Thumb = (props: ThumbProps) => {\n  const { labeled, outputProps, state, trackRef, index = 0, name } = props\n  const inputRef = React.useRef(null)\n  const { thumbProps, inputProps, isDragging } = useSliderThumb(\n    {\n      index,\n      trackRef,\n      inputRef,\n      name\n    },\n    state\n  )\n\n  const { focusProps, isFocused, isFocusVisible } = useFocusRing()\n\n  return (\n    <div\n      {...thumbProps}\n      className={clsx(\n        styles['handle'],\n        isFocusVisible && styles['focus'],\n        isDragging && styles['dragging']\n      )}\n    >\n      <div className={styles['thumb']}>\n        <VisuallyHidden>\n          <input\n            ref={inputRef}\n            className={styles['input']}\n            {...mergeProps(inputProps, focusProps)}\n          />\n        </VisuallyHidden>\n        {isFocusVisible && <FocusRing />}\n        <Ripple id={inputProps.id} disabled={state.isDisabled} />\n        <Elevation disabled={state.isDisabled} />\n        {/* labeled */}\n        {labeled && (\n          <output\n            {...outputProps}\n            className={styles['label']}\n            style={{\n              transform: `translateX(-50%) scale(${isFocused ? 1 : 0})`\n            }}\n          >\n            <span style={{ zIndex: 1 }}>{state.getThumbValueLabel(index)}</span>\n          </output>\n        )}\n      </div>\n    </div>\n  )\n}\n\nexport { Thumb }\n"
  },
  {
    "path": "packages/actify/src/components/Sliders/index.ts",
    "content": "export { Slider } from './Slider'\r\n"
  },
  {
    "path": "packages/actify/src/components/Sliders/slider.module.css",
    "content": ".slider {\n  --_active-track-color: var(\n    --md-slider-active-track-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_active-track-height: var(--md-slider-active-track-height, 4px);\n  --_active-track-shape: var(\n    --md-slider-active-track-shape,\n    var(--md-sys-shape-corner-full, 9999px)\n  );\n  --_disabled-active-track-color: var(\n    --md-slider-disabled-active-track-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-active-track-opacity: var(\n    --md-slider-disabled-active-track-opacity,\n    0.38\n  );\n  --_disabled-handle-color: var(\n    --md-slider-disabled-handle-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-handle-elevation: var(--md-slider-disabled-handle-elevation, 0);\n  --_disabled-inactive-track-color: var(\n    --md-slider-disabled-inactive-track-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_disabled-inactive-track-opacity: var(\n    --md-slider-disabled-inactive-track-opacity,\n    0.12\n  );\n  --_focus-handle-color: var(\n    --md-slider-focus-handle-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_handle-color: var(\n    --md-slider-handle-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_handle-elevation: var(--md-slider-handle-elevation, 1);\n  --_handle-height: var(--md-slider-handle-height, 20px);\n  --_handle-shadow-color: var(\n    --md-slider-handle-shadow-color,\n    var(--md-sys-color-shadow, #000000)\n  );\n  --_handle-shape: var(\n    --md-slider-handle-shape,\n    var(--md-sys-shape-corner-full, 9999px)\n  );\n  --_handle-width: var(--md-slider-handle-width, 20px);\n  --_hover-handle-color: var(\n    --md-slider-hover-handle-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-color: var(\n    --md-slider-hover-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_hover-state-layer-opacity: var(\n    --md-slider-hover-state-layer-opacity,\n    0.08\n  );\n  --_inactive-track-color: var(\n    --md-slider-inactive-track-color,\n    var(--md-sys-color-surface-container-highest, #e6e0e9)\n  );\n  --_inactive-track-height: var(--md-slider-inactive-track-height, 4px);\n  --_inactive-track-shape: var(\n    --md-slider-inactive-track-shape,\n    var(--md-sys-shape-corner-full, 9999px)\n  );\n  --_label-container-color: var(\n    --md-slider-label-container-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_label-container-height: var(--md-slider-label-container-height, 28px);\n  --_pressed-handle-color: var(\n    --md-slider-pressed-handle-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-color: var(\n    --md-slider-pressed-state-layer-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n  --_pressed-state-layer-opacity: var(\n    --md-slider-pressed-state-layer-opacity,\n    0.12\n  );\n  --_state-layer-size: var(--md-slider-state-layer-size, 40px);\n  --_with-overlap-handle-outline-color: var(\n    --md-slider-with-overlap-handle-outline-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_with-overlap-handle-outline-width: var(\n    --md-slider-with-overlap-handle-outline-width,\n    1px\n  );\n  --_with-tick-marks-active-container-color: var(\n    --md-slider-with-tick-marks-active-container-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_with-tick-marks-container-size: var(\n    --md-slider-with-tick-marks-container-size,\n    2px\n  );\n  --_with-tick-marks-disabled-container-color: var(\n    --md-slider-with-tick-marks-disabled-container-color,\n    var(--md-sys-color-on-surface, #1d1b20)\n  );\n  --_with-tick-marks-inactive-container-color: var(\n    --md-slider-with-tick-marks-inactive-container-color,\n    var(--md-sys-color-on-surface-variant, #49454f)\n  );\n  --_label-text-color: var(\n    --md-slider-label-text-color,\n    var(--md-sys-color-on-primary, #ffffff)\n  );\n  --_label-text-font: var(\n    --md-slider-label-text-font,\n    var(\n      --md-sys-typescale-label-medium-font,\n      var(--md-ref-typeface-plain, Roboto)\n    )\n  );\n  --_label-text-line-height: var(\n    --md-slider-label-text-line-height,\n    var(--md-sys-typescale-label-medium-line-height, 1rem)\n  );\n  --_label-text-size: var(\n    --md-slider-label-text-size,\n    var(--md-sys-typescale-label-medium-size, 0.75rem)\n  );\n  --_label-text-weight: var(\n    --md-slider-label-text-weight,\n    var(\n      --md-sys-typescale-label-medium-weight,\n      var(--md-ref-typeface-weight-medium, 500)\n    )\n  );\n  display: inline-flex;\n  vertical-align: middle;\n  --md-elevation-level: var(--_handle-elevation);\n  --md-elevation-shadow-color: var(--_handle-shadow-color);\n}\n\n.slider.horizontal {\n  min-inline-size: 200px;\n  flex-direction: column;\n}\n\n.slider.vertical {\n  height: 150px;\n}\n\n.label-container {\n  display: flex;\n  justify-content: space-between;\n}\n.vertical .label-container {\n  flex-direction: column;\n}\n\n.slider.horizontal .track {\n  height: 40px;\n  margin: 0 auto;\n  width: calc(100% - var(--_state-layer-size));\n}\n\n/* track full */\n.track:before {\n  content: attr(x);\n  display: block;\n  position: absolute;\n  background: var(--_inactive-track-color);\n  border-radius: var(--_active-track-shape);\n}\n/* track current */\n.track:after {\n  content: attr(x);\n  display: block;\n  position: absolute;\n  background: var(--_active-track-color);\n  border-radius: var(--_active-track-shape);\n  clip-path: inset(\n    0\n      calc(\n        var(--_with-tick-marks-container-size) *\n          min((1 - var(--_end-fraction)) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          (1 - var(--_end-fraction))\n      )\n      0\n      calc(\n        var(--_with-tick-marks-container-size) *\n          min(var(--_start-fraction) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          var(--_start-fraction)\n      )\n  );\n}\n.vertical .track:after {\n  clip-path: inset(\n    calc(\n        var(--_with-tick-marks-container-size) *\n          min((1 - var(--_end-fraction)) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          (1 - var(--_end-fraction))\n      )\n      0\n      calc(\n        var(--_with-tick-marks-container-size) *\n          min(var(--_start-fraction) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          var(--_start-fraction)\n      )\n      0\n  );\n}\n\n.slider.horizontal .track:before,\n.slider.horizontal .track:after {\n  top: 50%;\n  transform: translateY(-50%);\n  height: var(--_active-track-height);\n  width: 100%;\n  left: 0;\n}\n\n.slider.vertical .track {\n  width: 30px;\n  height: 100%;\n}\n\n.slider.vertical .track:before,\n.slider.vertical .track:after {\n  width: var(--_active-track-height);\n  height: 100%;\n  left: 50%;\n  transform: translateX(-50%);\n}\n\n.handle {\n  z-index: 1;\n  block-size: var(--_state-layer-size);\n  inline-size: var(--_state-layer-size);\n  display: flex;\n  place-content: center;\n  place-items: center;\n}\n.thumb {\n  width: var(--_handle-width);\n  height: var(--_handle-height);\n  background: var(--_handle-color);\n  border-radius: var(--_handle-shape);\n}\n.input {\n  opacity: 0;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  position: absolute;\n  box-sizing: border-box;\n  height: 100%;\n  width: 100%;\n  margin: 0px;\n  background: rgba(0, 0, 0, 0);\n  cursor: pointer;\n  pointer-events: auto;\n  appearance: none;\n}\n\n.slider.horizontal .handle {\n  top: 50%;\n}\n\n.slider.vertical .handle {\n  left: 50%;\n}\n\n.track.disabled {\n  opacity: 0.4;\n}\n\n.track:before {\n  background-color: var(--_inactive-track-color);\n  block-size: var(--_inactive-track-height);\n  border-radius: var(--_inactive-track-shape);\n  position: absolute;\n  content: '';\n  inset-inline-start: calc(\n    var(--_state-layer-size) / 2 - var(--_with-tick-marks-container-size)\n  );\n  inset-inline-end: calc(\n    var(--_state-layer-size) / 2 - var(--_with-tick-marks-container-size)\n  );\n  background-size: calc(\n      (100% - var(--_with-tick-marks-container-size) * 2) / var(--_tick-count)\n    )\n    100%;\n}\n\n.track:after {\n  background: var(--_active-track-color);\n  block-size: var(--_active-track-height);\n  border-radius: var(--_active-track-shape);\n  clip-path: inset(\n    0\n      calc(\n        var(--_with-tick-marks-container-size) *\n          min((1 - var(--_end-fraction)) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          (1 - var(--_end-fraction))\n      )\n      0\n      calc(\n        var(--_with-tick-marks-container-size) *\n          min(var(--_start-fraction) * 1000000000, 1) +\n          (100% - var(--_with-tick-marks-container-size) * 2) *\n          var(--_start-fraction)\n      )\n  );\n  position: absolute;\n  content: '';\n  inset-inline-start: calc(\n    var(--_state-layer-size) / 2 - var(--_with-tick-marks-container-size)\n  );\n  inset-inline-end: calc(\n    var(--_state-layer-size) / 2 - var(--_with-tick-marks-container-size)\n  );\n  background-size: calc(\n      (100% - var(--_with-tick-marks-container-size) * 2) / var(--_tick-count)\n    )\n    100%;\n}\n\n.slider .label {\n  position: absolute;\n  box-sizing: border-box;\n  display: flex;\n  padding: 4px;\n  place-items: center;\n  place-content: center;\n  left: 50%;\n  border-radius: var(--md-sys-shape-corner-full, 9999px);\n  color: var(--_label-text-color);\n  font-family: var(--_label-text-font);\n  font-size: var(--_label-text-size);\n  line-height: var(--_label-text-line-height);\n  font-weight: var(--_label-text-weight);\n  inset-block-end: 100%;\n  min-inline-size: var(--_label-container-height);\n  min-block-size: var(--_label-container-height);\n  background: var(--_label-container-color);\n  transition: transform 100ms cubic-bezier(0.2, 0, 0, 1) 0s;\n  transform-origin: center bottom;\n  &:before {\n    inline-size: calc(var(--_label-container-height) / 2);\n    block-size: calc(var(--_label-container-height) / 2);\n    bottom: calc(var(--_label-container-height) / -10);\n    transform: rotate(45deg);\n    position: absolute;\n    display: block;\n    content: '';\n    background: inherit;\n  }\n  &:after {\n    inset: 0px;\n    border-radius: inherit;\n    position: absolute;\n    display: block;\n    content: '';\n    background: inherit;\n  }\n}\n"
  },
  {
    "path": "packages/actify/src/components/Slot/Slot.tsx",
    "content": "import React from 'react'\r\nimport clsx from 'clsx'\r\nimport { mergeRefs } from './../../hooks/mergeRefs'\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Slot\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface SlotProps extends React.ComponentProps<'div'> {\r\n  children?: React.ReactNode\r\n}\r\n\r\nconst Slot = (props: SlotProps) => {\r\n  const { ref: forwardedRef, children, ...slotProps } = props\r\n  const childrenArray = React.Children.toArray(children)\r\n  const slottable = childrenArray.find(isSlottable)\r\n\r\n  if (slottable) {\r\n    // the new element to render is the one passed as a child of `Slottable`\r\n    // @ts-ignore\r\n    const newElement = slottable.props.children as React.ReactNode\r\n\r\n    const newChildren = childrenArray.map((child) => {\r\n      if (child === slottable) {\r\n        // because the new element will be the one rendered, we are only interested\r\n        // in grabbing its children (`newElement.props.children`)\r\n        if (React.Children.count(newElement) > 1)\r\n          return React.Children.only(null)\r\n        return React.isValidElement(newElement)\r\n          ? // @ts-ignore\r\n            (newElement.props.children as React.ReactNode)\r\n          : null\r\n      } else {\r\n        return child\r\n      }\r\n    })\r\n\r\n    return (\r\n      <SlotClone {...slotProps} ref={forwardedRef}>\r\n        {React.isValidElement(newElement)\r\n          ? React.cloneElement(newElement, undefined, newChildren)\r\n          : null}\r\n      </SlotClone>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <SlotClone {...slotProps} ref={forwardedRef}>\r\n      {children}\r\n    </SlotClone>\r\n  )\r\n}\r\n\r\nSlot.displayName = 'Slot'\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * SlotClone\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\ninterface SlotCloneProps extends React.ComponentPropsWithoutRef<'div'> {\r\n  ref?: any\r\n  children: React.ReactNode\r\n}\r\n\r\nconst SlotClone = (props: SlotCloneProps) => {\r\n  const { ref: forwardedRef, children, ...slotProps } = props\r\n\r\n  if (React.isValidElement(children)) {\r\n    return React.cloneElement(children, {\r\n      // @ts-ignore\r\n      ...mergeProps(slotProps, children.props),\r\n      // @ts-ignore\r\n      ref: forwardedRef\r\n        ? mergeRefs(forwardedRef, (children as any).ref)\r\n        : (children as any).ref\r\n    })\r\n  }\r\n\r\n  return React.Children.count(children) > 1 ? React.Children.only(null) : null\r\n}\r\n\r\nSlotClone.displayName = 'SlotClone'\r\n\r\n/* -------------------------------------------------------------------------------------------------\r\n * Slottable\r\n * -----------------------------------------------------------------------------------------------*/\r\n\r\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\r\n  return <React.Fragment>{children}</React.Fragment>\r\n}\r\n\r\n/* ---------------------------------------------------------------------------------------------- */\r\n\r\ntype AnyProps = Record<string, any>\r\n\r\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\r\n  return React.isValidElement(child) && child.type === Slottable\r\n}\r\n\r\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\r\n  // all child props should override\r\n  const overrideProps = { ...childProps }\r\n\r\n  // parentProps\r\n  let parentProps: AnyProps = {}\r\n  for (const propName in slotProps) {\r\n    const isHandler = /^on[A-Z]/.test(propName)\r\n    if (propName != 'style' && propName != 'className' && !isHandler) {\r\n      parentProps[propName] = slotProps[propName]\r\n      delete slotProps[propName]\r\n    }\r\n  }\r\n\r\n  for (const propName in childProps) {\r\n    const slotPropValue = slotProps[propName]\r\n    const childPropValue = childProps[propName]\r\n\r\n    const isHandler = /^on[A-Z]/.test(propName)\r\n    if (isHandler) {\r\n      // if the handler exists on both, we compose them\r\n      if (slotPropValue && childPropValue) {\r\n        overrideProps[propName] = (...args: unknown[]) => {\r\n          childPropValue(...args)\r\n          slotPropValue(...args)\r\n        }\r\n      }\r\n      // but if it exists only on the slot, we use only this one\r\n      else if (slotPropValue) {\r\n        overrideProps[propName] = slotPropValue\r\n      }\r\n    }\r\n    // if it's `style`, we merge them\r\n    else if (propName === 'style') {\r\n      if (typeof overrideProps[propName] == 'function') {\r\n        overrideProps[propName] = overrideProps[propName]({ ...parentProps })\r\n      } else {\r\n        overrideProps[propName] = { ...slotPropValue, ...childPropValue }\r\n      }\r\n    } else if (propName === 'className') {\r\n      if (typeof overrideProps[propName] == 'function') {\r\n        overrideProps[propName] = overrideProps[propName]({ ...parentProps })\r\n      } else {\r\n        overrideProps[propName] = clsx(slotPropValue, childPropValue)\r\n      }\r\n    }\r\n  }\r\n\r\n  return { ...slotProps, ...overrideProps }\r\n}\r\n\r\nconst Root = Slot\r\n\r\nexport {\r\n  Slot,\r\n  Slottable,\r\n  //\r\n  Root\r\n}\r\nexport type { SlotProps }\r\n"
  },
  {
    "path": "packages/actify/src/components/Slot/index.ts",
    "content": "export {\r\n  Slot,\r\n  Slottable,\r\n  //\r\n  Root\r\n} from './Slot'\r\n"
  },
  {
    "path": "packages/actify/src/components/Snackbar/Toast.tsx",
    "content": "import type { AriaToastProps } from '@react-aria/toast'\nimport { Elevation } from '../Elevation'\nimport { Icon } from '../Icon'\nimport { IconButton } from '../Buttons'\nimport React from 'react'\nimport type { ToastState } from '@react-stately/toast'\nimport styles from './toast.module.css'\nimport { useToast } from '@react-aria/toast'\n\ninterface ToastProps<T> extends AriaToastProps<T> {\n  state: ToastState<T>\n}\n\nconst Toast = <T extends React.ReactNode>({\n  state,\n  ...props\n}: ToastProps<T>) => {\n  const ref = React.useRef(null)\n  const { toastProps, contentProps, titleProps, closeButtonProps } = useToast(\n    props,\n    state,\n    ref\n  )\n\n  return (\n    <div {...toastProps} ref={ref} className={styles['toast']}>\n      <div {...contentProps} className={styles['toast-content']}>\n        <div {...titleProps} className={styles['toast-title']}>\n          {props.toast.content}\n        </div>\n      </div>\n      <IconButton {...closeButtonProps} className={styles['close-button']}>\n        <Icon>close</Icon>\n      </IconButton>\n      <Elevation />\n    </div>\n  )\n}\n\nexport { Toast }\n"
  },
  {
    "path": "packages/actify/src/components/Snackbar/ToastProvider.tsx",
    "content": "import React from 'react'\nimport { ToastRegion } from './ToastRegion'\nimport type { ToastState } from '@react-stately/toast'\nimport { useToastState } from '@react-stately/toast'\n\ninterface ToastProviderProps<T> {\n  maxVisibleToasts?: number\n  children: (state: ToastState<T>) => React.ReactNode\n}\n\nconst ToastProvider = <T extends React.ReactNode>({\n  children,\n  maxVisibleToasts = 5,\n  ...props\n}: ToastProviderProps<T>) => {\n  const state = useToastState<T>({\n    maxVisibleToasts\n  })\n\n  return (\n    <>\n      {children(state)}\n      {state.visibleToasts.length > 0 && (\n        <ToastRegion {...props} state={state} />\n      )}\n    </>\n  )\n}\n\nexport { ToastProvider }\n"
  },
  {
    "path": "packages/actify/src/components/Snackbar/ToastRegion.tsx",
    "content": "import type { AriaToastRegionProps } from '@react-aria/toast'\nimport React from 'react'\nimport { Toast } from './Toast'\nimport type { ToastState } from '@react-stately/toast'\nimport styles from './toast.module.css'\nimport { useToastRegion } from '@react-aria/toast'\n\ninterface ToastRegionProps<T> extends AriaToastRegionProps {\n  state: ToastState<T>\n}\n\nconst ToastRegion = <T extends React.ReactNode>({\n  state,\n  ...props\n}: ToastRegionProps<T>) => {\n  const ref = React.useRef(null)\n  const { regionProps } = useToastRegion(props, state, ref)\n\n  return (\n    <div {...regionProps} ref={ref} className={styles['toast-region']}>\n      {state.visibleToasts.map((toast) => (\n        <Toast key={toast.key} toast={toast} state={state} />\n      ))}\n    </div>\n  )\n}\n\nexport { ToastRegion }\n"
  },
  {
    "path": "packages/actify/src/components/Snackbar/index.ts",
    "content": "export { Toast as Snackbar } from './Toast'\nexport { ToastProvider as SnackbarProvider } from './ToastProvider'\n"
  },
  {
    "path": "packages/actify/src/components/Snackbar/toast.module.css",
    "content": ".toast-region {\n  position: fixed;\n  z-index: 999;\n  bottom: 16px;\n  left: 50%;\n  transform: translateX(-50%);\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n}\n\n.toast {\n  --_container-elevation: 3;\n  --_container-shadow-color: var(--md-sys-color-shadow);\n  position: relative;\n  display: flex;\n  align-items: center;\n  gap: 16px;\n  height: 48px;\n  padding-inline-start: 16px;\n  padding-inline-end: 16px;\n  background-color: var(--md-sys-color-inverse-surface);\n  color: var(--md-sys-color-inverse-on-surface);\n  border-radius: 4px;\n}\n\n.toast-content {\n  width: 344px;\n}\n\n.toast-title {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.close-button {\n  color: var(--md-sys-color-inverse-on-surface);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Spacer/Spacer.tsx",
    "content": "import React from 'react'\r\n\r\nconst Spacer = ({ style, className, ...rest }: React.ComponentProps<'div'>) => {\r\n  return (\r\n    <div {...rest} style={{ ...style, flex: '1 1 0%' }} className={className} />\r\n  )\r\n}\r\n\r\nSpacer.displayName = 'Actify.Spacer'\r\n\r\nexport { Spacer }\r\n"
  },
  {
    "path": "packages/actify/src/components/Spacer/index.ts",
    "content": "export { Spacer } from './Spacer'\r\n"
  },
  {
    "path": "packages/actify/src/components/Swiper/Swiper.tsx",
    "content": "'use client'\r\n\r\nimport React, { Children, FunctionComponent, useState } from 'react'\r\n\r\nimport { Icon } from './../Icon'\r\nimport { IconButton } from './../Buttons'\r\nimport clsx from 'clsx'\r\nimport styles from './swiper.module.css'\r\nimport { useInterval } from './../../hooks'\r\n\r\ninterface SwiperProps extends React.ComponentProps<'div'> {\r\n  current?: number\r\n  interval?: number\r\n  autoPlay?: boolean\r\n  indicator?: FunctionComponent\r\n  children?: React.JSX.Element | React.JSX.Element[]\r\n}\r\n\r\nconst Swiper = (props: SwiperProps) => {\r\n  const {\r\n    current: index,\r\n    interval = 3000,\r\n    autoPlay,\r\n    className,\r\n    indicator,\r\n    children,\r\n    ...rest\r\n  } = props\r\n\r\n  const items = Children.map(children, (child) =>\r\n    child?.type?.name === 'SwiperItem' ? child : null\r\n  )\r\n  const count = items?.length\r\n\r\n  const [current, setCurrent] = useState(index ?? 0)\r\n  const [transition, setTransition] = useState('transform .5s ease-in-out')\r\n  const [transform, setTransform] = useState('')\r\n\r\n  const prev = () => {\r\n    if (current === 0) {\r\n      setTransition('none')\r\n      setTransform(`-${count! + 1}00%`)\r\n      requestAnimationFrame(() => {\r\n        setTransform('')\r\n        setTransition('transform .5s ease-in-out')\r\n      })\r\n      setCurrent(count! - 1)\r\n    } else {\r\n      setCurrent((_) => _ - 1)\r\n    }\r\n  }\r\n  const next = () => {\r\n    if (current === count! - 1) {\r\n      setTransition('none')\r\n      setTransform('0')\r\n      requestAnimationFrame(() => {\r\n        setTransform('')\r\n        setTransition('transform .5s ease-in-out')\r\n      })\r\n      setCurrent(0)\r\n    } else {\r\n      setCurrent((_) => _ + 1)\r\n    }\r\n  }\r\n\r\n  autoPlay && useInterval(next, interval)\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], className)}>\r\n      <div\r\n        style={\r\n          {\r\n            '--transition': transition,\r\n            '--transform': transform || `-${current + 1}00%`\r\n          } as React.CSSProperties\r\n        }\r\n        className={styles['root-inner']}\r\n      >\r\n        {items?.[count! - 1]}\r\n        {items}\r\n        {items?.[0]}\r\n\r\n        {/* controls */}\r\n        {/* prev button */}\r\n\r\n        <IconButton\r\n          onPress={prev}\r\n          color=\"primary\"\r\n          className={clsx(styles['button'], styles['button-prev'])}\r\n        >\r\n          <Icon>chevron_left</Icon>\r\n        </IconButton>\r\n\r\n        {/* next button */}\r\n\r\n        <IconButton\r\n          onPress={next}\r\n          color=\"primary\"\r\n          className={clsx(styles['button'], styles['button-next'])}\r\n        >\r\n          <Icon>chevron_right</Icon>\r\n        </IconButton>\r\n\r\n        {/* indicators */}\r\n        {indicator ? (\r\n          indicator({ setCurrent, current, count })\r\n        ) : (\r\n          <ul className={styles['indicator']}>\r\n            {[...Array(count)].map((_, i) => (\r\n              <li\r\n                key={i}\r\n                onClick={() => setCurrent(i)}\r\n                className={clsx(\r\n                  styles['indicator-item'],\r\n                  i == current && styles['indicator-active']\r\n                )}\r\n              />\r\n            ))}\r\n          </ul>\r\n        )}\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nSwiper.displayName = 'Actify.Swiper'\r\n\r\nexport { Swiper }\r\n"
  },
  {
    "path": "packages/actify/src/components/Swiper/SwiperItem.tsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\nimport styles from './swiper.module.css'\n\nconst SwiperItem = (props: React.ComponentProps<'div'>) => {\n  const { className, children, ...rest } = props\n  return (\n    <div {...rest} className={clsx(styles['item'], className)}>\n      {children}\n    </div>\n  )\n}\n\nexport { SwiperItem }\n"
  },
  {
    "path": "packages/actify/src/components/Swiper/index.ts",
    "content": "export { Swiper } from './Swiper'\r\nexport { SwiperItem } from './SwiperItem'\r\n"
  },
  {
    "path": "packages/actify/src/components/Swiper/swiper.module.css",
    "content": ".root {\n  display: grid;\n  width: 100%;\n  overflow: hidden;\n  place-items: center;\n}\n.root-inner {\n  position: relative;\n  height: 100%;\n  display: flex;\n  overflow: hidden;\n  border-radius: 0.5rem;\n}\n.button {\n  position: absolute;\n  top: 50%;\n  transform: traslateY(-50%);\n  background-color: var(--md-sys-color-surface);\n}\n.button-prev {\n  left: 1rem;\n}\n.button-next {\n  right: 1rem;\n}\n.item {\n  width: 100%;\n  height: 100%;\n  display: inline-block;\n  flex: none;\n  transition: var(--transition);\n  transform: translateX(var(--transform));\n}\n.indicator {\n  position: absolute;\n  bottom: 1rem;\n  display: flex;\n  width: 100%;\n  justify-content: center;\n  gap: 0.5rem;\n}\n.indicator-item {\n  width: 1.25rem;\n  height: 1.25rem;\n  border-radius: 9999px;\n  cursor: pointer;\n  background-color: var(--md-sys-color-inverse-surface);\n}\n.indicator-active {\n  background-color: var(--md-sys-color-surface);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Switch/Switch.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  AriaCheckboxProps,\r\n  mergeProps,\r\n  useFocusRing,\r\n  useSwitch\r\n} from 'react-aria'\r\nimport React, { useId } from 'react'\r\n\r\nimport { FocusRing } from './../FocusRing'\r\nimport { Label } from '../Label'\r\nimport { Ripple } from './../Ripple'\r\nimport { StyleProps } from '../../utils'\r\nimport { VisuallyHidden } from '../VisuallyHidden'\r\nimport clsx from 'clsx'\r\nimport styles from './switch.module.css'\r\nimport { useToggleState } from 'react-stately'\r\n\r\ninterface SwitchProps extends AriaCheckboxProps, StyleProps {\r\n  ref?: React.RefObject<HTMLInputElement>\r\n  icons?: boolean\r\n  showOnlySelectedIcon?: boolean\r\n  color?: 'primary' | 'secondary' | 'tertiary' | 'error'\r\n}\r\n\r\nconst Switch = (props: SwitchProps) => {\r\n  const _ref = React.useRef(null)\r\n  const _id = `actify-switch${useId()}`\r\n\r\n  const {\r\n    icons,\r\n    style,\r\n    className,\r\n    children,\r\n    isDisabled,\r\n    showOnlySelectedIcon,\r\n    id = _id,\r\n    ref = _ref\r\n  } = props\r\n\r\n  const state = useToggleState(props)\r\n\r\n  const { inputProps, labelProps } = useSwitch(props, state, ref)\r\n  const { isFocusVisible, focusProps } = useFocusRing()\r\n\r\n  const shouldShowIcons = () => {\r\n    return icons || showOnlySelectedIcon\r\n  }\r\n\r\n  const renderIcons = () => {\r\n    return (\r\n      <div className={styles['icons']}>\r\n        <svg viewBox=\"0 0 24 24\" className={clsx(styles['icon'], styles['on'])}>\r\n          <path d=\"M9.55 18.2 3.65 12.3 5.275 10.675 9.55 14.95 18.725 5.775 20.35 7.4Z\" />\r\n        </svg>\r\n\r\n        {!showOnlySelectedIcon && (\r\n          <svg\r\n            viewBox=\"0 0 24 24\"\r\n            className={clsx(styles['icon'], styles['off'])}\r\n          >\r\n            <path d=\"M6.4 19.2 4.8 17.6 10.4 12 4.8 6.4 6.4 4.8 12 10.4 17.6 4.8 19.2 6.4 13.6 12 19.2 17.6 17.6 19.2 12 13.6Z\" />\r\n          </svg>\r\n        )}\r\n      </div>\r\n    )\r\n  }\r\n\r\n  return (\r\n    <div\r\n      role=\"presentation\"\r\n      className={clsx(styles['host'], isDisabled && styles['disabled'])}\r\n    >\r\n      <Label\r\n        style={style}\r\n        className={clsx(\r\n          styles['switch'],\r\n          isDisabled && styles['disabled'],\r\n          state.isSelected ? styles['selected'] : styles['unselected'],\r\n          className\r\n        )}\r\n      >\r\n        <VisuallyHidden>\r\n          <input\r\n            id={id}\r\n            ref={ref}\r\n            role=\"switch\"\r\n            className={styles['touch']}\r\n            {...mergeProps(inputProps, focusProps)}\r\n          />\r\n        </VisuallyHidden>\r\n        {isFocusVisible && <FocusRing />}\r\n        <span className={styles['track']}>\r\n          <span className={styles['handle-container']}>\r\n            <Ripple\r\n              id={id}\r\n              disabled={isDisabled}\r\n              style={{\r\n                inset: 'unset',\r\n                borderRadius:\r\n                  'var(--md-switch-state-layer-shape,var(--md-sys-shape-corner-full, 9999px))',\r\n                width: 'var(--md-switch-state-layer-size, 40px)',\r\n                height: 'var(--md-switch-state-layer-size, 40px)'\r\n              }}\r\n            />\r\n            <span\r\n              className={clsx([icons && styles['with-icon'], styles['handle']])}\r\n            >\r\n              {shouldShowIcons() && renderIcons()}\r\n            </span>\r\n          </span>\r\n        </span>\r\n      </Label>\r\n      <Label {...labelProps} id={id}>\r\n        {children}\r\n      </Label>\r\n    </div>\r\n  )\r\n}\r\n\r\nSwitch.displayName = 'Actify.Switch'\r\n\r\nexport { Switch }\r\n"
  },
  {
    "path": "packages/actify/src/components/Switch/index.ts",
    "content": "export { Switch } from './Switch'\r\n"
  },
  {
    "path": "packages/actify/src/components/Switch/switch.module.css",
    "content": ".host {\n  gap: 4px;\n  outline: none;\n  display: inline-flex;\n  vertical-align: top;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n  cursor: pointer;\n  &.disabled {\n    cursor: 'default';\n    pointer-events: none;\n  }\n}\n.track {\n  position: absolute;\n  width: 100%;\n  height: 100%;\n  box-sizing: border-box;\n  border-radius: inherit;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  &:before {\n    content: '';\n    display: flex;\n    position: absolute;\n    height: 100%;\n    width: 100%;\n    border-radius: inherit;\n    box-sizing: border-box;\n    transition-property: opacity, background-color;\n    transition-timing-function: linear;\n    transition-duration: 67ms;\n  }\n}\n\n.handle-container {\n  display: flex;\n  place-content: center;\n  place-items: center;\n  position: relative;\n  transition: margin 300ms cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;\n}\n\n.handle {\n  border-start-start-radius: var(\n    --md-switch-handle-shape-start-start,\n    var(--md-switch-handle-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-start-end-radius: var(\n    --md-switch-handle-shape-start-end,\n    var(--md-switch-handle-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-end-end-radius: var(\n    --md-switch-handle-shape-end-end,\n    var(--md-switch-handle-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-end-start-radius: var(\n    --md-switch-handle-shape-end-start,\n    var(--md-switch-handle-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  height: var(--md-switch-handle-height, 16px);\n  width: var(--md-switch-handle-width, 16px);\n  transform-origin: center center;\n  transition-property: height, width;\n  transition-duration: 250ms, 250ms;\n  transition-timing-function: cubic-bezier(0.2, 0, 0, 1),\n    cubic-bezier(0.2, 0, 0, 1);\n  z-index: 0;\n  &:before {\n    content: '';\n    display: flex;\n    inset: 0px;\n    position: absolute;\n    border-radius: inherit;\n    box-sizing: border-box;\n    transition: background-color 67ms linear 0s;\n  }\n  &.with-icon {\n    height: var(--md-switch-with-icon-handle-height, 24px);\n    width: var(--md-switch-with-icon-handle-width, 24px);\n  }\n}\n\n.icons {\n  position: relative;\n  height: 100%;\n  width: 100%;\n}\n\n.icon {\n  position: absolute;\n  inset: 0px;\n  margin: auto;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  fill: currentcolor;\n  transition:\n    fill 67ms linear 0s,\n    opacity 33ms linear 0s,\n    transform 167ms cubic-bezier(0.2, 0, 0, 1) 0s;\n  opacity: 0;\n  &.on {\n    width: var(--md-switch-selected-icon-size, 16px);\n    height: var(--md-switch-selected-icon-size, 16px);\n    color: var(\n      --md-switch-selected-icon-color,\n      var(--md-sys-color-on-primary-container)\n    );\n  }\n  &.off {\n    width: var(--md-switch-icon-size, 16px);\n    height: var(--md-switch-icon-size, 16px);\n    color: var(\n      --md-switch-icon-color,\n      var(--md-sys-color-surface-container-highest)\n    );\n  }\n}\n\n.switch {\n  align-items: center;\n  display: inline-flex;\n  flex-shrink: 0;\n  position: relative;\n  width: var(--md-switch-track-width, 52px);\n  height: var(--md-switch-track-height, 32px);\n  border-start-start-radius: var(\n    --md-switch-track-shape-start-start,\n    var(--md-switch-track-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-start-end-radius: var(\n    --md-switch-track-shape-start-end,\n    var(--md-switch-track-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-end-end-radius: var(\n    --md-switch-track-shape-end-end,\n    var(--md-switch-track-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  border-end-start-radius: var(\n    --md-switch-track-shape-end-start,\n    var(--md-switch-track-shape, var(--md-sys-shape-corner-full, 9999px))\n  );\n  &.selected .track:before {\n    background-color: var(\n      --md-switch-selected-track-color,\n      var(--md-sys-color-primary)\n    );\n  }\n  &.selected .handle-container {\n    margin-inline-start: calc(\n      var(--md-switch-track-width, 52px) - var(--md-switch-track-height, 32px)\n    );\n  }\n  &.selected .ripple {\n    --md-ripple-hover-color: var(\n      --md-switch-selected-hover-state-layer-color,\n      var(--md-sys-color-primary)\n    );\n    --md-ripple-pressed-color: var(\n      --md-switch-selected-pressed-state-layer-color,\n      var(--md-sys-color-primary)\n    );\n    --md-ripple-hover-opacity: var(\n      --md-switch-selected-hover-state-layer-opacity,\n      0.08\n    );\n    --md-ripple-pressed-opacity: var(\n      --md-switch-selected-pressed-state-layer-opacity,\n      0.12\n    );\n  }\n  &.selected .handle {\n    height: var(--md-switch-selected-handle-height, 24px);\n    width: var(--md-switch-selected-handle-width, 24px);\n    &:before {\n      background-color: var(\n        --md-switch-selected-handle-color,\n        var(--md-sys-color-on-primary)\n      );\n    }\n  }\n  &.selected .icon.on,\n  &.unselected .icon.off {\n    opacity: 1;\n  }\n  &.selected:not(.disabled):active .handle,\n  &.unselected:not(.disabled):active .handle {\n    height: var(--md-switch-pressed-handle-height, 28px);\n    width: var(--md-switch-pressed-handle-width, 28px);\n    transition-timing-function: linear;\n    transition-duration: 100ms;\n  }\n  &.unselected .handle-container {\n    margin-inline-end: calc(\n      var(--md-switch-track-width, 52px) - var(--md-switch-track-height, 32px)\n    );\n  }\n  &.unselected .track:before {\n    background-color: var(\n      --md-switch-track-color,\n      var(--md-sys-color-surface-container-highest)\n    );\n    border-color: var(\n      --md-switch-track-outline-color,\n      var(--md-sys-color-outline)\n    );\n    border-style: solid;\n    border-width: var(--md-switch-track-outline-width, 2px);\n  }\n  &.unselected .handle-container:before {\n    margin-inline-end: calc(\n      var(--md-switch-track-width, 52px) - var(--md-switch-track-height, 32px)\n    );\n  }\n  &.unselected .ripple {\n    --md-ripple-hover-color: var(\n      --md-switch-hover-state-layer-color,\n      var(--md-sys-color-on-surface)\n    );\n    --md-ripple-pressed-color: var(\n      --md-switch-pressed-state-layer-color,\n      var(--md-sys-color-on-surface)\n    );\n    --md-ripple-hover-opacity: var(--md-switch-hover-state-layer-opacity, 0.08);\n    --md-ripple-pressed-opacity: var(\n      --md-switch-pressed-state-layer-opacity,\n      0.12\n    );\n  }\n  &.unselected .handle:before {\n    background-color: var(\n      --md-switch-handle-color,\n      var(--md-sys-color-outline)\n    );\n  }\n  &.selected:hover .handle:before,\n  &.selected:focus-within .handle:before {\n    background-color: var(\n      --md-switch-selected-focus-handle-color,\n      var(--md-sys-color-primary-container)\n    );\n  }\n  &.unselected:hover .handle:before,\n  &.unselected:focus-within .handle:before {\n    background-color: var(\n      --md-switch-focus-handle-color,\n      var(--md-sys-color-on-surface-variant)\n    );\n  }\n  &.disabled .track {\n    background-color: rgba(0, 0, 0, 0);\n    border-color: rgba(0, 0, 0, 0);\n    &:before {\n      background-color: var(\n        --md-switch-disabled-track-color,\n        var(--md-sys-color-surface-container-highest)\n      );\n      border-color: var(\n        --md-switch-disabled-track-outline-color,\n        var(--md-sys-color-on-surface)\n      );\n      transition: none 0s ease 0s;\n      opacity: var(--md-switch-disabled-track-opacity, 0.12);\n    }\n  }\n  &.unselected.disabled .handle:before {\n    background-color: var(\n      --md-switch-disabled-handle-color,\n      var(--md-sys-color-on-surface)\n    );\n    opacity: var(--md-switch-disabled-handle-opacity, 0.38);\n  }\n}\n\n.touch {\n  appearance: none;\n  height: 48px;\n  outline: none;\n  margin: 0px;\n  position: absolute;\n  width: 100%;\n  z-index: 1;\n  cursor: inherit;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Table/Table.tsx",
    "content": "'use client'\r\n\r\nimport { AriaTableProps, useTable } from 'react-aria'\r\nimport { SelectionBehavior, useTableState } from 'react-stately'\r\n\r\nimport { Pagination, type PaginationProps } from '../Pagination'\r\nimport React from 'react'\r\nimport { TableCell } from './TableCell'\r\nimport { TableCheckboxCell } from './TableCheckboxCell'\r\nimport { TableColumnHeader } from './TableColumnHeader'\r\nimport { TableHeaderRow } from './TableHeaderRow'\r\nimport type { TableProps } from '@react-types/table'\r\nimport { TableRow } from './TableRow'\r\nimport { TableRowGroup } from './TableRowGroup'\r\nimport { TableSelectAllCell } from './TableSelectAllCell'\r\nimport styles from './table.module.css'\r\n\r\ninterface TableComponentProps<T> extends AriaTableProps, TableProps<T> {\r\n  children: any\r\n  paginator?: PaginationProps\r\n  style?: React.CSSProperties\r\n  selectionBehavior?: SelectionBehavior\r\n}\r\nconst Table = <T extends object>(props: TableComponentProps<T>) => {\r\n  const { paginator, selectionMode, selectionBehavior } = props\r\n  const state = useTableState({\r\n    ...props,\r\n    showSelectionCheckboxes:\r\n      selectionMode === 'multiple' && selectionBehavior !== 'replace'\r\n  })\r\n\r\n  const { collection } = state\r\n  const ref = React.useRef<HTMLTableElement | null>(null)\r\n  const { gridProps } = useTable(props, state, ref)\r\n\r\n  // paginator\r\n  const pageSizes = paginator?.pageSizes ?? [5, 10, 20]\r\n  const [currentPage, setCurrentPage] = React.useState(1)\r\n  const [selectedPageSize, setSelectedPageSize] = React.useState(pageSizes[0])\r\n\r\n  const onPageChange = (page: number) => {\r\n    setCurrentPage(page)\r\n  }\r\n\r\n  React.useEffect(() => {\r\n    const totalPages = Math.ceil(collection.size / selectedPageSize)\r\n    if (totalPages < currentPage) {\r\n      setCurrentPage(1)\r\n    }\r\n  }, [currentPage, selectedPageSize])\r\n\r\n  const paginationProps = React.useMemo(() => {\r\n    const totalPages = Math.ceil(collection.size / selectedPageSize)\r\n    return {\r\n      pageSizes,\r\n      currentPage,\r\n      totalPages,\r\n      selectedPageSize,\r\n      setSelectedPageSize\r\n    }\r\n  }, [\r\n    pageSizes,\r\n    currentPage,\r\n    collection,\r\n    selectedPageSize,\r\n    setSelectedPageSize\r\n  ])\r\n\r\n  return (\r\n    <>\r\n      <table {...gridProps} ref={ref} className={styles['table']}>\r\n        <TableRowGroup type=\"thead\">\r\n          {collection.headerRows.map((headerRow) => (\r\n            <TableHeaderRow key={headerRow.key} item={headerRow} state={state}>\r\n              {[...headerRow.childNodes].map((column) =>\r\n                column.props.isSelectionCell ? (\r\n                  <TableSelectAllCell\r\n                    key={column.key}\r\n                    node={column}\r\n                    state={state}\r\n                  />\r\n                ) : (\r\n                  <TableColumnHeader\r\n                    key={column.key}\r\n                    node={column}\r\n                    state={state}\r\n                  />\r\n                )\r\n              )}\r\n            </TableHeaderRow>\r\n          ))}\r\n        </TableRowGroup>\r\n        <TableRowGroup type=\"tbody\">\r\n          {[...collection.body.childNodes]\r\n            .slice(\r\n              selectedPageSize * (currentPage - 1),\r\n              currentPage * selectedPageSize\r\n            )\r\n            .map((row) => (\r\n              <TableRow node={row} key={row.key} state={state}>\r\n                {[...row.childNodes].map((cell) =>\r\n                  cell.props.isSelectionCell ? (\r\n                    <TableCheckboxCell\r\n                      key={cell.key}\r\n                      node={cell}\r\n                      state={state}\r\n                    />\r\n                  ) : (\r\n                    <TableCell key={cell.key} node={cell} state={state} />\r\n                  )\r\n                )}\r\n              </TableRow>\r\n            ))}\r\n        </TableRowGroup>\r\n      </table>\r\n      {paginator && <Pagination {...{ onPageChange, ...paginationProps }} />}\r\n    </>\r\n  )\r\n}\r\n\r\nTable.displayName = 'Actify.Table'\r\nexport { Table }\r\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableCell.tsx",
    "content": "import {\n  AriaTableCellProps,\n  mergeProps,\n  useFocusRing,\n  useTableCell\n} from 'react-aria'\n\nimport { FocusRing } from '../FocusRing/FocusRing'\nimport { GridNode } from '@react-types/grid'\nimport React from 'react'\nimport { TableState } from 'react-stately'\nimport styles from './table.module.css'\n\ninterface TableCellProps<T> extends AriaTableCellProps {\n  state: TableState<T>\n}\n\nconst TableCell = <T extends object>({ node, state }: TableCellProps<T>) => {\n  const ref = React.useRef<HTMLTableCellElement | null>(null)\n  const { gridCellProps } = useTableCell({ node }, state, ref)\n  const { isFocusVisible, focusProps } = useFocusRing()\n\n  return (\n    <td\n      ref={ref}\n      className={styles['td']}\n      {...mergeProps(gridCellProps, focusProps)}\n    >\n      {node.rendered}\n      {isFocusVisible && <FocusRing />}\n    </td>\n  )\n}\n\nexport { TableCell }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableCheckboxCell.tsx",
    "content": "import {\n  AriaTableCellProps,\n  Key,\n  useTableCell,\n  useTableSelectionCheckbox\n} from 'react-aria'\n\nimport { Checkbox } from './../Checkbox'\nimport React from 'react'\nimport { TableState } from 'react-stately'\n\ninterface TableCheckboxCellProps<T> extends AriaTableCellProps {\n  state: TableState<T>\n}\nconst TableCheckboxCell = <T extends object>({\n  node,\n  state\n}: TableCheckboxCellProps<T>) => {\n  const ref = React.useRef<HTMLTableCellElement | null>(null)\n  const { gridCellProps } = useTableCell({ node }, state, ref)\n  const { checkboxProps } = useTableSelectionCheckbox(\n    { key: node.parentKey as Key },\n    state\n  )\n\n  return (\n    <td {...gridCellProps} ref={ref}>\n      <Checkbox {...checkboxProps} />\n    </td>\n  )\n}\n\nexport { TableCheckboxCell }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableColumnHeader.tsx",
    "content": "import {\n  AriaTableCellProps,\n  mergeProps,\n  useFocusRing,\n  useTableColumnHeader\n} from 'react-aria'\n\nimport { FocusRing } from '../FocusRing'\nimport { Icon } from '../Icon'\nimport React from 'react'\nimport { TableState } from 'react-stately'\nimport styles from './table.module.css'\n\ninterface TableColumnHeaderProps<T> extends AriaTableCellProps {\n  state: TableState<T>\n}\nconst TableColumnHeader = <T extends object>({\n  node,\n  state\n}: TableColumnHeaderProps<T>) => {\n  const ref = React.useRef<HTMLTableCellElement | null>(null)\n  const { columnHeaderProps } = useTableColumnHeader({ node }, state, ref)\n  const isSortVisible = state.sortDescriptor?.column === node.key\n  const { isFocusVisible, focusProps } = useFocusRing()\n\n  return (\n    <th\n      ref={ref}\n      colSpan={node.colspan}\n      className={styles['th']}\n      style={{\n        textAlign: node.colspan! > 1 ? 'center' : 'left',\n        cursor: node.props.allowsSorting ? 'pointer' : 'default'\n      }}\n      {...mergeProps(columnHeaderProps, focusProps)}\n    >\n      {isFocusVisible && <FocusRing />}\n      {node.rendered}\n      {node.props.allowsSorting && (\n        <span\n          aria-hidden=\"true\"\n          style={{\n            padding: '0 2px',\n            display: 'inline-flex',\n            verticalAlign: 'middle',\n            transition: 'all 300ms ease-in-out',\n            visibility: isSortVisible ? 'visible' : 'hidden',\n            rotate:\n              state.sortDescriptor?.direction === 'ascending'\n                ? '0deg'\n                : '-180deg'\n          }}\n        >\n          <Icon>Stat_1</Icon>\n        </span>\n      )}\n    </th>\n  )\n}\n\nexport { TableColumnHeader }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableHeader.tsx",
    "content": "import { TableHeaderProps } from 'react-stately'\n\nconst TableHeader = <T extends object>(props: TableHeaderProps<T>) => {\n  return <>{props.children}</>\n}\n\nexport { TableHeader }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableHeaderRow.tsx",
    "content": "import { GridNode } from '@react-types/grid'\nimport React from 'react'\nimport { TableState } from 'react-stately'\nimport { useTableHeaderRow } from 'react-aria'\n\ninterface TableHeaderRowProps<T> extends React.ComponentProps<'tr'> {\n  item: GridNode<T>\n  state: TableState<T>\n}\n\nconst TableHeaderRow = <T extends object>({\n  item,\n  state,\n  children\n}: TableHeaderRowProps<T>) => {\n  const ref = React.useRef<HTMLTableRowElement | null>(null)\n  const { rowProps } = useTableHeaderRow({ node: item }, state, ref)\n\n  return (\n    <tr {...rowProps} ref={ref}>\n      {children}\n    </tr>\n  )\n}\n\nexport { TableHeaderRow }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableRow.tsx",
    "content": "import {\n  GridRowProps,\n  mergeProps,\n  useFocusRing,\n  useHover,\n  useTableRow\n} from 'react-aria'\n\nimport { FocusRing } from '../FocusRing'\nimport React from 'react'\nimport { TableState } from 'react-stately'\nimport clsx from 'clsx'\nimport styles from './table.module.css'\n\ninterface TableRowProps<T> extends GridRowProps<T> {\n  state: TableState<T>\n  children: React.ReactNode\n}\n\nconst TableRow = <T extends object>(props: TableRowProps<T>) => {\n  const { node, children, state } = props\n  const ref = React.useRef<HTMLTableRowElement | null>(null)\n  const isDisabled = state.selectionManager.isDisabled(node.key)\n  const isSelected = state.selectionManager.isSelected(node.key)\n\n  const { rowProps, isPressed } = useTableRow(\n    {\n      node\n    },\n    state,\n    ref\n  )\n  const { isHovered, hoverProps } = useHover({ isDisabled })\n  const { isFocusVisible, focusProps } = useFocusRing()\n\n  return (\n    <tr\n      ref={ref}\n      data-pressed={isPressed ? 'true' : undefined}\n      data-hover={isHovered ? 'true' : undefined}\n      data-selected={isSelected ? 'true' : undefined}\n      {...mergeProps(rowProps, hoverProps, focusProps)}\n      className={clsx(\n        styles['tr'],\n        isHovered && styles['hovered'],\n        isSelected && styles['selected']\n      )}\n    >\n      {children}\n      {isFocusVisible && <FocusRing as=\"td\" />}\n    </tr>\n  )\n}\n\nexport { TableRow }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableRowGroup.tsx",
    "content": "import React from 'react'\nimport { useTableRowGroup } from 'react-aria'\n\ntype TableRowGroupProps = {\n  className?: string\n  style?: React.CSSProperties\n  type?: keyof HTMLElementTagNameMap\n  children: React.ReactNode\n}\nconst TableRowGroup = ({ type = 'thead', children }: TableRowGroupProps) => {\n  const { rowGroupProps } = useTableRowGroup()\n  const Element = type\n  return (\n    <Element\n      {...rowGroupProps}\n      style={{\n        borderBottom:\n          Element === 'thead'\n            ? '2px solid var(--md-sys-color-outline-variant)'\n            : ''\n      }}\n    >\n      {children}\n    </Element>\n  )\n}\n\nexport { TableRowGroup }\n"
  },
  {
    "path": "packages/actify/src/components/Table/TableSelectAllCell.tsx",
    "content": "import {\n  AriaTableCellProps,\n  VisuallyHidden,\n  useTableColumnHeader,\n  useTableSelectAllCheckbox\n} from 'react-aria'\n\nimport { Checkbox } from '../Checkbox'\nimport React from 'react'\nimport { TableState } from 'react-stately'\n\ninterface TableSelectAllCellProps<T> extends AriaTableCellProps {\n  state: TableState<T>\n}\nconst TableSelectAllCell = <T extends object>({\n  node,\n  state\n}: TableSelectAllCellProps<T>) => {\n  const ref = React.useRef<HTMLTableCellElement | null>(null)\n  const { columnHeaderProps } = useTableColumnHeader({ node }, state, ref)\n  const { checkboxProps } = useTableSelectAllCheckbox(state)\n\n  return (\n    <th {...columnHeaderProps} ref={ref}>\n      {state.selectionManager.selectionMode === 'single' ? (\n        <VisuallyHidden>{checkboxProps['aria-label']}</VisuallyHidden>\n      ) : (\n        <Checkbox {...checkboxProps} />\n      )}\n    </th>\n  )\n}\n\nexport { TableSelectAllCell }\n"
  },
  {
    "path": "packages/actify/src/components/Table/index.ts",
    "content": "export { Table } from './Table'\r\n\r\nexport {\r\n  Cell,\r\n  Column,\r\n  Row,\r\n  TableBody,\r\n  TableHeader,\r\n  useAsyncList\r\n} from 'react-stately'\r\n"
  },
  {
    "path": "packages/actify/src/components/Table/table.module.css",
    "content": ".table {\n  text-indent: 0;\n  box-sizing: border-box;\n  border-color: inherit;\n  border: 0 solid #e5e7eb;\n\n  width: 100%;\n  position: relative;\n  border-collapse: collapse;\n  background-color: var(--md-sys-color-surface);\n  box-shadow:\n    rgba(0, 0, 0, 0.2) 0px 5px 5px -3px,\n    rgba(0, 0, 0, 0.14) 0px 8px 10px 1px,\n    rgba(0, 0, 0, 0.12) 0px 3px 14px 2px;\n}\n.th:focus-visible,\n.tr:focus-visible,\n.td:focus-visible {\n  outline: none;\n}\n\n.th {\n  position: relative;\n  padding: 0 1rem;\n}\n.tr {\n  border-color: inherit;\n  border: 0 solid #e5e7eb;\n\n  position: relative;\n  height: 52px;\n  border-style: solid;\n  border-top-width: 1px;\n  border-color: rgb(\n    var(--md-sys-color-outline-variant) / var(--tw-border-opacity)\n  );\n}\n.tr.hovered {\n  background-color: var(--md-sys-color-inverse-surface) / 0.1;\n}\n.tr.selected {\n  color: var(--md-sys-color-on-secondary-container);\n  background-color: var(--md-sys-color-secondary-container);\n}\n.td {\n  position: relative;\n  padding: 0 1rem;\n}\n"
  },
  {
    "path": "packages/actify/src/components/Tabs/Tab.tsx",
    "content": "import { AriaTabProps, mergeProps, useFocusRing, useTab } from 'react-aria'\r\nimport { Node, TabListState } from 'react-stately'\r\n\r\nimport { FocusRing } from './../FocusRing'\r\nimport React from 'react'\r\nimport { Ripple } from './../Ripple'\r\nimport styles from './tabs.module.css'\r\n\r\ninterface TabProps<T> extends AriaTabProps {\r\n  item: Node<T>\r\n  state: TabListState<T>\r\n}\r\n\r\nconst Tab = <T extends object>({ item, state }: TabProps<T>) => {\r\n  const ref = React.useRef(null)\r\n  const { tabProps } = useTab(item, state, ref)\r\n  const { focusProps, isFocusVisible } = useFocusRing()\r\n\r\n  return (\r\n    <div\r\n      ref={ref}\r\n      className={styles['tab-item']}\r\n      {...mergeProps(tabProps, focusProps)}\r\n    >\r\n      {item.rendered}\r\n      <Ripple />\r\n      {isFocusVisible && <FocusRing />}\r\n    </div>\r\n  )\r\n}\r\n\r\nexport { Tab }\r\n"
  },
  {
    "path": "packages/actify/src/components/Tabs/TabPanel.tsx",
    "content": "import { AriaTabPanelProps, useTabPanel } from 'react-aria'\n\nimport React from 'react'\nimport { StyleProps } from '../../utils'\nimport { TabListState } from 'react-stately'\nimport clsx from 'clsx'\nimport styles from './tabs.module.css'\n\ninterface TabPanelProps<T> extends AriaTabPanelProps, StyleProps {\n  state: TabListState<T>\n}\nconst TabPanel = <T extends object>({ state, ...props }: TabPanelProps<T>) => {\n  const ref = React.useRef(null)\n  const { tabPanelProps } = useTabPanel(props, state, ref)\n\n  return (\n    <div\n      ref={ref}\n      role=\"tabpanel\"\n      {...tabPanelProps}\n      className={clsx(styles['tabpanel'], props.className)}\n    >\n      {state.selectedItem?.props.children}\n    </div>\n  )\n}\n\nexport { TabPanel }\n"
  },
  {
    "path": "packages/actify/src/components/Tabs/Tabs.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  AriaTabListProps,\r\n  mergeProps,\r\n  useFocusRing,\r\n  useTabList\r\n} from 'react-aria'\r\nimport React, { useEffect, useState } from 'react'\r\nimport { TabListProps, useTabListState } from 'react-stately'\r\n\r\nimport { StyleProps } from '../../utils'\r\nimport { Tab } from './Tab'\r\nimport { TabPanel } from './TabPanel'\r\nimport clsx from 'clsx'\r\nimport styles from './tabs.module.css'\r\n\r\ninterface TabsProps<T>\r\n  extends AriaTabListProps<T>,\r\n    TabListProps<T>,\r\n    StyleProps {\r\n  contentClassName?: string\r\n}\r\n\r\nconst Tabs = <T extends object>(props: TabsProps<T>) => {\r\n  const state = useTabListState(props)\r\n  const ref = React.useRef<HTMLDivElement>(null)\r\n  const { tabListProps } = useTabList(props, state, ref)\r\n\r\n  const { contentClassName, orientation = 'horizontal' } = props\r\n\r\n  const [activeTabStyle, setActiveTabStyle] = useState<{\r\n    width?: number\r\n    height?: number\r\n    transform: string\r\n  }>({\r\n    width: 0,\r\n    height: 0,\r\n    transform: 'translateX(0)'\r\n  })\r\n\r\n  useEffect(() => {\r\n    const activeTab = ref?.current?.querySelector(\r\n      '[role=\"tab\"][aria-selected=\"true\"]'\r\n    ) as HTMLDivElement\r\n\r\n    setActiveTabStyle({\r\n      ...(orientation === 'vertical'\r\n        ? {\r\n            height: activeTab?.offsetHeight,\r\n            transform: `translateY(${activeTab?.offsetTop}px)`\r\n          }\r\n        : {\r\n            width: activeTab?.offsetWidth,\r\n            transform: `translateX(${activeTab?.offsetLeft}px)`\r\n          })\r\n    })\r\n  }, [state.selectedKey, orientation])\r\n\r\n  const { focusProps, isFocusVisible } = useFocusRing({\r\n    within: true\r\n  })\r\n\r\n  return (\r\n    <nav\r\n      style={props.style}\r\n      className={clsx(\r\n        styles['tabs'],\r\n        orientation === 'vertical' && styles['tabs-vertical'],\r\n        props.className\r\n      )}\r\n    >\r\n      <div className={styles['tab']}>\r\n        <div\r\n          style={{ ...activeTabStyle }}\r\n          className={clsx(\r\n            styles['tab-selection'],\r\n            styles[`tab-selection-${orientation}`],\r\n            isFocusVisible && 'focused'\r\n          )}\r\n        />\r\n        <div\r\n          ref={ref}\r\n          className={clsx(\r\n            styles['tab-list'],\r\n            orientation === 'vertical' && styles['tab-list-vertical']\r\n          )}\r\n          {...mergeProps(tabListProps, focusProps)}\r\n        >\r\n          {[...state.collection].map((item) => (\r\n            <Tab key={item.key} item={item} state={state} />\r\n          ))}\r\n        </div>\r\n      </div>\r\n      <TabPanel\r\n        className={contentClassName}\r\n        key={state.selectedItem?.key}\r\n        state={state}\r\n      />\r\n    </nav>\r\n  )\r\n}\r\n\r\nTabs.displayName = 'Actify.Tabs'\r\n\r\nexport { Tabs }\r\n"
  },
  {
    "path": "packages/actify/src/components/Tabs/index.ts",
    "content": "export { Tabs } from './Tabs'\r\n\r\nexport { Item as TabItem } from 'react-stately'\r\n"
  },
  {
    "path": "packages/actify/src/components/Tabs/tabs.module.css",
    "content": ".tabs {\n  padding: 8px;\n  --_active-indicator-width: var(\n    --md-secondary-tab-active-indicator-width,\n    2px\n  );\n  --_active-indicator-height: var(\n    --md-secondary-tab-active-indicator-height,\n    2px\n  );\n  --_active-indicator-color: var(\n    --md-secondary-tab-active-indicator-color,\n    var(--md-sys-color-primary, #6750a4)\n  );\n}\n.tabs-vertical {\n  display: flex;\n}\n.tab {\n  position: relative;\n}\n.tabpanel {\n  flex: 1;\n}\n.tab-selection {\n  position: absolute;\n  will-change: transform, width;\n  transition:\n    transform 150ms,\n    width 100ms;\n  background: var(--_active-indicator-color);\n}\n.tab-selection-horizontal {\n  left: 0;\n  bottom: 2px;\n  height: var(--_active-indicator-height);\n}\n.tab-selection-vertical {\n  top: 0;\n  right: 2px;\n  width: var(--_active-indicator-width);\n}\n.tab-list {\n  display: flex;\n  gap: 8px;\n  align-items: center;\n}\n.tab-list-vertical {\n  flex-direction: column;\n}\n.tab-item {\n  padding: 10px 12px;\n  position: relative;\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  &:focus-visible {\n    outline: none;\n  }\n}\n"
  },
  {
    "path": "packages/actify/src/components/Terminal/Terminal.tsx",
    "content": "'use client'\r\n\r\nimport React, { useMemo } from 'react'\r\n\r\nimport clsx from 'clsx'\r\nimport { format } from 'date-fns'\r\nimport styles from './terminal.module.css'\r\n\r\ninterface TerminalProps extends React.ComponentProps<'div'> {\r\n  title?: string\r\n  lastlogin?: Date\r\n  hostname?: string\r\n  username?: string\r\n}\r\n\r\nconst Terminal = (props: TerminalProps) => {\r\n  const {\r\n    title = 'Terminal',\r\n    username = 'lerte',\r\n    lastlogin = new Date(),\r\n    hostname = 'Lerte-MacBook-Pro',\r\n    children,\r\n    className,\r\n    ...rest\r\n  } = props\r\n\r\n  const _lastLogin = useMemo(\r\n    () => format(lastlogin, 'ddd MMM dd HH:mm:ss'),\r\n    [lastlogin]\r\n  )\r\n\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], className)}>\r\n      <div className={styles['traffic-light']}>\r\n        <div className=\"ml-2 size-3 rounded-full border-red-900 bg-red-500 shadow-inner\"></div>\r\n        <div className=\"ml-2 size-3 rounded-full border-yellow-900 bg-yellow-500 shadow-inner\"></div>\r\n        <div className=\"ml-2 size-3 rounded-full border-green-900 bg-green-500 shadow-inner\"></div>\r\n        <div className=\"mx-auto pr-16\">\r\n          <p className=\"text-center text-sm\">{title}</p>\r\n        </div>\r\n      </div>\r\n      <div className=\"pl-1 pt-1 font-mono text-current text-white\">\r\n        <p className=\"pb-1\">Last login: {_lastLogin} on ttys000</p>\r\n        <p className=\"pb-1\">\r\n          {hostname}:{username}$ <span>{children}</span>\r\n        </p>\r\n      </div>\r\n    </div>\r\n  )\r\n}\r\n\r\nTerminal.displayName = 'Actify.Terminal'\r\n\r\nexport { Terminal }\r\n"
  },
  {
    "path": "packages/actify/src/components/Terminal/index.ts",
    "content": "export { Terminal } from './Terminal'\r\n"
  },
  {
    "path": "packages/actify/src/components/Terminal/terminal.module.css",
    "content": ".root {\n  overflow: hidden;\n  margin: 0 auto;\n  height: 16rem /* 256px */;\n  background-color: #000000;\n  border-radius: 0.25rem /* 4px */;\n  --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n  --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.traffic-light {\n  display: flex;\n  height: 1.5rem /* 24px */;\n  align-items: center;\n  border-bottom-width: 1px;\n  background-color: var(--md-sys-color-surface);\n}\n.red {\n  margin-left: 0.5rem /* 8px */;\n  width: 0.75rem /* 12px */;\n  height: 0.75rem /* 12px */;\n  border-radius: 9999px;\n  border-color: #7f1d1d;\n  background-color: #ef4444;\n  --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.yellow {\n  margin-left: 0.5rem /* 8px */;\n  width: 0.75rem /* 12px */;\n  height: 0.75rem /* 12px */;\n  border-radius: 9999px;\n  border-color: #713f12;\n  background-color: #eab308;\n  --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n.green {\n  margin-left: 0.5rem /* 8px */;\n  width: 0.75rem /* 12px */;\n  height: 0.75rem /* 12px */;\n  border-radius: 9999px;\n  border-color: #14532d;\n  background-color: #22c55e;\n  --tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n  --tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);\n  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),\n    var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);\n}\n"
  },
  {
    "path": "packages/actify/src/components/Text/Text.tsx",
    "content": "'use client'\r\n\r\nimport { Text as AriaText, TextProps } from 'react-aria-components'\r\n\r\nconst Text = (props: TextProps) => {\r\n  return <AriaText {...props} />\r\n}\r\n\r\nText.displayName = 'Actify.Text'\r\n\r\nexport { Text }\r\n"
  },
  {
    "path": "packages/actify/src/components/Text/index.ts",
    "content": "export { Text } from './Text'\r\n"
  },
  {
    "path": "packages/actify/src/components/TextFields/TextField.tsx",
    "content": "import type { AriaTextFieldProps, TextFieldAria } from 'react-aria'\r\nimport { FilledField, OutlinedField } from './../Field'\r\nimport { mergeProps, useFocusRing, useTextField } from 'react-aria'\r\n\r\nimport React from 'react'\r\nimport { StyleProps } from '../../utils'\r\nimport styles from './text-field.module.css'\r\n\r\ninterface TextFieldProps extends AriaTextFieldProps, StyleProps {\r\n  ref?: React.RefObject<Element | null>\r\n  inputProps?: React.InputHTMLAttributes<HTMLInputElement>\r\n  variant?: 'filled' | 'outlined'\r\n  suffixText?: string\r\n  prefixText?: string\r\n  children?: React.ReactNode\r\n  leadingIcon?: React.ReactNode\r\n  trailingIcon?: React.ReactNode\r\n  type?:\r\n    | 'text'\r\n    | 'email'\r\n    | 'number'\r\n    | 'password'\r\n    | 'search'\r\n    | 'tel'\r\n    | 'url'\r\n    | 'textarea'\r\n}\r\nconst TextField = (props: TextFieldProps) => {\r\n  const _ref = React.useRef(null)\r\n\r\n  const {\r\n    style,\r\n    onFocus,\r\n    onBlur,\r\n    className,\r\n    suffixText,\r\n    prefixText,\r\n    leadingIcon,\r\n    trailingIcon,\r\n    ref = _ref,\r\n    type = 'text',\r\n    variant = 'filled',\r\n    inputProps,\r\n    children,\r\n    ...rest\r\n  } = props\r\n\r\n  const {\r\n    inputProps: _inputProps,\r\n    labelProps,\r\n    descriptionProps,\r\n    errorMessageProps,\r\n    isInvalid,\r\n    validationErrors\r\n  } = useTextField(\r\n    {\r\n      ...rest,\r\n      inputElementType: props.type == 'textarea' ? 'textarea' : 'input'\r\n    },\r\n    ref as React.RefObject<HTMLInputElement>\r\n  )\r\n\r\n  const { focusProps, isFocused } = useFocusRing()\r\n\r\n  let Tag = FilledField\r\n  if (variant == 'filled') {\r\n    Tag = FilledField\r\n  }\r\n  if (variant == 'outlined') {\r\n    Tag = OutlinedField\r\n  }\r\n\r\n  const count = (inputProps ?? _inputProps).value?.toString().length\r\n  const populated = !!(inputProps ?? _inputProps).value\r\n\r\n  return (\r\n    <label {...labelProps} className={styles[variant]}>\r\n      <Tag\r\n        {...{\r\n          leadingIcon,\r\n          trailingIcon,\r\n          count,\r\n          populated,\r\n          label: props.label,\r\n          focused: isFocused\r\n        }}\r\n      >\r\n        {prefixText && <span className={styles['prefix']}>{prefixText}</span>}\r\n        {type == 'textarea' ? (\r\n          <textarea\r\n            style={{\r\n              resize: 'vertical',\r\n              overflowX: 'hidden',\r\n              wordBreak: 'break-word',\r\n              ...style\r\n            }}\r\n            className={className}\r\n            {...mergeProps(focusProps, inputProps ?? _inputProps)}\r\n            ref={ref as React.RefObject<HTMLTextAreaElement>}\r\n          />\r\n        ) : (\r\n          <input\r\n            style={style}\r\n            className={className}\r\n            {...mergeProps(focusProps, inputProps ?? _inputProps)}\r\n            type={type}\r\n            ref={ref as React.RefObject<HTMLInputElement>}\r\n          />\r\n        )}\r\n        {suffixText && <span className={styles['suffix']}>{suffixText}</span>}\r\n      </Tag>\r\n      {props.description && (\r\n        <div {...descriptionProps} style={{ fontSize: 12 }}>\r\n          {props.description}\r\n        </div>\r\n      )}\r\n      {isInvalid && (\r\n        <div {...errorMessageProps} style={{ color: 'red', fontSize: 12 }}>\r\n          {validationErrors.join(' ')}\r\n        </div>\r\n      )}\r\n    </label>\r\n  )\r\n}\r\n\r\nTextField.displayName = 'Actify.TextField'\r\n\r\nexport { TextField }\r\n"
  },
  {
    "path": "packages/actify/src/components/TextFields/index.ts",
    "content": "export { TextField } from './TextField'\r\n"
  },
  {
    "path": "packages/actify/src/components/TextFields/text-field.module.css",
    "content": ".filled {\r\n  --_leading-space: var(--md-filled-text-field-leading-space, 16px);\r\n  --_trailing-space: var(--md-filled-text-field-trailing-space, 16px);\r\n  --_top-space: var(--md-filled-text-field-top-space, 16px);\r\n  --_bottom-space: var(--md-filled-text-field-bottom-space, 16px);\r\n  --_input-text-prefix-trailing-space: var(\r\n    --md-filled-text-field-input-text-prefix-trailing-space,\r\n    2px\r\n  );\r\n  --_input-text-suffix-leading-space: var(\r\n    --md-filled-text-field-input-text-suffix-leading-space,\r\n    2px\r\n  );\r\n  --_with-label-top-space: var(\r\n    --md-filled-text-field-with-label-top-space,\r\n    8px\r\n  );\r\n  --_with-label-bottom-space: var(\r\n    --md-filled-text-field-with-label-bottom-space,\r\n    8px\r\n  );\r\n  --_focus-caret-color: var(\r\n    --md-filled-text-field-focus-caret-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_active-indicator-color: var(\r\n    --md-filled-text-field-active-indicator-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_active-indicator-height: var(\r\n    --md-filled-text-field-active-indicator-height,\r\n    1px\r\n  );\r\n  --_caret-color: var(\r\n    --md-filled-text-field-caret-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_container-color: var(\r\n    --md-filled-text-field-container-color,\r\n    var(--md-sys-color-surface-container-highest)\r\n  );\r\n  --_container-shape-start-start: var(\r\n    --md-filled-text-field-container-shape-start-start,\r\n    var(--md-filled-text-field-container-shape, 4px)\r\n  );\r\n  --_container-shape-start-end: var(\r\n    --md-filled-text-field-container-shape-start-end,\r\n    var(--md-filled-text-field-container-shape, 4px)\r\n  );\r\n  --_container-shape-end-end: var(\r\n    --md-filled-text-field-container-shape-end-end,\r\n    var(--md-filled-text-field-container-shape, 0px)\r\n  );\r\n  --_container-shape-end-start: var(\r\n    --md-filled-text-field-container-shape-end-start,\r\n    var(--md-filled-text-field-container-shape, 0px)\r\n  );\r\n  --_disabled-active-indicator-color: var(\r\n    --md-filled-text-field-disabled-active-indicator-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-active-indicator-height: var(\r\n    --md-filled-text-field-disabled-active-indicator-height,\r\n    1px\r\n  );\r\n  --_disabled-active-indicator-opacity: var(\r\n    --md-filled-text-field-disabled-active-indicator-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-container-color: var(\r\n    --md-filled-text-field-disabled-container-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-container-opacity: var(\r\n    --md-filled-text-field-disabled-container-opacity,\r\n    0.04\r\n  );\r\n  --_disabled-input-text-color: var(\r\n    --md-filled-text-field-disabled-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-input-text-opacity: var(\r\n    --md-filled-text-field-disabled-input-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-label-text-color: var(\r\n    --md-filled-text-field-disabled-label-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-label-text-opacity: var(\r\n    --md-filled-text-field-disabled-label-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-leading-icon-color: var(\r\n    --md-filled-text-field-disabled-leading-icon-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-leading-icon-opacity: var(\r\n    --md-filled-text-field-disabled-leading-icon-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-supporting-text-color: var(\r\n    --md-filled-text-field-disabled-supporting-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-supporting-text-opacity: var(\r\n    --md-filled-text-field-disabled-supporting-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-trailing-icon-color: var(\r\n    --md-filled-text-field-disabled-trailing-icon-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-trailing-icon-opacity: var(\r\n    --md-filled-text-field-disabled-trailing-icon-opacity,\r\n    0.38\r\n  );\r\n  --_error-active-indicator-color: var(\r\n    --md-filled-text-field-error-active-indicator-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-active-indicator-color: var(\r\n    --md-filled-text-field-error-focus-active-indicator-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-caret-color: var(\r\n    --md-filled-text-field-error-focus-caret-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-input-text-color: var(\r\n    --md-filled-text-field-error-focus-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-focus-label-text-color: var(\r\n    --md-filled-text-field-error-focus-label-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-leading-icon-color: var(\r\n    --md-filled-text-field-error-focus-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-focus-supporting-text-color: var(\r\n    --md-filled-text-field-error-focus-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-trailing-icon-color: var(\r\n    --md-filled-text-field-error-focus-trailing-icon-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-hover-active-indicator-color: var(\r\n    --md-filled-text-field-error-hover-active-indicator-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-hover-input-text-color: var(\r\n    --md-filled-text-field-error-hover-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-hover-label-text-color: var(\r\n    --md-filled-text-field-error-hover-label-text-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-hover-leading-icon-color: var(\r\n    --md-filled-text-field-error-hover-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-hover-state-layer-color: var(\r\n    --md-filled-text-field-error-hover-state-layer-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-hover-state-layer-opacity: var(\r\n    --md-filled-text-field-error-hover-state-layer-opacity,\r\n    0.08\r\n  );\r\n  --_error-hover-supporting-text-color: var(\r\n    --md-filled-text-field-error-hover-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-hover-trailing-icon-color: var(\r\n    --md-filled-text-field-error-hover-trailing-icon-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-input-text-color: var(\r\n    --md-filled-text-field-error-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-label-text-color: var(\r\n    --md-filled-text-field-error-label-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-leading-icon-color: var(\r\n    --md-filled-text-field-error-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-supporting-text-color: var(\r\n    --md-filled-text-field-error-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-trailing-icon-color: var(\r\n    --md-filled-text-field-error-trailing-icon-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_focus-active-indicator-color: var(\r\n    --md-filled-text-field-focus-active-indicator-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_focus-active-indicator-height: var(\r\n    --md-filled-text-field-focus-active-indicator-height,\r\n    3px\r\n  );\r\n  --_focus-input-text-color: var(\r\n    --md-filled-text-field-focus-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_focus-label-text-color: var(\r\n    --md-filled-text-field-focus-label-text-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_focus-leading-icon-color: var(\r\n    --md-filled-text-field-focus-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_focus-supporting-text-color: var(\r\n    --md-filled-text-field-focus-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_focus-trailing-icon-color: var(\r\n    --md-filled-text-field-focus-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-active-indicator-color: var(\r\n    --md-filled-text-field-hover-active-indicator-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-active-indicator-height: var(\r\n    --md-filled-text-field-hover-active-indicator-height,\r\n    1px\r\n  );\r\n  --_hover-input-text-color: var(\r\n    --md-filled-text-field-hover-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-label-text-color: var(\r\n    --md-filled-text-field-hover-label-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-leading-icon-color: var(\r\n    --md-filled-text-field-hover-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-state-layer-color: var(\r\n    --md-filled-text-field-hover-state-layer-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-state-layer-opacity: var(\r\n    --md-filled-text-field-hover-state-layer-opacity,\r\n    0.08\r\n  );\r\n  --_hover-supporting-text-color: var(\r\n    --md-filled-text-field-hover-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-trailing-icon-color: var(\r\n    --md-filled-text-field-hover-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-color: var(\r\n    --md-filled-text-field-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_input-text-font: var(\r\n    --md-filled-text-field-input-text-font,\r\n    var(\r\n      --md-sys-typescale-body-large-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_input-text-line-height: var(\r\n    --md-filled-text-field-input-text-line-height,\r\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\r\n  );\r\n  --_input-text-placeholder-color: var(\r\n    --md-filled-text-field-input-text-placeholder-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-prefix-color: var(\r\n    --md-filled-text-field-input-text-prefix-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-size: var(\r\n    --md-filled-text-field-input-text-size,\r\n    var(--md-sys-typescale-body-large-size, 1rem)\r\n  );\r\n  --_input-text-suffix-color: var(\r\n    --md-filled-text-field-input-text-suffix-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-weight: var(\r\n    --md-filled-text-field-input-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-large-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_label-text-color: var(\r\n    --md-filled-text-field-label-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_label-text-font: var(\r\n    --md-filled-text-field-label-text-font,\r\n    var(\r\n      --md-sys-typescale-body-large-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_label-text-line-height: var(\r\n    --md-filled-text-field-label-text-line-height,\r\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\r\n  );\r\n  --_label-text-populated-line-height: var(\r\n    --md-filled-text-field-label-text-populated-line-height,\r\n    var(--md-sys-typescale-body-small-line-height, 1rem)\r\n  );\r\n  --_label-text-populated-size: var(\r\n    --md-filled-text-field-label-text-populated-size,\r\n    var(--md-sys-typescale-body-small-size, 0.75rem)\r\n  );\r\n  --_label-text-size: var(\r\n    --md-filled-text-field-label-text-size,\r\n    var(--md-sys-typescale-body-large-size, 1rem)\r\n  );\r\n  --_label-text-weight: var(\r\n    --md-filled-text-field-label-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-large-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_leading-icon-color: var(\r\n    --md-filled-text-field-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_leading-icon-size: var(--md-filled-text-field-leading-icon-size, 24px);\r\n  --_supporting-text-color: var(\r\n    --md-filled-text-field-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_supporting-text-font: var(\r\n    --md-filled-text-field-supporting-text-font,\r\n    var(\r\n      --md-sys-typescale-body-small-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_supporting-text-leading-space: var(\r\n    --md-filled-field-supporting-text-leading-space,\r\n    16px\r\n  );\r\n  --_supporting-text-line-height: var(\r\n    --md-filled-text-field-supporting-text-line-height,\r\n    var(--md-sys-typescale-body-small-line-height, 1rem)\r\n  );\r\n  --_supporting-text-size: var(\r\n    --md-filled-text-field-supporting-text-size,\r\n    var(--md-sys-typescale-body-small-size, 0.75rem)\r\n  );\r\n  --_supporting-text-top-space: var(\r\n    --md-filled-field-supporting-text-top-space,\r\n    4px\r\n  );\r\n  --_supporting-text-trailing-space: var(\r\n    --md-filled-field-supporting-text-trailing-space,\r\n    16px\r\n  );\r\n  --_supporting-text-weight: var(\r\n    --md-filled-text-field-supporting-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-small-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_trailing-icon-color: var(\r\n    --md-filled-text-field-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_trailing-icon-size: var(--md-filled-text-field-trailing-icon-size, 24px);\r\n  --md-filled-field-active-indicator-color: var(--_active-indicator-color);\r\n  --md-filled-field-active-indicator-height: var(--_active-indicator-height);\r\n  --md-filled-field-bottom-space: var(--_bottom-space);\r\n  --md-filled-field-container-color: var(--_container-color);\r\n  --md-filled-field-container-shape-end-end: var(--_container-shape-end-end);\r\n  --md-filled-field-container-shape-end-start: var(\r\n    --_container-shape-end-start\r\n  );\r\n  --md-filled-field-container-shape-start-end: var(\r\n    --_container-shape-start-end\r\n  );\r\n  --md-filled-field-container-shape-start-start: var(\r\n    --_container-shape-start-start\r\n  );\r\n  --md-filled-field-content-color: var(--_input-text-color);\r\n  --md-filled-field-content-font: var(--_input-text-font);\r\n  --md-filled-field-content-line-height: var(--_input-text-line-height);\r\n  --md-filled-field-content-size: var(--_input-text-size);\r\n  --md-filled-field-content-weight: var(--_input-text-weight);\r\n  --md-filled-field-disabled-active-indicator-color: var(\r\n    --_disabled-active-indicator-color\r\n  );\r\n  --md-filled-field-disabled-active-indicator-height: var(\r\n    --_disabled-active-indicator-height\r\n  );\r\n  --md-filled-field-disabled-active-indicator-opacity: var(\r\n    --_disabled-active-indicator-opacity\r\n  );\r\n  --md-filled-field-disabled-container-color: var(--_disabled-container-color);\r\n  --md-filled-field-disabled-container-opacity: var(\r\n    --_disabled-container-opacity\r\n  );\r\n  --md-filled-field-disabled-content-color: var(--_disabled-input-text-color);\r\n  --md-filled-field-disabled-content-opacity: var(\r\n    --_disabled-input-text-opacity\r\n  );\r\n  --md-filled-field-disabled-label-text-color: var(\r\n    --_disabled-label-text-color\r\n  );\r\n  --md-filled-field-disabled-label-text-opacity: var(\r\n    --_disabled-label-text-opacity\r\n  );\r\n  --md-filled-field-disabled-leading-content-color: var(\r\n    --_disabled-leading-icon-color\r\n  );\r\n  --md-filled-field-disabled-leading-content-opacity: var(\r\n    --_disabled-leading-icon-opacity\r\n  );\r\n  --md-filled-field-disabled-supporting-text-color: var(\r\n    --_disabled-supporting-text-color\r\n  );\r\n  --md-filled-field-disabled-supporting-text-opacity: var(\r\n    --_disabled-supporting-text-opacity\r\n  );\r\n  --md-filled-field-disabled-trailing-content-color: var(\r\n    --_disabled-trailing-icon-color\r\n  );\r\n  --md-filled-field-disabled-trailing-content-opacity: var(\r\n    --_disabled-trailing-icon-opacity\r\n  );\r\n  --md-filled-field-error-active-indicator-color: var(\r\n    --_error-active-indicator-color\r\n  );\r\n  --md-filled-field-error-content-color: var(--_error-input-text-color);\r\n  --md-filled-field-error-focus-active-indicator-color: var(\r\n    --_error-focus-active-indicator-color\r\n  );\r\n  --md-filled-field-error-focus-content-color: var(\r\n    --_error-focus-input-text-color\r\n  );\r\n  --md-filled-field-error-focus-label-text-color: var(\r\n    --_error-focus-label-text-color\r\n  );\r\n  --md-filled-field-error-focus-leading-content-color: var(\r\n    --_error-focus-leading-icon-color\r\n  );\r\n  --md-filled-field-error-focus-supporting-text-color: var(\r\n    --_error-focus-supporting-text-color\r\n  );\r\n  --md-filled-field-error-focus-trailing-content-color: var(\r\n    --_error-focus-trailing-icon-color\r\n  );\r\n  --md-filled-field-error-hover-active-indicator-color: var(\r\n    --_error-hover-active-indicator-color\r\n  );\r\n  --md-filled-field-error-hover-content-color: var(\r\n    --_error-hover-input-text-color\r\n  );\r\n  --md-filled-field-error-hover-label-text-color: var(\r\n    --_error-hover-label-text-color\r\n  );\r\n  --md-filled-field-error-hover-leading-content-color: var(\r\n    --_error-hover-leading-icon-color\r\n  );\r\n  --md-filled-field-error-hover-state-layer-color: var(\r\n    --_error-hover-state-layer-color\r\n  );\r\n  --md-filled-field-error-hover-state-layer-opacity: var(\r\n    --_error-hover-state-layer-opacity\r\n  );\r\n  --md-filled-field-error-hover-supporting-text-color: var(\r\n    --_error-hover-supporting-text-color\r\n  );\r\n  --md-filled-field-error-hover-trailing-content-color: var(\r\n    --_error-hover-trailing-icon-color\r\n  );\r\n  --md-filled-field-error-label-text-color: var(--_error-label-text-color);\r\n  --md-filled-field-error-leading-content-color: var(\r\n    --_error-leading-icon-color\r\n  );\r\n  --md-filled-field-error-supporting-text-color: var(\r\n    --_error-supporting-text-color\r\n  );\r\n  --md-filled-field-error-trailing-content-color: var(\r\n    --_error-trailing-icon-color\r\n  );\r\n  --md-filled-field-focus-active-indicator-color: var(\r\n    --_focus-active-indicator-color\r\n  );\r\n  --md-filled-field-focus-active-indicator-height: var(\r\n    --_focus-active-indicator-height\r\n  );\r\n  --md-filled-field-focus-content-color: var(--_focus-input-text-color);\r\n  --md-filled-field-focus-label-text-color: var(--_focus-label-text-color);\r\n  --md-filled-field-focus-leading-content-color: var(\r\n    --_focus-leading-icon-color\r\n  );\r\n  --md-filled-field-focus-supporting-text-color: var(\r\n    --_focus-supporting-text-color\r\n  );\r\n  --md-filled-field-focus-trailing-content-color: var(\r\n    --_focus-trailing-icon-color\r\n  );\r\n  --md-filled-field-hover-active-indicator-color: var(\r\n    --_hover-active-indicator-color\r\n  );\r\n  --md-filled-field-hover-active-indicator-height: var(\r\n    --_hover-active-indicator-height\r\n  );\r\n  --md-filled-field-hover-content-color: var(--_hover-input-text-color);\r\n  --md-filled-field-hover-label-text-color: var(--_hover-label-text-color);\r\n  --md-filled-field-hover-leading-content-color: var(\r\n    --_hover-leading-icon-color\r\n  );\r\n  --md-filled-field-hover-state-layer-color: var(--_hover-state-layer-color);\r\n  --md-filled-field-hover-state-layer-opacity: var(\r\n    --_hover-state-layer-opacity\r\n  );\r\n  --md-filled-field-hover-supporting-text-color: var(\r\n    --_hover-supporting-text-color\r\n  );\r\n  --md-filled-field-hover-trailing-content-color: var(\r\n    --_hover-trailing-icon-color\r\n  );\r\n  --md-filled-field-label-text-color: var(--_label-text-color);\r\n  --md-filled-field-label-text-font: var(--_label-text-font);\r\n  --md-filled-field-label-text-line-height: var(--_label-text-line-height);\r\n  --md-filled-field-label-text-populated-line-height: var(\r\n    --_label-text-populated-line-height\r\n  );\r\n  --md-filled-field-label-text-populated-size: var(\r\n    --_label-text-populated-size\r\n  );\r\n  --md-filled-field-label-text-size: var(--_label-text-size);\r\n  --md-filled-field-label-text-weight: var(--_label-text-weight);\r\n  --md-filled-field-leading-content-color: var(--_leading-icon-color);\r\n  --md-filled-field-leading-space: var(--_leading-space);\r\n  --md-filled-field-supporting-text-color: var(--_supporting-text-color);\r\n  --md-filled-field-supporting-text-font: var(--_supporting-text-font);\r\n  --md-filled-field-supporting-text-line-height: var(\r\n    --_supporting-text-line-height\r\n  );\r\n  --md-filled-field-supporting-text-size: var(--_supporting-text-size);\r\n  --md-filled-field-supporting-text-weight: var(--_supporting-text-weight);\r\n  --md-filled-field-top-space: var(--_top-space);\r\n  --md-filled-field-trailing-content-color: var(--_trailing-icon-color);\r\n  --md-filled-field-trailing-space: var(--_trailing-space);\r\n  --md-filled-field-with-label-bottom-space: var(--_with-label-bottom-space);\r\n  --md-filled-field-with-label-top-space: var(--_with-label-top-space);\r\n}\r\n\r\n.outlined {\r\n  --_leading-space: var(--md-outlined-text-field-leading-space, 16px);\r\n  --_trailing-space: var(--md-outlined-text-field-trailing-space, 16px);\r\n  --_top-space: var(--md-outlined-text-field-top-space, 16px);\r\n  --_bottom-space: var(--md-outlined-text-field-bottom-space, 16px);\r\n  --_input-text-prefix-trailing-space: var(\r\n    --md-outlined-text-field-input-text-prefix-trailing-space,\r\n    2px\r\n  );\r\n  --_input-text-suffix-leading-space: var(\r\n    --md-outlined-text-field-input-text-suffix-leading-space,\r\n    2px\r\n  );\r\n  --_focus-caret-color: var(\r\n    --md-outlined-text-field-focus-caret-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_caret-color: var(\r\n    --md-outlined-text-field-caret-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_container-shape: var(--md-outlined-text-field-container-shape, 4px);\r\n  --_disabled-input-text-color: var(\r\n    --md-outlined-text-field-disabled-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-input-text-opacity: var(\r\n    --md-outlined-text-field-disabled-input-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-label-text-color: var(\r\n    --md-outlined-text-field-disabled-label-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-label-text-opacity: var(\r\n    --md-outlined-text-field-disabled-label-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-leading-icon-color: var(\r\n    --md-outlined-text-field-disabled-leading-icon-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-leading-icon-opacity: var(\r\n    --md-outlined-text-field-disabled-leading-icon-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-outline-color: var(\r\n    --md-outlined-text-field-disabled-outline-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-outline-opacity: var(\r\n    --md-outlined-text-field-disabled-outline-opacity,\r\n    0.12\r\n  );\r\n  --_disabled-outline-width: var(\r\n    --md-outlined-text-field-disabled-outline-width,\r\n    1px\r\n  );\r\n  --_disabled-supporting-text-color: var(\r\n    --md-outlined-text-field-disabled-supporting-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-supporting-text-opacity: var(\r\n    --md-outlined-text-field-disabled-supporting-text-opacity,\r\n    0.38\r\n  );\r\n  --_disabled-trailing-icon-color: var(\r\n    --md-outlined-text-field-disabled-trailing-icon-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_disabled-trailing-icon-opacity: var(\r\n    --md-outlined-text-field-disabled-trailing-icon-opacity,\r\n    0.38\r\n  );\r\n  --_error-focus-caret-color: var(\r\n    --md-outlined-text-field-error-focus-caret-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-input-text-color: var(\r\n    --md-outlined-text-field-error-focus-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-focus-label-text-color: var(\r\n    --md-outlined-text-field-error-focus-label-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-leading-icon-color: var(\r\n    --md-outlined-text-field-error-focus-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-focus-outline-color: var(\r\n    --md-outlined-text-field-error-focus-outline-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-supporting-text-color: var(\r\n    --md-outlined-text-field-error-focus-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-focus-trailing-icon-color: var(\r\n    --md-outlined-text-field-error-focus-trailing-icon-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-hover-input-text-color: var(\r\n    --md-outlined-text-field-error-hover-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-hover-label-text-color: var(\r\n    --md-outlined-text-field-error-hover-label-text-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-hover-leading-icon-color: var(\r\n    --md-outlined-text-field-error-hover-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-hover-outline-color: var(\r\n    --md-outlined-text-field-error-hover-outline-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-hover-supporting-text-color: var(\r\n    --md-outlined-text-field-error-hover-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-hover-trailing-icon-color: var(\r\n    --md-outlined-text-field-error-hover-trailing-icon-color,\r\n    var(--md-sys-color-on-error-container)\r\n  );\r\n  --_error-input-text-color: var(\r\n    --md-outlined-text-field-error-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_error-label-text-color: var(\r\n    --md-outlined-text-field-error-label-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-leading-icon-color: var(\r\n    --md-outlined-text-field-error-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_error-outline-color: var(\r\n    --md-outlined-text-field-error-outline-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-supporting-text-color: var(\r\n    --md-outlined-text-field-error-supporting-text-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_error-trailing-icon-color: var(\r\n    --md-outlined-text-field-error-trailing-icon-color,\r\n    var(--md-sys-color-error)\r\n  );\r\n  --_focus-input-text-color: var(\r\n    --md-outlined-text-field-focus-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_focus-label-text-color: var(\r\n    --md-outlined-text-field-focus-label-text-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_focus-leading-icon-color: var(\r\n    --md-outlined-text-field-focus-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_focus-outline-color: var(\r\n    --md-outlined-text-field-focus-outline-color,\r\n    var(--md-sys-color-primary)\r\n  );\r\n  --_focus-outline-width: var(\r\n    --md-outlined-text-field-focus-outline-width,\r\n    3px\r\n  );\r\n  --_focus-supporting-text-color: var(\r\n    --md-outlined-text-field-focus-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_focus-trailing-icon-color: var(\r\n    --md-outlined-text-field-focus-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-input-text-color: var(\r\n    --md-outlined-text-field-hover-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-label-text-color: var(\r\n    --md-outlined-text-field-hover-label-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-leading-icon-color: var(\r\n    --md-outlined-text-field-hover-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-outline-color: var(\r\n    --md-outlined-text-field-hover-outline-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_hover-outline-width: var(\r\n    --md-outlined-text-field-hover-outline-width,\r\n    1px\r\n  );\r\n  --_hover-supporting-text-color: var(\r\n    --md-outlined-text-field-hover-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_hover-trailing-icon-color: var(\r\n    --md-outlined-text-field-hover-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-color: var(\r\n    --md-outlined-text-field-input-text-color,\r\n    var(--md-sys-color-on-surface)\r\n  );\r\n  --_input-text-font: var(\r\n    --md-outlined-text-field-input-text-font,\r\n    var(\r\n      --md-sys-typescale-body-large-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_input-text-line-height: var(\r\n    --md-outlined-text-field-input-text-line-height,\r\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\r\n  );\r\n  --_input-text-placeholder-color: var(\r\n    --md-outlined-text-field-input-text-placeholder-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-prefix-color: var(\r\n    --md-outlined-text-field-input-text-prefix-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-size: var(\r\n    --md-outlined-text-field-input-text-size,\r\n    var(--md-sys-typescale-body-large-size, 1rem)\r\n  );\r\n  --_input-text-suffix-color: var(\r\n    --md-outlined-text-field-input-text-suffix-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_input-text-weight: var(\r\n    --md-outlined-text-field-input-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-large-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_label-text-color: var(\r\n    --md-outlined-text-field-label-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_label-text-font: var(\r\n    --md-outlined-text-field-label-text-font,\r\n    var(\r\n      --md-sys-typescale-body-large-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_label-text-line-height: var(\r\n    --md-outlined-text-field-label-text-line-height,\r\n    var(--md-sys-typescale-body-large-line-height, 1.5rem)\r\n  );\r\n  --_label-text-populated-line-height: var(\r\n    --md-outlined-text-field-label-text-populated-line-height,\r\n    var(--md-sys-typescale-body-small-line-height, 1rem)\r\n  );\r\n  --_label-text-populated-size: var(\r\n    --md-outlined-text-field-label-text-populated-size,\r\n    var(--md-sys-typescale-body-small-size, 0.75rem)\r\n  );\r\n  --_label-text-size: var(\r\n    --md-outlined-text-field-label-text-size,\r\n    var(--md-sys-typescale-body-large-size, 1rem)\r\n  );\r\n  --_label-text-weight: var(\r\n    --md-outlined-text-field-label-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-large-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_leading-icon-color: var(\r\n    --md-outlined-text-field-leading-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_leading-icon-size: var(--md-outlined-text-field-leading-icon-size, 24px);\r\n  --_outline-color: var(\r\n    --md-outlined-text-field-outline-color,\r\n    var(--md-sys-color-outline)\r\n  );\r\n  --_outline-width: var(--md-outlined-text-field-outline-width, 1px);\r\n  --_supporting-text-color: var(\r\n    --md-outlined-text-field-supporting-text-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_supporting-text-font: var(\r\n    --md-outlined-text-field-supporting-text-font,\r\n    var(\r\n      --md-sys-typescale-body-small-font,\r\n      var(--md-ref-typeface-plain, Roboto)\r\n    )\r\n  );\r\n  --_supporting-text-leading-space: var(\r\n    --md-outlined-field-supporting-text-leading-space,\r\n    16px\r\n  );\r\n  --_supporting-text-line-height: var(\r\n    --md-outlined-text-field-supporting-text-line-height,\r\n    var(--md-sys-typescale-body-small-line-height, 1rem)\r\n  );\r\n  --_supporting-text-size: var(\r\n    --md-outlined-text-field-supporting-text-size,\r\n    var(--md-sys-typescale-body-small-size, 0.75rem)\r\n  );\r\n  --_supporting-text-top-space: var(\r\n    --md-outlined-field-supporting-text-top-space,\r\n    4px\r\n  );\r\n  --_supporting-text-trailing-space: var(\r\n    --md-outlined-field-supporting-text-trailing-space,\r\n    16px\r\n  );\r\n  --_supporting-text-weight: var(\r\n    --md-outlined-text-field-supporting-text-weight,\r\n    var(\r\n      --md-sys-typescale-body-small-weight,\r\n      var(--md-ref-typeface-weight-regular, 400)\r\n    )\r\n  );\r\n  --_trailing-icon-color: var(\r\n    --md-outlined-text-field-trailing-icon-color,\r\n    var(--md-sys-color-on-surface-variant)\r\n  );\r\n  --_trailing-icon-size: var(--md-outlined-text-field-trailing-icon-size, 24px);\r\n  --_container-shape-start-start: var(\r\n    --md-outlined-text-field-container-shape-start-start,\r\n    var(--_container-shape)\r\n  );\r\n  --_container-shape-start-end: var(\r\n    --md-outlined-text-field-container-shape-start-end,\r\n    var(--_container-shape)\r\n  );\r\n  --_container-shape-end-end: var(\r\n    --md-outlined-text-field-container-shape-end-end,\r\n    var(--_container-shape)\r\n  );\r\n  --_container-shape-end-start: var(\r\n    --md-outlined-text-field-container-shape-end-start,\r\n    var(--_container-shape)\r\n  );\r\n  --md-outlined-field-bottom-space: var(--_bottom-space);\r\n  --md-outlined-field-container-shape-end-end: var(--_container-shape-end-end);\r\n  --md-outlined-field-container-shape-end-start: var(\r\n    --_container-shape-end-start\r\n  );\r\n  --md-outlined-field-container-shape-start-end: var(\r\n    --_container-shape-start-end\r\n  );\r\n  --md-outlined-field-container-shape-start-start: var(\r\n    --_container-shape-start-start\r\n  );\r\n  --md-outlined-field-content-color: var(--_input-text-color);\r\n  --md-outlined-field-content-font: var(--_input-text-font);\r\n  --md-outlined-field-content-line-height: var(--_input-text-line-height);\r\n  --md-outlined-field-content-size: var(--_input-text-size);\r\n  --md-outlined-field-content-weight: var(--_input-text-weight);\r\n  --md-outlined-field-disabled-content-color: var(--_disabled-input-text-color);\r\n  --md-outlined-field-disabled-content-opacity: var(\r\n    --_disabled-input-text-opacity\r\n  );\r\n  --md-outlined-field-disabled-label-text-color: var(\r\n    --_disabled-label-text-color\r\n  );\r\n  --md-outlined-field-disabled-label-text-opacity: var(\r\n    --_disabled-label-text-opacity\r\n  );\r\n  --md-outlined-field-disabled-leading-content-color: var(\r\n    --_disabled-leading-icon-color\r\n  );\r\n  --md-outlined-field-disabled-leading-content-opacity: var(\r\n    --_disabled-leading-icon-opacity\r\n  );\r\n  --md-outlined-field-disabled-outline-color: var(--_disabled-outline-color);\r\n  --md-outlined-field-disabled-outline-opacity: var(\r\n    --_disabled-outline-opacity\r\n  );\r\n  --md-outlined-field-disabled-outline-width: var(--_disabled-outline-width);\r\n  --md-outlined-field-disabled-supporting-text-color: var(\r\n    --_disabled-supporting-text-color\r\n  );\r\n  --md-outlined-field-disabled-supporting-text-opacity: var(\r\n    --_disabled-supporting-text-opacity\r\n  );\r\n  --md-outlined-field-disabled-trailing-content-color: var(\r\n    --_disabled-trailing-icon-color\r\n  );\r\n  --md-outlined-field-disabled-trailing-content-opacity: var(\r\n    --_disabled-trailing-icon-opacity\r\n  );\r\n  --md-outlined-field-error-content-color: var(--_error-input-text-color);\r\n  --md-outlined-field-error-focus-content-color: var(\r\n    --_error-focus-input-text-color\r\n  );\r\n  --md-outlined-field-error-focus-label-text-color: var(\r\n    --_error-focus-label-text-color\r\n  );\r\n  --md-outlined-field-error-focus-leading-content-color: var(\r\n    --_error-focus-leading-icon-color\r\n  );\r\n  --md-outlined-field-error-focus-outline-color: var(\r\n    --_error-focus-outline-color\r\n  );\r\n  --md-outlined-field-error-focus-supporting-text-color: var(\r\n    --_error-focus-supporting-text-color\r\n  );\r\n  --md-outlined-field-error-focus-trailing-content-color: var(\r\n    --_error-focus-trailing-icon-color\r\n  );\r\n  --md-outlined-field-error-hover-content-color: var(\r\n    --_error-hover-input-text-color\r\n  );\r\n  --md-outlined-field-error-hover-label-text-color: var(\r\n    --_error-hover-label-text-color\r\n  );\r\n  --md-outlined-field-error-hover-leading-content-color: var(\r\n    --_error-hover-leading-icon-color\r\n  );\r\n  --md-outlined-field-error-hover-outline-color: var(\r\n    --_error-hover-outline-color\r\n  );\r\n  --md-outlined-field-error-hover-supporting-text-color: var(\r\n    --_error-hover-supporting-text-color\r\n  );\r\n  --md-outlined-field-error-hover-trailing-content-color: var(\r\n    --_error-hover-trailing-icon-color\r\n  );\r\n  --md-outlined-field-error-label-text-color: var(--_error-label-text-color);\r\n  --md-outlined-field-error-leading-content-color: var(\r\n    --_error-leading-icon-color\r\n  );\r\n  --md-outlined-field-error-outline-color: var(--_error-outline-color);\r\n  --md-outlined-field-error-supporting-text-color: var(\r\n    --_error-supporting-text-color\r\n  );\r\n  --md-outlined-field-error-trailing-content-color: var(\r\n    --_error-trailing-icon-color\r\n  );\r\n  --md-outlined-field-focus-content-color: var(--_focus-input-text-color);\r\n  --md-outlined-field-focus-label-text-color: var(--_focus-label-text-color);\r\n  --md-outlined-field-focus-leading-content-color: var(\r\n    --_focus-leading-icon-color\r\n  );\r\n  --md-outlined-field-focus-outline-color: var(--_focus-outline-color);\r\n  --md-outlined-field-focus-outline-width: var(--_focus-outline-width);\r\n  --md-outlined-field-focus-supporting-text-color: var(\r\n    --_focus-supporting-text-color\r\n  );\r\n  --md-outlined-field-focus-trailing-content-color: var(\r\n    --_focus-trailing-icon-color\r\n  );\r\n  --md-outlined-field-hover-content-color: var(--_hover-input-text-color);\r\n  --md-outlined-field-hover-label-text-color: var(--_hover-label-text-color);\r\n  --md-outlined-field-hover-leading-content-color: var(\r\n    --_hover-leading-icon-color\r\n  );\r\n  --md-outlined-field-hover-outline-color: var(--_hover-outline-color);\r\n  --md-outlined-field-hover-outline-width: var(--_hover-outline-width);\r\n  --md-outlined-field-hover-supporting-text-color: var(\r\n    --_hover-supporting-text-color\r\n  );\r\n  --md-outlined-field-hover-trailing-content-color: var(\r\n    --_hover-trailing-icon-color\r\n  );\r\n  --md-outlined-field-label-text-color: var(--_label-text-color);\r\n  --md-outlined-field-label-text-font: var(--_label-text-font);\r\n  --md-outlined-field-label-text-line-height: var(--_label-text-line-height);\r\n  --md-outlined-field-label-text-populated-line-height: var(\r\n    --_label-text-populated-line-height\r\n  );\r\n  --md-outlined-field-label-text-populated-size: var(\r\n    --_label-text-populated-size\r\n  );\r\n  --md-outlined-field-label-text-size: var(--_label-text-size);\r\n  --md-outlined-field-label-text-weight: var(--_label-text-weight);\r\n  --md-outlined-field-leading-content-color: var(--_leading-icon-color);\r\n  --md-outlined-field-leading-space: var(--_leading-space);\r\n  --md-outlined-field-outline-color: var(--_outline-color);\r\n  --md-outlined-field-outline-width: var(--_outline-width);\r\n  --md-outlined-field-supporting-text-color: var(--_supporting-text-color);\r\n  --md-outlined-field-supporting-text-font: var(--_supporting-text-font);\r\n  --md-outlined-field-supporting-text-line-height: var(\r\n    --_supporting-text-line-height\r\n  );\r\n  --md-outlined-field-supporting-text-size: var(--_supporting-text-size);\r\n  --md-outlined-field-supporting-text-weight: var(--_supporting-text-weight);\r\n  --md-outlined-field-top-space: var(--_top-space);\r\n  --md-outlined-field-trailing-content-color: var(--_trailing-icon-color);\r\n  --md-outlined-field-trailing-space: var(--_trailing-space);\r\n}\r\n.prefix {\r\n  text-wrap: nowrap;\r\n  width: min-content;\r\n  color: var(--_input-text-prefix-color);\r\n  padding-inline-end: var(--_input-text-prefix-trailing-space);\r\n}\r\n.suffix {\r\n  text-wrap: nowrap;\r\n  width: min-content;\r\n  padding-inline-start: var(--_input-text-suffix-leading-space);\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/OverlayArrow.tsx",
    "content": "'use client'\n\nimport {\n  ContextValue,\n  RenderProps,\n  useContextProps,\n  useRenderProps\n} from './../../utils'\nimport React, {\n  CSSProperties,\n  HTMLAttributes,\n  RefObject,\n  createContext\n} from 'react'\n\nimport { PlacementAxis } from 'react-aria'\n\ninterface OverlayArrowContextValue extends OverlayArrowProps {\n  placement: PlacementAxis | null\n}\n\nexport const OverlayArrowContext = createContext<\n  ContextValue<OverlayArrowContextValue, HTMLDivElement>\n>({\n  placement: 'bottom'\n})\n\nexport interface OverlayArrowProps\n  extends Omit<\n      HTMLAttributes<HTMLDivElement>,\n      'className' | 'style' | 'children'\n    >,\n    RenderProps<OverlayArrowRenderProps> {}\n\nexport interface OverlayArrowRenderProps {\n  /**\n   * The placement of the overlay relative to the trigger.\n   * @selector [data-placement=\"left | right | top | bottom\"]\n   */\n  placement: PlacementAxis | null\n}\n\nfunction OverlayArrow({\n  ref,\n  ...props\n}: OverlayArrowProps & { ref?: React.RefObject<HTMLDivElement> }) {\n  ;[props, ref as any] = useContextProps(\n    props,\n    ref as RefObject<HTMLDivElement | null>,\n    OverlayArrowContext\n  )\n  const placement = (props as OverlayArrowContextValue).placement\n  const style: CSSProperties = {\n    position: 'absolute',\n    transform:\n      placement === 'top' || placement === 'bottom'\n        ? 'translateX(-50%)'\n        : 'translateY(-50%)'\n  }\n  if (placement != null && placement !== 'center') {\n    style[placement] = '100%'\n  }\n\n  const renderProps = useRenderProps({\n    ...props,\n    defaultClassName: 'react-aria-OverlayArrow',\n    values: {\n      placement\n    }\n  })\n  // remove undefined values from renderProps.style object so that it can be\n  // spread merged with the other style object\n  if (renderProps.style) {\n    Object.keys(renderProps.style).forEach(\n      (key) =>\n        renderProps.style![key as keyof CSSProperties] === undefined &&\n        delete renderProps.style![key as keyof CSSProperties]\n    )\n  }\n  return (\n    <div\n      ref={ref}\n      {...props}\n      {...renderProps}\n      data-placement={placement}\n      style={{\n        ...style,\n        ...renderProps.style\n      }}\n    />\n  )\n}\n\nexport { OverlayArrow }\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/Tooltip.tsx",
    "content": "'use client'\r\n\r\nimport {\r\n  AriaPositionProps,\r\n  OverlayContainer,\r\n  Placement,\r\n  PlacementAxis,\r\n  PositionProps\r\n} from 'react-aria'\r\nimport {\r\n  ContextValue,\r\n  RenderProps,\r\n  useContextProps,\r\n  useExitAnimation\r\n} from '../../utils'\r\nimport {\r\n  OverlayTriggerProps,\r\n  TooltipTriggerState,\r\n  useTooltipTriggerState\r\n} from 'react-stately'\r\nimport { RefObject, createContext, useContext } from 'react'\r\n\r\nimport { AriaLabelingProps } from '@react-types/shared'\r\nimport { TooltipGroupContext } from './TooltipGroup'\r\nimport { TooltipInner } from './TooltipInner'\r\nimport { TooltipTrigger } from 'react-aria-components'\r\nimport { TooltipTriggerStateContext } from './TooltipTrigger'\r\n\r\nexport interface TooltipRenderProps {\r\n  /**\r\n   * The placement of the tooltip relative to the trigger.\r\n   * @selector [data-placement=\"left | right | top | bottom\"]\r\n   */\r\n  placement: PlacementAxis | null\r\n  /**\r\n   * Whether the tooltip is currently entering. Use this to apply animations.\r\n   * @selector [data-entering]\r\n   */\r\n  isEntering: boolean\r\n  /**\r\n   * Whether the tooltip is currently exiting. Use this to apply animations.\r\n   * @selector [data-exiting]\r\n   */\r\n  isExiting: boolean\r\n  /**\r\n   * State of the tooltip.\r\n   */\r\n  state: TooltipTriggerState\r\n}\r\nexport const TooltipContext =\r\n  createContext<ContextValue<TooltipProps, HTMLDivElement>>(null)\r\nexport interface TooltipProps\r\n  extends PositionProps,\r\n    Pick<AriaPositionProps, 'arrowBoundaryOffset'>,\r\n    OverlayTriggerProps,\r\n    AriaLabelingProps,\r\n    RenderProps<TooltipRenderProps> {\r\n  /**\r\n   * The ref for the element which the tooltip positions itself with respect to.\r\n   *\r\n   * When used within a TooltipTrigger this is set automatically. It is only required when used standalone.\r\n   */\r\n  triggerRef?: RefObject<Element | null>\r\n  /**\r\n   * Whether the tooltip is currently performing an entry animation.\r\n   */\r\n  isEntering?: boolean\r\n  /**\r\n   * Whether the tooltip is currently performing an exit animation.\r\n   */\r\n  isExiting?: boolean\r\n  /**\r\n   * The container element in which the overlay portal will be placed. This may have unknown behavior depending on where it is portalled to.\r\n   * @default document.body\r\n   */\r\n  UNSTABLE_portalContainer?: Element\r\n  /**\r\n   * The placement of the tooltip with respect to the trigger.\r\n   * @default 'top'\r\n   */\r\n  placement?: Placement\r\n  ref?: RefObject<HTMLDivElement | null>\r\n}\r\n\r\nconst Tooltip = ({ UNSTABLE_portalContainer, ref, ...props }: TooltipProps) => {\r\n  const { placement } = useContext(TooltipGroupContext)\r\n  props.placement = props.placement ?? placement\r\n  ;[props, ref] = useContextProps(\r\n    props,\r\n    ref as RefObject<HTMLDivElement | null>,\r\n    TooltipContext\r\n  )\r\n  const contextState = useContext(TooltipTriggerStateContext)\r\n  const localState = useTooltipTriggerState(props)\r\n  const state =\r\n    props.isOpen != null || props.defaultOpen != null || !contextState\r\n      ? localState\r\n      : contextState\r\n  const isExiting =\r\n    useExitAnimation(ref, state.isOpen) || props.isExiting || false\r\n  if (!state.isOpen && !isExiting) {\r\n    return null\r\n  }\r\n\r\n  return (\r\n    <TooltipTrigger>\r\n      <OverlayContainer portalContainer={UNSTABLE_portalContainer}>\r\n        <TooltipInner {...props} tooltipRef={ref} isExiting={isExiting} />\r\n      </OverlayContainer>\r\n    </TooltipTrigger>\r\n  )\r\n}\r\n\r\nTooltip.displayName = 'Actify.Tooltip'\r\nexport { Tooltip }\r\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/TooltipGroup.tsx",
    "content": "'use client'\n\nimport { createContext, useId } from 'react'\n\nimport { LayoutGroup } from 'motion/react'\nimport { Placement } from 'react-aria'\n\nexport const TooltipGroupContext = createContext<{\n  placement?: Placement\n  groupId?: string\n}>({\n  placement: 'top',\n  groupId: undefined\n})\n\ninterface TooltipGroupProps {\n  placement?: Placement\n  children?: React.ReactNode\n}\n\nconst TooltipGroup = (props: TooltipGroupProps) => {\n  const groupId = useId()\n  const { children, placement } = props\n\n  return (\n    <TooltipGroupContext value={{ groupId, placement }}>\n      <LayoutGroup>{children}</LayoutGroup>\n    </TooltipGroupContext>\n  )\n}\n\nexport { TooltipGroup }\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/TooltipInner.tsx",
    "content": "'use client'\n\nimport { RefObject, useContext, useLayoutEffect, useRef, useState } from 'react'\nimport { mergeProps, useOverlayPosition, useTooltip } from 'react-aria'\nimport { useEnterAnimation, useRenderProps } from '../../utils'\n\nimport { OverlayArrowContext } from './OverlayArrow'\nimport { TooltipProps } from './Tooltip'\nimport { TooltipTriggerStateContext } from './TooltipTrigger'\n\nconst TooltipInner = (\n  props: TooltipProps & {\n    isExiting: boolean\n    tooltipRef: RefObject<HTMLDivElement | null>\n  }\n) => {\n  const state = useContext(TooltipTriggerStateContext)!\n\n  // Calculate the arrow size internally\n  // Referenced from: packages/@react-spectrum/tooltip/src/TooltipTrigger.tsx\n  const arrowRef = useRef<HTMLDivElement>(null)\n  const [arrowWidth, setArrowWidth] = useState(0)\n  useLayoutEffect(() => {\n    if (arrowRef.current && state.isOpen) {\n      setArrowWidth(arrowRef.current.getBoundingClientRect().width)\n    }\n  }, [state.isOpen, arrowRef])\n\n  const { overlayProps, arrowProps, placement } = useOverlayPosition({\n    placement: props.placement || 'top',\n    targetRef: props.triggerRef!,\n    overlayRef: props.tooltipRef,\n    offset: props.offset,\n    crossOffset: props.crossOffset,\n    isOpen: state.isOpen,\n    arrowSize: arrowWidth,\n    arrowBoundaryOffset: props.arrowBoundaryOffset,\n    shouldFlip: props.shouldFlip,\n    onClose: () => state.close(true)\n  })\n\n  const isEntering =\n    useEnterAnimation(props.tooltipRef, !!placement) ||\n    props.isEntering ||\n    false\n  const renderProps = useRenderProps({\n    ...props,\n    defaultClassName: 'react-aria-Tooltip',\n    values: {\n      placement,\n      isEntering,\n      isExiting: props.isExiting,\n      state\n    }\n  })\n\n  props = mergeProps(props, overlayProps)\n  const { tooltipProps } = useTooltip(props, state)\n\n  return (\n    <div\n      {...renderProps}\n      {...tooltipProps}\n      ref={props.tooltipRef}\n      data-placement={placement ?? undefined}\n      data-entering={isEntering || undefined}\n      data-exiting={props.isExiting || undefined}\n      style={{ ...overlayProps.style, ...renderProps.style }}\n    >\n      <OverlayArrowContext\n        value={{ ...arrowProps, placement, ref: arrowRef }}\n      >\n        {renderProps.children}\n      </OverlayArrowContext>\n    </div>\n  )\n}\n\nexport { TooltipInner }\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/TooltipTrigger.tsx",
    "content": "'use client'\n\nimport { ReactNode, createContext, useRef } from 'react'\nimport {\n  TooltipTriggerProps,\n  TooltipTriggerState,\n  useTooltipTriggerState\n} from 'react-stately'\n\nimport { FocusableElement } from '@react-types/shared'\nimport { FocusableProvider } from '@react-aria/focus'\nimport { Provider } from './../../utils'\nimport { TooltipContext } from './Tooltip'\nimport { useTooltipTrigger } from 'react-aria'\n\nexport interface TooltipTriggerComponentProps extends TooltipTriggerProps {\n  children: ReactNode\n}\n\nexport const TooltipTriggerStateContext =\n  createContext<TooltipTriggerState | null>(null)\n\n/**\n * TooltipTrigger wraps around a trigger element and a Tooltip. It handles opening and closing\n * the Tooltip when the user hovers over or focuses the trigger, and positioning the Tooltip\n * relative to the trigger.\n */\nexport function TooltipTrigger(props: TooltipTriggerComponentProps) {\n  const state = useTooltipTriggerState(props)\n  const ref = useRef<FocusableElement>(null)\n  const { triggerProps, tooltipProps } = useTooltipTrigger(props, state, ref)\n\n  return (\n    <Provider\n      values={[\n        [TooltipTriggerStateContext, state],\n        [TooltipContext, { ...tooltipProps, triggerRef: ref }]\n      ]}\n    >\n      <FocusableProvider {...triggerProps} ref={ref}>\n        {props.children}\n      </FocusableProvider>\n    </Provider>\n  )\n}\n"
  },
  {
    "path": "packages/actify/src/components/Tooltips/index.ts",
    "content": "export { Tooltip } from './Tooltip'\r\nexport { TooltipGroup } from './TooltipGroup'\r\nexport { OverlayArrow } from './OverlayArrow'\r\nexport { TooltipTrigger } from './TooltipTrigger'\r\n"
  },
  {
    "path": "packages/actify/src/components/TopAppBar/TopAppBar.tsx",
    "content": "'use client'\r\n\r\nimport { Icon } from './../Icon'\r\nimport React from 'react'\r\nimport { Spacer } from './../Spacer'\r\nimport clsx from 'clsx'\r\nimport styles from './top-app-bar.module.css'\r\n\r\ninterface TopAppBarProps extends React.ComponentProps<'div'> {\r\n  size?: 'default' | 'small' | 'medium' | 'large'\r\n}\r\n\r\nconst TopAppBar = (props: TopAppBarProps) => {\r\n  const { title, size = 'default', className, ...rest } = props\r\n  return (\r\n    <div {...rest} className={clsx(styles['root'], styles[`size-${size}`])}>\r\n      <div className={styles['item']}>\r\n        <div className={styles['item-inner']}>\r\n          <div className={styles['wrapper']}>\r\n            <div className={styles['icon']}>\r\n              <Icon>menu</Icon>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n      {size == 'medium' || size == 'large' ? (\r\n        <Spacer />\r\n      ) : (\r\n        <div className={styles['title-small']}>{title}</div>\r\n      )}\r\n      <div className={styles['item']}>\r\n        <div className={styles['item-inner']}>\r\n          <div className={styles['wrapper']}>\r\n            <div className={styles['icon']}>\r\n              <Icon>person</Icon>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      {size == 'medium' || size == 'large' ? (\r\n        <div className={styles['title-big']}>\r\n          <div className={styles['title-big-inner']}>{title}</div>\r\n        </div>\r\n      ) : null}\r\n    </div>\r\n  )\r\n}\r\n\r\nTopAppBar.displayName = 'Actify.TopAppBar'\r\n\r\nexport { TopAppBar }\r\n"
  },
  {
    "path": "packages/actify/src/components/TopAppBar/index.ts",
    "content": "export { TopAppBar } from './TopAppBar'\r\n"
  },
  {
    "path": "packages/actify/src/components/TopAppBar/top-app-bar.module.css",
    "content": ".root {\n  display: inline-flex;\n  width: 100%;\n  padding: 0.5rem 1rem;\n  align-items: center;\n  justify-content: flex-start;\n  background-color: var(--md-sys-color-surface);\n}\n\n.size-default {\n  height: 4rem;\n  text-align: center;\n  gap: 0.375rem;\n}\n.size-small {\n  height: 4rem;\n  gap: 0.25rem;\n}\n.size-medium {\n  height: 7rem;\n  gap: 0.25rem;\n}\n.size-large {\n  height: 10rem;\n  gap: 2.5rem;\n}\n.item {\n  display: inline-flex;\n  width: 3rem;\n  height: 3rem;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 0.625rem;\n}\n.item-inner {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.625rem;\n  border-radius: 6.25rem;\n}\n.wrapper {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.625rem;\n  padding: 0.5rem;\n}\n.icon {\n  position: relative;\n  width: 1.5rem;\n  height: 1.5rem;\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-on-surface) / var(--tw-text-opacity);\n}\n.title-small {\n  flex-shrink: 1;\n  flex-grow: 1;\n  flex-basis: 0px;\n  font-size: 1.375rem;\n  font-weight: 400;\n  line-height: 1.75rem;\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-on-surface) / var(--tw-text-opacity);\n}\n\n.title-big {\n  width: 100%;\n  align-items: flex-start;\n  justify-content: flex-start;\n  gap: 0.625rem;\n  align-self: stretch;\n  padding-left: 1rem;\n  padding-right: 1rem;\n}\n.title-big-inner {\n  font-size: 1.5rem;\n  font-weight: 400;\n  line-height: 2;\n  --tw-text-opacity: 1;\n  color: var(--md-sys-color-on-surface) / var(--tw-text-opacity);\n}\n"
  },
  {
    "path": "packages/actify/src/components/VisuallyHidden/VisuallyHidden.tsx",
    "content": "import { VisuallyHiddenProps, useVisuallyHidden } from 'react-aria'\r\n\r\nimport React from 'react'\r\nimport styles from './visually-hidden.module.css'\r\n\r\ninterface Props extends VisuallyHiddenProps {\r\n  as?: keyof HTMLElementTagNameMap | React.ElementType\r\n}\r\nconst VisuallyHidden = ({ as: Tag = 'span', children, ...props }: Props) => {\r\n  const { visuallyHiddenProps } = useVisuallyHidden(props)\r\n\r\n  return (\r\n    <Tag className={styles['visually-hidden']} {...visuallyHiddenProps}>\r\n      {children}\r\n    </Tag>\r\n  )\r\n}\r\n\r\nexport { VisuallyHidden }\r\n"
  },
  {
    "path": "packages/actify/src/components/VisuallyHidden/index.ts",
    "content": "export { VisuallyHidden } from './VisuallyHidden'\r\n"
  },
  {
    "path": "packages/actify/src/components/VisuallyHidden/visually-hidden.module.css",
    "content": ".visually-hidden {\n  /* https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss */\n  position: absolute;\n  border: 0;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n}\n"
  },
  {
    "path": "packages/actify/src/css-module.d.ts",
    "content": "declare module '*.module.css' {\r\n  const classes: { [key: string]: string }\r\n  export default classes\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/hooks/index.ts",
    "content": "export { useFocusRing } from 'react-aria'\r\n\r\nexport { usePrevious } from './usePrevious'\r\nexport { useInterval } from './useInterval'\r\nexport { useDebounce } from './useDebounce'\r\nexport { useInputState } from './useInputState'\r\nexport { useAttachable } from './useAttachable'\r\nexport { useControllable } from './useControllable'\r\nexport { mergeRefs, useMergedRefs } from './mergeRefs'\r\nexport { useOnClickOutside } from './useOnClickOutside'\r\nexport { useResizeObserver } from './useResizeObserver'\r\nexport { useControllableState } from './useControllableState'\r\n"
  },
  {
    "path": "packages/actify/src/hooks/mergeRefs.tsx",
    "content": "'use client'\r\n\r\nimport { useCallback } from 'react'\r\n\r\ntype PossibleRef<T> = React.Ref<T> | null | undefined\r\n\r\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\r\n  if (typeof ref === 'function') {\r\n    ref(value)\r\n  } else if (ref !== null && ref !== undefined) {\r\n    ;(ref as React.MutableRefObject<T>).current = value\r\n  }\r\n}\r\n\r\nfunction mergeRefs<T>(...refs: PossibleRef<T>[]) {\r\n  return (node: T | null) => {\r\n    refs.forEach((ref) => {\r\n      setRef(ref, node)\r\n    })\r\n  }\r\n}\r\n\r\nfunction useMergedRefs<T>(...refs: PossibleRef<T>[]) {\r\n  // eslint-disable-next-line react-hooks/exhaustive-deps\r\n  return useCallback(mergeRefs(...refs), [refs])\r\n}\r\n\r\nexport { mergeRefs, useMergedRefs }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useAttachable.ts",
    "content": "'use client'\r\n\r\nimport React, { useEffect, useState } from 'react'\r\n\r\nconst useAttachable = (ref: React.RefObject<HTMLElement | null>) => {\r\n  const [control, setControl] = useState<HTMLElement | null | undefined>(null)\r\n  useEffect(() => {\r\n    const htmlFor = ref.current?.getAttribute('for')\r\n    if (htmlFor) {\r\n      const currentControl = document.getElementById(htmlFor)\r\n      const parentElement = ref.current?.parentElement\r\n      setControl(currentControl || parentElement)\r\n    }\r\n  }, [ref])\r\n  return control\r\n}\r\n\r\nexport { useAttachable }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useControllable.ts",
    "content": "'use client'\r\n\r\nimport { useCallback, useEffect, useState } from 'react'\r\n\r\ntype UseControllableProps<T> = {\r\n  value?: T\r\n  onChange?: (value: T) => void\r\n  defaultValue?: T\r\n}\r\n\r\nconst useControllable = <T>({\r\n  value,\r\n  onChange,\r\n  defaultValue\r\n}: UseControllableProps<T>): [\r\n  T,\r\n  (event: React.ChangeEvent<HTMLInputElement>) => void\r\n] => {\r\n  const [internalValue, setInternalValue] = useState<T>(defaultValue!)\r\n\r\n  const isControlled = value !== undefined\r\n\r\n  useEffect(() => {\r\n    if (isControlled) {\r\n      setInternalValue(value!)\r\n    }\r\n  }, [value, isControlled])\r\n\r\n  const handleChange = useCallback(\r\n    (event: React.ChangeEvent<HTMLInputElement>) => {\r\n      const newValue = event.target.value as unknown as T\r\n      if (isControlled) {\r\n        onChange?.(newValue)\r\n      } else {\r\n        setInternalValue(newValue)\r\n      }\r\n    },\r\n    [isControlled, onChange]\r\n  )\r\n\r\n  return [isControlled ? value! : internalValue, handleChange] as const\r\n}\r\n\r\nexport { useControllable }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useControllableState.ts",
    "content": "'use client'\r\n\r\nimport { useMemo, useState, useRef, useEffect, useCallback } from 'react'\r\n\r\nexport function useCallbackRef<T extends (...args: any[]) => any>(\r\n  callback: T | undefined,\r\n  deps: React.DependencyList = []\r\n) {\r\n  const callbackRef = useRef(callback)\r\n\r\n  useEffect(() => {\r\n    callbackRef.current = callback\r\n  })\r\n  return useCallback(((...args) => callbackRef.current?.(...args)) as T, deps)\r\n}\r\n\r\nexport function useControllableProp<T>(prop: T | undefined, state: T) {\r\n  const controlled = typeof prop !== 'undefined'\r\n  const value = controlled ? prop : state\r\n  return useMemo<[boolean, T]>(() => [controlled, value], [controlled, value])\r\n}\r\n\r\nexport interface UseControllableStateProps<T> {\r\n  value?: T\r\n  defaultValue?: T | (() => T)\r\n  onChange?: (value: T) => void\r\n  shouldUpdate?: (prev: T, next: T) => boolean\r\n}\r\n\r\nexport function useControllableState<T>(props: UseControllableStateProps<T>) {\r\n  const {\r\n    value: valueProp,\r\n    defaultValue,\r\n    onChange,\r\n    shouldUpdate = (prev, next) => prev !== next\r\n  } = props\r\n\r\n  const onChangeProp = useCallbackRef(onChange)\r\n  const shouldUpdateProp = useCallbackRef(shouldUpdate)\r\n\r\n  const [uncontrolledState, setUncontrolledState] = useState(defaultValue as T)\r\n  const controlled = valueProp !== undefined\r\n  const value = controlled ? valueProp : uncontrolledState\r\n\r\n  const setValue = useCallbackRef(\r\n    (next: React.SetStateAction<T>) => {\r\n      const setter = next as (prevState?: T) => T\r\n      const nextValue = typeof next === 'function' ? setter(value) : next\r\n\r\n      if (!shouldUpdateProp(value, nextValue)) {\r\n        return\r\n      }\r\n\r\n      if (!controlled) {\r\n        setUncontrolledState(nextValue)\r\n      }\r\n\r\n      onChangeProp(nextValue)\r\n    },\r\n    [controlled, onChangeProp, value, shouldUpdateProp]\r\n  )\r\n\r\n  return [value, setValue] as [T, React.Dispatch<React.SetStateAction<T>>]\r\n}\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useDebounce.ts",
    "content": "'use client'\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\nconst useDebounce = <T>(value: T, delay: number): T => {\r\n  const [debouncedValue, setDebouncedValue] = useState(value)\r\n  useEffect(() => {\r\n    const timer = setTimeout(() => setDebouncedValue(value), delay || 500)\r\n    return () => {\r\n      clearTimeout(timer)\r\n    }\r\n  }, [value, delay])\r\n  return debouncedValue\r\n}\r\n\r\nexport { useDebounce }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useInputState.tsx",
    "content": "'use client'\r\n\r\nimport { ChangeEvent, ChangeEventHandler, useState } from 'react'\r\n\r\ntype Value = string | readonly string[] | number | undefined\r\n\r\ninterface useInputStateProps<T> {\r\n  value?: Value\r\n  defaultValue?: Value\r\n  initialValue?: Value\r\n  onChange?: ChangeEventHandler<T> | undefined\r\n}\r\n// This hook is for controlled and uncontrolled component\r\nfunction useInputState<T>({\r\n  value,\r\n  defaultValue,\r\n  initialValue = '',\r\n  onChange\r\n}: useInputStateProps<T>) {\r\n  // A component can be considered controlled when its value prop is\r\n  // not undefined.\r\n  const isControlled = typeof value != 'undefined'\r\n  // When a component is not controlled, it can have a defaultValue.\r\n  const hasDefaultValue = typeof defaultValue != 'undefined'\r\n  // If a defaultValue is specified, we will use it as our initial\r\n  // state.  Otherwise, we will simply use an empty string.\r\n  const [internalValue, setInternalValue] = useState(\r\n    hasDefaultValue ? defaultValue : initialValue\r\n  )\r\n\r\n  // Internally, we need to deal with some value. Depending on whether\r\n  // the component is controlled or not, that value comes from its\r\n  // props or from its internal state.\r\n  const inputValue = isControlled ? value : internalValue\r\n  const handleChange = (event: ChangeEvent<T>) => {\r\n    // When the user types, we will call props.onChange if it exists.\r\n    // We do this even if there is no props.value (and the component\r\n    // is uncontrolled.)\r\n    onChange?.(event)\r\n\r\n    // If the component is uncontrolled, we need to update our\r\n    // internal value here.\r\n    if (!isControlled) {\r\n      setInternalValue((event.target as unknown as HTMLInputElement).value)\r\n    }\r\n  }\r\n  return [inputValue, handleChange] as const\r\n}\r\n\r\nexport { useInputState }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useInterval.ts",
    "content": "'use client'\r\n\r\nimport { useEffect, useRef } from 'react'\r\n\r\nconst useInterval = (\r\n  callback: () => void,\r\n  delay: number | null,\r\n  dependencies: unknown[] = []\r\n) => {\r\n  const savedCallback = useRef(callback)\r\n\r\n  useEffect(() => {\r\n    savedCallback.current = callback\r\n  }, [callback])\r\n\r\n  useEffect(() => {\r\n    if (!delay && delay !== 0) {\r\n      return\r\n    }\r\n    const id = setInterval(() => savedCallback.current(), delay)\r\n    return () => clearInterval(id)\r\n  }, [delay, ...dependencies])\r\n}\r\nexport { useInterval }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useOnClickOutside.ts",
    "content": "'use client'\r\n\r\nimport React, { useEffect } from 'react'\r\n\r\nconst useOnClickOutside = (\r\n  ref: React.MutableRefObject<HTMLElement | null>,\r\n  handler: (e?: MouseEvent | TouchEvent) => void\r\n) => {\r\n  useEffect(() => {\r\n    const listener = (event: MouseEvent | TouchEvent) => {\r\n      if (!ref.current || ref.current.contains(event.target as Node)) {\r\n        return\r\n      }\r\n\r\n      handler(event)\r\n    }\r\n\r\n    document.addEventListener('mousedown', listener)\r\n    document.addEventListener('touchstart', listener)\r\n\r\n    return () => {\r\n      document.removeEventListener('mousedown', listener)\r\n      document.removeEventListener('touchstart', listener)\r\n    }\r\n  }, [ref, handler])\r\n}\r\n\r\nexport { useOnClickOutside }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/usePrevious.ts",
    "content": "import React from 'react'\r\n\r\nfunction usePrevious<T>(value: T) {\r\n  const ref = React.useRef({ value, previous: value })\r\n\r\n  // We compare values before making an update to ensure that\r\n  // a change has been made. This ensures the previous value is\r\n  // persisted correctly between renders.\r\n  return React.useMemo(() => {\r\n    if (ref.current.value !== value) {\r\n      ref.current.previous = ref.current.value\r\n      ref.current.value = value\r\n    }\r\n    return ref.current.previous\r\n  }, [value])\r\n}\r\n\r\nexport { usePrevious }\r\n"
  },
  {
    "path": "packages/actify/src/hooks/useResizeObserver.tsx",
    "content": "import React from 'react'\n\nconst useResizeObserver = (ref: React.RefObject<HTMLElement>) => {\n  const [width, setWidth] = React.useState(0)\n  React.useEffect(() => {\n    const resizeObserver = new ResizeObserver(() => {\n      const width = ref?.current?.getBoundingClientRect().width\n      setWidth(width)\n    })\n    resizeObserver.observe(ref?.current as Element)\n    return () => {\n      resizeObserver.disconnect()\n    }\n  }, [])\n  return width\n}\n\nexport { useResizeObserver }\n"
  },
  {
    "path": "packages/actify/src/index.ts",
    "content": "export * from './components/Icon'\nexport * from './components/Accordion'\nexport * from './components/TopAppBar'\nexport * from './components/BottomAppBar'\nexport * from './components/NavigationDrawer'\nexport * from './components/NavigationBar'\nexport * from './components/NavigationRail'\nexport * from './components/Badges'\nexport * from './components/Cards'\nexport * from './components/Swiper'\nexport * from './components/Carousel'\nexport * from './components/Buttons'\nexport * from './components/SegmentedButton'\nexport * from './components/Checkbox'\nexport * from './components/Chips'\nexport * from './components/Modal'\nexport * from './components/Dialogs'\nexport * from './components/Divider'\nexport * from './components/Elevation'\nexport * from './components/Lists'\nexport * from './components/Menus'\nexport * from './components/PopoverMenu'\nexport * from './components/LinearProgress'\nexport * from './components/CircularProgress'\nexport * from './components/Radio'\nexport * from './components/BottomSheets'\nexport * from './components/SideSheets'\nexport * from './components/Ripple'\nexport * from './components/FocusRing'\nexport * from './components/Select'\nexport * from './components/Autocomplete'\n\nexport * from './components/Popover'\nexport * from './components/ListBox'\nexport * from './components/Text'\nexport * from './components/Snackbar'\nexport * from './components/Sliders'\nexport * from './components/Switch'\nexport * from './components/Tabs'\nexport * from './components/Table'\nexport * from './components/Avatar'\nexport * from './components/Pagination'\nexport * from './components/TextFields'\nexport * from './components/Spacer'\nexport * from './components/Tooltips'\nexport * from './components/Terminal'\nexport * from './components/BeforeAfter'\nexport * from './components/Slot'\nexport * from './components/Text'\nexport * from './components/Field'\nexport * from './components/Label'\nexport * from './components/VisuallyHidden'\n\nexport * from './utils'\nexport * from './hooks'\nexport * from './themes'\nexport * from './animations'\n"
  },
  {
    "path": "packages/actify/src/themes/index.ts",
    "content": "export {}\r\n"
  },
  {
    "path": "packages/actify/src/utils/index.ts",
    "content": "export * from './utils'\n"
  },
  {
    "path": "packages/actify/src/utils/utils.tsx",
    "content": "'use client'\n\nimport {\n  AriaLabelingProps,\n  RefObject,\n  DOMProps as SharedDOMProps\n} from '@react-types/shared'\nimport React, {\n  CSSProperties,\n  Context,\n  JSX,\n  ReactNode,\n  RefCallback,\n  UIEvent,\n  useCallback,\n  useContext,\n  useMemo,\n  useRef,\n  useState\n} from 'react'\nimport {\n  mergeProps,\n  mergeRefs,\n  useLayoutEffect,\n  useObjectRef\n} from '@react-aria/utils'\n\nimport ReactDOM from 'react-dom'\n\nexport const DEFAULT_SLOT = Symbol('default')\n\ninterface SlottedValue<T> {\n  slots?: Record<string | symbol, T>\n}\n\nexport type SlottedContextValue<T> = SlottedValue<T> | T | null | undefined\nexport type ContextValue<T, E> = SlottedContextValue<WithRef<T, E>>\n\ntype ProviderValue<T> = [Context<T>, T]\ntype ProviderValues<A, B, C, D, E, F, G, H, I, J, K> =\n  | [ProviderValue<A>]\n  | [ProviderValue<A>, ProviderValue<B>]\n  | [ProviderValue<A>, ProviderValue<B>, ProviderValue<C>]\n  | [ProviderValue<A>, ProviderValue<B>, ProviderValue<C>, ProviderValue<D>]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>,\n      ProviderValue<G>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>,\n      ProviderValue<G>,\n      ProviderValue<H>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>,\n      ProviderValue<G>,\n      ProviderValue<H>,\n      ProviderValue<I>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>,\n      ProviderValue<G>,\n      ProviderValue<H>,\n      ProviderValue<I>,\n      ProviderValue<J>\n    ]\n  | [\n      ProviderValue<A>,\n      ProviderValue<B>,\n      ProviderValue<C>,\n      ProviderValue<D>,\n      ProviderValue<E>,\n      ProviderValue<F>,\n      ProviderValue<G>,\n      ProviderValue<H>,\n      ProviderValue<I>,\n      ProviderValue<J>,\n      ProviderValue<K>\n    ]\n\ninterface ProviderProps<A, B, C, D, E, F, G, H, I, J, K> {\n  values: ProviderValues<A, B, C, D, E, F, G, H, I, J, K>\n  children: ReactNode\n}\n\nexport function Provider<A, B, C, D, E, F, G, H, I, J, K>({\n  values,\n  children\n}: ProviderProps<A, B, C, D, E, F, G, H, I, J, K>): JSX.Element {\n  for (let [Context, value] of values) {\n    // @ts-expect-error\n    children = <Context value={value}>{children}</Context>\n  }\n\n  return children as JSX.Element\n}\n\nexport interface StyleProps {\n  /** The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. */\n  className?: string\n  /** The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. */\n  style?: CSSProperties\n}\n\nexport interface DOMProps extends StyleProps, SharedDOMProps {\n  /** The children of the component. */\n  children?: ReactNode\n}\n\nexport interface ScrollableProps<T extends Element> {\n  /** Handler that is called when a user scrolls. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/Element/scroll_event). */\n  onScroll?: (e: UIEvent<T>) => void\n}\n\nexport interface StyleRenderProps<T> {\n  /** The CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. A function may be provided to compute the class based on component state. */\n  className?:\n    | string\n    | ((values: T & { defaultClassName: string | undefined }) => string)\n  /** The inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. A function may be provided to compute the style based on component state. */\n  style?:\n    | CSSProperties\n    | ((\n        values: T & { defaultStyle: CSSProperties }\n      ) => CSSProperties | undefined)\n}\n\nexport interface RenderProps<T> extends StyleRenderProps<T> {\n  /** The children of the component. A function may be provided to alter the children based on component state. */\n  children?:\n    | ReactNode\n    | ((values: T & { defaultChildren: ReactNode | undefined }) => ReactNode)\n}\n\ninterface RenderPropsHookOptions<T>\n  extends RenderProps<T>,\n    SharedDOMProps,\n    AriaLabelingProps {\n  values: T\n  defaultChildren?: ReactNode\n  defaultClassName?: string\n  defaultStyle?: CSSProperties\n}\n\nexport function useRenderProps<T>(props: RenderPropsHookOptions<T>) {\n  let {\n    className,\n    style,\n    children,\n    defaultClassName = undefined,\n    defaultChildren = undefined,\n    defaultStyle,\n    values\n  } = props\n\n  return useMemo(() => {\n    let computedClassName: string | undefined\n    let computedStyle: React.CSSProperties | undefined\n    let computedChildren: React.ReactNode | undefined\n\n    if (typeof className === 'function') {\n      computedClassName = className({ ...values, defaultClassName })\n    } else {\n      computedClassName = className\n    }\n\n    if (typeof style === 'function') {\n      computedStyle = style({ ...values, defaultStyle: defaultStyle || {} })\n    } else {\n      computedStyle = style\n    }\n\n    if (typeof children === 'function') {\n      computedChildren = children({ ...values, defaultChildren })\n    } else if (children == null) {\n      computedChildren = defaultChildren\n    } else {\n      computedChildren = children\n    }\n\n    return {\n      className: computedClassName ?? defaultClassName,\n      style:\n        computedStyle || defaultStyle\n          ? { ...defaultStyle, ...computedStyle }\n          : undefined,\n      children: computedChildren ?? defaultChildren,\n      'data-rac': ''\n    }\n  }, [\n    className,\n    style,\n    children,\n    defaultClassName,\n    defaultChildren,\n    defaultStyle,\n    values\n  ])\n}\n\n/**\n * A helper function that accepts a user-provided render prop value (either a static value or a function),\n * and combines it with another value to create a final result.\n */\nexport function composeRenderProps<T, U, V extends T>(\n  // https://stackoverflow.com/questions/60898079/typescript-type-t-or-function-t-usage\n  value: T extends any ? T | ((renderProps: U) => V) : never,\n  wrap: (prevValue: T, renderProps: U) => V\n): (renderProps: U) => V {\n  return (renderProps) =>\n    wrap(typeof value === 'function' ? value(renderProps) : value, renderProps)\n}\n\nexport type WithRef<T, E> = T & { ref?: RefObject<E | null> }\n\nexport interface SlotProps {\n  /**\n   * A slot name for the component. Slots allow the component to receive props from a parent component.\n   * An explicit `null` value indicates that the local props completely override all props received from a parent.\n   */\n  slot?: string | null\n}\n\nexport function useSlottedContext<T>(\n  context: Context<SlottedContextValue<T>>,\n  slot?: string | null\n): T | null | undefined {\n  let ctx = useContext(context)\n  if (slot === null) {\n    // An explicit `null` slot means don't use context.\n    return null\n  }\n  if (ctx && typeof ctx === 'object' && 'slots' in ctx && ctx.slots) {\n    // @ts-ignore\n    let availableSlots = new Intl.ListFormat().format(\n      Object.keys(ctx.slots).map((p) => `\"${p}\"`)\n    )\n\n    if (!slot && !ctx.slots[DEFAULT_SLOT]) {\n      throw new Error(\n        `A slot prop is required. Valid slot names are ${availableSlots}.`\n      )\n    }\n    let slotKey = slot || DEFAULT_SLOT\n    if (!ctx.slots[slotKey]) {\n      // @ts-ignore\n      throw new Error(\n        `Invalid slot \"${slot}\". Valid slot names are ${availableSlots}.`\n      )\n    }\n    return ctx.slots[slotKey]\n  }\n  // @ts-ignore\n  return ctx\n}\n\nexport function useContextProps<T, U extends SlotProps, E extends Element>(\n  props: T & SlotProps,\n  ref: RefObject<E | null>,\n  context: Context<ContextValue<U, E>>\n): [T, RefObject<E | null>] {\n  let ctx = useSlottedContext(context, props.slot) || {}\n  // @ts-ignore - TS says \"Type 'unique symbol' cannot be used as an index type.\" but not sure why.\n  let { ref: contextRef, ...contextProps } = ctx as any\n  let mergedRef = useObjectRef(\n    useMemo(() => mergeRefs(ref, contextRef), [ref, contextRef])\n  )\n  let mergedProps = mergeProps(contextProps, props) as unknown as T\n\n  // mergeProps does not merge `style`. Adding this there might be a breaking change.\n  if (\n    'style' in contextProps &&\n    contextProps.style &&\n    'style' in props &&\n    props.style\n  ) {\n    if (\n      typeof contextProps.style === 'function' ||\n      typeof props.style === 'function'\n    ) {\n      // @ts-ignore\n      mergedProps.style = (renderProps) => {\n        let contextStyle =\n          typeof contextProps.style === 'function'\n            ? contextProps.style(renderProps)\n            : contextProps.style\n        let defaultStyle = { ...renderProps.defaultStyle, ...contextStyle }\n        let style =\n          typeof props.style === 'function'\n            ? props.style({ ...renderProps, defaultStyle })\n            : props.style\n        return { ...defaultStyle, ...style }\n      }\n    } else {\n      // @ts-ignore\n      mergedProps.style = { ...contextProps.style, ...props.style }\n    }\n  }\n\n  return [mergedProps, mergedRef]\n}\n\nexport function useSlot(): [RefCallback<Element>, boolean] {\n  // Assume we do have the slot in the initial render.\n  let [hasSlot, setHasSlot] = useState(true)\n  let hasRun = useRef(false)\n\n  // A callback ref which will run when the slotted element mounts.\n  // This should happen before the useLayoutEffect below.\n  let ref = useCallback((el: Element) => {\n    hasRun.current = true\n    setHasSlot(!!el)\n  }, [])\n\n  // If the callback hasn't been called, then reset to false.\n  useLayoutEffect(() => {\n    if (!hasRun.current) {\n      setHasSlot(false)\n    }\n  }, [])\n\n  return [ref, hasSlot]\n}\n\nexport function useEnterAnimation(\n  ref: RefObject<HTMLElement | null>,\n  isReady: boolean = true\n) {\n  let [isEntering, setEntering] = useState(true)\n  useAnimation(\n    ref,\n    isEntering && isReady,\n    useCallback(() => setEntering(false), [])\n  )\n  return isEntering && isReady\n}\n\nexport function useExitAnimation(\n  ref: RefObject<HTMLElement | null>,\n  isOpen: boolean\n) {\n  // State to trigger a re-render after animation is complete, which causes the element to be removed from the DOM.\n  // Ref to track the state we're in, so we don't immediately reset isExiting to true after the animation.\n  let [isExiting, setExiting] = useState(false)\n  let [exitState, setExitState] = useState('idle')\n\n  // If isOpen becomes false, set isExiting to true.\n  if (!isOpen && ref.current && exitState === 'idle') {\n    isExiting = true\n    setExiting(true)\n    setExitState('exiting')\n  }\n\n  // If we exited, and the element has been removed, reset exit state to idle.\n  if (!ref.current && exitState === 'exited') {\n    setExitState('idle')\n  }\n\n  useAnimation(\n    ref,\n    isExiting,\n    useCallback(() => {\n      setExitState('exited')\n      setExiting(false)\n    }, [])\n  )\n\n  return isExiting\n}\n\nfunction useAnimation(\n  ref: RefObject<HTMLElement | null>,\n  isActive: boolean,\n  onEnd: () => void\n) {\n  let prevAnimation = useRef<string | null>(null)\n  if (isActive && ref.current) {\n    // This is ok because we only read it in the layout effect below, immediately after the commit phase.\n    // We could move this to another effect that runs every render, but this would be unnecessarily slow.\n    // We only need the computed style right before the animation becomes active.\n    // eslint-disable-next-line rulesdir/pure-render\n    prevAnimation.current = window.getComputedStyle(ref.current).animation\n  }\n\n  useLayoutEffect(() => {\n    if (isActive && ref.current) {\n      // Make sure there's actually an animation, and it wasn't there before we triggered the update.\n      let computedStyle = window.getComputedStyle(ref.current)\n      if (\n        computedStyle.animationName &&\n        computedStyle.animationName !== 'none' &&\n        computedStyle.animation !== prevAnimation.current\n      ) {\n        let onAnimationEnd = (e: AnimationEvent) => {\n          if (e.target === ref.current) {\n            element.removeEventListener('animationend', onAnimationEnd)\n            ReactDOM.flushSync(() => {\n              onEnd()\n            })\n          }\n        }\n\n        let element = ref.current\n        element.addEventListener('animationend', onAnimationEnd)\n        return () => {\n          element.removeEventListener('animationend', onAnimationEnd)\n        }\n      } else {\n        onEnd()\n      }\n    }\n  }, [ref, isActive, onEnd])\n}\n\n/**\n * Filters out `data-*` attributes to keep them from being passed down and duplicated.\n * @param props\n */\nexport function removeDataAttributes<T>(props: T): T {\n  const prefix = /^(data-.*)$/\n  let filteredProps = {} as T\n\n  for (const prop in props) {\n    if (!prefix.test(prop)) {\n      filteredProps[prop] = props[prop]\n    }\n  }\n\n  return filteredProps\n}\n\n// Override base type to change the default.\nexport interface RACValidation {\n  /**\n   * Whether to use native HTML form validation to prevent form submission\n   * when the value is missing or invalid, or mark the field as required\n   * or invalid via ARIA.\n   * @default 'native'\n   */\n  validationBehavior?: 'native' | 'aria'\n}\n"
  },
  {
    "path": "packages/actify/tsconfig.json",
    "content": "{\r\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\r\n  \"display\": \"Default\",\r\n  \"compilerOptions\": {\r\n    \"jsx\": \"react-jsx\",\r\n    \"lib\": [\"dom\", \"ES2015\"],\r\n    \"module\": \"ESNext\",\r\n    \"target\": \"es6\",\r\n    \"rootDir\": \"src\",\r\n    \"outDir\": \"dist\",\r\n    \"composite\": false,\r\n    \"declaration\": true,\r\n    \"declarationMap\": true,\r\n    \"esModuleInterop\": true,\r\n    \"resolveJsonModule\": true,\r\n    \"forceConsistentCasingInFileNames\": true,\r\n    \"inlineSources\": false,\r\n    \"isolatedModules\": true,\r\n    \"moduleResolution\": \"node\",\r\n    \"noUnusedLocals\": false,\r\n    \"noUnusedParameters\": false,\r\n    \"preserveWatchOutput\": true,\r\n    \"skipLibCheck\": true,\r\n    \"strict\": true\r\n  },\r\n  \"exclude\": [\"node_modules\"]\r\n}\r\n"
  },
  {
    "path": "packages/actify/tsconfig.rollup.json",
    "content": "{\r\n  \"compilerOptions\": {\r\n    \"jsx\": \"react-jsx\",\r\n    \"allowSyntheticDefaultImports\": true,\r\n    \"module\": \"ESNext\",\r\n    \"declaration\": true,\r\n    \"outDir\": \"./dist\"\r\n  },\r\n  \"exclude\": [\"node_modules\", \"dist\"]\r\n}\r\n"
  },
  {
    "path": "packages/create-actify/index.ts",
    "content": "import { blue, yellow } from 'kolorist'\r\n\r\nimport minimist from 'minimist'\r\nimport path from 'node:path'\r\nimport prompts from 'prompts'\r\n\r\nconst argv = minimist<{\r\n  t?: string\r\n  template?: string\r\n}>(process.argv.slice(2), { string: ['_'] })\r\nconst cwd = process.cwd()\r\n\r\nasync function init() {\r\n  const response = await prompts([\r\n    {\r\n      type: 'text',\r\n      name: 'projectName',\r\n      message: 'Project name:',\r\n      initial: 'actify-project'\r\n    },\r\n    {\r\n      type: 'select',\r\n      name: 'framework',\r\n      message: 'Select framework',\r\n      choices: [\r\n        {\r\n          title: 'Vite',\r\n          value: 'vite'\r\n        },\r\n        {\r\n          title: 'Next.js',\r\n          value: 'next'\r\n        }\r\n      ],\r\n      initial: 0\r\n    },\r\n    {\r\n      type: 'select',\r\n      name: 'language',\r\n      message: 'Select language',\r\n      choices: [\r\n        {\r\n          title: blue('TypeScript'),\r\n          value: 'typescript'\r\n        },\r\n        { title: yellow('JavaScript'), value: 'javascript' }\r\n      ],\r\n      initial: 0\r\n    }\r\n  ])\r\n\r\n  console.log(response)\r\n}\r\n\r\nfunction formatTargetDir(targetDir: string | undefined) {\r\n  return targetDir?.trim().replace(/\\/+$/g, '')\r\n}\r\n\r\ninit()\r\n"
  },
  {
    "path": "packages/create-actify/package.json",
    "content": "{\n  \"name\": \"create-actify\",\n  \"version\": \"0.0.1\",\n  \"author\": \"Lerte Smith\",\n  \"publishConfig\": {\n    \"registry\": \"https://registry.npmjs.com/\"\n  },\n  \"type\": \"module\",\n  \"scripts\": {},\n  \"dependencies\": {\n    \"prompts\": \"^2.4.2\"\n  },\n  \"devDependencies\": {\n    \"@types/prompts\": \"^2.4.9\",\n    \"kolorist\": \"^1.8.0\",\n    \"minimist\": \"^1.2.8\"\n  }\n}\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\r\n  - 'apps/*'\r\n  - 'packages/*'\r\n\r\ncatalog:\r\n  'react': '^19.0.0'\r\n  'react-dom': '^19.0.0'\r\n  '@types/react': '^19.0.0'\r\n  '@types/react-dom': '^19.0.0'\r\n"
  },
  {
    "path": "todo.md",
    "content": "- [x] radio component\r\n- [x] divider component\r\n- [ ] sub-memu component\r\n- [x] segmented button with label styles\r\n- [ ] TailwindCSS -> css module\r\n- [ ] sub component -> render props\r\n- [x] open in stackblitz use ts template\r\n- [x] open in codesandbox use ts template\r\n- [ ] create-actify cli generate templates (vite[js,ts], next[js,ts])\r\n- [ ] [Dot notation client component breaks consuming RSC.](https://github.com/vercel/next.js/issues/51593)\r\n      Accordion.Item -> AccordionItem\r\n"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"globalDependencies\": [\n    \"**/.env.*local\"\n  ],\n  \"tasks\": {\n    \"build\": {\n      \"outputs\": [\n        \"dist/**\",\n        \".next/**\",\n        \"!.next/cache/**\"\n      ],\n      \"dependsOn\": [\n        \"^build\"\n      ]\n    },\n    \"test\": {\n      \"outputs\": [\n        \"coverage/**\"\n      ],\n      \"dependsOn\": []\n    },\n    \"lint\": {},\n    \"dev\": {\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"clean\": {\n      \"cache\": false\n    }\n  }\n}\n"
  },
  {
    "path": "vercel.json",
    "content": "{\n  \"rewrites\": [{ \"source\": \"/(.*)\", \"destination\": \"/\" }]\n}\n"
  }
]