diff --git a/.changeset/add-react-and-tweak-connect.md b/.changeset/add-react-and-tweak-connect.md new file mode 100644 index 0000000..8525ac0 --- /dev/null +++ b/.changeset/add-react-and-tweak-connect.md @@ -0,0 +1,15 @@ +--- +"@nylas/react": major +"@nylas/connect": patch +--- + +Add `@nylas/react` to the monorepo with initial components, hooks, and build setup. + +- Introduces React utilities for integrating with the Nylas platform +- Includes basic docs and distribution configuration + +Cosmetic updates to `@nylas/connect`. + +- Style and documentation polish; no functional changes + + diff --git a/nx.json b/nx.json index 2959c35..44aef0a 100644 --- a/nx.json +++ b/nx.json @@ -25,7 +25,8 @@ }, "typecheck": { "cache": true, - "inputs": ["default", "^default"] + "inputs": ["default", "^default"], + "dependsOn": ["^build"] }, "clean": { "cache": false diff --git a/packages/nylas-connect/.prettierrc b/packages/nylas-connect/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/packages/nylas-connect/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/nylas-connect/package.json b/packages/nylas-connect/package.json index 6898b20..6c564c0 100644 --- a/packages/nylas-connect/package.json +++ b/packages/nylas-connect/package.json @@ -19,7 +19,6 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "build:watch": "vite build --watch", "preview": "vite preview", "typecheck": "tsc --noEmit", "format": "pnpm --workspace-root prettier --write packages/nylas-connect/", @@ -41,6 +40,10 @@ "popup", "inline" ], + "repository": { + "type": "git", + "url": "git+https://github.com/nylas/nylas.git" + }, "author": "Nylas Inc.", "license": "MIT", "publishConfig": { @@ -50,7 +53,7 @@ "devDependencies": { "@types/node": "^20.11.13", "@vitest/coverage-v8": "^2.1.9", - "happy-dom": "^15.10.2", + "jsdom": "^26.0.0", "typescript": "^5.3.3", "vite": "^5.4.21", "vite-plugin-dts": "^3.7.0", diff --git a/packages/nylas-connect/tsconfig.json b/packages/nylas-connect/tsconfig.json index 413473c..dad317e 100644 --- a/packages/nylas-connect/tsconfig.json +++ b/packages/nylas-connect/tsconfig.json @@ -9,6 +9,7 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, + "types": ["vitest/globals"], // Relaxed strictness "noImplicitAny": false, diff --git a/packages/nylas-connect/vite.config.ts b/packages/nylas-connect/vite.config.ts index dbc0204..9819ff7 100644 --- a/packages/nylas-connect/vite.config.ts +++ b/packages/nylas-connect/vite.config.ts @@ -10,15 +10,6 @@ export default defineConfig({ formats: ["es"], fileName: "index", }, - rollupOptions: { - external: ["react", "react-dom"], - output: { - globals: { - react: "React", - "react-dom": "ReactDOM", - }, - }, - }, sourcemap: true, minify: "esbuild", target: "es2022", diff --git a/packages/nylas-connect/vitest.config.ts b/packages/nylas-connect/vitest.config.ts index 9e4a936..2db044a 100644 --- a/packages/nylas-connect/vitest.config.ts +++ b/packages/nylas-connect/vitest.config.ts @@ -2,7 +2,8 @@ import { defineConfig } from "vitest/config"; export default defineConfig({ test: { - environment: "happy-dom", + globals: true, + environment: "jsdom", include: ["src/**/*.test.ts"], setupFiles: ["./vitest.setup.ts"], coverage: { diff --git a/packages/nylas-connect/vitest.setup.ts b/packages/nylas-connect/vitest.setup.ts index ee2a528..e69de29 100644 --- a/packages/nylas-connect/vitest.setup.ts +++ b/packages/nylas-connect/vitest.setup.ts @@ -1,16 +0,0 @@ -// Minimal polyfills for tests -import { webcrypto as nodeWebcrypto } from "node:crypto"; - -if (!globalThis.crypto) { - Object.defineProperty(globalThis, "crypto", { value: nodeWebcrypto }); -} - -// Polyfill btoa/atob if missing (Node) -if (typeof globalThis.btoa !== "function") { - globalThis.btoa = (data: string) => - Buffer.from(data, "binary").toString("base64"); -} -if (typeof globalThis.atob !== "function") { - globalThis.atob = (data: string) => - Buffer.from(data, "base64").toString("binary"); -} diff --git a/packages/react/.gitignore b/packages/react/.gitignore new file mode 100644 index 0000000..3224a90 --- /dev/null +++ b/packages/react/.gitignore @@ -0,0 +1,144 @@ +# Created by https://www.toptal.com/developers/gitignore/api/node +# Edit at https://www.toptal.com/developers/gitignore?templates=node + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional stylelint cache +.stylelintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variable files +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# vuepress v2.x temp and cache directory +.temp + +# Docusaurus cache and generated files +.docusaurus + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +### Node Patch ### +# Serverless Webpack directories +.webpack/ + +# Optional stylelint cache + +# SvelteKit build / generate output +.svelte-kit + +# End of https://www.toptal.com/developers/gitignore/api/node \ No newline at end of file diff --git a/packages/react/.prettierrc b/packages/react/.prettierrc new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/packages/react/.prettierrc @@ -0,0 +1 @@ +{} diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md new file mode 100644 index 0000000..6d7ac20 --- /dev/null +++ b/packages/react/CHANGELOG.md @@ -0,0 +1,1051 @@ +# @nylas/react + +## 2.2.4 + +### Patch Changes + +- [#733](https://github.com/nylas/nylas/pull/733) [`9632ac3`](https://github.com/nylas/nylas/commit/9632ac3d5871ad0e1dc50fb09b3c64845c1ec06b) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Fixed UUID extraction from booking refs did not work for URL encoded values after the last fix. + +- Updated dependencies [[`9632ac3`](https://github.com/nylas/nylas/commit/9632ac3d5871ad0e1dc50fb09b3c64845c1ec06b)]: + - @nylas/web-elements@2.2.4 + +## 2.2.3 + +### Patch Changes + +- [#726](https://github.com/nylas/nylas/pull/726) [`a19b12c`](https://github.com/nylas/nylas/commit/a19b12cc4fca0aed9541cddd0eb9cf8e9ddda57c) Thanks [@AaronDDM](https://github.com/AaronDDM)! - fix(web-elements): Booking ref and cancel ref UUID utility not properly calculating UUIDs + +- [#729](https://github.com/nylas/nylas/pull/729) [`6cca66a`](https://github.com/nylas/nylas/commit/6cca66ad663da728fb42fd5a7995b5fdae3f6b20) Thanks [@AaronDDM](https://github.com/AaronDDM)! - fix: SS-1254 hiding booking and cancellation url does not work + +- Updated dependencies [[`53242a1`](https://github.com/nylas/nylas/commit/53242a14833fbab606f532b8da206fc22c609642), [`a19b12c`](https://github.com/nylas/nylas/commit/a19b12cc4fca0aed9541cddd0eb9cf8e9ddda57c), [`6cca66a`](https://github.com/nylas/nylas/commit/6cca66ad663da728fb42fd5a7995b5fdae3f6b20), [`53242a1`](https://github.com/nylas/nylas/commit/53242a14833fbab606f532b8da206fc22c609642)]: + - @nylas/web-elements@2.2.2 + +## 2.2.0 + +### Minor Changes + +- [#711](https://github.com/nylas/nylas/pull/711) [`59f43c6`](https://github.com/nylas/nylas/commit/59f43c6bb99b0a420d4774fa85a35d3389cb9f19) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Upgraded stencil to 4.36.1 + +- [#711](https://github.com/nylas/nylas/pull/711) [`59f43c6`](https://github.com/nylas/nylas/commit/59f43c6bb99b0a420d4774fa85a35d3389cb9f19) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Updated @nylas/react to be compatible with Turbopack + +### Patch Changes + +- Updated dependencies [[`59f43c6`](https://github.com/nylas/nylas/commit/59f43c6bb99b0a420d4774fa85a35d3389cb9f19)]: + - @nylas/web-elements@2.2.0 + +## 2.1.0 + +### Minor Changes + +- [#705](https://github.com/nylas/nylas/pull/705) [`7ba574f`](https://github.com/nylas/nylas/commit/7ba574f2912f119e32ffdfdaed18bb83f7258085) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Fixed nylas-scheduling themes if a session id/config id was not set. + +### Patch Changes + +- [#701](https://github.com/nylas/nylas/pull/701) [`206e1ca`](https://github.com/nylas/nylas/commit/206e1cac624e89efddbbb0825c6a2923b9078a80) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Renamed specific_date_open_hours to specific_time_availability for consistency + +- Updated dependencies [[`206e1ca`](https://github.com/nylas/nylas/commit/206e1cac624e89efddbbb0825c6a2923b9078a80), [`7ba574f`](https://github.com/nylas/nylas/commit/7ba574f2912f119e32ffdfdaed18bb83f7258085)]: + - @nylas/web-elements@2.1.0 + - @nylas/core@1.2.0 + +## 2.0.6 + +### Patch Changes + +- [#700](https://github.com/nylas/nylas/pull/700) [`48df648`](https://github.com/nylas/nylas/commit/48df648c8c4d7434d48f3575f4d85cb4d54ee8a2) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the translations for errors in the custom fields shown on th ebooking form of the scheduling page + +- Updated dependencies [[`48df648`](https://github.com/nylas/nylas/commit/48df648c8c4d7434d48f3575f4d85cb4d54ee8a2)]: + - @nylas/web-elements@2.0.6 + +## 2.0.5 + +### Patch Changes + +- [#693](https://github.com/nylas/nylas/pull/693) [`870f285`](https://github.com/nylas/nylas/commit/870f285f2331a09ac8e135917ac8f053d98447cd) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the type for bookedEventInfo event to include all the fields emitted + +- [#695](https://github.com/nylas/nylas/pull/695) [`d421948`](https://github.com/nylas/nylas/commit/d421948404480e87e1bf7cc508d6a00f3adbc5ae) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Group config only supports 'booking' type and does not support 'organizer-confirmation' type, so hide the component in the UI if it is a group config + +- [#692](https://github.com/nylas/nylas/pull/692) [`f62ebaa`](https://github.com/nylas/nylas/commit/f62ebaa3f617c4de0e734c80331167ca5b1ce1fa) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed: Time overlap validation failed when using Spanish (“es”) due to unrecognized "a.m." / "p.m." formats. + +- [#699](https://github.com/nylas/nylas/pull/699) [`842e3fd`](https://github.com/nylas/nylas/commit/842e3fd6329b334be46c6c6682b604733eb5acfe) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Improved the invalid grant error to show a user friendly error message to contact the organizer + +- Updated dependencies [[`870f285`](https://github.com/nylas/nylas/commit/870f285f2331a09ac8e135917ac8f053d98447cd), [`d421948`](https://github.com/nylas/nylas/commit/d421948404480e87e1bf7cc508d6a00f3adbc5ae), [`f62ebaa`](https://github.com/nylas/nylas/commit/f62ebaa3f617c4de0e734c80331167ca5b1ce1fa), [`842e3fd`](https://github.com/nylas/nylas/commit/842e3fd6329b334be46c6c6682b604733eb5acfe)]: + - @nylas/web-elements@2.0.5 + +## 2.0.4 + +### Patch Changes + +- [#678](https://github.com/nylas/nylas/pull/678) [`06e62c4`](https://github.com/nylas/nylas/commit/06e62c4a557a4fc998bb473dbf0e2634e7fd03e3) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Introduced a "Specific Date Availability" picker to set custom availability for participants on specific dates + +- Updated dependencies [[`06e62c4`](https://github.com/nylas/nylas/commit/06e62c4a557a4fc998bb473dbf0e2634e7fd03e3)]: + - @nylas/web-elements@2.0.4 + - @nylas/core@1.1.8 + +## 2.0.3 + +### Patch Changes + +- Removed unused dependency "quill" due to a transitive XSS vulnerability. This eliminates the risk of arbitrary JavaScript execution via crafted onloadstart attributes in tags. + +- Updated dependencies []: + - @nylas/web-elements@2.0.3 + +## 2.0.2 + +### Patch Changes + +- [#669](https://github.com/nylas/nylas/pull/669) [`c4e6ebb`](https://github.com/nylas/nylas/commit/c4e6ebb142531702f3308cb024e2dabea0f4770a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the scheduling components to use a prop defaultLanguage to init a component in the specified langugae in a different state eg. Cancelling a booking state. + +- Updated dependencies [[`c4e6ebb`](https://github.com/nylas/nylas/commit/c4e6ebb142531702f3308cb024e2dabea0f4770a)]: + - @nylas/web-elements@2.0.2 + +## 2.0.1 + +### Patch Changes + +- [#643](https://github.com/nylas/nylas/pull/643) [`d4e5d01`](https://github.com/nylas/nylas/commit/d4e5d0174c08b7ab68a27f30486f40d34da4d069) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a tag to reveal the version of the components on nylas-scheduling and nylas-scheduler-editor components + +- [#650](https://github.com/nylas/nylas/pull/650) [`cc54c58`](https://github.com/nylas/nylas/commit/cc54c589f9355aa34af2a849a526a781b01c36f9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed a bug in the nylas-availability-picker component where the openHours prop was not correctly applied when used standalone. + +- [#640](https://github.com/nylas/nylas/pull/640) [`47cd723`](https://github.com/nylas/nylas/commit/47cd723fdad807593d487d3a8bf76aca16100f24) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the auto re-setting of booking type to 'booking' on config update + +- [#655](https://github.com/nylas/nylas/pull/655) [`e39f5fe`](https://github.com/nylas/nylas/commit/e39f5fed6039175c58995339f5a171b32de3ac34) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Enhanced the calendar fetching logic to support pagination and return complete results. The method now retrieves all available calendar data across multiple pages, consistently limits each request to 50 items, and returns the full set of calendars instead of just the first page. This ensures more reliable data coverage and alignment with how configuration data is fetched. + +- [#653](https://github.com/nylas/nylas/pull/653) [`5a86c6d`](https://github.com/nylas/nylas/commit/5a86c6d314bae02ef59c521ea132f707b9eab1d9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Moved the error messages in the scheduler component from the bottom (footer) to a toast / notification. This is similar to the notification in the scheduling component. + +- [#641](https://github.com/nylas/nylas/pull/641) [`88c5873`](https://github.com/nylas/nylas/commit/88c58734a1a1cab5fac6a9ec77c4fa5115547fad) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where the CTA buttons in the organizer confirmation card component were hidden based on hide_rescheduling_options and hide_cancellation_options, these options should only be applciable to the booking confirmation page. + +- [#638](https://github.com/nylas/nylas/pull/638) [`648afa4`](https://github.com/nylas/nylas/commit/648afa453b639a4d9f27c9ce67f9b8f53f33bb27) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a dropdown to select the default value for 'dropdown', 'checkbox' and 'radio-button' form field types. Added a multi-select dropdown to select the default value for 'multi_select' field type. + +- Updated dependencies [[`d4e5d01`](https://github.com/nylas/nylas/commit/d4e5d0174c08b7ab68a27f30486f40d34da4d069), [`cc54c58`](https://github.com/nylas/nylas/commit/cc54c589f9355aa34af2a849a526a781b01c36f9), [`47cd723`](https://github.com/nylas/nylas/commit/47cd723fdad807593d487d3a8bf76aca16100f24), [`e39f5fe`](https://github.com/nylas/nylas/commit/e39f5fed6039175c58995339f5a171b32de3ac34), [`5a86c6d`](https://github.com/nylas/nylas/commit/5a86c6d314bae02ef59c521ea132f707b9eab1d9), [`88c5873`](https://github.com/nylas/nylas/commit/88c58734a1a1cab5fac6a9ec77c4fa5115547fad), [`648afa4`](https://github.com/nylas/nylas/commit/648afa453b639a4d9f27c9ce67f9b8f53f33bb27)]: + - @nylas/web-elements@2.0.1 + +## 2.0.0 + +### Major Changes + +- [#622](https://github.com/nylas/nylas/pull/622) [`5a8e6ba`](https://github.com/nylas/nylas/commit/5a8e6ba460ea30774b36bd37acdab30fd7d9b228) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Group Events Support Added to Scheduler Components. + + ## 🚨 BREAKING CHANGES 🚨 + + ### Prop Changes/Additions + + - The `enableEventTypes` property controls which event types are enabled in the Scheduler editor. + - Default value: + + ``` + + ``` + + ### UI Changes + + - The scheduler editor body height has increased from 610px to 900px to accommodate the calendar view for Group Events + - Clicking "Create new" now opens a type selection screen where users can choose the scheduling configuration they want to create + + ### Configuration and Set-up Changes + + - The previous approach of hardcoding a single scheduling method using the availability_method (e.g., 'max-availability', 'collective', 'max-fairness') is no longer supported. + + Before: + + ``` + + ``` + + ### New Event Types + + The scheduler components now emit the following new events for group event operations: + + - `groupEventCreateTriggered` + - `groupEventUpdateTriggered` + - `groupEventDeleteTriggered` + - `groupEventImportTriggered` + - `saveGroupEventChangesError` + +### Patch Changes + +- Updated dependencies [[`5a8e6ba`](https://github.com/nylas/nylas/commit/5a8e6ba460ea30774b36bd37acdab30fd7d9b228)]: + - @nylas/web-elements@2.0.0 + +## 1.4.5 + +### Patch Changes + +- [#631](https://github.com/nylas/nylas/pull/631) [`ef637ec`](https://github.com/nylas/nylas/commit/ef637ecd3fee67ba96ff8a728f72e18ce68bdafe) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the translation for additional field type + +- [#625](https://github.com/nylas/nylas/pull/625) [`d3b7cc1`](https://github.com/nylas/nylas/commit/d3b7cc1d98ab5ff12992339d59b898e6299d26c0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added translation for Search placeholder + +- [#607](https://github.com/nylas/nylas/pull/607) [`a06c459`](https://github.com/nylas/nylas/commit/a06c4595bdb4db676b213e35a483f4dec89797eb) Thanks [@pooja169usp](https://github.com/pooja169usp)! - When a recurring group event is created with an end date in the past, the booking page does not let you book creating a bad UX. Hence we are adding a validation to group event creation where we will not allow creating a recurring group event with an end date in the past. + +- [#621](https://github.com/nylas/nylas/pull/621) [`2949791`](https://github.com/nylas/nylas/commit/2949791fe0de1ef7a6745ae655c6bbd685854006) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Add min booking notice component to group type config + +- [#623](https://github.com/nylas/nylas/pull/623) [`fc06f75`](https://github.com/nylas/nylas/commit/fc06f7536713e114762c12d80043b90da663ea3a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Add event_id, calendar_id and master_id if applicable to the reschedule request made by the UI. Without this, the group events cannot be rescheduled from the UI + +- [#635](https://github.com/nylas/nylas/pull/635) [`77211b6`](https://github.com/nylas/nylas/commit/77211b65cd6e46938ad471a6a00c5931e4c0ccb6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Update the translation for booking cancellation successful page + +- [#627](https://github.com/nylas/nylas/pull/627) [`bf45abe`](https://github.com/nylas/nylas/commit/bf45abe4cdf05e1805f8f75497b6539c509109ee) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Disabled reccuring option for icloud provider with group events + +- [#610](https://github.com/nylas/nylas/pull/610) [`8b53d51`](https://github.com/nylas/nylas/commit/8b53d515d02d59adb61d72121926266cd9ec3f63) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Select the primary calendar as the default calendar for booking calendar and connected calendar when adding a participant + +- [#612](https://github.com/nylas/nylas/pull/612) [`ba4615d`](https://github.com/nylas/nylas/commit/ba4615d8100591668ede9bdc5c53104d915fbe13) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Add localization to group events in scheduler editor component + +- Updated dependencies [[`ef637ec`](https://github.com/nylas/nylas/commit/ef637ecd3fee67ba96ff8a728f72e18ce68bdafe), [`d3b7cc1`](https://github.com/nylas/nylas/commit/d3b7cc1d98ab5ff12992339d59b898e6299d26c0), [`a06c459`](https://github.com/nylas/nylas/commit/a06c4595bdb4db676b213e35a483f4dec89797eb), [`2949791`](https://github.com/nylas/nylas/commit/2949791fe0de1ef7a6745ae655c6bbd685854006), [`fc06f75`](https://github.com/nylas/nylas/commit/fc06f7536713e114762c12d80043b90da663ea3a), [`77211b6`](https://github.com/nylas/nylas/commit/77211b65cd6e46938ad471a6a00c5931e4c0ccb6), [`bf45abe`](https://github.com/nylas/nylas/commit/bf45abe4cdf05e1805f8f75497b6539c509109ee), [`8b53d51`](https://github.com/nylas/nylas/commit/8b53d515d02d59adb61d72121926266cd9ec3f63), [`ba4615d`](https://github.com/nylas/nylas/commit/ba4615d8100591668ede9bdc5c53104d915fbe13)]: + - @nylas/web-elements@1.4.5 + +## 1.4.4 + +### Patch Changes + +- [#594](https://github.com/nylas/nylas/pull/594) [`3af3846`](https://github.com/nylas/nylas/commit/3af38467a73a7cdb0dfa07c4efa8f3dde36e988d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the logic to calculate disabled date to be more efficient, which was causing a delay in rendering + +- [#597](https://github.com/nylas/nylas/pull/597) [`280dad9`](https://github.com/nylas/nylas/commit/280dad981a3c7cc9c7a30393ff900b6ca53a1fb4) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where group event with the same start time selects both the timeslots on selection + +- Updated dependencies [[`3af3846`](https://github.com/nylas/nylas/commit/3af38467a73a7cdb0dfa07c4efa8f3dde36e988d), [`280dad9`](https://github.com/nylas/nylas/commit/280dad981a3c7cc9c7a30393ff900b6ca53a1fb4)]: + - @nylas/web-elements@1.4.3 + +## 1.4.2 + +### Patch Changes + +- Updated the build files + +- Updated dependencies []: + - @nylas/web-elements@1.4.2 + +## 1.4.1 + +### Patch Changes + +- [#573](https://github.com/nylas/nylas/pull/573) [`6e2994f`](https://github.com/nylas/nylas/commit/6e2994f7dac1f6e34d3fdc10ae2ab20805cf84c5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fix the issue where adding a participant and updating the open hours directly without hitting save did not register the open hours selected + +- [#579](https://github.com/nylas/nylas/pull/579) [`8c70696`](https://github.com/nylas/nylas/commit/8c70696c73e7d1c8c5cd0cd4910bd6647fdca7f2) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where page name was required for non-group configs. Also fixes the issue where the page name field would be wiped out on saving the config changes without any change to the page name field + +- [#575](https://github.com/nylas/nylas/pull/575) [`8967d38`](https://github.com/nylas/nylas/commit/8967d38e77366603cdc98a024fd0b8daf59d6980) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added changelog for the scheduler components to the scheduler component docs + include the changelog in the npm package that is deployed/released + +- [#584](https://github.com/nylas/nylas/pull/584) [`7cc5718`](https://github.com/nylas/nylas/commit/7cc57188f7491a8913c0719fda13d09d7ea8d89c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added missing components to enhance functionality. Added ability to disable email notifications. Fixed language dropdown selection issue in calendar view. + +- [#587](https://github.com/nylas/nylas/pull/587) [`73c1130`](https://github.com/nylas/nylas/commit/73c1130683da2e6b818e90f69d64d18a31c875a2) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where if system settings was set to a different language than en, the months header in the date picker did not translate correctly. Updated French translation to make more sense to a native speaker. + +- [#581](https://github.com/nylas/nylas/pull/581) [`a51862d`](https://github.com/nylas/nylas/commit/a51862d4f37466b56679749b2f96a33df81630c9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fix the issue where the label header does not show the updated label, instead showed a default label + +- [#576](https://github.com/nylas/nylas/pull/576) [`6296b4f`](https://github.com/nylas/nylas/commit/6296b4fb3a76719aeffbb6bd52993745ea340d8f) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fix the typescript compatibility issues + +- [#588](https://github.com/nylas/nylas/pull/588) [`47be193`](https://github.com/nylas/nylas/commit/47be193b38cf607904c1bbb27506abaf9500b98f) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for storing the organizer_locale from the scheduler editor component. This will allow us to send email communications to the organizer in the language selected by the organizer instead of defaulting to English + +- [#585](https://github.com/nylas/nylas/pull/585) [`6c39ff4`](https://github.com/nylas/nylas/commit/6c39ff4e8066e29e4831986237570b837b5225eb) Thanks [@pooja169usp](https://github.com/pooja169usp)! - With group events, the organizer pre-selects the type of configuration that they want to create in the select event type page, so hide the scheduling method component in the express flow when creating config + +- Updated dependencies [[`6e2994f`](https://github.com/nylas/nylas/commit/6e2994f7dac1f6e34d3fdc10ae2ab20805cf84c5), [`8c70696`](https://github.com/nylas/nylas/commit/8c70696c73e7d1c8c5cd0cd4910bd6647fdca7f2), [`8967d38`](https://github.com/nylas/nylas/commit/8967d38e77366603cdc98a024fd0b8daf59d6980), [`7cc5718`](https://github.com/nylas/nylas/commit/7cc57188f7491a8913c0719fda13d09d7ea8d89c), [`73c1130`](https://github.com/nylas/nylas/commit/73c1130683da2e6b818e90f69d64d18a31c875a2), [`a51862d`](https://github.com/nylas/nylas/commit/a51862d4f37466b56679749b2f96a33df81630c9), [`6296b4f`](https://github.com/nylas/nylas/commit/6296b4fb3a76719aeffbb6bd52993745ea340d8f), [`47be193`](https://github.com/nylas/nylas/commit/47be193b38cf607904c1bbb27506abaf9500b98f), [`6c39ff4`](https://github.com/nylas/nylas/commit/6c39ff4e8066e29e4831986237570b837b5225eb)]: + - @nylas/web-elements@1.4.1 + - @nylas/core@1.1.7 + +## 1.4.0 + +### Minor Changes + +- [#525](https://github.com/nylas/nylas/pull/525) [`7180ca7`](https://github.com/nylas/nylas/commit/7180ca7a841561932e02f52976d51e7aa064aaff) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Update nylas-react package to support Next.js app router compatibility by updating package configuration + +### Patch Changes + +- [#522](https://github.com/nylas/nylas/pull/522) [`df8e0b8`](https://github.com/nylas/nylas/commit/df8e0b8ec4384a61789a1a64754c812729dd4d62) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where availability method passed in the dev settings was being overridden to collective in the UI + +- [#529](https://github.com/nylas/nylas/pull/529) [`f71b973`](https://github.com/nylas/nylas/commit/f71b973e278444b3c055e368804af756abbcf61d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the scheduling component to support group event bookings + +- [#519](https://github.com/nylas/nylas/pull/519) [`ad075ba`](https://github.com/nylas/nylas/commit/ad075bafa462bd0f5ce7de95d2c98a112d8a51fc) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the logic for reminder minutes to resort to minutes where necessary + +- [#495](https://github.com/nylas/nylas/pull/495) [`c9672e9`](https://github.com/nylas/nylas/commit/c9672e9b6ca2b0d159277ba4e59d3ac43d0b1360) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Introduced a new screen allowing users to select the desired configuration type for creation + +- [#507](https://github.com/nylas/nylas/pull/507) [`9e4b5e7`](https://github.com/nylas/nylas/commit/9e4b5e7d2d076606ccf97ddf3732df05ed2d0858) Thanks [@pooja169usp](https://github.com/pooja169usp)! - • The toggle switch state for participant availability now correctly reflects the current state. + • Open hours now have a default selection when enabling the toggle. + +- [#535](https://github.com/nylas/nylas/pull/535) [`d89c58a`](https://github.com/nylas/nylas/commit/d89c58a6b31eae785c3c23eaad693a59da0a8e35) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed group booking error handling so that appropriate error is surfaced in the UI + +- [#530](https://github.com/nylas/nylas/pull/530) [`fca52e5`](https://github.com/nylas/nylas/commit/fca52e5a28540e2f94cca8ad20f71729492cf09e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated scheduler-editor auth to get grant using access token and use that as the email for logged in user. This resolves the UPN email mismatch issue with Microsoft accounts. + +- [#527](https://github.com/nylas/nylas/pull/527) [`f7dd3cc`](https://github.com/nylas/nylas/commit/f7dd3cc4531c2f0067b9e864d4b8271ffc88ce38) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fix the date component to display the preselected date and month, if passed in defaultSchedulerState + +- [#516](https://github.com/nylas/nylas/pull/516) [`5f83694`](https://github.com/nylas/nylas/commit/5f8369430c04717f10b3798929a36b7229591a11) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the translations for some fields including dropdown, date etc., in the scheduler editor and scheduling components + +- [#506](https://github.com/nylas/nylas/pull/506) [`90d2ef3`](https://github.com/nylas/nylas/commit/90d2ef3c4774274c97e598f6544de7cff515f75b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Expose shadow parts for action options from list configuration component that allows to hide / style + +- [#505](https://github.com/nylas/nylas/pull/505) [`51b5d49`](https://github.com/nylas/nylas/commit/51b5d49b6f339c7d6bde8f8189ebe922baf4d7ef) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where book now button did not fire in the rescheduling flow due to form fields not being set correctly + +- [#504](https://github.com/nylas/nylas/pull/504) [`9ff9bd5`](https://github.com/nylas/nylas/commit/9ff9bd537bf30d61d22c9340079b393d6c129140) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue with event duration being reset to 30 minutes when modifying other fields in the editor + +- [#501](https://github.com/nylas/nylas/pull/501) [`9344b0e`](https://github.com/nylas/nylas/commit/9344b0e138f8acf73f24942bd60f351e14453a5a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a create group config flow along with a group event with recurrence + +- [#562](https://github.com/nylas/nylas/pull/562) [`8d3396e`](https://github.com/nylas/nylas/commit/8d3396e61fa8ae07f906d33521c8246018ad6c82) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added front validation for event duration to not be empty/negative and be a multiple of 5 + +- [#555](https://github.com/nylas/nylas/pull/555) [`d320173`](https://github.com/nylas/nylas/commit/d3201736073cb397d2a7307f702ae55af96d4f24) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where the booking page showed different selectable dates and timeslots depending on the system settings. With this fix, when selected timezone is changed, the selectable dates are also updated to respect the timezone selected. + +- [#446](https://github.com/nylas/nylas/pull/446) [`cb8e196`](https://github.com/nylas/nylas/commit/cb8e196ec80f0320a306bd4481dae584e7d8b480) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added additional CSS parts to the nylas-scheduling component. + +- [#551](https://github.com/nylas/nylas/pull/551) [`8d91968`](https://github.com/nylas/nylas/commit/8d91968683fa58c0b64daa395f2afd27c56ebf55) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the ordering and sorting for the booking form fields in the scheduler editor + +- [#502](https://github.com/nylas/nylas/pull/502) [`fb80809`](https://github.com/nylas/nylas/commit/fb80809fa3c35e97a7ea7d7fd809b33fcaf5dcdc) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added retry logic to round robin when booking request fails due to timeslot not being avaialble + +- [#528](https://github.com/nylas/nylas/pull/528) [`4d7958b`](https://github.com/nylas/nylas/commit/4d7958b472977b1a3e240b1aef431e0da6fad32d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - The nylas-event-description text area component now fully supports carriage returns, enabling users to enter multi-line comments. Additionally, selecting the “Auto-Populate” feature multiple times no longer duplicates fields, ensuring smoother multi-line text entry and preventing unintended field replication. Please note that the delimiters for additional fields should not be modified, as we rely on them to correctly replace these fields in the description when “Auto-Populate” is clicked. + +- [#524](https://github.com/nylas/nylas/pull/524) [`4303932`](https://github.com/nylas/nylas/commit/430393257581c8af1fcafa97a4fede2f982bd2c9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Expose the calendar in the calendar view + filter 'all host and guests' options from reminders if group config. Updated the logic to add default capacity when creating a group config + +- [#534](https://github.com/nylas/nylas/pull/534) [`617b079`](https://github.com/nylas/nylas/commit/617b07950b851286a781401493ee4a4ae4a5199e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Improved component registration process to properly handle re-registration scenarios, ensuring components receive updated props and connections while preventing duplicate event listeners. This fixes the issue with components not loading the correct values when using custom auth method and composable mode. + +- Updated dependencies [[`df8e0b8`](https://github.com/nylas/nylas/commit/df8e0b8ec4384a61789a1a64754c812729dd4d62), [`f71b973`](https://github.com/nylas/nylas/commit/f71b973e278444b3c055e368804af756abbcf61d), [`ad075ba`](https://github.com/nylas/nylas/commit/ad075bafa462bd0f5ce7de95d2c98a112d8a51fc), [`c9672e9`](https://github.com/nylas/nylas/commit/c9672e9b6ca2b0d159277ba4e59d3ac43d0b1360), [`9e4b5e7`](https://github.com/nylas/nylas/commit/9e4b5e7d2d076606ccf97ddf3732df05ed2d0858), [`d89c58a`](https://github.com/nylas/nylas/commit/d89c58a6b31eae785c3c23eaad693a59da0a8e35), [`fca52e5`](https://github.com/nylas/nylas/commit/fca52e5a28540e2f94cca8ad20f71729492cf09e), [`f7dd3cc`](https://github.com/nylas/nylas/commit/f7dd3cc4531c2f0067b9e864d4b8271ffc88ce38), [`5f83694`](https://github.com/nylas/nylas/commit/5f8369430c04717f10b3798929a36b7229591a11), [`90d2ef3`](https://github.com/nylas/nylas/commit/90d2ef3c4774274c97e598f6544de7cff515f75b), [`51b5d49`](https://github.com/nylas/nylas/commit/51b5d49b6f339c7d6bde8f8189ebe922baf4d7ef), [`9ff9bd5`](https://github.com/nylas/nylas/commit/9ff9bd537bf30d61d22c9340079b393d6c129140), [`9344b0e`](https://github.com/nylas/nylas/commit/9344b0e138f8acf73f24942bd60f351e14453a5a), [`8d3396e`](https://github.com/nylas/nylas/commit/8d3396e61fa8ae07f906d33521c8246018ad6c82), [`d320173`](https://github.com/nylas/nylas/commit/d3201736073cb397d2a7307f702ae55af96d4f24), [`cb8e196`](https://github.com/nylas/nylas/commit/cb8e196ec80f0320a306bd4481dae584e7d8b480), [`8d91968`](https://github.com/nylas/nylas/commit/8d91968683fa58c0b64daa395f2afd27c56ebf55), [`fb80809`](https://github.com/nylas/nylas/commit/fb80809fa3c35e97a7ea7d7fd809b33fcaf5dcdc), [`4d7958b`](https://github.com/nylas/nylas/commit/4d7958b472977b1a3e240b1aef431e0da6fad32d), [`4303932`](https://github.com/nylas/nylas/commit/430393257581c8af1fcafa97a4fede2f982bd2c9), [`617b079`](https://github.com/nylas/nylas/commit/617b07950b851286a781401493ee4a4ae4a5199e)]: + - @nylas/web-elements@1.4.0 + - @nylas/core@1.1.6 + +## 1.3.6 + +### Patch Changes + +- [#481](https://github.com/nylas/nylas/pull/481) [`3a47075`](https://github.com/nylas/nylas/commit/3a470759afd24946258862e6aba718536402b7ae) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support to make booking form fields read only in the scheduling component + +- [#484](https://github.com/nylas/nylas/pull/484) [`4020840`](https://github.com/nylas/nylas/commit/40208405e5b1899653d4247645f87279513ecab2) Thanks [@pooja169usp](https://github.com/pooja169usp)! - The timeslot picker has been updated to use the selected locale for time formatting, ensuring consistency with user preferences. Additionally, a new hour12 prop has been introduced, allowing explicit control over the hour format. This prop does not have a default value; by default, the timeslot picker will use the hour format determined by the selected locale. However, you can override this by passing hour12={true} to enforce a 12-hour clock or hour12={false} to enforce a 24-hour clock. This update provides greater flexibility while maintaining alignment with user expectations. + +- [#493](https://github.com/nylas/nylas/pull/493) [`d724f86`](https://github.com/nylas/nylas/commit/d724f8670eb62442b7401035253e4ce24fde4b62) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Return localtion, booking_ref in the query param upon booking completion and redirect + +- [#485](https://github.com/nylas/nylas/pull/485) [`e2cb495`](https://github.com/nylas/nylas/commit/e2cb4958a9e7a0e989dadb49d69f97d8935d57c0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added validation to reminder minutes to be multiples of 5, because the reminder is sent out in every 5 minute intervals + +- [#488](https://github.com/nylas/nylas/pull/488) [`9214810`](https://github.com/nylas/nylas/commit/921481051a3d8537334466bab14fd08958fb282b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added an empty option in the dropdown for booking form, if no default option is set + +- [#489](https://github.com/nylas/nylas/pull/489) [`901501a`](https://github.com/nylas/nylas/commit/901501ac723b831566db1d246115cd2765114cac) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Improved the responsiveness of the scheduling component in mobile and tablet views such that the dates and locale do not overflow + +- [#487](https://github.com/nylas/nylas/pull/487) [`c7d27c4`](https://github.com/nylas/nylas/commit/c7d27c4dbe377b05be0572ede305f54032a55fb9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Ensure that the input components use the color vars from themeConfig prop for background, dropdown content, text colors + +- [#492](https://github.com/nylas/nylas/pull/492) [`2733d89`](https://github.com/nylas/nylas/commit/2733d89601a3da72c1d7038c557ce95c0d9d65c6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - If timezone is set to an empty string in the config, default to the browser timezone in the editor UI. This allows the user to adjust the timezone as per their requirement + +- [#483](https://github.com/nylas/nylas/pull/483) [`60043b4`](https://github.com/nylas/nylas/commit/60043b4409ff2bd7a42ba42bf80b2bd8decb64da) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a button to event description component that on click auto-populates the additional fields to the description + +- [#496](https://github.com/nylas/nylas/pull/496) [`70a0e33`](https://github.com/nylas/nylas/commit/70a0e33f72ecbf50e6627bf9ccde19454974927a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added the ability disable/enable emails from the UI + +- Updated dependencies [[`3a47075`](https://github.com/nylas/nylas/commit/3a470759afd24946258862e6aba718536402b7ae), [`4020840`](https://github.com/nylas/nylas/commit/40208405e5b1899653d4247645f87279513ecab2), [`d724f86`](https://github.com/nylas/nylas/commit/d724f8670eb62442b7401035253e4ce24fde4b62), [`e2cb495`](https://github.com/nylas/nylas/commit/e2cb4958a9e7a0e989dadb49d69f97d8935d57c0), [`9214810`](https://github.com/nylas/nylas/commit/921481051a3d8537334466bab14fd08958fb282b), [`901501a`](https://github.com/nylas/nylas/commit/901501ac723b831566db1d246115cd2765114cac), [`c7d27c4`](https://github.com/nylas/nylas/commit/c7d27c4dbe377b05be0572ede305f54032a55fb9), [`2733d89`](https://github.com/nylas/nylas/commit/2733d89601a3da72c1d7038c557ce95c0d9d65c6), [`60043b4`](https://github.com/nylas/nylas/commit/60043b4409ff2bd7a42ba42bf80b2bd8decb64da), [`70a0e33`](https://github.com/nylas/nylas/commit/70a0e33f72ecbf50e6627bf9ccde19454974927a)]: + - @nylas/web-elements@1.3.6 + - @nylas/core@1.1.5 + +## 1.3.5 + +### Patch Changes + +- [#480](https://github.com/nylas/nylas/pull/480) [`e3a0980`](https://github.com/nylas/nylas/commit/e3a09805268c68881b78fa4432782f2d6526eff9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added prop nylasBranding to scheduler editor to show / hide the option to manage nylas branding in the email templates + +- [#478](https://github.com/nylas/nylas/pull/478) [`85db9bb`](https://github.com/nylas/nylas/commit/85db9bbbdc36dfd83867c6005ec077311f3052c7) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for Korean language + +- Updated dependencies [[`e3a0980`](https://github.com/nylas/nylas/commit/e3a09805268c68881b78fa4432782f2d6526eff9), [`85db9bb`](https://github.com/nylas/nylas/commit/85db9bbbdc36dfd83867c6005ec077311f3052c7)]: + - @nylas/web-elements@1.3.5 + +## 1.3.4 + +### Patch Changes + +- [#476](https://github.com/nylas/nylas/pull/476) [`ead6086`](https://github.com/nylas/nylas/commit/ead60866ffd09677de19ef9c5ec2916dfc4a5f6e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added an event schedulerConfigCreated to be emitted after successful creation of config (this event includes the id field along with the other things) + +- [#470](https://github.com/nylas/nylas/pull/470) [`59e1c51`](https://github.com/nylas/nylas/commit/59e1c510551c82cf9bc3dab47fdbe7fc6f76edfe) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added localization to scheduler editor + +- [#473](https://github.com/nylas/nylas/pull/473) [`c9a3f84`](https://github.com/nylas/nylas/commit/c9a3f844aaabcfc1b9cbd3e28e96e2386b457760) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the scheduling component to respect the timezone and language overrides passed via bookingInfo prop + +- [#472](https://github.com/nylas/nylas/pull/472) [`97b4389`](https://github.com/nylas/nylas/commit/97b43899fb24df2d54ecd7cd966809343ebceac3) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Add the ability to enter additional fields from a dropdown for event title and event description components + +- [#467](https://github.com/nylas/nylas/pull/467) [`fc0d1a1`](https://github.com/nylas/nylas/commit/fc0d1a1f42138dd48d2320a33b77188b6703b687) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for multi-select type additional field + +- Updated dependencies [[`ead6086`](https://github.com/nylas/nylas/commit/ead60866ffd09677de19ef9c5ec2916dfc4a5f6e), [`59e1c51`](https://github.com/nylas/nylas/commit/59e1c510551c82cf9bc3dab47fdbe7fc6f76edfe), [`c9a3f84`](https://github.com/nylas/nylas/commit/c9a3f844aaabcfc1b9cbd3e28e96e2386b457760), [`97b4389`](https://github.com/nylas/nylas/commit/97b43899fb24df2d54ecd7cd966809343ebceac3), [`fc0d1a1`](https://github.com/nylas/nylas/commit/fc0d1a1f42138dd48d2320a33b77188b6703b687)]: + - @nylas/web-elements@1.3.4 + - @nylas/core@1.1.4 + +## 1.3.3 + +### Patch Changes + +- [#468](https://github.com/nylas/nylas/pull/468) [`5169491`](https://github.com/nylas/nylas/commit/5169491488be7510ee8104fe52b80ffe866c2cf8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Improved the error handling on nylas-date-component to validate invalid dates + +- [#464](https://github.com/nylas/nylas/pull/464) [`edf0860`](https://github.com/nylas/nylas/commit/edf0860c6252aae59667dbaaa0e819d19806035b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue with booking calendars where the list did not show all the calendars in the html implementation + +- [#465](https://github.com/nylas/nylas/pull/465) [`be04be8`](https://github.com/nylas/nylas/commit/be04be80077c22b7453698a00e15515c7b213182) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where html (web elements) did not render the correct values on booking form, booking options, participant open hours and page styling + +- Updated dependencies [[`5169491`](https://github.com/nylas/nylas/commit/5169491488be7510ee8104fe52b80ffe866c2cf8), [`edf0860`](https://github.com/nylas/nylas/commit/edf0860c6252aae59667dbaaa0e819d19806035b), [`be04be8`](https://github.com/nylas/nylas/commit/be04be80077c22b7453698a00e15515c7b213182)]: + - @nylas/web-elements@1.3.3 + +## 1.3.2 + +### Patch Changes + +- [#458](https://github.com/nylas/nylas/pull/458) [`b2a4168`](https://github.com/nylas/nylas/commit/b2a4168f65a8ff9d10aeefcfd678e2a8495666ee) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Fixed the participants checkbox being displayed if no availability method was configured (even if that defaulted to "collective"). + +- [#455](https://github.com/nylas/nylas/pull/455) [`76290fa`](https://github.com/nylas/nylas/commit/76290fafd70c4d4f940671b43b0c5e641afdaed4) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added an option to hide the nylas branding from the email template footer in the communications tab of nylas-scheduler-editor component + +- [#459](https://github.com/nylas/nylas/pull/459) [`7896155`](https://github.com/nylas/nylas/commit/789615593971c9c45b0792dbd19260294b87f1f0) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-participants-custom-availability] Fixed new participant open hours not automatically inherting the default open hours and timezone. + +- [#461](https://github.com/nylas/nylas/pull/461) [`12e59df`](https://github.com/nylas/nylas/commit/12e59dfbd25ddc2db341c3bfa739e576e5539bd8) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-editor-tabs] Fixed form submissions incorrectly priortizing default state values over form state values. + +- [#460](https://github.com/nylas/nylas/pull/460) [`5cc9e97`](https://github.com/nylas/nylas/commit/5cc9e9731dd5dcec3fa498e1c5d25b0c9f499c02) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-scheduler-editor] Fix: missing support for migrated "date" custom fields was causing custom fields to not be rendered. + +- [#460](https://github.com/nylas/nylas/pull/460) [`5cc9e97`](https://github.com/nylas/nylas/commit/5cc9e9731dd5dcec3fa498e1c5d25b0c9f499c02) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-booking-form-config] Fixed typo on the "additionalFields" prop. + +- Updated dependencies [[`b2a4168`](https://github.com/nylas/nylas/commit/b2a4168f65a8ff9d10aeefcfd678e2a8495666ee), [`76290fa`](https://github.com/nylas/nylas/commit/76290fafd70c4d4f940671b43b0c5e641afdaed4), [`7896155`](https://github.com/nylas/nylas/commit/789615593971c9c45b0792dbd19260294b87f1f0), [`12e59df`](https://github.com/nylas/nylas/commit/12e59dfbd25ddc2db341c3bfa739e576e5539bd8), [`5cc9e97`](https://github.com/nylas/nylas/commit/5cc9e9731dd5dcec3fa498e1c5d25b0c9f499c02), [`5cc9e97`](https://github.com/nylas/nylas/commit/5cc9e9731dd5dcec3fa498e1c5d25b0c9f499c02)]: + - @nylas/web-elements@1.3.2 + - @nylas/core@1.1.3 + +## 1.3.1 + +### Patch Changes + +- [#452](https://github.com/nylas/nylas/pull/452) [`596000b`](https://github.com/nylas/nylas/commit/596000b25e51b55c55f42c793f76a10381defd12) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for metadata type additional field including support for optional default value for booking form fields + +- [#450](https://github.com/nylas/nylas/pull/450) [`9ed4860`](https://github.com/nylas/nylas/commit/9ed486076a09ade550844c75e7ba6c3e038a31fa) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Set fallback language to English if the browser locale is to a language that we do not officially support + +- [#453](https://github.com/nylas/nylas/pull/453) [`f9c9352`](https://github.com/nylas/nylas/commit/f9c935219e44bc40d9e89d9d208d391a021742c3) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the nylas-booking-form component to prefill booking details in the rescheduling flow. + +- Updated dependencies [[`596000b`](https://github.com/nylas/nylas/commit/596000b25e51b55c55f42c793f76a10381defd12), [`9ed4860`](https://github.com/nylas/nylas/commit/9ed486076a09ade550844c75e7ba6c3e038a31fa), [`f9c9352`](https://github.com/nylas/nylas/commit/f9c935219e44bc40d9e89d9d208d391a021742c3)]: + - @nylas/web-elements@1.3.1 + - @nylas/core@1.1.2 + +## 1.3.0 + +### Patch Changes + +- [#445](https://github.com/nylas/nylas/pull/445) [`4536cb2`](https://github.com/nylas/nylas/commit/4536cb2b94cdd67ecdd1f25c49ffdaa359a71d22) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where conferencing in scheduler editor was not showing Google meet option on load when used with CDN web-elements and no auth method. Also, fixed the issue where once Google meets is selected, it cannot be undone + +- [#443](https://github.com/nylas/nylas/pull/443) [`5ff9812`](https://github.com/nylas/nylas/commit/5ff981285e21af7ccf8dc7e6e066944d61104366) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a confirmation modal to confirm delete config in the scheduler editor + +- Updated dependencies [[`4536cb2`](https://github.com/nylas/nylas/commit/4536cb2b94cdd67ecdd1f25c49ffdaa359a71d22), [`5ff9812`](https://github.com/nylas/nylas/commit/5ff981285e21af7ccf8dc7e6e066944d61104366), [`d094e7d`](https://github.com/nylas/nylas/commit/d094e7dcdf6a0fe67567644f0410fdc054b6a301)]: + - @nylas/web-elements@1.3.0 + +## 1.2.0 + +### Patch Changes + +- [#433](https://github.com/nylas/nylas/pull/433) [`cb286bb`](https://github.com/nylas/nylas/commit/cb286bbc59a3e6f018ae62b636f6cb019d35371e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added email subject to reminders in the UI + +- [#436](https://github.com/nylas/nylas/pull/436) [`b870836`](https://github.com/nylas/nylas/commit/b870836ed932e138d896584c7cb8620e3c19afaa) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue with creating a config using icloud account + +- [#432](https://github.com/nylas/nylas/pull/432) [`385bd5f`](https://github.com/nylas/nylas/commit/385bd5f04e21a4451f8df5c6922b4745cce58070) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where adding multiple form fields of the same type would override/wipe out existing fields + +- Updated dependencies [[`cb286bb`](https://github.com/nylas/nylas/commit/cb286bbc59a3e6f018ae62b636f6cb019d35371e), [`d094e7d`](https://github.com/nylas/nylas/commit/d094e7dcdf6a0fe67567644f0410fdc054b6a301), [`b870836`](https://github.com/nylas/nylas/commit/b870836ed932e138d896584c7cb8620e3c19afaa), [`d094e7d`](https://github.com/nylas/nylas/commit/d094e7dcdf6a0fe67567644f0410fdc054b6a301), [`385bd5f`](https://github.com/nylas/nylas/commit/385bd5f04e21a4451f8df5c6922b4745cce58070)]: + - @nylas/web-elements@1.2.0 + +## 1.1.7 + +### Patch Changes + +- [#430](https://github.com/nylas/nylas/pull/430) [`5aafd51`](https://github.com/nylas/nylas/commit/5aafd51a52e79f5f935433a9370077217c5d54aa) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Filter out webhook reminders from being surfaced in the UI + +- Updated dependencies [[`5aafd51`](https://github.com/nylas/nylas/commit/5aafd51a52e79f5f935433a9370077217c5d54aa)]: + - @nylas/web-elements@1.1.7 + +## 1.1.6 + +### Patch Changes + +- [#424](https://github.com/nylas/nylas/pull/424) [`507ae69`](https://github.com/nylas/nylas/commit/507ae699528bc089f617db23d33141270c9a4056) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue where themeConfig prop set on the scheduling component did not update the styles on sub components + +- Updated dependencies [[`507ae69`](https://github.com/nylas/nylas/commit/507ae699528bc089f617db23d33141270c9a4056)]: + - @nylas/web-elements@1.1.6 + +## 1.1.5 + +### Patch Changes + +- [#421](https://github.com/nylas/nylas/pull/421) [`4ba3bcb`](https://github.com/nylas/nylas/commit/4ba3bcb327e7060dae91c52e9367cfc4284665a2) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fix the email validation regex to allow custom email domains liek .entertainment (example) + +- [#404](https://github.com/nylas/nylas/pull/404) [`250e17d`](https://github.com/nylas/nylas/commit/250e17d49bb8e24bb1cd0c635068a8b9c6427488) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the create scheduling config issue + +- [#399](https://github.com/nylas/nylas/pull/399) [`eef68ad`](https://github.com/nylas/nylas/commit/eef68ad7043bc5bd025ef369ef367132bd2f8082) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Resolved the issue where the UI was displaying an error for the organizer confirmation URL, despite it being set in the configuration. + +- [#420](https://github.com/nylas/nylas/pull/420) [`67abe45`](https://github.com/nylas/nylas/commit/67abe45adc9af25e9425fcc8eedb055632841c0f) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue with confirmation email image url not blocking form submission on invalid url + +- [#413](https://github.com/nylas/nylas/pull/413) [`8e0cd98`](https://github.com/nylas/nylas/commit/8e0cd98253809b7699f104cde8fd93bf2afa5b46) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Add all additional fields from bookingInfo prop to redirect url, including the ones not used in the booking form + +- [#116](https://github.com/nylas/nylas/pull/116) [`4842469`](https://github.com/nylas/nylas/commit/4842469ed6e335f532840dabaa67c90e9d2c8659) Thanks [@b3ndoi](https://github.com/b3ndoi)! - Added an option to set reminders through the scheduler editor + +- [#417](https://github.com/nylas/nylas/pull/417) [`b1477d2`](https://github.com/nylas/nylas/commit/b1477d20d54d59452b99fb9c1a7484bdb9c22aa6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added an option to set reminders through the scheduler editor + +- [#405](https://github.com/nylas/nylas/pull/405) [`d4c812a`](https://github.com/nylas/nylas/commit/d4c812aa9779d74fd3cfe76ff972e9252f201661) Thanks [@pooja169usp](https://github.com/pooja169usp)! - bug-fix: Fixed the time on booked event card + +- [#412](https://github.com/nylas/nylas/pull/412) [`0758aa1`](https://github.com/nylas/nylas/commit/0758aa1acc5812eb6d8df4d766200580f2baaa4d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the issue with the editor event title not updating correctly when selecting all and deleting the title + +- Updated dependencies [[`4ba3bcb`](https://github.com/nylas/nylas/commit/4ba3bcb327e7060dae91c52e9367cfc4284665a2), [`250e17d`](https://github.com/nylas/nylas/commit/250e17d49bb8e24bb1cd0c635068a8b9c6427488), [`eef68ad`](https://github.com/nylas/nylas/commit/eef68ad7043bc5bd025ef369ef367132bd2f8082), [`67abe45`](https://github.com/nylas/nylas/commit/67abe45adc9af25e9425fcc8eedb055632841c0f), [`8e0cd98`](https://github.com/nylas/nylas/commit/8e0cd98253809b7699f104cde8fd93bf2afa5b46), [`4842469`](https://github.com/nylas/nylas/commit/4842469ed6e335f532840dabaa67c90e9d2c8659), [`b1477d2`](https://github.com/nylas/nylas/commit/b1477d20d54d59452b99fb9c1a7484bdb9c22aa6), [`d4c812a`](https://github.com/nylas/nylas/commit/d4c812aa9779d74fd3cfe76ff972e9252f201661), [`0758aa1`](https://github.com/nylas/nylas/commit/0758aa1acc5812eb6d8df4d766200580f2baaa4d)]: + - @nylas/web-elements@1.1.5 + - @nylas/core@1.1.1 + +## 1.1.4 + +### Patch Changes + +- [#396](https://github.com/nylas/nylas/pull/396) [`4c447fd`](https://github.com/nylas/nylas/commit/4c447fdf3d3b5f1d49ad20eb96a0b030fa80a60b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Reduced the package size for the CDN build, resolving the issue where jsDelivr returned a “package size exceeded” error when using the CDN. + +- [#397](https://github.com/nylas/nylas/pull/397) [`ffa08a2`](https://github.com/nylas/nylas/commit/ffa08a2214474360a0d1247742a6c949723b5df3) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Resolved an issue where custom fields in the query parameters caused a booking error. Now, fields that do not match the additional_fields specified in the configuration are ignored. + +- Updated dependencies [[`4c447fd`](https://github.com/nylas/nylas/commit/4c447fdf3d3b5f1d49ad20eb96a0b030fa80a60b), [`ffa08a2`](https://github.com/nylas/nylas/commit/ffa08a2214474360a0d1247742a6c949723b5df3)]: + - @nylas/web-elements@1.1.4 + +## 1.1.3 + +### Patch Changes + +- [#381](https://github.com/nylas/nylas/pull/381) [`3154ef4`](https://github.com/nylas/nylas/commit/3154ef4884dfbab68e9c8c48a9a12336595ac837) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the query params populating the booking form in scheduling component returning error on booking + +- [#381](https://github.com/nylas/nylas/pull/381) [`3154ef4`](https://github.com/nylas/nylas/commit/3154ef4884dfbab68e9c8c48a9a12336595ac837) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the scheduling component to include the booking details in the redirect url + +- [#382](https://github.com/nylas/nylas/pull/382) [`47b96d4`](https://github.com/nylas/nylas/commit/47b96d455758932df6c41208b414726bd6537926) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a prop enableUserFeedback that allows to capture user's feedback and issues if any + +- Updated dependencies [[`3154ef4`](https://github.com/nylas/nylas/commit/3154ef4884dfbab68e9c8c48a9a12336595ac837), [`3154ef4`](https://github.com/nylas/nylas/commit/3154ef4884dfbab68e9c8c48a9a12336595ac837), [`47b96d4`](https://github.com/nylas/nylas/commit/47b96d455758932df6c41208b414726bd6537926)]: + - @nylas/web-elements@1.1.3 + +## 1.1.2 + +### Patch Changes + +- [#367](https://github.com/nylas/nylas/pull/367) [`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5) Thanks [@pooja169usp](https://github.com/pooja169usp)! + + - Fixed default selected calendar not selected when creating a config using MS account. + - Fixed the issue with booking an event where the default selected value in the dropdown was not sent until changed. + +- [#368](https://github.com/nylas/nylas/pull/368) [`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5) Thanks [@pooja169usp](https://github.com/pooja169usp)! + + - Updated the Scheduling component to fetch availability only if the ui settings request passes. This prevents the additional API request if the config is invalid. + - Appended the guest info, additional fields and timeslot to the bokedEventInfo event + +- [#369](https://github.com/nylas/nylas/pull/369) [`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Improved the custom event slug component by adding a hard-coded slash (/) as a prefix. Additionally, introduced a placeholder to enhance user clarity and provide guidance during input. + +- Updated dependencies [[`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5), [`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5), [`eed1e4c`](https://github.com/nylas/nylas/commit/eed1e4cc01c5d12b5c88e94d69d306d5119346f5)]: + - @nylas/web-elements@1.1.2 + +## 1.1.1 + +### Patch Changes + +- [#357](https://github.com/nylas/nylas/pull/357) [`ef9faff`](https://github.com/nylas/nylas/commit/ef9faffb27c33830ce4e59b7bbd324e73b913fef) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Bundle a separate folder dist/cdn for CDN usage. This improves the loading time by including all the necessary dependencies required for a component to load (Each component is imported individually). + +- [#364](https://github.com/nylas/nylas/pull/364) [`8f84ba8`](https://github.com/nylas/nylas/commit/8f84ba8d34513d4ccd0a9725913cbc356a765a02) Thanks [@pooja169usp](https://github.com/pooja169usp)! + + - Modified how the Editor manages manual confirmations: + - If `organizer_confirmation_url` is not set by developers, the `` component will no longer appear in the editor + - Added validation for configuration creation to ensure that if developers override `booking_type` to "organizer-confirmation", they must also set `organizer_confirmation_url`, otherwise a validation error will be triggered. + - Deprecated the `prop`, as it is now derived from `selectedConfiguration` and no longer needs to be manually set. This prop will be removed in an upcoming release. + +- [#354](https://github.com/nylas/nylas/pull/354) [`af743f8`](https://github.com/nylas/nylas/commit/af743f824b44149d600cdcfba28824b130d7e9d1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the calculation of start_time for fetching availability when min_booking_notice is set + +- [#360](https://github.com/nylas/nylas/pull/360) [`15ea5fc`](https://github.com/nylas/nylas/commit/15ea5fcd34bc8e3565c08c4b6b67503f4441c1f3) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the page styles component so that it renders only when a slot is passed. The developer has to explicitly pass the slot to the nylas-scheduler-editor component and listen to configSettingLoaded event on the nylas-scheduling component to grab the page styles and apply as needed. + +- [#355](https://github.com/nylas/nylas/pull/355) [`43cb274`](https://github.com/nylas/nylas/commit/43cb27454373aab342bae98246379e27cb59b4da) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the default validation for phone and email input components to be more flexible + +- [#350](https://github.com/nylas/nylas/pull/350) [`e684157`](https://github.com/nylas/nylas/commit/e684157e482fb464a524d01c40cca88ed97b02f0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed hideEditorTabs prop not working for page styles and communications tabs + +- [#351](https://github.com/nylas/nylas/pull/351) [`f7e8eb0`](https://github.com/nylas/nylas/commit/f7e8eb033d2154ff87fb52f7f5ae01f5837a5c0b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated the nylas/identity package bundle to fix CDN issue not including the dependencies + +- [#351](https://github.com/nylas/nylas/pull/351) [`f7e8eb0`](https://github.com/nylas/nylas/commit/f7e8eb033d2154ff87fb52f7f5ae01f5837a5c0b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed mobile styles for the scheduler editor component + +- Updated dependencies [[`ef9faff`](https://github.com/nylas/nylas/commit/ef9faffb27c33830ce4e59b7bbd324e73b913fef), [`8f84ba8`](https://github.com/nylas/nylas/commit/8f84ba8d34513d4ccd0a9725913cbc356a765a02), [`af743f8`](https://github.com/nylas/nylas/commit/af743f824b44149d600cdcfba28824b130d7e9d1), [`15ea5fc`](https://github.com/nylas/nylas/commit/15ea5fcd34bc8e3565c08c4b6b67503f4441c1f3), [`43cb274`](https://github.com/nylas/nylas/commit/43cb27454373aab342bae98246379e27cb59b4da), [`e684157`](https://github.com/nylas/nylas/commit/e684157e482fb464a524d01c40cca88ed97b02f0), [`f7e8eb0`](https://github.com/nylas/nylas/commit/f7e8eb033d2154ff87fb52f7f5ae01f5837a5c0b), [`f7e8eb0`](https://github.com/nylas/nylas/commit/f7e8eb033d2154ff87fb52f7f5ae01f5837a5c0b)]: + - @nylas/web-elements@1.1.1 + +## 1.1.0 + +### Minor Changes + +- [#145](https://github.com/nylas/nylas/pull/145) [`f2d3f88`](https://github.com/nylas/nylas/commit/f2d3f885db77fe93d11a26375c8070d4f212309c) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added the ability to login with the scheduler editor component + +- [#149](https://github.com/nylas/nylas/pull/149) [`cec6c13`](https://github.com/nylas/nylas/commit/cec6c13be67be8d04013175a5df899a66a178d5a) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added a new [nylas-list-configurations] component that shows a list of configurations that can be edited or deleted. + +- [#139](https://github.com/nylas/nylas/pull/139) [`b467dae`](https://github.com/nylas/nylas/commit/b467dae30f4bcb4431d91a1b307d6ca542fe543f) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added nylas/identity support for the nylas-scheduler-editor component + +### Patch Changes + +- [#299](https://github.com/nylas/nylas/pull/299) [`21e6790`](https://github.com/nylas/nylas/commit/21e6790d8650a0921f6992b067cc692a8c62e2e1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added communications tab to set up automatic communications for your events + +- [#285](https://github.com/nylas/nylas/pull/285) [`cbb7b58`](https://github.com/nylas/nylas/commit/cbb7b58cf117b7d170a32b02428084f7a7f64b38) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Deprecated the slot custom-booking-form in nylas-booking-form component in favor of using the additional fields set via the editor config + +- [#307](https://github.com/nylas/nylas/pull/307) [`d907fb6`](https://github.com/nylas/nylas/commit/d907fb6fa5a4c635aa451ba8db65e888c5a81346) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Renamed nylas-booking-type component to nylas-scheduling-method for better clarity based on it's function + +- [#266](https://github.com/nylas/nylas/pull/266) [`da23410`](https://github.com/nylas/nylas/commit/da234103763b4842479c9240c97a07d5bca22fca) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed participant availability not updating the list on add/remove participants reactively + +- [#292](https://github.com/nylas/nylas/pull/292) [`edefe90`](https://github.com/nylas/nylas/commit/edefe908ec147c4190ee609dbe4e2972c613fb70) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed same provider conferencing option not showing up in create config flow + +- [#124](https://github.com/nylas/nylas/pull/124) [`5ccd04d`](https://github.com/nylas/nylas/commit/5ccd04dcf91f3a53df3118ffd933604a0fa7eb9e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] props renamed/deprecated + + - Remove `showThankYouPage` in favor of using `eventInfo` + - Remove `bookingFlow` in favor of using `rescheduleBookingId` + - Rename `cancelledEvent` to `cancelledEventInfo` for consistency + - Rename `defaultSchedulerStoreState` to `defaultSchedulerState` for better clarity + +- [#197](https://github.com/nylas/nylas/pull/197) [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-event-duration] Update input to dropdown for quick selection with an input to select custom duration + +- [#269](https://github.com/nylas/nylas/pull/269) [`2a62c27`](https://github.com/nylas/nylas/commit/2a62c275684877c71d24642c60b68caaa3c56213) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the package install issue with workspace + +- [#238](https://github.com/nylas/nylas/pull/238) [`84d2b21`](https://github.com/nylas/nylas/commit/84d2b21a70d728d7431bc33ab7289885f540c000) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed editor not able to save due to participants tab + +- [#308](https://github.com/nylas/nylas/pull/308) [`fa6d747`](https://github.com/nylas/nylas/commit/fa6d747881da38c7a34f72a0822e3d065d11a524) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a read only state sheduling method component to booking options in the editor to identify the scheduling method for the selected config + +- [#173](https://github.com/nylas/nylas/pull/173) [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added stack trace output to the debug utility + +- [#127](https://github.com/nylas/nylas/pull/127) [`929044c`](https://github.com/nylas/nylas/commit/929044c985ae6b4a6b940137a7ae038ef8801f3c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Added nylasBranding prop to hide nylas branding + +- [#177](https://github.com/nylas/nylas/pull/177) [`4a720b9`](https://github.com/nylas/nylas/commit/4a720b91fe0fbe1453e550d61924e2c94ce37121) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Revert enableImportInjection change + +- [#261](https://github.com/nylas/nylas/pull/261) [`0a57b53`](https://github.com/nylas/nylas/commit/0a57b532ecaffbc9e2598e44f4b856cb6027b7a0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a booking form tab to set additional fields in the config. These additional fields will be displayed in the scheduling page booking form to the end user booking an event. + +- [#220](https://github.com/nylas/nylas/pull/220) [`c82ac58`](https://github.com/nylas/nylas/commit/c82ac581830982c95be13a1b8ce713aec03c180a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated dropdown component to be usable in the booking form for scheduling component + +- [#209](https://github.com/nylas/nylas/pull/209) [`ea838bc`](https://github.com/nylas/nylas/commit/ea838bcefe4478608d61e069b171fb854a3518ba) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added nylas-cancellation-policy component + +- [#243](https://github.com/nylas/nylas/pull/243) [`816226d`](https://github.com/nylas/nylas/commit/816226d0a834d4e9a97988df4b9beb8c977c3f96) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Only show scheduling page title if organizer name is set + +- [#229](https://github.com/nylas/nylas/pull/229) [`7090e66`](https://github.com/nylas/nylas/commit/7090e66b02024457dc2fa709665634f2fc995e48) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed passing configurationId as prop not taking to edit page issue + +- [#223](https://github.com/nylas/nylas/pull/223) [`3051ca1`](https://github.com/nylas/nylas/commit/3051ca1a1529910bc8bd0a0655df386dbe900368) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added toggle switch component to the design system + +- [#305](https://github.com/nylas/nylas/pull/305) [`56fb61a`](https://github.com/nylas/nylas/commit/56fb61a82e8253d0e66db2856ea40495d5b925c6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the dropdown for add participants to filter the values based on the typed input value + +- [#205](https://github.com/nylas/nylas/pull/205) [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Pass the cancel reason to cancelBooking endpoint + +- [#173](https://github.com/nylas/nylas/pull/173) [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Fix: components built using enableimportinjection was causing our build files to explode, resulting in slower load times for our web-components using unpkg. + +- [#203](https://github.com/nylas/nylas/pull/203) [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Renamed nylas-location-component to nylas-event-location for consistency across event info components + +- [#346](https://github.com/nylas/nylas/pull/346) [`aa8aaa0`](https://github.com/nylas/nylas/commit/aa8aaa041a33317a1edfa98ed9d8a14b36cad265) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support to adjust the height of the scheduler editor via shadow parts + +- [#303](https://github.com/nylas/nylas/pull/303) [`d22b170`](https://github.com/nylas/nylas/commit/d22b1703a35503d3d9571a2ff74ad5d04f775eb8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Expose missing shadow parts for scheduling components + +- [#295](https://github.com/nylas/nylas/pull/295) [`35767de`](https://github.com/nylas/nylas/commit/35767de956374d135b42ed21035b25c4a98cebca) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed smashing Book now button and cancel button submitting multiple requests + +- [#242](https://github.com/nylas/nylas/pull/242) [`2cc7b34`](https://github.com/nylas/nylas/commit/2cc7b34712bdce1b4495b0725c61cbda2de77879) Thanks [@b3ndoi](https://github.com/b3ndoi)! - Added same provider and cross provider conferencing + +- [#327](https://github.com/nylas/nylas/pull/327) [`75d87ed`](https://github.com/nylas/nylas/commit/75d87ed64dc1c87edf7e97cdf2e20521730c93fb) Thanks [@gudsson](https://github.com/gudsson)! - [Scheduling] add watcher for themeConfig that applies theme changes + +- [#325](https://github.com/nylas/nylas/pull/325) [`2b556e7`](https://github.com/nylas/nylas/commit/2b556e7e58713186f2e1677d2694c1d05bb7c998) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Send selected language to the API on booking and rescheduling endpoints + +- [#222](https://github.com/nylas/nylas/pull/222) [`8fc44de`](https://github.com/nylas/nylas/commit/8fc44de8182528e2cf98d43d4fc611383d226332) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Scheduling component updated to conditionally render guests, rescheduling and cancellation options + +- [#197](https://github.com/nylas/nylas/pull/197) [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a default action to the 'X' button in the scheduler editor that logs out the user + +- [#195](https://github.com/nylas/nylas/pull/195) [`416c649`](https://github.com/nylas/nylas/commit/416c6491d77d4605e939a1ee0295294c5aab505c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-date-picker] Add event title and duration to the scheduling page + +- [#319](https://github.com/nylas/nylas/pull/319) [`9c4cff9`](https://github.com/nylas/nylas/commit/9c4cff991dc86c3185da5a00c47cbb7649a26268) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the buffer time issue where 0 option was not selectable + +- [#245](https://github.com/nylas/nylas/pull/245) [`b6420aa`](https://github.com/nylas/nylas/commit/b6420aa7bc440e01ddf5088e8ce8807532ff95f0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [scheduler-editor] Added a participants tab to add and manage open hours for additional participants in a configuration. Updated availability tab to set the default open hours of the configurations and manage availability calendars for additional participants. + +- [#108](https://github.com/nylas/nylas/pull/108) [`04ed6c4`](https://github.com/nylas/nylas/commit/04ed6c421185c2b89271de9eeb21c75a29bc0f03) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-scheduling] Renamed the nylas-scheduler component to nylas-scheduling. + +- [#284](https://github.com/nylas/nylas/pull/284) [`9229aae`](https://github.com/nylas/nylas/commit/9229aae4ecfad011aed77906fcc1c1eb3ef9d7b5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a way to choose the type of booking config being created in the express(create) flow via scheduler editor + +- [#293](https://github.com/nylas/nylas/pull/293) [`c7afb40`](https://github.com/nylas/nylas/commit/c7afb40c20e5a6bd777cbe63f55a4653e591aaf0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Manual confirmation flow for confirming and rejecting the booking by the organizer + +- [#306](https://github.com/nylas/nylas/pull/306) [`d7c456b`](https://github.com/nylas/nylas/commit/d7c456b6e322c1c17f4f4918a695016fc949ce8a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Inherit the css variables from the parent component (nylas-scheduling). This fixes the issue with themeConfig prop not being applied to the child components in the scheduling page. + +- [#202](https://github.com/nylas/nylas/pull/202) [`acb24a6`](https://github.com/nylas/nylas/commit/acb24a6fe15201fd558138ad009664bf8f0d450e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added debug logs and warnings if required props and/or slots are missing + +- [#301](https://github.com/nylas/nylas/pull/301) [`7b4c89c`](https://github.com/nylas/nylas/commit/7b4c89ce9fd2f1aac82648b10f3f9500d3bd43fd) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Hide 'Go back' button if eventInfo is not available + fix some eventOverrides not being triggered for scheduling page + +- [#230](https://github.com/nylas/nylas/pull/230) [`1b80fa6`](https://github.com/nylas/nylas/commit/1b80fa692a0e1bb31278968cd8e816dbf8fbfafc) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [editor] Renamed `additional_guests_hidden` field to `hide_additional_guests` for consistency in naming + +- [#336](https://github.com/nylas/nylas/pull/336) [`8376d63`](https://github.com/nylas/nylas/commit/8376d63661ef53ca90f5246cfb6995e4e569b85b) Thanks [@gudsson](https://github.com/gudsson)! - Updated the readmes + +- [#211](https://github.com/nylas/nylas/pull/211) [`ec92421`](https://github.com/nylas/nylas/commit/ec92421938df2862864619f466a13f7fdf11e6a0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Time slot interval preference component added to the scheduler editor + +- [#281](https://github.com/nylas/nylas/pull/281) [`d8b5d18`](https://github.com/nylas/nylas/commit/d8b5d1836547324f4031e1d8acdb1ad23e34325b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for round robin scheduling + +- [#321](https://github.com/nylas/nylas/pull/321) [`a61660c`](https://github.com/nylas/nylas/commit/a61660c4480b1b7c803df78c45abde03e96a38d9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Exposed a prop localization for overriding default localization and/or customizing labels + +- [#291](https://github.com/nylas/nylas/pull/291) [`1902f25`](https://github.com/nylas/nylas/commit/1902f25df5e54c3f4f29e0e8705584772f1643a1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed adding participants by typing in returning an error and added user-friendly error message if using round robin config and typing in additional participant + +- [#83](https://github.com/nylas/nylas/pull/83) [`ad7de37`](https://github.com/nylas/nylas/commit/ad7de37f496cad2f808b9467e08de36be9f63e7c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Auto scroll to the input value on focus if the dropdown is open + +- [#282](https://github.com/nylas/nylas/pull/282) [`2edc349`](https://github.com/nylas/nylas/commit/2edc34914f15f3a60a87789b500d9de76b4dd372) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed additional fields on update and save returning error while booking an event + +- [#226](https://github.com/nylas/nylas/pull/226) [`b1c96fd`](https://github.com/nylas/nylas/commit/b1c96fd9fe008f95f06e53bc9d84036bd1ffb742) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Pass additional fields from the custom booking form to the booking endpoint in the scheduling component + +- [#216](https://github.com/nylas/nylas/pull/216) [`d36bf9a`](https://github.com/nylas/nylas/commit/d36bf9a4aeff6a341650ddaa97097831e43c84a5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] fixed booking ref not working with require session auth set to true + +- [#316](https://github.com/nylas/nylas/pull/316) [`e2b3b1f`](https://github.com/nylas/nylas/commit/e2b3b1f0dfa66eebd7871fd2952ee9ceb17f6491) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for slug and clientId combo to the scheduling component + +- [#208](https://github.com/nylas/nylas/pull/208) [`b499224`](https://github.com/nylas/nylas/commit/b49922410bded720f3fc61a19b315fd1bfe98d55) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added nylas-min-booking-notice component + +- [#221](https://github.com/nylas/nylas/pull/221) [`e338309`](https://github.com/nylas/nylas/commit/e3383095ad79912115487c711a5b310f3441df6b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed wrong date shown in the timeslot picker + +- [#205](https://github.com/nylas/nylas/pull/205) [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [ui] Scheduling page mobile style tweaks + +- [#123](https://github.com/nylas/nylas/pull/123) [`42673bd`](https://github.com/nylas/nylas/commit/42673bd1a6bc9b7266468f5dcb5b2ea65880aaa6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Support scheduling for public configs through scheduling component + +- [#213](https://github.com/nylas/nylas/pull/213) [`8679650`](https://github.com/nylas/nylas/commit/86796500b03d672f027b4179fd27393d806437c1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Editor: Added customize booking setting to set hide_additional_guests, hide_cancellation_options and hide_rescheduling_options + +- [#240](https://github.com/nylas/nylas/pull/240) [`4a7d72d`](https://github.com/nylas/nylas/commit/4a7d72d9be97d305056f779e804f1eced61fc037) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed creation on config through Scheduler editor not working + +- [#203](https://github.com/nylas/nylas/pull/203) [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Support bookingRef for scheduling component + +- Updated dependencies [[`21e6790`](https://github.com/nylas/nylas/commit/21e6790d8650a0921f6992b067cc692a8c62e2e1), [`8ada81c`](https://github.com/nylas/nylas/commit/8ada81c95529ce4c78b8ac2a72e46b0ddafacf1d), [`4acfc28`](https://github.com/nylas/nylas/commit/4acfc28de2c24f657736e3141b8ecb8edaee6dab), [`1072a2f`](https://github.com/nylas/nylas/commit/1072a2fe0eb26851f8eab8046d9ef27a842096ce), [`f2d3f88`](https://github.com/nylas/nylas/commit/f2d3f885db77fe93d11a26375c8070d4f212309c), [`5542ab3`](https://github.com/nylas/nylas/commit/5542ab3ebf2b4acbaac9103b36267219d6960c9a), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`cbb7b58`](https://github.com/nylas/nylas/commit/cbb7b58cf117b7d170a32b02428084f7a7f64b38), [`d907fb6`](https://github.com/nylas/nylas/commit/d907fb6fa5a4c635aa451ba8db65e888c5a81346), [`da23410`](https://github.com/nylas/nylas/commit/da234103763b4842479c9240c97a07d5bca22fca), [`47fb683`](https://github.com/nylas/nylas/commit/47fb683fd1452eebdf3f89f0dfa93634be3db618), [`edefe90`](https://github.com/nylas/nylas/commit/edefe908ec147c4190ee609dbe4e2972c613fb70), [`5ccd04d`](https://github.com/nylas/nylas/commit/5ccd04dcf91f3a53df3118ffd933604a0fa7eb9e), [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d), [`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`a82b7be`](https://github.com/nylas/nylas/commit/a82b7bee136c39cd180f31b1942b49f6b3ac4a7f), [`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`2a62c27`](https://github.com/nylas/nylas/commit/2a62c275684877c71d24642c60b68caaa3c56213), [`84d2b21`](https://github.com/nylas/nylas/commit/84d2b21a70d728d7431bc33ab7289885f540c000), [`fa6d747`](https://github.com/nylas/nylas/commit/fa6d747881da38c7a34f72a0822e3d065d11a524), [`7ae32d3`](https://github.com/nylas/nylas/commit/7ae32d333106a1d8f7b826480a9665cc3a282828), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`929044c`](https://github.com/nylas/nylas/commit/929044c985ae6b4a6b940137a7ae038ef8801f3c), [`4a720b9`](https://github.com/nylas/nylas/commit/4a720b91fe0fbe1453e550d61924e2c94ce37121), [`0628791`](https://github.com/nylas/nylas/commit/0628791825454967a2fcbb1ac2dd4525a1a56002), [`0a57b53`](https://github.com/nylas/nylas/commit/0a57b532ecaffbc9e2598e44f4b856cb6027b7a0), [`4607e3e`](https://github.com/nylas/nylas/commit/4607e3e999eed77e04c55a6c832a84607ea4f45b), [`c82ac58`](https://github.com/nylas/nylas/commit/c82ac581830982c95be13a1b8ce713aec03c180a), [`ea838bc`](https://github.com/nylas/nylas/commit/ea838bcefe4478608d61e069b171fb854a3518ba), [`cec6c13`](https://github.com/nylas/nylas/commit/cec6c13be67be8d04013175a5df899a66a178d5a), [`816226d`](https://github.com/nylas/nylas/commit/816226d0a834d4e9a97988df4b9beb8c977c3f96), [`7090e66`](https://github.com/nylas/nylas/commit/7090e66b02024457dc2fa709665634f2fc995e48), [`3051ca1`](https://github.com/nylas/nylas/commit/3051ca1a1529910bc8bd0a0655df386dbe900368), [`8ef8bed`](https://github.com/nylas/nylas/commit/8ef8bed63b0b387c4cfe9508d32b5533dcf19e95), [`56fb61a`](https://github.com/nylas/nylas/commit/56fb61a82e8253d0e66db2856ea40495d5b925c6), [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770), [`8c3aada`](https://github.com/nylas/nylas/commit/8c3aadae0792893adc06f0fa74b72534853b077b), [`97778be`](https://github.com/nylas/nylas/commit/97778bedb03c6135af4ac649687e7ccbee111e63), [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8), [`acb24a6`](https://github.com/nylas/nylas/commit/acb24a6fe15201fd558138ad009664bf8f0d450e), [`aa8aaa0`](https://github.com/nylas/nylas/commit/aa8aaa041a33317a1edfa98ed9d8a14b36cad265), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`d22b170`](https://github.com/nylas/nylas/commit/d22b1703a35503d3d9571a2ff74ad5d04f775eb8), [`35767de`](https://github.com/nylas/nylas/commit/35767de956374d135b42ed21035b25c4a98cebca), [`2cc7b34`](https://github.com/nylas/nylas/commit/2cc7b34712bdce1b4495b0725c61cbda2de77879), [`ede0b2c`](https://github.com/nylas/nylas/commit/ede0b2c54968796d15fb43ea116706a0a3a6e7fc), [`75d87ed`](https://github.com/nylas/nylas/commit/75d87ed64dc1c87edf7e97cdf2e20521730c93fb), [`bebb0d6`](https://github.com/nylas/nylas/commit/bebb0d65b9750fa9ff73ed45267f45e1c9d683b3), [`436c634`](https://github.com/nylas/nylas/commit/436c63449488024649e41a9fbdc58736db089ce2), [`c4441b5`](https://github.com/nylas/nylas/commit/c4441b599331ac768a5ab3387336ff68e20f8007), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`cd5670d`](https://github.com/nylas/nylas/commit/cd5670de495fcb8491d2208a579081f5de2ee512), [`2b556e7`](https://github.com/nylas/nylas/commit/2b556e7e58713186f2e1677d2694c1d05bb7c998), [`8fc44de`](https://github.com/nylas/nylas/commit/8fc44de8182528e2cf98d43d4fc611383d226332), [`13a295f`](https://github.com/nylas/nylas/commit/13a295fd7b8ca3759a5db903788a5347315b39b1), [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`3cc5fba`](https://github.com/nylas/nylas/commit/3cc5fba4de3d3372a6fd9632d5a83837930778d2), [`416c649`](https://github.com/nylas/nylas/commit/416c6491d77d4605e939a1ee0295294c5aab505c), [`b467dae`](https://github.com/nylas/nylas/commit/b467dae30f4bcb4431d91a1b307d6ca542fe543f), [`e483f58`](https://github.com/nylas/nylas/commit/e483f58ee5c5c5b698501de12b4185726cf4d091), [`9c4cff9`](https://github.com/nylas/nylas/commit/9c4cff991dc86c3185da5a00c47cbb7649a26268), [`74e2330`](https://github.com/nylas/nylas/commit/74e233033bc7a522d1db75b4136cc77fbc566031), [`b6420aa`](https://github.com/nylas/nylas/commit/b6420aa7bc440e01ddf5088e8ce8807532ff95f0), [`04ed6c4`](https://github.com/nylas/nylas/commit/04ed6c421185c2b89271de9eeb21c75a29bc0f03), [`9229aae`](https://github.com/nylas/nylas/commit/9229aae4ecfad011aed77906fcc1c1eb3ef9d7b5), [`c7afb40`](https://github.com/nylas/nylas/commit/c7afb40c20e5a6bd777cbe63f55a4653e591aaf0), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`e1c674a`](https://github.com/nylas/nylas/commit/e1c674aeed69205f7a209cd390d09284caada581), [`d7c456b`](https://github.com/nylas/nylas/commit/d7c456b6e322c1c17f4f4918a695016fc949ce8a), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`6619567`](https://github.com/nylas/nylas/commit/6619567f51be058cc033ca7a0d272d8a69a24fae), [`7b4c89c`](https://github.com/nylas/nylas/commit/7b4c89ce9fd2f1aac82648b10f3f9500d3bd43fd), [`1b80fa6`](https://github.com/nylas/nylas/commit/1b80fa692a0e1bb31278968cd8e816dbf8fbfafc), [`8376d63`](https://github.com/nylas/nylas/commit/8376d63661ef53ca90f5246cfb6995e4e569b85b), [`7104a8b`](https://github.com/nylas/nylas/commit/7104a8bfccc8431688b1a0abb8e0345f81ef25e5), [`ec92421`](https://github.com/nylas/nylas/commit/ec92421938df2862864619f466a13f7fdf11e6a0), [`d8b5d18`](https://github.com/nylas/nylas/commit/d8b5d1836547324f4031e1d8acdb1ad23e34325b), [`6aaf284`](https://github.com/nylas/nylas/commit/6aaf284b61ef5107cbe1288042ba49583d70d7bf), [`a61660c`](https://github.com/nylas/nylas/commit/a61660c4480b1b7c803df78c45abde03e96a38d9), [`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`1902f25`](https://github.com/nylas/nylas/commit/1902f25df5e54c3f4f29e0e8705584772f1643a1), [`2edc349`](https://github.com/nylas/nylas/commit/2edc34914f15f3a60a87789b500d9de76b4dd372), [`b1c96fd`](https://github.com/nylas/nylas/commit/b1c96fd9fe008f95f06e53bc9d84036bd1ffb742), [`d36bf9a`](https://github.com/nylas/nylas/commit/d36bf9a4aeff6a341650ddaa97097831e43c84a5), [`e2b3b1f`](https://github.com/nylas/nylas/commit/e2b3b1f0dfa66eebd7871fd2952ee9ceb17f6491), [`b499224`](https://github.com/nylas/nylas/commit/b49922410bded720f3fc61a19b315fd1bfe98d55), [`3b7a6bc`](https://github.com/nylas/nylas/commit/3b7a6bcd7efcfc658dd56caa4b096e793f02d11f), [`7ae32d3`](https://github.com/nylas/nylas/commit/7ae32d333106a1d8f7b826480a9665cc3a282828), [`3b7e28d`](https://github.com/nylas/nylas/commit/3b7e28d6f1c08d770e43ad60113b205e8617ef80), [`97778be`](https://github.com/nylas/nylas/commit/97778bedb03c6135af4ac649687e7ccbee111e63), [`7808063`](https://github.com/nylas/nylas/commit/7808063be08b0382b59d820ac617ee7ad3c4753f), [`e338309`](https://github.com/nylas/nylas/commit/e3383095ad79912115487c711a5b310f3441df6b), [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770), [`42673bd`](https://github.com/nylas/nylas/commit/42673bd1a6bc9b7266468f5dcb5b2ea65880aaa6), [`2b57ad1`](https://github.com/nylas/nylas/commit/2b57ad1b4cdc6d6068482a0b60335ecb94e0002c), [`9081878`](https://github.com/nylas/nylas/commit/90818781f530c239164716c4e1f0035353c8dce1), [`8679650`](https://github.com/nylas/nylas/commit/86796500b03d672f027b4179fd27393d806437c1), [`4a7d72d`](https://github.com/nylas/nylas/commit/4a7d72d9be97d305056f779e804f1eced61fc037), [`87c5ed3`](https://github.com/nylas/nylas/commit/87c5ed3e8d51688e7793004e91760e1188306bc3), [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8)]: + - @nylas/web-elements@1.1.0 + - @nylas/core@1.1.0 + +## 1.1.0-canary.25 + +### Patch Changes + +- [#346](https://github.com/nylas/nylas/pull/346) [`aa8aaa0`](https://github.com/nylas/nylas/commit/aa8aaa041a33317a1edfa98ed9d8a14b36cad265) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support to adjust the height of the scheduler editor via shadow parts + +- [#336](https://github.com/nylas/nylas/pull/336) [`8376d63`](https://github.com/nylas/nylas/commit/8376d63661ef53ca90f5246cfb6995e4e569b85b) Thanks [@gudsson](https://github.com/gudsson)! - Updated the readmes + +- Updated dependencies [[`aa8aaa0`](https://github.com/nylas/nylas/commit/aa8aaa041a33317a1edfa98ed9d8a14b36cad265), [`8376d63`](https://github.com/nylas/nylas/commit/8376d63661ef53ca90f5246cfb6995e4e569b85b)]: + - @nylas/web-elements@1.1.0-canary.25 + +## 1.1.0-canary.24 + +### Patch Changes + +- [#307](https://github.com/nylas/nylas/pull/307) [`d907fb6`](https://github.com/nylas/nylas/commit/d907fb6fa5a4c635aa451ba8db65e888c5a81346) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Renamed nylas-booking-type component to nylas-scheduling-method for better clarity based on it's function + +- [#308](https://github.com/nylas/nylas/pull/308) [`fa6d747`](https://github.com/nylas/nylas/commit/fa6d747881da38c7a34f72a0822e3d065d11a524) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a read only state sheduling method component to booking options in the editor to identify the scheduling method for the selected config + +- [#305](https://github.com/nylas/nylas/pull/305) [`56fb61a`](https://github.com/nylas/nylas/commit/56fb61a82e8253d0e66db2856ea40495d5b925c6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the dropdown for add participants to filter the values based on the typed input value + +- [#303](https://github.com/nylas/nylas/pull/303) [`d22b170`](https://github.com/nylas/nylas/commit/d22b1703a35503d3d9571a2ff74ad5d04f775eb8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Expose missing shadow parts for scheduling components + +- [#327](https://github.com/nylas/nylas/pull/327) [`75d87ed`](https://github.com/nylas/nylas/commit/75d87ed64dc1c87edf7e97cdf2e20521730c93fb) Thanks [@gudsson](https://github.com/gudsson)! - [Scheduling] add watcher for themeConfig that applies theme changes + +- [#325](https://github.com/nylas/nylas/pull/325) [`2b556e7`](https://github.com/nylas/nylas/commit/2b556e7e58713186f2e1677d2694c1d05bb7c998) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Send selected language to the API on booking and rescheduling endpoints + +- [#319](https://github.com/nylas/nylas/pull/319) [`9c4cff9`](https://github.com/nylas/nylas/commit/9c4cff991dc86c3185da5a00c47cbb7649a26268) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the buffer time issue where 0 option was not selectable + +- [#293](https://github.com/nylas/nylas/pull/293) [`c7afb40`](https://github.com/nylas/nylas/commit/c7afb40c20e5a6bd777cbe63f55a4653e591aaf0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Manual confirmation flow for confirming and rejecting the booking by the organizer + +- [#306](https://github.com/nylas/nylas/pull/306) [`d7c456b`](https://github.com/nylas/nylas/commit/d7c456b6e322c1c17f4f4918a695016fc949ce8a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Inherit the css variables from the parent component (nylas-scheduling). This fixes the issue with themeConfig prop not being applied to the child components in the scheduling page. + +- [#301](https://github.com/nylas/nylas/pull/301) [`7b4c89c`](https://github.com/nylas/nylas/commit/7b4c89ce9fd2f1aac82648b10f3f9500d3bd43fd) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Hide 'Go back' button if eventInfo is not available + fix some eventOverrides not being triggered for scheduling page + +- [#321](https://github.com/nylas/nylas/pull/321) [`a61660c`](https://github.com/nylas/nylas/commit/a61660c4480b1b7c803df78c45abde03e96a38d9) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Exposed a prop localization for overriding default localization and/or customizing labels + +- [#316](https://github.com/nylas/nylas/pull/316) [`e2b3b1f`](https://github.com/nylas/nylas/commit/e2b3b1f0dfa66eebd7871fd2952ee9ceb17f6491) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for slug and clientId combo to the scheduling component + +- Updated dependencies [[`d907fb6`](https://github.com/nylas/nylas/commit/d907fb6fa5a4c635aa451ba8db65e888c5a81346), [`fa6d747`](https://github.com/nylas/nylas/commit/fa6d747881da38c7a34f72a0822e3d065d11a524), [`56fb61a`](https://github.com/nylas/nylas/commit/56fb61a82e8253d0e66db2856ea40495d5b925c6), [`d22b170`](https://github.com/nylas/nylas/commit/d22b1703a35503d3d9571a2ff74ad5d04f775eb8), [`75d87ed`](https://github.com/nylas/nylas/commit/75d87ed64dc1c87edf7e97cdf2e20521730c93fb), [`2b556e7`](https://github.com/nylas/nylas/commit/2b556e7e58713186f2e1677d2694c1d05bb7c998), [`9c4cff9`](https://github.com/nylas/nylas/commit/9c4cff991dc86c3185da5a00c47cbb7649a26268), [`c7afb40`](https://github.com/nylas/nylas/commit/c7afb40c20e5a6bd777cbe63f55a4653e591aaf0), [`d7c456b`](https://github.com/nylas/nylas/commit/d7c456b6e322c1c17f4f4918a695016fc949ce8a), [`7b4c89c`](https://github.com/nylas/nylas/commit/7b4c89ce9fd2f1aac82648b10f3f9500d3bd43fd), [`a61660c`](https://github.com/nylas/nylas/commit/a61660c4480b1b7c803df78c45abde03e96a38d9), [`e2b3b1f`](https://github.com/nylas/nylas/commit/e2b3b1f0dfa66eebd7871fd2952ee9ceb17f6491)]: + - @nylas/web-elements@1.1.0-canary.24 + - @nylas/core@1.1.0-canary.10 + +## 1.1.0-canary.23 + +### Patch Changes + +- [#299](https://github.com/nylas/nylas/pull/299) [`21e6790`](https://github.com/nylas/nylas/commit/21e6790d8650a0921f6992b067cc692a8c62e2e1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added communications tab to set up automatic communications for your events + +- [#292](https://github.com/nylas/nylas/pull/292) [`edefe90`](https://github.com/nylas/nylas/commit/edefe908ec147c4190ee609dbe4e2972c613fb70) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed same provider conferencing option not showing up in create config flow + +- [#295](https://github.com/nylas/nylas/pull/295) [`35767de`](https://github.com/nylas/nylas/commit/35767de956374d135b42ed21035b25c4a98cebca) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed smashing Book now button and cancel button submitting multiple requests + +- [#284](https://github.com/nylas/nylas/pull/284) [`9229aae`](https://github.com/nylas/nylas/commit/9229aae4ecfad011aed77906fcc1c1eb3ef9d7b5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a way to choose the type of booking config being created in the express(create) flow via scheduler editor + +- [#291](https://github.com/nylas/nylas/pull/291) [`1902f25`](https://github.com/nylas/nylas/commit/1902f25df5e54c3f4f29e0e8705584772f1643a1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed adding participants by typing in returning an error and added user-friendly error message if using round robin config and typing in additional participant + +- Updated dependencies [[`21e6790`](https://github.com/nylas/nylas/commit/21e6790d8650a0921f6992b067cc692a8c62e2e1), [`edefe90`](https://github.com/nylas/nylas/commit/edefe908ec147c4190ee609dbe4e2972c613fb70), [`35767de`](https://github.com/nylas/nylas/commit/35767de956374d135b42ed21035b25c4a98cebca), [`9229aae`](https://github.com/nylas/nylas/commit/9229aae4ecfad011aed77906fcc1c1eb3ef9d7b5), [`1902f25`](https://github.com/nylas/nylas/commit/1902f25df5e54c3f4f29e0e8705584772f1643a1)]: + - @nylas/web-elements@1.1.0-canary.23 + - @nylas/core@1.1.0-canary.9 + +## 1.1.0-canary.22 + +### Patch Changes + +- [#285](https://github.com/nylas/nylas/pull/285) [`cbb7b58`](https://github.com/nylas/nylas/commit/cbb7b58cf117b7d170a32b02428084f7a7f64b38) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Deprecated the slot custom-booking-form in nylas-booking-form component in favor of using the additional fields set via the editor config + +- [#282](https://github.com/nylas/nylas/pull/282) [`2edc349`](https://github.com/nylas/nylas/commit/2edc34914f15f3a60a87789b500d9de76b4dd372) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed additional fields on update and save returning error while booking an event + +- Updated dependencies [[`cbb7b58`](https://github.com/nylas/nylas/commit/cbb7b58cf117b7d170a32b02428084f7a7f64b38), [`2edc349`](https://github.com/nylas/nylas/commit/2edc34914f15f3a60a87789b500d9de76b4dd372)]: + - @nylas/web-elements@1.1.0-canary.22 + +## 1.1.0-canary.21 + +### Patch Changes + +- [#281](https://github.com/nylas/nylas/pull/281) [`d8b5d18`](https://github.com/nylas/nylas/commit/d8b5d1836547324f4031e1d8acdb1ad23e34325b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added support for round robin scheduling + +- Updated dependencies [[`d8b5d18`](https://github.com/nylas/nylas/commit/d8b5d1836547324f4031e1d8acdb1ad23e34325b)]: + - @nylas/web-elements@1.1.0-canary.21 + - @nylas/core@1.1.0-canary.8 + +## 1.1.0-canary.20 + +### Patch Changes + +- [#266](https://github.com/nylas/nylas/pull/266) [`da23410`](https://github.com/nylas/nylas/commit/da234103763b4842479c9240c97a07d5bca22fca) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed participant availability not updating the list on add/remove participants reactively + +- [#269](https://github.com/nylas/nylas/pull/269) [`2a62c27`](https://github.com/nylas/nylas/commit/2a62c275684877c71d24642c60b68caaa3c56213) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed the package install issue with workspace + +- Updated dependencies [[`da23410`](https://github.com/nylas/nylas/commit/da234103763b4842479c9240c97a07d5bca22fca), [`2a62c27`](https://github.com/nylas/nylas/commit/2a62c275684877c71d24642c60b68caaa3c56213)]: + - @nylas/web-elements@1.1.0-canary.20 + - @nylas/core@1.1.0-canary.7 + +## 1.1.0-canary.19 + +### Patch Changes + +- [#261](https://github.com/nylas/nylas/pull/261) [`0a57b53`](https://github.com/nylas/nylas/commit/0a57b532ecaffbc9e2598e44f4b856cb6027b7a0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a booking form tab to set additional fields in the config. These additional fields will be displayed in the scheduling page booking form to the end user booking an event. + +- [#242](https://github.com/nylas/nylas/pull/242) [`2cc7b34`](https://github.com/nylas/nylas/commit/2cc7b34712bdce1b4495b0725c61cbda2de77879) Thanks [@b3ndoi](https://github.com/b3ndoi)! - Added same provider and cross provider conferencing + +- [#245](https://github.com/nylas/nylas/pull/245) [`b6420aa`](https://github.com/nylas/nylas/commit/b6420aa7bc440e01ddf5088e8ce8807532ff95f0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [scheduler-editor] Added a participants tab to add and manage open hours for additional participants in a configuration. Updated availability tab to set the default open hours of the configurations and manage availability calendars for additional participants. + +- Updated dependencies [[`0a57b53`](https://github.com/nylas/nylas/commit/0a57b532ecaffbc9e2598e44f4b856cb6027b7a0), [`2cc7b34`](https://github.com/nylas/nylas/commit/2cc7b34712bdce1b4495b0725c61cbda2de77879), [`b6420aa`](https://github.com/nylas/nylas/commit/b6420aa7bc440e01ddf5088e8ce8807532ff95f0)]: + - @nylas/web-elements@1.1.0-canary.19 + - @nylas/core@1.1.0-canary.6 + +## 1.1.0-canary.18 + +### Patch Changes + +- [#243](https://github.com/nylas/nylas/pull/243) [`816226d`](https://github.com/nylas/nylas/commit/816226d0a834d4e9a97988df4b9beb8c977c3f96) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Only show scheduling page title if organizer name is set + +- [#240](https://github.com/nylas/nylas/pull/240) [`4a7d72d`](https://github.com/nylas/nylas/commit/4a7d72d9be97d305056f779e804f1eced61fc037) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed creation on config through Scheduler editor not working + +- Updated dependencies [[`816226d`](https://github.com/nylas/nylas/commit/816226d0a834d4e9a97988df4b9beb8c977c3f96), [`4a7d72d`](https://github.com/nylas/nylas/commit/4a7d72d9be97d305056f779e804f1eced61fc037)]: + - @nylas/web-elements@1.1.0-canary.18 + +## 1.1.0-canary.17 + +### Patch Changes + +- [#238](https://github.com/nylas/nylas/pull/238) [`84d2b21`](https://github.com/nylas/nylas/commit/84d2b21a70d728d7431bc33ab7289885f540c000) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed editor not able to save due to participants tab + +- Updated dependencies [[`84d2b21`](https://github.com/nylas/nylas/commit/84d2b21a70d728d7431bc33ab7289885f540c000)]: + - @nylas/web-elements@1.1.0-canary.17 + +## 1.1.0-canary.16 + +### Patch Changes + +- [#230](https://github.com/nylas/nylas/pull/230) [`1b80fa6`](https://github.com/nylas/nylas/commit/1b80fa692a0e1bb31278968cd8e816dbf8fbfafc) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [editor] Renamed `additional_guests_hidden` field to `hide_additional_guests` for consistency in naming + +- Updated dependencies [[`1b80fa6`](https://github.com/nylas/nylas/commit/1b80fa692a0e1bb31278968cd8e816dbf8fbfafc)]: + - @nylas/web-elements@1.1.0-canary.16 + - @nylas/core@1.1.0-canary.5 + +## 1.1.0-canary.15 + +### Patch Changes + +- [#220](https://github.com/nylas/nylas/pull/220) [`c82ac58`](https://github.com/nylas/nylas/commit/c82ac581830982c95be13a1b8ce713aec03c180a) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Updated dropdown component to be usable in the booking form for scheduling component + +- [#209](https://github.com/nylas/nylas/pull/209) [`ea838bc`](https://github.com/nylas/nylas/commit/ea838bcefe4478608d61e069b171fb854a3518ba) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added nylas-cancellation-policy component + +- [#229](https://github.com/nylas/nylas/pull/229) [`7090e66`](https://github.com/nylas/nylas/commit/7090e66b02024457dc2fa709665634f2fc995e48) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Fixed passing configurationId as prop not taking to edit page issue + +- [#223](https://github.com/nylas/nylas/pull/223) [`3051ca1`](https://github.com/nylas/nylas/commit/3051ca1a1529910bc8bd0a0655df386dbe900368) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added toggle switch component to the design system + +- [#222](https://github.com/nylas/nylas/pull/222) [`8fc44de`](https://github.com/nylas/nylas/commit/8fc44de8182528e2cf98d43d4fc611383d226332) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Scheduling component updated to conditionally render guests, rescheduling and cancellation options + +- [#211](https://github.com/nylas/nylas/pull/211) [`ec92421`](https://github.com/nylas/nylas/commit/ec92421938df2862864619f466a13f7fdf11e6a0) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Time slot interval preference component added to the scheduler editor + +- [#226](https://github.com/nylas/nylas/pull/226) [`b1c96fd`](https://github.com/nylas/nylas/commit/b1c96fd9fe008f95f06e53bc9d84036bd1ffb742) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Pass additional fields from the custom booking form to the booking endpoint in the scheduling component + +- [#216](https://github.com/nylas/nylas/pull/216) [`d36bf9a`](https://github.com/nylas/nylas/commit/d36bf9a4aeff6a341650ddaa97097831e43c84a5) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] fixed booking ref not working with require session auth set to true + +- [#208](https://github.com/nylas/nylas/pull/208) [`b499224`](https://github.com/nylas/nylas/commit/b49922410bded720f3fc61a19b315fd1bfe98d55) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added nylas-min-booking-notice component + +- [#221](https://github.com/nylas/nylas/pull/221) [`e338309`](https://github.com/nylas/nylas/commit/e3383095ad79912115487c711a5b310f3441df6b) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [bug-fix] Fixed wrong date shown in the timeslot picker + +- [#213](https://github.com/nylas/nylas/pull/213) [`8679650`](https://github.com/nylas/nylas/commit/86796500b03d672f027b4179fd27393d806437c1) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Editor: Added customize booking setting to set additional_guests_hidden, hide_cancellation_options and hide_rescheduling_options + +- Updated dependencies [[`c82ac58`](https://github.com/nylas/nylas/commit/c82ac581830982c95be13a1b8ce713aec03c180a), [`ea838bc`](https://github.com/nylas/nylas/commit/ea838bcefe4478608d61e069b171fb854a3518ba), [`7090e66`](https://github.com/nylas/nylas/commit/7090e66b02024457dc2fa709665634f2fc995e48), [`3051ca1`](https://github.com/nylas/nylas/commit/3051ca1a1529910bc8bd0a0655df386dbe900368), [`8fc44de`](https://github.com/nylas/nylas/commit/8fc44de8182528e2cf98d43d4fc611383d226332), [`ec92421`](https://github.com/nylas/nylas/commit/ec92421938df2862864619f466a13f7fdf11e6a0), [`b1c96fd`](https://github.com/nylas/nylas/commit/b1c96fd9fe008f95f06e53bc9d84036bd1ffb742), [`d36bf9a`](https://github.com/nylas/nylas/commit/d36bf9a4aeff6a341650ddaa97097831e43c84a5), [`b499224`](https://github.com/nylas/nylas/commit/b49922410bded720f3fc61a19b315fd1bfe98d55), [`e338309`](https://github.com/nylas/nylas/commit/e3383095ad79912115487c711a5b310f3441df6b), [`8679650`](https://github.com/nylas/nylas/commit/86796500b03d672f027b4179fd27393d806437c1)]: + - @nylas/web-elements@1.1.0-canary.15 + - @nylas/core@1.1.0-canary.4 + +## 1.1.0-canary.14 + +### Patch Changes + +- [#205](https://github.com/nylas/nylas/pull/205) [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Pass the cancel reason to cancelBooking endpoint + +- [#205](https://github.com/nylas/nylas/pull/205) [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [ui] Scheduling page mobile style tweaks + +- Updated dependencies [[`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770), [`d0fc3f5`](https://github.com/nylas/nylas/commit/d0fc3f5f9ffa85527a30cb4590efb55f6e342770)]: + - @nylas/web-elements@1.1.0-canary.14 + +## 1.1.0-canary.13 + +### Patch Changes + +- [#197](https://github.com/nylas/nylas/pull/197) [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-event-duration] Update input to dropdown for quick selection with an input to select custom duration + +- [#203](https://github.com/nylas/nylas/pull/203) [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Renamed nylas-location-component to nylas-event-location for consistency across event info components + +- [#197](https://github.com/nylas/nylas/pull/197) [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added a default action to the 'X' button in the scheduler editor that logs out the user + +- [#195](https://github.com/nylas/nylas/pull/195) [`416c649`](https://github.com/nylas/nylas/commit/416c6491d77d4605e939a1ee0295294c5aab505c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-date-picker] Add event title and duration to the scheduling page + +- [#202](https://github.com/nylas/nylas/pull/202) [`acb24a6`](https://github.com/nylas/nylas/commit/acb24a6fe15201fd558138ad009664bf8f0d450e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Added debug logs and warnings if required props and/or slots are missing + +- [#203](https://github.com/nylas/nylas/pull/203) [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Support bookingRef for scheduling component + +- Updated dependencies [[`4acfc28`](https://github.com/nylas/nylas/commit/4acfc28de2c24f657736e3141b8ecb8edaee6dab), [`47fb683`](https://github.com/nylas/nylas/commit/47fb683fd1452eebdf3f89f0dfa93634be3db618), [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d), [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8), [`acb24a6`](https://github.com/nylas/nylas/commit/acb24a6fe15201fd558138ad009664bf8f0d450e), [`cd5670d`](https://github.com/nylas/nylas/commit/cd5670de495fcb8491d2208a579081f5de2ee512), [`13a295f`](https://github.com/nylas/nylas/commit/13a295fd7b8ca3759a5db903788a5347315b39b1), [`55705bc`](https://github.com/nylas/nylas/commit/55705bcba2220905c2d8b42eba4243f6fa34126d), [`416c649`](https://github.com/nylas/nylas/commit/416c6491d77d4605e939a1ee0295294c5aab505c), [`6aaf284`](https://github.com/nylas/nylas/commit/6aaf284b61ef5107cbe1288042ba49583d70d7bf), [`87c5ed3`](https://github.com/nylas/nylas/commit/87c5ed3e8d51688e7793004e91760e1188306bc3), [`a898ee3`](https://github.com/nylas/nylas/commit/a898ee3f5807f99dfb44c35bd8d51ddca9d551d8)]: + - @nylas/web-elements@1.1.0-canary.13 + +## 1.1.0-canary.12 + +### Patch Changes + +- Updated dependencies [[`8ada81c`](https://github.com/nylas/nylas/commit/8ada81c95529ce4c78b8ac2a72e46b0ddafacf1d), [`5542ab3`](https://github.com/nylas/nylas/commit/5542ab3ebf2b4acbaac9103b36267219d6960c9a), [`8c3aada`](https://github.com/nylas/nylas/commit/8c3aadae0792893adc06f0fa74b72534853b077b), [`ede0b2c`](https://github.com/nylas/nylas/commit/ede0b2c54968796d15fb43ea116706a0a3a6e7fc), [`436c634`](https://github.com/nylas/nylas/commit/436c63449488024649e41a9fbdc58736db089ce2)]: + - @nylas/web-elements@1.1.0-canary.12 + +## 1.1.0-canary.11 + +### Patch Changes + +- Updated dependencies [[`3b7a6bc`](https://github.com/nylas/nylas/commit/3b7a6bcd7efcfc658dd56caa4b096e793f02d11f), [`7808063`](https://github.com/nylas/nylas/commit/7808063be08b0382b59d820ac617ee7ad3c4753f), [`2b57ad1`](https://github.com/nylas/nylas/commit/2b57ad1b4cdc6d6068482a0b60335ecb94e0002c)]: + - @nylas/web-elements@1.1.0-canary.11 + +## 1.1.0-canary.10 + +### Patch Changes + +- [#177](https://github.com/nylas/nylas/pull/177) [`4a720b9`](https://github.com/nylas/nylas/commit/4a720b91fe0fbe1453e550d61924e2c94ce37121) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Revert enableImportInjection change + +- Updated dependencies [[`4a720b9`](https://github.com/nylas/nylas/commit/4a720b91fe0fbe1453e550d61924e2c94ce37121)]: + - @nylas/web-elements@1.1.0-canary.10 + +## 1.1.0-canary.9 + +### Patch Changes + +- [#173](https://github.com/nylas/nylas/pull/173) [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added stack trace output to the debug utility + +- [#173](https://github.com/nylas/nylas/pull/173) [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Fix: components built using enableimportinjection was causing our build files to explode, resulting in slower load times for our web-components using unpkg. + +- Updated dependencies [[`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`7ae32d3`](https://github.com/nylas/nylas/commit/7ae32d333106a1d8f7b826480a9665cc3a282828), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`3cc5fba`](https://github.com/nylas/nylas/commit/3cc5fba4de3d3372a6fd9632d5a83837930778d2), [`e483f58`](https://github.com/nylas/nylas/commit/e483f58ee5c5c5b698501de12b4185726cf4d091), [`62afae4`](https://github.com/nylas/nylas/commit/62afae4574d0a35431841d57e008a2a3dbdb8d7b), [`e1c674a`](https://github.com/nylas/nylas/commit/e1c674aeed69205f7a209cd390d09284caada581), [`8a2e964`](https://github.com/nylas/nylas/commit/8a2e964962ae05c199616dd62d378060e8de7a97), [`7ae32d3`](https://github.com/nylas/nylas/commit/7ae32d333106a1d8f7b826480a9665cc3a282828)]: + - @nylas/web-elements@1.1.0-canary.9 + - @nylas/core@1.1.0-canary.3 + +## 1.1.0-canary.8 + +### Patch Changes + +- Updated dependencies [[`1072a2f`](https://github.com/nylas/nylas/commit/1072a2fe0eb26851f8eab8046d9ef27a842096ce), [`a82b7be`](https://github.com/nylas/nylas/commit/a82b7bee136c39cd180f31b1942b49f6b3ac4a7f)]: + - @nylas/web-elements@1.1.0-canary.8 + +## 1.1.0-canary.7 + +### Patch Changes + +- Updated dependencies [[`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7), [`f079874`](https://github.com/nylas/nylas/commit/f079874250d6b726327651018b1add86f44aa7f7)]: + - @nylas/web-elements@1.1.0-canary.7 + +## 1.1.0-canary.6 + +### Patch Changes + +- Updated dependencies [[`97778be`](https://github.com/nylas/nylas/commit/97778bedb03c6135af4ac649687e7ccbee111e63), [`bebb0d6`](https://github.com/nylas/nylas/commit/bebb0d65b9750fa9ff73ed45267f45e1c9d683b3), [`6619567`](https://github.com/nylas/nylas/commit/6619567f51be058cc033ca7a0d272d8a69a24fae), [`97778be`](https://github.com/nylas/nylas/commit/97778bedb03c6135af4ac649687e7ccbee111e63), [`9081878`](https://github.com/nylas/nylas/commit/90818781f530c239164716c4e1f0035353c8dce1)]: + - @nylas/web-elements@1.1.0-canary.6 + - @nylas/core@1.1.0-canary.2 + +## 1.1.0-canary.5 + +### Minor Changes + +- [#149](https://github.com/nylas/nylas/pull/149) [`cec6c13`](https://github.com/nylas/nylas/commit/cec6c13be67be8d04013175a5df899a66a178d5a) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added a new [nylas-list-configurations] component that shows a list of configurations that can be edited or deleted. + +### Patch Changes + +- Updated dependencies [[`cec6c13`](https://github.com/nylas/nylas/commit/cec6c13be67be8d04013175a5df899a66a178d5a)]: + - @nylas/web-elements@1.1.0-canary.5 + +## 1.1.0-canary.4 + +### Patch Changes + +- Updated dependencies [[`0628791`](https://github.com/nylas/nylas/commit/0628791825454967a2fcbb1ac2dd4525a1a56002)]: + - @nylas/web-elements@1.1.0-canary.4 + +## 1.1.0-canary.3 + +### Minor Changes + +- [#145](https://github.com/nylas/nylas/pull/145) [`f2d3f88`](https://github.com/nylas/nylas/commit/f2d3f885db77fe93d11a26375c8070d4f212309c) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added the ability to login with the scheduler editor component + +- [#139](https://github.com/nylas/nylas/pull/139) [`b467dae`](https://github.com/nylas/nylas/commit/b467dae30f4bcb4431d91a1b307d6ca542fe543f) Thanks [@AaronDDM](https://github.com/AaronDDM)! - Added nylas/identity support for the nylas-scheduler-editor component + +### Patch Changes + +- [#127](https://github.com/nylas/nylas/pull/127) [`929044c`](https://github.com/nylas/nylas/commit/929044c985ae6b4a6b940137a7ae038ef8801f3c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Added nylasBranding prop to hide nylas branding + +- Updated dependencies [[`f2d3f88`](https://github.com/nylas/nylas/commit/f2d3f885db77fe93d11a26375c8070d4f212309c), [`929044c`](https://github.com/nylas/nylas/commit/929044c985ae6b4a6b940137a7ae038ef8801f3c), [`b467dae`](https://github.com/nylas/nylas/commit/b467dae30f4bcb4431d91a1b307d6ca542fe543f), [`3b7e28d`](https://github.com/nylas/nylas/commit/3b7e28d6f1c08d770e43ad60113b205e8617ef80)]: + - @nylas/web-elements@1.1.0-canary.3 + - @nylas/core@1.1.0-canary.1 + +## 1.0.2-canary.2 + +### Patch Changes + +- Updated dependencies [[`7104a8b`](https://github.com/nylas/nylas/commit/7104a8bfccc8431688b1a0abb8e0345f81ef25e5)]: + - @nylas/core@1.0.2-canary.0 + - @nylas/web-elements@1.0.2-canary.2 + +## 1.0.2-canary.1 + +### Patch Changes + +- [#124](https://github.com/nylas/nylas/pull/124) [`5ccd04d`](https://github.com/nylas/nylas/commit/5ccd04dcf91f3a53df3118ffd933604a0fa7eb9e) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] props renamed/deprecated + + - Remove `showThankYouPage` in favor of using `eventInfo` + - Remove `bookingFlow` in favor of using `rescheduleBookingId` + - Rename `cancelledEvent` to `cancelledEventInfo` for consistency + - Rename `defaultSchedulerStoreState` to `defaultSchedulerState` for better clarity + +- [#108](https://github.com/nylas/nylas/pull/108) [`04ed6c4`](https://github.com/nylas/nylas/commit/04ed6c421185c2b89271de9eeb21c75a29bc0f03) Thanks [@AaronDDM](https://github.com/AaronDDM)! - [nylas-scheduling] Renamed the nylas-scheduler component to nylas-scheduling. + +- [#123](https://github.com/nylas/nylas/pull/123) [`42673bd`](https://github.com/nylas/nylas/commit/42673bd1a6bc9b7266468f5dcb5b2ea65880aaa6) Thanks [@pooja169usp](https://github.com/pooja169usp)! - [nylas-scheduling] Support scheduling for public configs through scheduling component + +- Updated dependencies [[`5ccd04d`](https://github.com/nylas/nylas/commit/5ccd04dcf91f3a53df3118ffd933604a0fa7eb9e), [`4607e3e`](https://github.com/nylas/nylas/commit/4607e3e999eed77e04c55a6c832a84607ea4f45b), [`8ef8bed`](https://github.com/nylas/nylas/commit/8ef8bed63b0b387c4cfe9508d32b5533dcf19e95), [`74e2330`](https://github.com/nylas/nylas/commit/74e233033bc7a522d1db75b4136cc77fbc566031), [`04ed6c4`](https://github.com/nylas/nylas/commit/04ed6c421185c2b89271de9eeb21c75a29bc0f03), [`42673bd`](https://github.com/nylas/nylas/commit/42673bd1a6bc9b7266468f5dcb5b2ea65880aaa6)]: + - @nylas/web-elements@1.0.2-canary.1 + +## 1.0.2-canary.0 + +### Patch Changes + +- [#83](https://github.com/nylas/nylas/pull/83) [`ad7de37`](https://github.com/nylas/nylas/commit/ad7de37f496cad2f808b9467e08de36be9f63e7c) Thanks [@pooja169usp](https://github.com/pooja169usp)! - Auto scroll to the input value on focus if the dropdown is open + +- Updated dependencies [[`c4441b5`](https://github.com/nylas/nylas/commit/c4441b599331ac768a5ab3387336ff68e20f8007)]: + - @nylas/web-elements@1.0.2-canary.0 diff --git a/packages/react/LICENSE.md b/packages/react/LICENSE.md new file mode 100644 index 0000000..44321a9 --- /dev/null +++ b/packages/react/LICENSE.md @@ -0,0 +1,23 @@ +The MIT License (MIT) +---- + +Copyright (c) 2014-2015 InboxApp, Inc. and Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/packages/react/README.md b/packages/react/README.md new file mode 100644 index 0000000..a91ddd0 --- /dev/null +++ b/packages/react/README.md @@ -0,0 +1,320 @@ +# Nylas React Components + +React components for Nylas Scheduler + +![npm](https://img.shields.io/npm/v/@nylas/react) + +## Requirements + +- [Node.js](https://nodejs.org/en/) v20 or higher +- [React.js](https://react.dev/) v18 or higher + +## Installation + +Install Nylas React Components via npm: + +```bash +npm install @nylas/react@latest +``` + +or yarn + +```bash + yarn add @nylas/react@latest +``` + +## Exports overview + +- **Elements** + - `NylasSchedulerEditor`, `NylasScheduling`, `NylasSchedulingMethod` + - Import from `@nylas/react` or `@nylas/react/elements` + +- **Connect** + - `useNylasConnect`, `NylasConnectButton` + - Import from `@nylas/react` or `@nylas/react/connect` + +## Getting Started + +The following example adds the Nylas Scheduler Editor and Scheduling components to your React app. + +> ⚠️ **Important:** Make sure to replace the `NYLAS_CLIENT_ID` with your Nylas Client ID. Your Nylas Client ID can be found in your app's Overview page on the [Nylas Dashboard](https://dashboard-v3.nylas.com). + +### Adding the Components + +```jsx +import { BrowserRouter, Route, Routes } from "react-router-dom"; +import { NylasSchedulerEditor, NylasScheduling } from "@nylas/react"; + +function App() { + // Get the configuration ID from the URL query string + const urlParams = new URLSearchParams(window.location.search); + const configId = urlParams.get("config_id") || ""; + + return ( + + + + + View Scheduler Editor + + + + } + /> + + + + } + /> + + + ); +} +export default App; +``` + +### Start a local development server + +To create a Scheduling Page from the Scheduler Editor, you'll need a working Scheduler UI. To do this, run a local server to host your Scheduler Editor and Scheduling Pages. + +Navigate the root directory of your project and run the following command. + +```text +npm run dev -- --port +``` + +After you run the command, open your browser to `http://localhost:/scheduler-editor` to see your Scheduler Editor and create your first Scheduling Page. + + +## Nylas Connect Hook + +The `useNylasConnect` hook provides a simple way to add OAuth authentication to your React app using Nylas Connect. + +### Basic Usage + +```jsx +import { useNylasConnect } from '@nylas/react'; + +function LoginButton() { + const { isConnected, connect, logout, grant, isLoading } = useNylasConnect({ + clientId: 'your-nylas-client-id', + redirectUri: 'http://localhost:3000/callback' + }); + + if (isLoading) return
Loading...
; + + if (isConnected) { + return ( +
+

Connected as: {grant?.email}

+ +
+ ); + } + + return ( + + ); +} +``` + + +### Configuration + +| Option | Type | Default | Description | +|--------|------|---------|-------------| +| `clientId` | `string` | - | Your Nylas Client ID | +| `redirectUri` | `string` | - | OAuth callback URL | +| `autoHandleCallback` | `boolean` | `true` | Automatically handle OAuth callback | +| `autoRefreshInterval` | `number` | - | Auto-refresh session interval (ms) | +| `retryAttempts` | `number` | `0` | Number of retry attempts for failed operations | +| `enableAutoRecovery` | `boolean` | `false` | Enable automatic error recovery | + +### Hook Return Values + +The hook returns an object with the following properties: + +**State:** +- `isConnected` - Whether user is authenticated +- `grant` - Current user's grant information +- `isLoading` - Loading state for operations +- `error` - Current error, if any + +**Actions:** +- `connect(options)` - Start OAuth flow +- `logout(grantId?)` - Sign out user +- `refreshSession()` - Refresh current session +- `subscribe(callback)` - Listen to connection events + +### Environment Setup + +For security, use environment variables for your configuration: + +```bash +# .env.local +VITE_NYLAS_CLIENT_ID=your-nylas-client-id +VITE_NYLAS_REDIRECT_URI=http://localhost:3000/callback +``` + +```jsx +const { isConnected, connect } = useNylasConnect({ + clientId: import.meta.env.VITE_NYLAS_CLIENT_ID, + redirectUri: import.meta.env.VITE_NYLAS_REDIRECT_URI +}); +``` + + + + + +## Nylas Connect Button + +The `NylasConnectButton` component provides a simple way to add email provider authentication to your React application. + +### Basic Usage + +```jsx +import { NylasConnectButton } from "@nylas/react"; + +function App() { + return ( + { + console.log("Connected successfully:", result); + }} + onError={(error) => { + console.error("Connection failed:", error); + }} + /> + ); +} +``` + +### External Identity Provider Integration + +For applications that use external identity providers (via JWKS), you can pass identity provider tokens during authentication: + +```jsx +import { NylasConnectButton } from "@nylas/react"; + +function App() { + // Function to retrieve JWT token from your external identity provider + const getIdpToken = async () => { + // Get the JWT token from your authentication system + const token = await yourAuthSystem.getJWT(); + return token; // or return null if not available + }; + + return ( + { + console.log("Connected with IDP claims:", result); + }} + onError={(error) => { + console.error("Connection failed:", error); + }} + /> + ); +} +``` + +### Custom Backend Code Exchange + +For enhanced security, you can handle the OAuth code exchange on your backend: + +```jsx +import { NylasConnectButton } from "@nylas/react"; + +function App() { + const handleCodeExchange = async (params) => { + // Send the authorization code to your backend + const response = await fetch("/api/auth/exchange", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + code: params.code, + state: params.state, + clientId: params.clientId, + redirectUri: params.redirectUri, + scopes: params.scopes, + provider: params.provider, + }), + }); + + if (!response.ok) { + throw new Error(`Token exchange failed: ${response.statusText}`); + } + + const tokenData = await response.json(); + + // Return the expected ConnectResult format + return { + accessToken: tokenData.access_token, + idToken: tokenData.id_token, + grantId: tokenData.grant_id, + expiresAt: Date.now() + tokenData.expires_in * 1000, + scope: tokenData.scope, + grantInfo: tokenData.grant_info, + }; + }; + + return ( + { + console.log("Connected successfully:", result); + }} + onError={(error) => { + console.error("Connection failed:", error); + }} + /> + ); +} +``` + +## Links + +A complete walkthrough for setting up Scheduler can be found at [https://developer.nylas.com/docs/v3/getting-started/scheduler/](https://developer.nylas.com/docs/v3/getting-started/scheduler/), with the complete code available on [GitHub](https://github.com/nylas-samples/quickstart-scheduler-react). + +### Further reading: + +- [Scheduler documentation](https://developer.nylas.com/docs/v3/scheduler/) +- [Scheduler API reference](https://developer.nylas.com/docs/api/v3/scheduler/) +- [Developer Forums](https://forums.nylas.com/) diff --git a/packages/react/index.html b/packages/react/index.html new file mode 100644 index 0000000..e4b78ea --- /dev/null +++ b/packages/react/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/packages/react/package.json b/packages/react/package.json new file mode 100644 index 0000000..bfb32c4 --- /dev/null +++ b/packages/react/package.json @@ -0,0 +1,113 @@ +{ + "name": "@nylas/react", + "version": "2.2.4", + "description": "React components and hooks for Nylas API integration", + "type": "module", + "scripts": { + "build": "tsc && vite build", + "test": "vitest run", + "test:watch": "vitest", + "format": "pnpm --workspace-root prettier --write packages/react/", + "format:check": "pnpm --workspace-root prettier --check packages/react/", + "lint": "oxlint --fix . && exit 0", + "lint:check": "oxlint .", + "clean": "rm -rf dist", + "dev": "vite build --watch --emptyOutDir=false", + "typecheck": "tsc --noEmit", + "preview": "vite preview", + "coverage": "vitest run --coverage", + "docs": "typedoc", + "prepublishOnly": "pnpm run clean && pnpm run build" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/nylas/nylas.git" + }, + "keywords": [ + "nylas", + "react", + "components", + "hooks", + "email", + "calendar", + "contacts", + "oauth2" + ], + "author": "Nylas Inc.", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "packageManager": "pnpm@10.7.1", + "files": [ + "dist" + ], + "exports": { + ".": { + "import": "./dist/es/index.js", + "require": "./dist/cjs/index.js", + "types": "./dist/index.d.ts", + "style": "./dist/style.css" + }, + "./connect": { + "import": "./dist/es/connect.js", + "require": "./dist/cjs/connect.js", + "types": "./dist/connect.d.ts" + }, + "./elements": { + "import": "./dist/es/elements.js", + "require": "./dist/cjs/elements.js", + "types": "./dist/elements.d.ts" + }, + "./utils": { + "import": "./dist/es/utils.js", + "require": "./dist/cjs/utils.js", + "types": "./dist/utils.d.ts" + }, + "./style.css": { + "default": "./dist/style.css" + } + }, + "main": "dist/cjs/index.js", + "style": "./dist/style.css", + "module": "dist/es/index.js", + "types": "dist/index.d.ts", + "dependencies": { + "@nylas/connect": "workspace:^", + "@nylas/core": "^1.2.0", + "@nylas/web-elements": "^2.2.4", + "@stencil/react-output-target": "^1.2.0", + "axios": "^1.7.7", + "dayjs": "1.11.7", + "lucide-react": "^0.453.0", + "tailwind-variants": "^1.0.0", + "zustand": "^5.0.3" + }, + "peerDependencies": { + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + }, + "devDependencies": { + "@tailwindcss/vite": "^4.0.3", + "@testing-library/dom": "^10.0.0", + "@testing-library/jest-dom": "^5.17.0", + "@testing-library/react": "^16.0.0", + "@types/jsdom": "^21.1.7", + "@types/node": "^20.11.13", + "@types/react": "^19.1.10", + "@types/react-dom": "^19.1.7", + "@vitejs/plugin-react": "^4.4.1", + "@vitejs/plugin-react-swc": "^3.3.2", + "@vitest/coverage-v8": "^2.1.9", + "jsdom": "^26.0.0", + "markdown-table": "^3.0.4", + "tailwindcss": "^4.1.7", + "tslib": "^2.6.2", + "typedoc": "^0.28.3", + "typedoc-plugin-markdown": "^4.6.3", + "typescript": "^5.3.3", + "vite": "^5.4.21", + "vite-plugin-dts": "^3.7.0", + "vitest": "^2.1.8" + } +} diff --git a/packages/react/src/connect.ts b/packages/react/src/connect.ts new file mode 100644 index 0000000..db379da --- /dev/null +++ b/packages/react/src/connect.ts @@ -0,0 +1,2 @@ +// Entry point for Nylas Connect functionality +export * from "./connect/index"; diff --git a/packages/react/src/connect/NylasConnectButton.css b/packages/react/src/connect/NylasConnectButton.css new file mode 100644 index 0000000..79becfc --- /dev/null +++ b/packages/react/src/connect/NylasConnectButton.css @@ -0,0 +1,143 @@ +/* + Theme defaults (system-aware) + - Light: white bg, gray border, dark text + - Dark: very dark gray bg, white text, darker border + Consumers can override by setting these CSS variables on any ancestor, + or by applying `.nylas-theme-light` / `.nylas-theme-dark` or [data-theme] attributes. +*/ +:root { + color-scheme: light dark; + --nylas-btn-bg: #ffffff; + --nylas-btn-fg: #111111; + --nylas-btn-border: #d1d5db; + --nylas-btn-bg-hover: #f5f5f5; + --nylas-btn-bg-active: #e5e5e5; + --nylas-btn-bg-focus: #f5f5f5; + --nylas-btn-border-active: #a1a1aa; + --nylas-btn-border-focus: #3b82f6; + --nylas-btn-border-radius: 6px; + --nylas-btn-font-weight: 500; + --nylas-btn-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); + --nylas-btn-shadow-hover: + 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + --nylas-btn-shadow-focus: 0 0 0 3px rgba(59, 130, 246, 0.1); + --nylas-btn-shadow-active: 0 1px 2px 0 rgba(0, 0, 0, 0.05); +} + +@media (prefers-color-scheme: dark) { + :root { + --nylas-btn-bg: #1a1a1a; /* ~90% black */ + --nylas-btn-fg: #ffffff; + --nylas-btn-border: #333333; + --nylas-btn-bg-hover: #2a2a2a; + --nylas-btn-bg-active: #0f0f0f; + --nylas-btn-bg-focus: #2a2a2a; + --nylas-btn-border-active: #555555; + --nylas-btn-border-focus: #60a5fa; + --nylas-btn-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3); + --nylas-btn-shadow-hover: + 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.3); + --nylas-btn-shadow-focus: 0 0 0 3px rgba(96, 165, 250, 0.2); + --nylas-btn-shadow-active: 0 1px 2px 0 rgba(0, 0, 0, 0.3); + } +} + +/* Force higher specificity for theme overrides */ +.nylas-theme-light .nylas-btn.nylas-btn, +[data-theme="light"] .nylas-btn.nylas-btn { + --nylas-btn-bg: #ffffff !important; + --nylas-btn-fg: #111111 !important; + --nylas-btn-border: #d1d5db !important; + --nylas-btn-bg-hover: #f5f5f5 !important; + --nylas-btn-bg-active: #e5e5e5 !important; + --nylas-btn-bg-focus: #f5f5f5 !important; + --nylas-btn-border-active: #a1a1aa !important; + --nylas-btn-border-focus: #3b82f6 !important; + --nylas-btn-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; + --nylas-btn-shadow-hover: + 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06) !important; + --nylas-btn-shadow-focus: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; + --nylas-btn-shadow-active: 0 1px 2px 0 rgba(0, 0, 0, 0.05) !important; +} + +.nylas-theme-dark .nylas-btn.nylas-btn, +[data-theme="dark"] .nylas-btn.nylas-btn { + --nylas-btn-bg: #1a1a1a !important; + --nylas-btn-fg: #ffffff !important; + --nylas-btn-border: #333333 !important; + --nylas-btn-bg-hover: #2a2a2a !important; + --nylas-btn-bg-active: #0f0f0f !important; + --nylas-btn-bg-focus: #2a2a2a !important; + --nylas-btn-border-active: #555555 !important; + --nylas-btn-border-focus: #60a5fa !important; + --nylas-btn-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.3) !important; + --nylas-btn-shadow-hover: + 0 1px 3px 0 rgba(0, 0, 0, 0.4), 0 1px 2px 0 rgba(0, 0, 0, 0.3) !important; + --nylas-btn-shadow-focus: 0 0 0 3px rgba(96, 165, 250, 0.2) !important; + --nylas-btn-shadow-active: 0 1px 2px 0 rgba(0, 0, 0, 0.3) !important; +} + +.nylas-btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + border-radius: var(--nylas-btn-border-radius); + + border: 1px solid var(--nylas-btn-border); + background: var(--nylas-btn-bg); + color: var(--nylas-btn-fg); + font-weight: var(--nylas-btn-font-weight); + box-shadow: var(--nylas-btn-shadow); + cursor: pointer; + transition: + background-color 0.15s ease, + border-color 0.15s ease, + color 0.15s ease, + box-shadow 0.15s ease; +} + +.nylas-btn:hover { + background: var(--nylas-btn-bg-hover); + box-shadow: var(--nylas-btn-shadow-hover); +} + +.nylas-btn:focus { + outline: none; + background: var(--nylas-btn-bg-focus); + border-color: var(--nylas-btn-border-focus); + box-shadow: var(--nylas-btn-shadow-focus); +} + +.nylas-btn:active { + background: var(--nylas-btn-bg-active); + border-color: var(--nylas-btn-border-active); + box-shadow: var(--nylas-btn-shadow-active); +} + +.nylas-btn[disabled], +.nylas-btn[aria-busy="true"] { + opacity: 0.7; + cursor: not-allowed; +} + +.nylas-btn--sm { + padding: 6px 10px; + font-size: 12px; +} + +.nylas-btn--md { + padding: 10px 14px; + font-size: 14px; +} + +.nylas-btn--lg { + padding: 14px 18px; + font-size: 16px; +} + +.nylas-btn--outline { + /* Outline follows current theme colors */ + --nylas-btn-bg: transparent !important; + /* keep text and border from theme - inherit from parent theme */ +} diff --git a/packages/react/src/connect/NylasConnectButton.test.ts b/packages/react/src/connect/NylasConnectButton.test.ts new file mode 100644 index 0000000..43df711 --- /dev/null +++ b/packages/react/src/connect/NylasConnectButton.test.ts @@ -0,0 +1,484 @@ +import { describe, it, expect, beforeEach, vi, afterEach } from "vitest"; +import { render, screen, fireEvent, waitFor } from "@testing-library/react"; +import React from "react"; +import { NylasConnectButton } from "./NylasConnectButton"; +import { useNylasConnect } from "./useNylasConnect"; +import type { ConnectResult } from "@nylas/connect"; + +// Mock the useNylasConnect hook +vi.mock("./useNylasConnect", () => ({ + useNylasConnect: vi.fn(), +})); + +describe("NylasConnectButton", () => { + const mockConnect = vi.fn(); + const mockUseNylasConnect = vi.mocked(useNylasConnect); + + const defaultProps = { + clientId: "test-client-id", + redirectUri: "https://app.example.com/callback", + }; + + const mockConnectResult: ConnectResult = { + accessToken: "test-token", + idToken: "test-id-token", + grantId: "test-grant-id", + expiresAt: Date.now() + 3600 * 1000, + scope: "email.read", + grantInfo: { + id: "test-grant-id", + email: "test@example.com", + provider: "google", + }, + }; + + beforeEach(() => { + vi.clearAllMocks(); + + // Default mock implementation + mockUseNylasConnect.mockReturnValue({ + connect: mockConnect, + isLoading: false, + isConnected: false, + grant: null, + error: null, + logout: vi.fn(), + refreshSession: vi.fn(), + subscribe: vi.fn(), + setLogLevel: vi.fn(), + connectClient: {} as any, + }); + + // Mock window.location.assign + Object.defineProperty(window, "location", { + value: { + assign: vi.fn(), + }, + writable: true, + }); + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + describe("Basic Rendering", () => { + it("renders with default props", () => { + render(React.createElement(NylasConnectButton, defaultProps)); + + const button = screen.getByRole("button"); + expect(button).toBeTruthy(); + expect(button.textContent).toBe("Connect your inbox"); + expect(button.className).toContain("nylas-btn"); + expect(button.className).toContain("nylas-btn--primary"); + expect(button.className).toContain("nylas-btn--md"); + }); + + it("renders with custom text", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + text: "Custom Connect Text", + }), + ); + + const button = screen.getByRole("button"); + expect(button.textContent).toBe("Custom Connect Text"); + }); + + it("renders with children instead of text", () => { + render( + React.createElement( + NylasConnectButton, + defaultProps, + "Custom Children", + ), + ); + + const button = screen.getByRole("button"); + expect(button.textContent).toBe("Custom Children"); + }); + + it("renders with custom className", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + className: "custom-class", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("nylas-btn"); + expect(button.className).toContain("nylas-btn--primary"); + expect(button.className).toContain("nylas-btn--md"); + expect(button.className).toContain("custom-class"); + }); + + it("renders with custom style", () => { + const customStyle = { backgroundColor: "red", color: "white" }; + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + style: customStyle, + }), + ); + + const button = screen.getByRole("button"); + expect((button as HTMLElement).style.backgroundColor).toBe("red"); + expect((button as HTMLElement).style.color).toBe("white"); + }); + }); + + describe("Styling Variants", () => { + it("applies primary variant class", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + variant: "primary", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("nylas-btn--primary"); + }); + + it("applies outline variant class", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + variant: "outline", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("nylas-btn--outline"); + }); + + it("applies small size class", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + size: "sm", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("nylas-btn--sm"); + }); + + it("applies large size class", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + size: "lg", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("nylas-btn--lg"); + }); + + it("renders unstyled when unstyled prop is true", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + unstyled: true, + className: "custom-only", + }), + ); + + const button = screen.getByRole("button"); + expect(button.className).toContain("custom-only"); + expect(button.className).not.toContain("nylas-btn"); + }); + + it("applies CSS custom properties from cssVars", () => { + const cssVars = { + "--nylas-btn-bg": "#ff0000", + "--nylas-btn-fg": "#ffffff", + }; + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + cssVars, + }), + ); + + const button = screen.getByRole("button") as HTMLElement; + expect(button.style.getPropertyValue("--nylas-btn-bg")).toBe("#ff0000"); + expect(button.style.getPropertyValue("--nylas-btn-fg")).toBe("#ffffff"); + }); + }); + + describe("Disabled States", () => { + it("is disabled when disabled prop is true", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + disabled: true, + }), + ); + + const button = screen.getByRole("button") as HTMLButtonElement; + expect(button.disabled).toBe(true); + }); + + it("is disabled when loading", () => { + mockUseNylasConnect.mockReturnValue({ + connect: mockConnect, + isLoading: true, + isConnected: false, + grant: null, + error: null, + logout: vi.fn(), + refreshSession: vi.fn(), + subscribe: vi.fn(), + setLogLevel: vi.fn(), + connectClient: {} as any, + }); + + render(React.createElement(NylasConnectButton, defaultProps)); + + const button = screen.getByRole("button") as HTMLButtonElement; + expect(button.disabled).toBe(true); + expect(button.getAttribute("aria-busy")).toBe("true"); + }); + }); + + describe("Click Handling", () => { + it("calls onStart callback when clicked", async () => { + const onStart = vi.fn(); + mockConnect.mockResolvedValue(mockConnectResult); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + onStart, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + expect(onStart).toHaveBeenCalledTimes(1); + }); + + it("calls connect with correct options", async () => { + mockConnect.mockResolvedValue(mockConnectResult); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + method: "popup", + provider: "google", + scopes: ["email.read"], + loginHint: "user@example.com", + popupWidth: 500, + popupHeight: 600, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + expect(mockConnect).toHaveBeenCalledWith({ + method: "popup", + provider: "google", + scopes: ["email.read"], + loginHint: "user@example.com", + popupWidth: 500, + popupHeight: 600, + }); + }); + + it("calls onSuccess when connect succeeds with result", async () => { + const onSuccess = vi.fn(); + mockConnect.mockResolvedValue(mockConnectResult); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + onSuccess, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + await waitFor(() => { + expect(onSuccess).toHaveBeenCalledWith(mockConnectResult); + }); + }); + + it("redirects when connect returns a URL string", async () => { + const redirectUrl = "https://auth.nylas.com/oauth/authorize?..."; + mockConnect.mockResolvedValue(redirectUrl); + + render(React.createElement(NylasConnectButton, defaultProps)); + + fireEvent.click(screen.getByRole("button")); + + await waitFor(() => { + expect(window.location.assign).toHaveBeenCalledWith(redirectUrl); + }); + }); + + it("calls onError when connect fails", async () => { + const onError = vi.fn(); + const error = new Error("Connection failed"); + mockConnect.mockRejectedValue(error); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + onError, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + await waitFor(() => { + expect(onError).toHaveBeenCalledWith(error); + }); + }); + + it("calls onCancel when user cancels", async () => { + const onCancel = vi.fn(); + const cancelError = new Error("User closed the popup"); + mockConnect.mockRejectedValue(cancelError); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + onCancel, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + await waitFor(() => { + expect(onCancel).toHaveBeenCalledWith("User closed the popup"); + }); + }); + + it("calls onCancel when operation is cancelled", async () => { + const onCancel = vi.fn(); + const cancelError = new Error("Operation was cancelled by user"); + mockConnect.mockRejectedValue(cancelError); + + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + onCancel, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + await waitFor(() => { + expect(onCancel).toHaveBeenCalledWith( + "Operation was cancelled by user", + ); + }); + }); + + it("does not call click handler when disabled", () => { + render( + React.createElement(NylasConnectButton, { + ...defaultProps, + disabled: true, + }), + ); + + fireEvent.click(screen.getByRole("button")); + + expect(mockConnect).not.toHaveBeenCalled(); + }); + }); + + describe("Hook Integration", () => { + it("passes clientId to useNylasConnect", () => { + render( + React.createElement(NylasConnectButton, { + clientId: "test-client-123", + redirectUri: "https://app.test.com/callback", + }), + ); + + expect(mockUseNylasConnect).toHaveBeenCalledWith({ + clientId: "test-client-123", + redirectUri: "https://app.test.com/callback", + autoHandleCallback: true, + }); + }); + + it("passes optional config to useNylasConnect", () => { + render( + React.createElement(NylasConnectButton, { + clientId: "test-client", + redirectUri: "https://app.test.com/callback", + apiUrl: "https://api.nylas.com", + defaultScopes: ["email.read", "calendar.read"], + persistTokens: false, + }), + ); + + expect(mockUseNylasConnect).toHaveBeenCalledWith({ + clientId: "test-client", + redirectUri: "https://app.test.com/callback", + apiUrl: "https://api.nylas.com", + defaultScopes: ["email.read", "calendar.read"], + persistTokens: false, + autoHandleCallback: true, + }); + }); + + it("does not pass defaultScopes when not provided", () => { + render( + React.createElement(NylasConnectButton, { + clientId: "test-client", + redirectUri: "https://app.test.com/callback", + }), + ); + + expect(mockUseNylasConnect).toHaveBeenCalledWith({ + clientId: "test-client", + redirectUri: "https://app.test.com/callback", + autoHandleCallback: true, + }); + }); + }); + + describe("Accessibility", () => { + it("has correct button type", () => { + render(React.createElement(NylasConnectButton, defaultProps)); + + const button = screen.getByRole("button") as HTMLButtonElement; + expect(button.getAttribute("type")).toBe("button"); + }); + + it("sets aria-busy when loading", () => { + mockUseNylasConnect.mockReturnValue({ + connect: mockConnect, + isLoading: true, + isConnected: false, + grant: null, + error: null, + logout: vi.fn(), + refreshSession: vi.fn(), + subscribe: vi.fn(), + setLogLevel: vi.fn(), + connectClient: {} as any, + }); + + render(React.createElement(NylasConnectButton, defaultProps)); + + const button = screen.getByRole("button"); + expect(button.getAttribute("aria-busy")).toBe("true"); + }); + + it("does not set aria-busy when not loading", () => { + render(React.createElement(NylasConnectButton, defaultProps)); + + const button = screen.getByRole("button"); + expect(button.hasAttribute("aria-busy")).toBe(false); + }); + }); +}); diff --git a/packages/react/src/connect/NylasConnectButton.tsx b/packages/react/src/connect/NylasConnectButton.tsx new file mode 100644 index 0000000..900da20 --- /dev/null +++ b/packages/react/src/connect/NylasConnectButton.tsx @@ -0,0 +1,174 @@ +import React, { useCallback } from "react"; +import type { CSSProperties, ReactNode } from "react"; +import type { + Provider, + NylasScope, + ConnectResult as AuthResult, + IdentityProviderTokenCallback, + CodeExchangeMethod, +} from "@nylas/connect"; +import { useNylasConnect } from "./useNylasConnect"; + +export type NylasConnectButtonProps = { + clientId: string; + redirectUri?: string; + apiUrl?: string; + defaultScopes?: NylasScope[]; // optional override + persistTokens?: boolean; + + method?: "popup" | "inline"; + provider?: Provider; + scopes?: NylasScope[]; + loginHint?: string; + popupWidth?: number; + popupHeight?: number; + + text?: string; + className?: string; + style?: CSSProperties; + disabled?: boolean; + + // Styling controls + variant?: "primary" | "outline"; + size?: "sm" | "md" | "lg"; + unstyled?: boolean; + cssVars?: Partial< + Record< + | "--nylas-btn-bg" + | "--nylas-btn-fg" + | "--nylas-btn-border" + | "--nylas-btn-bg-hover", + string + > + >; + + // Advanced configuration + /** + * Optional callback to provide external identity provider JWT token. + * Called during token exchange to include IDP claims. + * Return null to skip IDP claims, or throw to fail authentication. + */ + identityProviderToken?: IdentityProviderTokenCallback; + + /** + * Custom code exchange method for backend-based token exchange. + * Allows handling OAuth code exchange on your server instead of the browser. + */ + codeExchange?: CodeExchangeMethod; + + onStart?: () => void; + onSuccess?: (result: AuthResult) => void; + onError?: (error: Error) => void; + onCancel?: (reason: string) => void; + children?: ReactNode; +}; + +export function NylasConnectButton({ + clientId, + redirectUri, + apiUrl, + defaultScopes, + persistTokens, + + method = "inline", + provider, + scopes, + loginHint, + popupWidth, + popupHeight, + + text = "Connect your inbox", + className, + style, + disabled, + // styling + variant = "primary", + size = "md", + unstyled = false, + cssVars, + + // advanced config + identityProviderToken, + codeExchange, + + onStart, + onSuccess, + onError, + onCancel, + children, +}: NylasConnectButtonProps) { + const { connect, isLoading } = useNylasConnect({ + clientId, + redirectUri, + apiUrl, + // Only pass defaultScopes if caller provides it to override defaults + ...(defaultScopes ? { defaultScopes } : {}), + persistTokens, + autoHandleCallback: true, + identityProviderToken, + codeExchange, + }); + + const handleClick = useCallback(async () => { + try { + onStart?.(); + const resultOrUrl = await connect({ + method, + provider, + scopes, + loginHint, + popupWidth, + popupHeight, + }); + + if (typeof resultOrUrl === "string") { + window.location.assign(resultOrUrl); + return; + } + + onSuccess?.(resultOrUrl); + } catch (err) { + const message = (err as Error)?.message || ""; + if (message.includes("closed") || message.includes("cancelled")) { + onCancel?.(message); + return; + } + onError?.(err as Error); + } + }, [ + connect, + method, + provider, + scopes, + loginHint, + popupWidth, + popupHeight, + onStart, + onSuccess, + onCancel, + onError, + ]); + + const rootClassName = unstyled + ? className + : ["nylas-btn", `nylas-btn--${variant}`, `nylas-btn--${size}`, className] + .filter(Boolean) + .join(" "); + + const styleWithVars: CSSProperties | undefined = cssVars + ? { ...(cssVars as CSSProperties), ...style } + : style; + + return ( + + ); +} diff --git a/packages/react/src/connect/index.ts b/packages/react/src/connect/index.ts new file mode 100644 index 0000000..bb3bcfb --- /dev/null +++ b/packages/react/src/connect/index.ts @@ -0,0 +1,28 @@ +// Auto-load CSS styles +import "./NylasConnectButton.css"; + +// React hook for Nylas connection +export { useNylasConnect } from "./useNylasConnect"; + +// Export NylasConnectButton component +export { NylasConnectButton } from "./NylasConnectButton"; + +// Export all auth-related types +export * from "./types"; + +// Re-export core classes from @nylas/connect for convenience +export { NylasConnect } from "@nylas/connect"; +export { + NylasConnectError, + ConfigError, + NetworkError, + OAuthError, + TokenError, + PopupError, +} from "@nylas/connect"; +export { BrowserTokenStorage, MemoryTokenStorage } from "@nylas/connect"; +export { + parseConnectCallback, + isConnectCallback, + logger, +} from "@nylas/connect"; diff --git a/packages/react/src/connect/types.ts b/packages/react/src/connect/types.ts new file mode 100644 index 0000000..0713688 --- /dev/null +++ b/packages/react/src/connect/types.ts @@ -0,0 +1,30 @@ +// Re-export connect types from @nylas/connect for convenience +export type { + ConnectConfig, + ConnectOptions, + ConnectResult, + GrantInfo, + ConnectError, + PKCEPair, + TokenStorage, + TokenResponse, + LogLevel, + Provider, + Environment, + ConnectMethod, + ConnectionStatus, + ConnectEvent, + ConnectStateChangeCallback, + SessionData, + IdentityProviderTokenCallback, + CodeExchangeMethod, + CodeExchangeParams, +} from "@nylas/connect"; + +// Export hook-specific types +export type { + UseNylasConnectConfig, + UseNylasConnectState, + UseNylasConnectActions, + UseNylasConnectReturn, +} from "./useNylasConnect"; diff --git a/packages/react/src/connect/useNylasConnect.test.ts b/packages/react/src/connect/useNylasConnect.test.ts new file mode 100644 index 0000000..b0ddcef --- /dev/null +++ b/packages/react/src/connect/useNylasConnect.test.ts @@ -0,0 +1,143 @@ +import { describe, it, expect, beforeEach, vi, afterEach } from "vitest"; +import { renderHook, waitFor } from "@testing-library/react"; +import { act } from "react"; +import { useNylasConnect } from "./useNylasConnect"; +import { NylasConnect } from "@nylas/connect"; + +// Mock the NylasConnect module +vi.mock("@nylas/connect", () => ({ + NylasConnect: vi.fn(), +})); + +describe("useNylasConnect callback deduplication", () => { + const mockCallback = vi.fn(); + const mockIsAutoCallbackEnabled = vi.fn(); + const mockGetSession = vi.fn(); + const mockOnConnectStateChange = vi.fn(); + + const mockAuthClient = { + callback: mockCallback, + isAutoCallbackEnabled: mockIsAutoCallbackEnabled, + getSession: mockGetSession, + onConnectStateChange: mockOnConnectStateChange, + logger: { + debug: vi.fn(), + info: vi.fn(), + warn: vi.fn(), + error: vi.fn(), + log: vi.fn(), + setLevel: vi.fn(), + enable: vi.fn(), + disable: vi.fn(), + }, + setLogLevel: vi.fn(), + connect: vi.fn(), + logout: vi.fn(), + isConnected: vi.fn(), + }; + + beforeEach(() => { + vi.clearAllMocks(); + (NylasConnect as any).mockImplementation(() => mockAuthClient); + mockIsAutoCallbackEnabled.mockReturnValue(true); + mockGetSession.mockResolvedValue(null); + mockOnConnectStateChange.mockReturnValue(() => {}); + + // Mock window.location with callback parameters + Object.defineProperty(window, "location", { + value: { + href: "https://app.example.com/callback?code=auth123&state=xyz789", + }, + writable: true, + }); + + // Mock history API + Object.defineProperty(window, "history", { + value: { + replaceState: vi.fn(), + state: {}, + }, + writable: true, + }); + }); + + afterEach(() => { + vi.restoreAllMocks(); + }); + + it("should only call callback once despite React Strict Mode double-invocation", async () => { + const config = { + clientId: "test_client", + redirectUri: "https://app.example.com/callback", + autoHandleCallback: true, + }; + + // Render the hook in strict mode simulation (double effect execution) + const { rerender } = renderHook(() => useNylasConnect(config)); + + // Wait for effects to complete + await waitFor(() => { + expect(mockCallback).toHaveBeenCalledTimes(1); + }); + + // Simulate strict mode by re-rendering (which triggers effects again) + rerender(); + + // Wait a bit more to ensure no additional calls + await new Promise((resolve) => setTimeout(resolve, 100)); + + // Callback should still only be called once + expect(mockCallback).toHaveBeenCalledTimes(1); + }); + + it("should not call callback if session already exists", async () => { + // Mock existing session + mockGetSession.mockResolvedValue({ + accessToken: "existing_token", + grantId: "grant123", + grantInfo: { id: "user123", email: "test@example.com" }, + }); + + const config = { + clientId: "test_client", + redirectUri: "https://app.example.com/callback", + autoHandleCallback: true, + }; + + renderHook(() => useNylasConnect(config)); + + // Wait for effects to complete + await waitFor(() => { + expect(mockGetSession).toHaveBeenCalled(); + }); + + // Callback should not be called when session exists + expect(mockCallback).not.toHaveBeenCalled(); + }); + + it("should not call callback when URL has no callback parameters", async () => { + // Change URL to not have callback parameters + Object.defineProperty(window, "location", { + value: { + href: "https://app.example.com/dashboard", + }, + writable: true, + }); + + const config = { + clientId: "test_client", + redirectUri: "https://app.example.com/callback", + autoHandleCallback: true, + }; + + const { result } = renderHook(() => useNylasConnect(config)); + + // Wait for the hook to finish loading (much better than setTimeout!) + await waitFor(() => { + expect(result.current.isLoading).toBe(false); + }); + + // Callback should not be called without callback parameters + expect(mockCallback).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/react/src/connect/useNylasConnect.ts b/packages/react/src/connect/useNylasConnect.ts new file mode 100644 index 0000000..7270b4e --- /dev/null +++ b/packages/react/src/connect/useNylasConnect.ts @@ -0,0 +1,487 @@ +import { useState, useEffect, useCallback, useRef } from "react"; +import { NylasConnect } from "@nylas/connect"; +import type { + ConnectConfig as AuthConfig, + ConnectOptions as AuthOptions, + ConnectResult as AuthResult, + GrantInfo, + ConnectEvent as AuthEvent, + ConnectEventData as AuthEventData, + ConnectStateChangeCallback as AuthStateChangeCallback, +} from "@nylas/connect"; +import { LogLevel } from "@nylas/connect"; + +/** + * Configuration for the useNylasConnect React hook + * Extends AuthConfig with connection-specific properties + */ +export interface UseNylasConnectConfig extends AuthConfig { + /** Auto-refresh session interval in milliseconds (default: disabled) */ + autoRefreshInterval?: number; + /** Initial loading state when hook mounts (default: true) */ + initialLoadingState?: boolean; + /** Number of retry attempts for failed operations (default: 0) */ + retryAttempts?: number; + /** Enable automatic error recovery for network errors (default: false) */ + enableAutoRecovery?: boolean; +} + +export interface UseNylasConnectState { + isConnected: boolean; + grant: GrantInfo | null; + isLoading: boolean; + error: Error | null; +} + +export interface UseNylasConnectActions { + connect: (options?: AuthOptions) => Promise; + logout: (grantId?: string) => Promise; + refreshSession: () => Promise; + subscribe: (callback: AuthStateChangeCallback) => () => void; + setLogLevel: (level: LogLevel | "off") => void; +} + +export interface UseNylasConnectReturn + extends UseNylasConnectState, + UseNylasConnectActions { + connectClient: NylasConnect; +} + +export function useNylasConnect( + config: UseNylasConnectConfig, +): UseNylasConnectReturn { + // Extract hook-specific config + const { + autoRefreshInterval, + initialLoadingState = true, + retryAttempts = 0, + enableAutoRecovery = false, + ...connectionConfig + } = config; + + // Create connect client instance (stable reference) + const connectClientRef = useRef(null); + if (!connectClientRef.current) { + connectClientRef.current = new NylasConnect(connectionConfig); + } + const connectClient = connectClientRef.current; + + // Track callback processing state to prevent duplicates + // This prevents React Strict Mode double-invocation and component re-mount issues + // that cause multiple POST requests to /connect/token with the same auth code + const callbackProcessingRef = useRef<{ + isProcessing: boolean; // Currently processing a callback + processedUrl: string | null; // URL that was already processed + hasProcessed: boolean; // Has successfully processed any callback + }>({ + isProcessing: false, + processedUrl: null, + hasProcessed: false, + }); + + // Reset callback state when URL changes significantly (navigation away from callback) + useEffect(() => { + const currentUrl = globalThis.window?.location.href || ""; + const callbackState = callbackProcessingRef.current; + + // If URL no longer contains callback parameters and we've processed before, reset state + const hasCallbackParams = + currentUrl.includes("code=") && currentUrl.includes("state="); + if (!hasCallbackParams && callbackState.hasProcessed) { + callbackState.hasProcessed = false; + callbackState.processedUrl = null; + } + }); + + // Handle callback on app load (if enabled) + useEffect(() => { + if (!connectionConfig.autoHandleCallback) { + return; + } + + // Capture the callback state ref at effect creation time + const callbackStateRef = callbackProcessingRef; + + const processCallback = async () => { + const currentUrl = globalThis.window?.location.href || ""; + const callbackState = callbackStateRef.current; + + // Skip if already processing, processed this URL, or no callback params + if ( + callbackState.isProcessing || + callbackState.processedUrl === currentUrl || + callbackState.hasProcessed + ) { + return; + } + + // Check if URL contains OAuth callback parameters + const hasCallbackParams = + currentUrl.includes("code=") && currentUrl.includes("state="); + if (!hasCallbackParams) { + return; + } + + // Check if we already have a valid session to avoid unnecessary processing + try { + const existingSession = await connectClient.getSession(); + if (existingSession) { + // Mark as processed to prevent future attempts + callbackState.hasProcessed = true; + callbackState.processedUrl = currentUrl; + return; + } + } catch (e) { + // Continue with callback processing if session check fails + } + + // Mark as processing to prevent concurrent attempts + callbackState.isProcessing = true; + callbackState.processedUrl = currentUrl; + + try { + await connectClient.callback(); + callbackState.hasProcessed = true; + + // Additional URL cleanup as a safeguard (client should handle this) + // but we ensure it's cleaned in case something went wrong + if (globalThis.window?.history?.replaceState) { + const url = new URL(globalThis.window.location.href); + const authParams = ["code", "state", "error", "error_description"]; + let needsCleaning = false; + + authParams.forEach((param) => { + if (url.searchParams.has(param)) { + url.searchParams.delete(param); + needsCleaning = true; + } + }); + + if (needsCleaning) { + globalThis.window.history.replaceState( + globalThis.window.history.state, + document.title, + url.toString(), + ); + } + } + } catch (e) { + console.log("callback error", e); + // Reset processing state on error to allow retry if needed + callbackState.isProcessing = false; + callbackState.processedUrl = null; + } finally { + callbackState.isProcessing = false; + } + }; + + processCallback(); + + // Cleanup function to reset state if component unmounts + return () => { + // Use the captured ref from effect scope + const callbackState = callbackStateRef.current; + // Only reset if we're not currently processing to avoid interrupting ongoing operations + if (!callbackState?.isProcessing) { + callbackState.processedUrl = null; + callbackState.hasProcessed = false; + } + }; + }, [connectClient]); + + // Connection state + const [state, setState] = useState({ + isConnected: false, + grant: null, + isLoading: initialLoadingState, + error: null, + }); + + // Initialize connection state on mount + useEffect(() => { + let isMounted = true; + + const initializeAuth = async () => { + try { + const session = await connectClient.getSession(); + const connectionStatus = await connectClient.getConnectionStatus(); + const isConnected = connectionStatus === "connected"; + + if (isMounted) { + setState((prev) => ({ + ...prev, + isConnected, + grant: session?.grantInfo || null, + isLoading: false, + error: null, + })); + } + } catch (error) { + if (isMounted) { + setState((prev) => ({ + ...prev, + isConnected: false, + grant: null, + isLoading: false, + error: error as Error, + })); + } + } + }; + + initializeAuth(); + + return () => { + isMounted = false; + }; + }, [connectClient]); + + // Auto-refresh session at specified interval + useEffect(() => { + if (!autoRefreshInterval || autoRefreshInterval <= 0) { + return; + } + + const intervalId = setInterval(async () => { + try { + const session = await connectClient.getSession(); + const connectionStatus = await connectClient.getConnectionStatus(); + const isConnected = connectionStatus === "connected"; + + setState((prev) => ({ + ...prev, + isConnected, + grant: session?.grantInfo || null, + error: null, + })); + } catch (error) { + if (enableAutoRecovery) { + // Attempt to recover from network errors silently + console.debug( + "Auto-refresh failed, will retry next interval:", + error, + ); + } else { + setState((prev) => ({ + ...prev, + error: error as Error, + })); + } + } + }, autoRefreshInterval); + + return () => clearInterval(intervalId); + }, [connectClient, autoRefreshInterval, enableAutoRecovery]); + + // Subscribe to connection state changes + useEffect(() => { + const handleConnectionStateChange = ( + event: AuthEvent, + session: AuthResult | null, + data?: AuthEventData[AuthEvent], + ) => { + setState((prev) => { + switch (event) { + case "CONNECT_STARTED": + return { + ...prev, + isLoading: true, + error: null, + }; + + case "SIGNED_IN": + case "SESSION_RESTORED": + return { + ...prev, + isConnected: true, + grant: session?.grantInfo || null, + isLoading: false, + error: null, + }; + + case "SIGNED_OUT": + return { + ...prev, + isConnected: false, + grant: null, + isLoading: false, + error: null, + }; + + case "CONNECT_ERROR": + case "NETWORK_ERROR": + case "TOKEN_VALIDATION_ERROR": + return { + ...prev, + isLoading: false, + error: (data as any)?.error || new Error("Authentication error"), + }; + + case "CONNECT_CANCELLED": + return { + ...prev, + isLoading: false, + error: null, + }; + + case "SESSION_EXPIRED": + case "SESSION_INVALID": + return { + ...prev, + isConnected: false, + grant: null, + isLoading: false, + error: null, + }; + + default: + return prev; + } + }); + }; + + const unsubscribe = connectClient.onConnectStateChange( + handleConnectionStateChange, + ); + + return unsubscribe; + }, [connectClient]); + + // Wrapped connect method with retry logic + const connect = useCallback( + async (options: AuthOptions = {}) => { + setState((prev) => ({ ...prev, isLoading: true, error: null })); + + let lastError: Error; + const maxAttempts = retryAttempts + 1; + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + try { + const result = await connectClient.connect(options); + return result; + } catch (error) { + lastError = error as Error; + + if (attempt < maxAttempts) { + // Wait before retry (exponential backoff) + const delay = Math.min(1000 * Math.pow(2, attempt - 1), 5000); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + + // All attempts failed + throw lastError!; + }, + [connectClient, retryAttempts], + ); + + // Wrapped logout method with retry logic + const logout = useCallback( + async (grantId?: string) => { + setState((prev) => ({ ...prev, isLoading: true, error: null })); + + let lastError: Error; + const maxAttempts = retryAttempts + 1; + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + try { + await connectClient.logout(grantId); + return; + } catch (error) { + lastError = error as Error; + + if (attempt < maxAttempts) { + // Wait before retry + const delay = Math.min(1000 * Math.pow(2, attempt - 1), 3000); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + + // All attempts failed + setState((prev) => ({ + ...prev, + isLoading: false, + error: lastError!, + })); + throw lastError!; + }, + [connectClient, retryAttempts], + ); + + // Refresh session method with retry logic + const refreshSession = useCallback(async () => { + setState((prev) => ({ ...prev, isLoading: true, error: null })); + + let lastError: Error; + const maxAttempts = retryAttempts + 1; + + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + try { + const session = await connectClient.getSession(); + const connectionStatus = await connectClient.getConnectionStatus(); + const isConnected = connectionStatus === "connected"; + + setState((prev) => ({ + ...prev, + isConnected, + grant: session?.grantInfo || null, + isLoading: false, + error: null, + })); + return; + } catch (error) { + lastError = error as Error; + + if (attempt < maxAttempts) { + // Wait before retry + const delay = Math.min(1000 * Math.pow(2, attempt - 1), 3000); + await new Promise((resolve) => setTimeout(resolve, delay)); + } + } + } + + // All attempts failed + setState((prev) => ({ + ...prev, + isConnected: false, + grant: null, + isLoading: false, + error: lastError!, + })); + throw lastError!; + }, [connectClient, retryAttempts]); + + // Subscribe method for listening to connection events + const subscribe = useCallback( + (callback: AuthStateChangeCallback) => { + return connectClient.onConnectStateChange(callback); + }, + [connectClient], + ); + + const setLogLevel = useCallback( + (level: LogLevel | "off") => { + connectClient.setLogLevel(level); + }, + [connectClient], + ); + + return { + // State + ...state, + + // Actions + connect, + logout, + refreshSession, + subscribe, + + // Logger controls + setLogLevel, + + // Direct access + connectClient, + }; +} diff --git a/packages/react/src/elements.ts b/packages/react/src/elements.ts new file mode 100644 index 0000000..178289b --- /dev/null +++ b/packages/react/src/elements.ts @@ -0,0 +1,2 @@ +// Entry point for Nylas Web Elements React components +export * from "./elements/components"; diff --git a/packages/react/src/elements/components.ts b/packages/react/src/elements/components.ts new file mode 100644 index 0000000..6899bb1 --- /dev/null +++ b/packages/react/src/elements/components.ts @@ -0,0 +1,3591 @@ +"use client"; + +/** + * This file was automatically generated by the Stencil React Output Target. + * Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. + */ + +/* eslint-disable */ + +import { + type BookedEventInfo, + type CONFIGURATION_EVENT_TYPE, + type Configuration, + type CreateGroupEventFormState, + type DropdownOption, + type GroupConfiguration, + type GroupEvent, + type GroupEventAPIData, + type ImportGroupEventDetails, + type InputDropdownCustomEvent, + type InputImageUrlCustomEvent, + type Notification, + type NylasBookedEventCardCustomEvent, + type NylasBookingCalendarPickerCustomEvent, + type NylasBookingConfirmationRedirectCustomEvent, + type NylasBookingConfirmationTypeCustomEvent, + type NylasBookingFormCustomEvent, + type NylasBufferTimeCustomEvent, + type NylasCalendarPickerCustomEvent, + type NylasCancelBookingFormCustomEvent, + type NylasCancelledEventCardCustomEvent, + type NylasConfirmationEmailCustomEvent, + type NylasConfirmedEventCardCustomEvent, + type NylasCustomEventSlugCustomEvent, + type NylasCustomizeBookingSettingsCustomEvent, + type NylasDatePickerCustomEvent, + type NylasDisableEmailsCustomEvent, + type NylasEditorTabsCustomEvent, + type NylasEditorTabsGroupCustomEvent, + type NylasEventCalendarCustomEvent, + type NylasEventCapacityCustomEvent, + type NylasListConfigurationsCustomEvent, + type NylasOrganizerConfirmationCardCustomEvent, + type NylasPageNameCustomEvent, + type NylasPageStylingCustomEvent, + type NylasReminderEmailsCustomEvent, + type NylasSchedulerBookingDataWithFlatFields, + type NylasSchedulerEditorCustomEvent, + type NylasSchedulerErrorResponse, + type NylasSchedulerResponse, + type NylasSchedulingCustomEvent, + type NylasSchedulingMethodCustomEvent, + type NylasSelectEventTypeCustomEvent, + type NylasTimeslotPickerCustomEvent, + type RecurrenceDeleteOption, + type RecurrenceUpdateOption, + type SchedulerEventDetail, + type SchedulerGroupEventDetail, + type SelectDropdownCustomEvent, + type Timeslot, + type UISettingsResponse, +} from "@nylas/web-elements"; +import { + AddCircleIcon as AddCircleIconElement, + defineCustomElement as defineAddCircleIcon, +} from "@nylas/web-elements/dist/components/add-circle-icon.js"; +import { + ArchiveIcon as ArchiveIconElement, + defineCustomElement as defineArchiveIcon, +} from "@nylas/web-elements/dist/components/archive-icon.js"; +import { + ArrowIcon as ArrowIconElement, + defineCustomElement as defineArrowIcon, +} from "@nylas/web-elements/dist/components/arrow-icon.js"; +import { + BoldIcon as BoldIconElement, + defineCustomElement as defineBoldIcon, +} from "@nylas/web-elements/dist/components/bold-icon.js"; +import { + ButtonComponent as ButtonComponentElement, + defineCustomElement as defineButtonComponent, +} from "@nylas/web-elements/dist/components/button-component.js"; +import { + CalendarAgendaFillIcon as CalendarAgendaFillIconElement, + defineCustomElement as defineCalendarAgendaFillIcon, +} from "@nylas/web-elements/dist/components/calendar-agenda-fill-icon.js"; +import { + CalendarAgendaIcon as CalendarAgendaIconElement, + defineCustomElement as defineCalendarAgendaIcon, +} from "@nylas/web-elements/dist/components/calendar-agenda-icon.js"; +import { + CalendarCancelIcon as CalendarCancelIconElement, + defineCustomElement as defineCalendarCancelIcon, +} from "@nylas/web-elements/dist/components/calendar-cancel-icon.js"; +import { + CalendarCheckIcon as CalendarCheckIconElement, + defineCustomElement as defineCalendarCheckIcon, +} from "@nylas/web-elements/dist/components/calendar-check-icon.js"; +import { + CalendarIcon as CalendarIconElement, + defineCustomElement as defineCalendarIcon, +} from "@nylas/web-elements/dist/components/calendar-icon.js"; +import { + CalendarInfoIcon as CalendarInfoIconElement, + defineCustomElement as defineCalendarInfoIcon, +} from "@nylas/web-elements/dist/components/calendar-info-icon.js"; +import { + CalendarPatternsIcon as CalendarPatternsIconElement, + defineCustomElement as defineCalendarPatternsIcon, +} from "@nylas/web-elements/dist/components/calendar-patterns-icon.js"; +import { + CheckboxComponent as CheckboxComponentElement, + defineCustomElement as defineCheckboxComponent, +} from "@nylas/web-elements/dist/components/checkbox-component.js"; +import { + CheckboxGroup as CheckboxGroupElement, + defineCustomElement as defineCheckboxGroup, +} from "@nylas/web-elements/dist/components/checkbox-group.js"; +import { + CheckmarkCircleIcon as CheckmarkCircleIconElement, + defineCustomElement as defineCheckmarkCircleIcon, +} from "@nylas/web-elements/dist/components/checkmark-circle-icon.js"; +import { + CheckmarkIcon as CheckmarkIconElement, + defineCustomElement as defineCheckmarkIcon, +} from "@nylas/web-elements/dist/components/checkmark-icon.js"; +import { + ChevronIcon as ChevronIconElement, + defineCustomElement as defineChevronIcon, +} from "@nylas/web-elements/dist/components/chevron-icon.js"; +import { + ClockIcon as ClockIconElement, + defineCustomElement as defineClockIcon, +} from "@nylas/web-elements/dist/components/clock-icon.js"; +import { + CloseIcon as CloseIconElement, + defineCustomElement as defineCloseIcon, +} from "@nylas/web-elements/dist/components/close-icon.js"; +import { + CopyIcon as CopyIconElement, + defineCustomElement as defineCopyIcon, +} from "@nylas/web-elements/dist/components/copy-icon.js"; +import { + DeleteIcon as DeleteIconElement, + defineCustomElement as defineDeleteIcon, +} from "@nylas/web-elements/dist/components/delete-icon.js"; +import { + DocumentRefreshIcon as DocumentRefreshIconElement, + defineCustomElement as defineDocumentRefreshIcon, +} from "@nylas/web-elements/dist/components/document-refresh-icon.js"; +import { + DragableIcon as DragableIconElement, + defineCustomElement as defineDragableIcon, +} from "@nylas/web-elements/dist/components/dragable-icon.js"; +import { + EditIcon as EditIconElement, + defineCustomElement as defineEditIcon, +} from "@nylas/web-elements/dist/components/edit-icon.js"; +import { + EnvelopeFillIcon as EnvelopeFillIconElement, + defineCustomElement as defineEnvelopeFillIcon, +} from "@nylas/web-elements/dist/components/envelope-fill-icon.js"; +import { + EnvelopeIcon as EnvelopeIconElement, + defineCustomElement as defineEnvelopeIcon, +} from "@nylas/web-elements/dist/components/envelope-icon.js"; +import { + EyeIcon as EyeIconElement, + defineCustomElement as defineEyeIcon, +} from "@nylas/web-elements/dist/components/eye-icon.js"; +import { + FeedbackIcon as FeedbackIconElement, + defineCustomElement as defineFeedbackIcon, +} from "@nylas/web-elements/dist/components/feedback-icon.js"; +import { + FlowIcon as FlowIconElement, + defineCustomElement as defineFlowIcon, +} from "@nylas/web-elements/dist/components/flow-icon.js"; +import { + FolderIcon as FolderIconElement, + defineCustomElement as defineFolderIcon, +} from "@nylas/web-elements/dist/components/folder-icon.js"; +import { + ForwardIcon as ForwardIconElement, + defineCustomElement as defineForwardIcon, +} from "@nylas/web-elements/dist/components/forward-icon.js"; +import { + GlobeIcon as GlobeIconElement, + defineCustomElement as defineGlobeIcon, +} from "@nylas/web-elements/dist/components/globe-icon.js"; +import { + GoogleLogoIcon as GoogleLogoIconElement, + defineCustomElement as defineGoogleLogoIcon, +} from "@nylas/web-elements/dist/components/google-logo-icon.js"; +import { + GoogleMeetIcon as GoogleMeetIconElement, + defineCustomElement as defineGoogleMeetIcon, +} from "@nylas/web-elements/dist/components/google-meet-icon.js"; +import { + InboxIcon as InboxIconElement, + defineCustomElement as defineInboxIcon, +} from "@nylas/web-elements/dist/components/inbox-icon.js"; +import { + InfoIcon as InfoIconElement, + defineCustomElement as defineInfoIcon, +} from "@nylas/web-elements/dist/components/info-icon.js"; +import { + InputColorPicker as InputColorPickerElement, + defineCustomElement as defineInputColorPicker, +} from "@nylas/web-elements/dist/components/input-color-picker.js"; +import { + InputComponent as InputComponentElement, + defineCustomElement as defineInputComponent, +} from "@nylas/web-elements/dist/components/input-component.js"; +import { + InputDropdown as InputDropdownElement, + defineCustomElement as defineInputDropdown, +} from "@nylas/web-elements/dist/components/input-dropdown.js"; +import { + InputImageUrl as InputImageUrlElement, + defineCustomElement as defineInputImageUrl, +} from "@nylas/web-elements/dist/components/input-image-url.js"; +import { + ItalicIcon as ItalicIconElement, + defineCustomElement as defineItalicIcon, +} from "@nylas/web-elements/dist/components/italic-icon.js"; +import { + LoadingIcon as LoadingIconElement, + defineCustomElement as defineLoadingIcon, +} from "@nylas/web-elements/dist/components/loading-icon.js"; +import { + LocationIcon as LocationIconElement, + defineCustomElement as defineLocationIcon, +} from "@nylas/web-elements/dist/components/location-icon.js"; +import { + LocationOffIcon as LocationOffIconElement, + defineCustomElement as defineLocationOffIcon, +} from "@nylas/web-elements/dist/components/location-off-icon.js"; +import { + MicrosoftLogoIcon as MicrosoftLogoIconElement, + defineCustomElement as defineMicrosoftLogoIcon, +} from "@nylas/web-elements/dist/components/microsoft-logo-icon.js"; +import { + MicrosoftTeamsIcon as MicrosoftTeamsIconElement, + defineCustomElement as defineMicrosoftTeamsIcon, +} from "@nylas/web-elements/dist/components/microsoft-teams-icon.js"; +import { + MultiSelectDropdown as MultiSelectDropdownElement, + defineCustomElement as defineMultiSelectDropdown, +} from "@nylas/web-elements/dist/components/multi-select-dropdown.js"; +import { + NylasAdditionalParticipants as NylasAdditionalParticipantsElement, + defineCustomElement as defineNylasAdditionalParticipants, +} from "@nylas/web-elements/dist/components/nylas-additional-participants.js"; +import { + NylasAvailabilityPicker as NylasAvailabilityPickerElement, + defineCustomElement as defineNylasAvailabilityPicker, +} from "@nylas/web-elements/dist/components/nylas-availability-picker.js"; +import { + NylasBookedEventCard as NylasBookedEventCardElement, + defineCustomElement as defineNylasBookedEventCard, +} from "@nylas/web-elements/dist/components/nylas-booked-event-card.js"; +import { + NylasBookingCalendarPicker as NylasBookingCalendarPickerElement, + defineCustomElement as defineNylasBookingCalendarPicker, +} from "@nylas/web-elements/dist/components/nylas-booking-calendar-picker.js"; +import { + NylasBookingConfirmationRedirect as NylasBookingConfirmationRedirectElement, + defineCustomElement as defineNylasBookingConfirmationRedirect, +} from "@nylas/web-elements/dist/components/nylas-booking-confirmation-redirect.js"; +import { + NylasBookingConfirmationType as NylasBookingConfirmationTypeElement, + defineCustomElement as defineNylasBookingConfirmationType, +} from "@nylas/web-elements/dist/components/nylas-booking-confirmation-type.js"; +import { + NylasBookingFormConfig as NylasBookingFormConfigElement, + defineCustomElement as defineNylasBookingFormConfig, +} from "@nylas/web-elements/dist/components/nylas-booking-form-config.js"; +import { + NylasBookingForm as NylasBookingFormElement, + defineCustomElement as defineNylasBookingForm, +} from "@nylas/web-elements/dist/components/nylas-booking-form.js"; +import { + NylasBufferTime as NylasBufferTimeElement, + defineCustomElement as defineNylasBufferTime, +} from "@nylas/web-elements/dist/components/nylas-buffer-time.js"; +import { + NylasCalendarPicker as NylasCalendarPickerElement, + defineCustomElement as defineNylasCalendarPicker, +} from "@nylas/web-elements/dist/components/nylas-calendar-picker.js"; +import { + NylasCancelBookingForm as NylasCancelBookingFormElement, + defineCustomElement as defineNylasCancelBookingForm, +} from "@nylas/web-elements/dist/components/nylas-cancel-booking-form.js"; +import { + NylasCancellationPolicy as NylasCancellationPolicyElement, + defineCustomElement as defineNylasCancellationPolicy, +} from "@nylas/web-elements/dist/components/nylas-cancellation-policy.js"; +import { + NylasCancelledEventCard as NylasCancelledEventCardElement, + defineCustomElement as defineNylasCancelledEventCard, +} from "@nylas/web-elements/dist/components/nylas-cancelled-event-card.js"; +import { + NylasConfirmationEmail as NylasConfirmationEmailElement, + defineCustomElement as defineNylasConfirmationEmail, +} from "@nylas/web-elements/dist/components/nylas-confirmation-email.js"; +import { + NylasConfirmedEventCard as NylasConfirmedEventCardElement, + defineCustomElement as defineNylasConfirmedEventCard, +} from "@nylas/web-elements/dist/components/nylas-confirmed-event-card.js"; +import { + NylasConnectedCalendars as NylasConnectedCalendarsElement, + defineCustomElement as defineNylasConnectedCalendars, +} from "@nylas/web-elements/dist/components/nylas-connected-calendars.js"; +import { + NylasCustomBookingFlow as NylasCustomBookingFlowElement, + defineCustomElement as defineNylasCustomBookingFlow, +} from "@nylas/web-elements/dist/components/nylas-custom-booking-flow.js"; +import { + NylasCustomEventSlug as NylasCustomEventSlugElement, + defineCustomElement as defineNylasCustomEventSlug, +} from "@nylas/web-elements/dist/components/nylas-custom-event-slug.js"; +import { + NylasCustomizeBookingSettings as NylasCustomizeBookingSettingsElement, + defineCustomElement as defineNylasCustomizeBookingSettings, +} from "@nylas/web-elements/dist/components/nylas-customize-booking-settings.js"; +import { + NylasDateComponent as NylasDateComponentElement, + defineCustomElement as defineNylasDateComponent, +} from "@nylas/web-elements/dist/components/nylas-date-component.js"; +import { + NylasDatePicker as NylasDatePickerElement, + defineCustomElement as defineNylasDatePicker, +} from "@nylas/web-elements/dist/components/nylas-date-picker.js"; +import { + NylasDisableEmails as NylasDisableEmailsElement, + defineCustomElement as defineNylasDisableEmails, +} from "@nylas/web-elements/dist/components/nylas-disable-emails.js"; +import { + NylasEditorTabsGroup as NylasEditorTabsGroupElement, + defineCustomElement as defineNylasEditorTabsGroup, +} from "@nylas/web-elements/dist/components/nylas-editor-tabs-group.js"; +import { + NylasEditorTabs as NylasEditorTabsElement, + defineCustomElement as defineNylasEditorTabs, +} from "@nylas/web-elements/dist/components/nylas-editor-tabs.js"; +import { + NylasEventCalendar as NylasEventCalendarElement, + defineCustomElement as defineNylasEventCalendar, +} from "@nylas/web-elements/dist/components/nylas-event-calendar.js"; +import { + NylasEventCapacity as NylasEventCapacityElement, + defineCustomElement as defineNylasEventCapacity, +} from "@nylas/web-elements/dist/components/nylas-event-capacity.js"; +import { + NylasEventDescription as NylasEventDescriptionElement, + defineCustomElement as defineNylasEventDescription, +} from "@nylas/web-elements/dist/components/nylas-event-description.js"; +import { + NylasEventDuration as NylasEventDurationElement, + defineCustomElement as defineNylasEventDuration, +} from "@nylas/web-elements/dist/components/nylas-event-duration.js"; +import { + NylasEventInfo as NylasEventInfoElement, + defineCustomElement as defineNylasEventInfo, +} from "@nylas/web-elements/dist/components/nylas-event-info.js"; +import { + NylasEventLimits as NylasEventLimitsElement, + defineCustomElement as defineNylasEventLimits, +} from "@nylas/web-elements/dist/components/nylas-event-limits.js"; +import { + NylasEventLocation as NylasEventLocationElement, + defineCustomElement as defineNylasEventLocation, +} from "@nylas/web-elements/dist/components/nylas-event-location.js"; +import { + NylasEventTimeslot as NylasEventTimeslotElement, + defineCustomElement as defineNylasEventTimeslot, +} from "@nylas/web-elements/dist/components/nylas-event-timeslot.js"; +import { + NylasEventTitle as NylasEventTitleElement, + defineCustomElement as defineNylasEventTitle, +} from "@nylas/web-elements/dist/components/nylas-event-title.js"; +import { + NylasFeedbackForm as NylasFeedbackFormElement, + defineCustomElement as defineNylasFeedbackForm, +} from "@nylas/web-elements/dist/components/nylas-feedback-form.js"; +import { + NylasFormCard as NylasFormCardElement, + defineCustomElement as defineNylasFormCard, +} from "@nylas/web-elements/dist/components/nylas-form-card.js"; +import { + NylasLimitFutureBookings as NylasLimitFutureBookingsElement, + defineCustomElement as defineNylasLimitFutureBookings, +} from "@nylas/web-elements/dist/components/nylas-limit-future-bookings.js"; +import { + NylasListConfigurations as NylasListConfigurationsElement, + defineCustomElement as defineNylasListConfigurations, +} from "@nylas/web-elements/dist/components/nylas-list-configurations.js"; +import { + NylasLocaleSwitch as NylasLocaleSwitchElement, + defineCustomElement as defineNylasLocaleSwitch, +} from "@nylas/web-elements/dist/components/nylas-locale-switch.js"; +import { + NylasLogo as NylasLogoElement, + defineCustomElement as defineNylasLogo, +} from "@nylas/web-elements/dist/components/nylas-logo.js"; +import { + NylasMinBookingNotice as NylasMinBookingNoticeElement, + defineCustomElement as defineNylasMinBookingNotice, +} from "@nylas/web-elements/dist/components/nylas-min-booking-notice.js"; +import { + NylasMinCancellationNotice as NylasMinCancellationNoticeElement, + defineCustomElement as defineNylasMinCancellationNotice, +} from "@nylas/web-elements/dist/components/nylas-min-cancellation-notice.js"; +import { + NylasNotification as NylasNotificationElement, + defineCustomElement as defineNylasNotification, +} from "@nylas/web-elements/dist/components/nylas-notification.js"; +// NOTE: Component not available in current web-elements version +// import { +// NylasOnlySpecificTimeAvailability as NylasOnlySpecificTimeAvailabilityElement, +// defineCustomElement as defineNylasOnlySpecificTimeAvailability, +// } from "@nylas/web-elements/dist/components/nylas-only-specific-time-availability.js"; +import { + NylasOrganizerConfirmationCard as NylasOrganizerConfirmationCardElement, + defineCustomElement as defineNylasOrganizerConfirmationCard, +} from "@nylas/web-elements/dist/components/nylas-organizer-confirmation-card.js"; +import { + NylasPageName as NylasPageNameElement, + defineCustomElement as defineNylasPageName, +} from "@nylas/web-elements/dist/components/nylas-page-name.js"; +import { + NylasPageStyling as NylasPageStylingElement, + defineCustomElement as defineNylasPageStyling, +} from "@nylas/web-elements/dist/components/nylas-page-styling.js"; +import { + NylasParticipantBookingCalendars as NylasParticipantBookingCalendarsElement, + defineCustomElement as defineNylasParticipantBookingCalendars, +} from "@nylas/web-elements/dist/components/nylas-participant-booking-calendars.js"; +import { + NylasParticipantsCustomAvailability as NylasParticipantsCustomAvailabilityElement, + defineCustomElement as defineNylasParticipantsCustomAvailability, +} from "@nylas/web-elements/dist/components/nylas-participants-custom-availability.js"; +import { + NylasReminderEmails as NylasReminderEmailsElement, + defineCustomElement as defineNylasReminderEmails, +} from "@nylas/web-elements/dist/components/nylas-reminder-emails.js"; +import { + NylasReminderTime as NylasReminderTimeElement, + defineCustomElement as defineNylasReminderTime, +} from "@nylas/web-elements/dist/components/nylas-reminder-time.js"; +import { + NylasSchedulerEditor as NylasSchedulerEditorElement, + defineCustomElement as defineNylasSchedulerEditor, +} from "@nylas/web-elements/dist/components/nylas-scheduler-editor.js"; +import { + NylasSchedulingMethod as NylasSchedulingMethodElement, + defineCustomElement as defineNylasSchedulingMethod, +} from "@nylas/web-elements/dist/components/nylas-scheduling-method.js"; +import { + NylasScheduling as NylasSchedulingElement, + defineCustomElement as defineNylasScheduling, +} from "@nylas/web-elements/dist/components/nylas-scheduling.js"; +import { + NylasSelectEventType as NylasSelectEventTypeElement, + defineCustomElement as defineNylasSelectEventType, +} from "@nylas/web-elements/dist/components/nylas-select-event-type.js"; +import { + NylasSelectedEventCard as NylasSelectedEventCardElement, + defineCustomElement as defineNylasSelectedEventCard, +} from "@nylas/web-elements/dist/components/nylas-selected-event-card.js"; +import { + NylasSpecificTimeAvailabilityPicker as NylasSpecificTimeAvailabilityPickerElement, + defineCustomElement as defineNylasSpecificTimeAvailabilityPicker, +} from "@nylas/web-elements/dist/components/nylas-specific-time-availability-picker.js"; +import { + NylasTimeWindowPicker as NylasTimeWindowPickerElement, + defineCustomElement as defineNylasTimeWindowPicker, +} from "@nylas/web-elements/dist/components/nylas-time-window-picker.js"; +import { + NylasTimeslotInterval as NylasTimeslotIntervalElement, + defineCustomElement as defineNylasTimeslotInterval, +} from "@nylas/web-elements/dist/components/nylas-timeslot-interval.js"; +import { + NylasTimeslotPicker as NylasTimeslotPickerElement, + defineCustomElement as defineNylasTimeslotPicker, +} from "@nylas/web-elements/dist/components/nylas-timeslot-picker.js"; +import { + PaintbrushFillIcon as PaintbrushFillIconElement, + defineCustomElement as definePaintbrushFillIcon, +} from "@nylas/web-elements/dist/components/paintbrush-fill-icon.js"; +import { + PaintbrushIcon as PaintbrushIconElement, + defineCustomElement as definePaintbrushIcon, +} from "@nylas/web-elements/dist/components/paintbrush-icon.js"; +import { + PeopleIcon as PeopleIconElement, + defineCustomElement as definePeopleIcon, +} from "@nylas/web-elements/dist/components/people-icon.js"; +import { + PersonClipboardIcon as PersonClipboardIconElement, + defineCustomElement as definePersonClipboardIcon, +} from "@nylas/web-elements/dist/components/person-clipboard-icon.js"; +import { + PersonIcon as PersonIconElement, + defineCustomElement as definePersonIcon, +} from "@nylas/web-elements/dist/components/person-icon.js"; +import { + PlayIcon as PlayIconElement, + defineCustomElement as definePlayIcon, +} from "@nylas/web-elements/dist/components/play-icon.js"; +import { + PlusIcon as PlusIconElement, + defineCustomElement as definePlusIcon, +} from "@nylas/web-elements/dist/components/plus-icon.js"; +import { + RadioButtonGroup as RadioButtonGroupElement, + defineCustomElement as defineRadioButtonGroup, +} from "@nylas/web-elements/dist/components/radio-button-group.js"; +import { + RefreshIcon as RefreshIconElement, + defineCustomElement as defineRefreshIcon, +} from "@nylas/web-elements/dist/components/refresh-icon.js"; +import { + ReplyAllIcon as ReplyAllIconElement, + defineCustomElement as defineReplyAllIcon, +} from "@nylas/web-elements/dist/components/reply-all-icon.js"; +import { + ReplyIcon as ReplyIconElement, + defineCustomElement as defineReplyIcon, +} from "@nylas/web-elements/dist/components/reply-icon.js"; +import { + SearchIcon as SearchIconElement, + defineCustomElement as defineSearchIcon, +} from "@nylas/web-elements/dist/components/search-icon.js"; +import { + SelectDropdown as SelectDropdownElement, + defineCustomElement as defineSelectDropdown, +} from "@nylas/web-elements/dist/components/select-dropdown.js"; +import { + SentIcon as SentIconElement, + defineCustomElement as defineSentIcon, +} from "@nylas/web-elements/dist/components/sent-icon.js"; +import { + SpamIcon as SpamIconElement, + defineCustomElement as defineSpamIcon, +} from "@nylas/web-elements/dist/components/spam-icon.js"; +import { + StarIcon as StarIconElement, + defineCustomElement as defineStarIcon, +} from "@nylas/web-elements/dist/components/star-icon.js"; +import { + StopIcon as StopIconElement, + defineCustomElement as defineStopIcon, +} from "@nylas/web-elements/dist/components/stop-icon.js"; +import { + TextareaComponent as TextareaComponentElement, + defineCustomElement as defineTextareaComponent, +} from "@nylas/web-elements/dist/components/textarea-component.js"; +import { + TimePeriodSelector as TimePeriodSelectorElement, + defineCustomElement as defineTimePeriodSelector, +} from "@nylas/web-elements/dist/components/time-period-selector.js"; +import { + ToggleSwitch as ToggleSwitchElement, + defineCustomElement as defineToggleSwitch, +} from "@nylas/web-elements/dist/components/toggle-switch.js"; +import { + TooltipComponent as TooltipComponentElement, + defineCustomElement as defineTooltipComponent, +} from "@nylas/web-elements/dist/components/tooltip-component.js"; +import { + TranslateIcon as TranslateIconElement, + defineCustomElement as defineTranslateIcon, +} from "@nylas/web-elements/dist/components/translate-icon.js"; +import { + TrashFillIcon as TrashFillIconElement, + defineCustomElement as defineTrashFillIcon, +} from "@nylas/web-elements/dist/components/trash-fill-icon.js"; +import { + TrashIcon as TrashIconElement, + defineCustomElement as defineTrashIcon, +} from "@nylas/web-elements/dist/components/trash-icon.js"; +import { + UnderlineIcon as UnderlineIconElement, + defineCustomElement as defineUnderlineIcon, +} from "@nylas/web-elements/dist/components/underline-icon.js"; +import { + WarningIcon as WarningIconElement, + defineCustomElement as defineWarningIcon, +} from "@nylas/web-elements/dist/components/warning-icon.js"; +import { + ZoomIcon as ZoomIconElement, + defineCustomElement as defineZoomIcon, +} from "@nylas/web-elements/dist/components/zoom-icon.js"; +import type { + EventName, + StencilReactComponent, +} from "@stencil/react-output-target/runtime"; +import { createComponent } from "@stencil/react-output-target/runtime"; +import React from "react"; + +export type AddCircleIconEvents = NonNullable; + +export const AddCircleIcon: StencilReactComponent< + AddCircleIconElement, + AddCircleIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "add-circle-icon", + elementClass: AddCircleIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as AddCircleIconEvents, + defineCustomElement: defineAddCircleIcon, +}); + +export type ArchiveIconEvents = NonNullable; + +export const ArchiveIcon: StencilReactComponent< + ArchiveIconElement, + ArchiveIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "archive-icon", + elementClass: ArchiveIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ArchiveIconEvents, + defineCustomElement: defineArchiveIcon, +}); + +export type ArrowIconEvents = NonNullable; + +export const ArrowIcon: StencilReactComponent< + ArrowIconElement, + ArrowIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "arrow-icon", + elementClass: ArrowIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ArrowIconEvents, + defineCustomElement: defineArrowIcon, +}); + +export type BoldIconEvents = NonNullable; + +export const BoldIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "bold-icon", + elementClass: BoldIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as BoldIconEvents, + defineCustomElement: defineBoldIcon, + }); + +export type ButtonComponentEvents = NonNullable; + +export const ButtonComponent: StencilReactComponent< + ButtonComponentElement, + ButtonComponentEvents +> = /*@__PURE__*/ createComponent< + ButtonComponentElement, + ButtonComponentEvents +>({ + tagName: "button-component", + elementClass: ButtonComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ButtonComponentEvents, + defineCustomElement: defineButtonComponent, +}); + +export type CalendarAgendaFillIconEvents = NonNullable; + +export const CalendarAgendaFillIcon: StencilReactComponent< + CalendarAgendaFillIconElement, + CalendarAgendaFillIconEvents +> = /*@__PURE__*/ createComponent< + CalendarAgendaFillIconElement, + CalendarAgendaFillIconEvents +>({ + tagName: "calendar-agenda-fill-icon", + elementClass: CalendarAgendaFillIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarAgendaFillIconEvents, + defineCustomElement: defineCalendarAgendaFillIcon, +}); + +export type CalendarAgendaIconEvents = NonNullable; + +export const CalendarAgendaIcon: StencilReactComponent< + CalendarAgendaIconElement, + CalendarAgendaIconEvents +> = /*@__PURE__*/ createComponent< + CalendarAgendaIconElement, + CalendarAgendaIconEvents +>({ + tagName: "calendar-agenda-icon", + elementClass: CalendarAgendaIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarAgendaIconEvents, + defineCustomElement: defineCalendarAgendaIcon, +}); + +export type CalendarCancelIconEvents = NonNullable; + +export const CalendarCancelIcon: StencilReactComponent< + CalendarCancelIconElement, + CalendarCancelIconEvents +> = /*@__PURE__*/ createComponent< + CalendarCancelIconElement, + CalendarCancelIconEvents +>({ + tagName: "calendar-cancel-icon", + elementClass: CalendarCancelIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarCancelIconEvents, + defineCustomElement: defineCalendarCancelIcon, +}); + +export type CalendarCheckIconEvents = NonNullable; + +export const CalendarCheckIcon: StencilReactComponent< + CalendarCheckIconElement, + CalendarCheckIconEvents +> = /*@__PURE__*/ createComponent< + CalendarCheckIconElement, + CalendarCheckIconEvents +>({ + tagName: "calendar-check-icon", + elementClass: CalendarCheckIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarCheckIconEvents, + defineCustomElement: defineCalendarCheckIcon, +}); + +export type CalendarIconEvents = NonNullable; + +export const CalendarIcon: StencilReactComponent< + CalendarIconElement, + CalendarIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "calendar-icon", + elementClass: CalendarIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarIconEvents, + defineCustomElement: defineCalendarIcon, +}); + +export type CalendarInfoIconEvents = NonNullable; + +export const CalendarInfoIcon: StencilReactComponent< + CalendarInfoIconElement, + CalendarInfoIconEvents +> = /*@__PURE__*/ createComponent< + CalendarInfoIconElement, + CalendarInfoIconEvents +>({ + tagName: "calendar-info-icon", + elementClass: CalendarInfoIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarInfoIconEvents, + defineCustomElement: defineCalendarInfoIcon, +}); + +export type CalendarPatternsIconEvents = NonNullable; + +export const CalendarPatternsIcon: StencilReactComponent< + CalendarPatternsIconElement, + CalendarPatternsIconEvents +> = /*@__PURE__*/ createComponent< + CalendarPatternsIconElement, + CalendarPatternsIconEvents +>({ + tagName: "calendar-patterns-icon", + elementClass: CalendarPatternsIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CalendarPatternsIconEvents, + defineCustomElement: defineCalendarPatternsIcon, +}); + +export type CheckboxComponentEvents = { + onNylasFormCheckboxToggled: EventName< + CustomEvent<{ + checked: boolean; + name: string; + label: string; + }> + >; +}; + +export const CheckboxComponent: StencilReactComponent< + CheckboxComponentElement, + CheckboxComponentEvents +> = /*@__PURE__*/ createComponent< + CheckboxComponentElement, + CheckboxComponentEvents +>({ + tagName: "checkbox-component", + elementClass: CheckboxComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormCheckboxToggled: "nylasFormCheckboxToggled", + } as CheckboxComponentEvents, + defineCustomElement: defineCheckboxComponent, +}); + +export type CheckboxGroupEvents = { + onNylasCheckboxGroupChanged: EventName< + CustomEvent<{ + selectedValues: string[]; + name: string; + }> + >; +}; + +export const CheckboxGroup: StencilReactComponent< + CheckboxGroupElement, + CheckboxGroupEvents +> = /*@__PURE__*/ createComponent({ + tagName: "checkbox-group", + elementClass: CheckboxGroupElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasCheckboxGroupChanged: "nylasCheckboxGroupChanged", + } as CheckboxGroupEvents, + defineCustomElement: defineCheckboxGroup, +}); + +export type CheckmarkCircleIconEvents = NonNullable; + +export const CheckmarkCircleIcon: StencilReactComponent< + CheckmarkCircleIconElement, + CheckmarkCircleIconEvents +> = /*@__PURE__*/ createComponent< + CheckmarkCircleIconElement, + CheckmarkCircleIconEvents +>({ + tagName: "checkmark-circle-icon", + elementClass: CheckmarkCircleIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CheckmarkCircleIconEvents, + defineCustomElement: defineCheckmarkCircleIcon, +}); + +export type CheckmarkIconEvents = NonNullable; + +export const CheckmarkIcon: StencilReactComponent< + CheckmarkIconElement, + CheckmarkIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "checkmark-icon", + elementClass: CheckmarkIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CheckmarkIconEvents, + defineCustomElement: defineCheckmarkIcon, +}); + +export type ChevronIconEvents = NonNullable; + +export const ChevronIcon: StencilReactComponent< + ChevronIconElement, + ChevronIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "chevron-icon", + elementClass: ChevronIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ChevronIconEvents, + defineCustomElement: defineChevronIcon, +}); + +export type ClockIconEvents = NonNullable; + +export const ClockIcon: StencilReactComponent< + ClockIconElement, + ClockIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "clock-icon", + elementClass: ClockIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ClockIconEvents, + defineCustomElement: defineClockIcon, +}); + +export type CloseIconEvents = NonNullable; + +export const CloseIcon: StencilReactComponent< + CloseIconElement, + CloseIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "close-icon", + elementClass: CloseIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CloseIconEvents, + defineCustomElement: defineCloseIcon, +}); + +export type CopyIconEvents = NonNullable; + +export const CopyIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "copy-icon", + elementClass: CopyIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as CopyIconEvents, + defineCustomElement: defineCopyIcon, + }); + +export type DeleteIconEvents = NonNullable; + +export const DeleteIcon: StencilReactComponent< + DeleteIconElement, + DeleteIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "delete-icon", + elementClass: DeleteIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as DeleteIconEvents, + defineCustomElement: defineDeleteIcon, +}); + +export type DocumentRefreshIconEvents = NonNullable; + +export const DocumentRefreshIcon: StencilReactComponent< + DocumentRefreshIconElement, + DocumentRefreshIconEvents +> = /*@__PURE__*/ createComponent< + DocumentRefreshIconElement, + DocumentRefreshIconEvents +>({ + tagName: "document-refresh-icon", + elementClass: DocumentRefreshIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as DocumentRefreshIconEvents, + defineCustomElement: defineDocumentRefreshIcon, +}); + +export type DragableIconEvents = NonNullable; + +export const DragableIcon: StencilReactComponent< + DragableIconElement, + DragableIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "dragable-icon", + elementClass: DragableIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as DragableIconEvents, + defineCustomElement: defineDragableIcon, +}); + +export type EditIconEvents = NonNullable; + +export const EditIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "edit-icon", + elementClass: EditIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as EditIconEvents, + defineCustomElement: defineEditIcon, + }); + +export type EnvelopeFillIconEvents = NonNullable; + +export const EnvelopeFillIcon: StencilReactComponent< + EnvelopeFillIconElement, + EnvelopeFillIconEvents +> = /*@__PURE__*/ createComponent< + EnvelopeFillIconElement, + EnvelopeFillIconEvents +>({ + tagName: "envelope-fill-icon", + elementClass: EnvelopeFillIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as EnvelopeFillIconEvents, + defineCustomElement: defineEnvelopeFillIcon, +}); + +export type EnvelopeIconEvents = NonNullable; + +export const EnvelopeIcon: StencilReactComponent< + EnvelopeIconElement, + EnvelopeIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "envelope-icon", + elementClass: EnvelopeIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as EnvelopeIconEvents, + defineCustomElement: defineEnvelopeIcon, +}); + +export type EyeIconEvents = NonNullable; + +export const EyeIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "eye-icon", + elementClass: EyeIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as EyeIconEvents, + defineCustomElement: defineEyeIcon, + }); + +export type FeedbackIconEvents = NonNullable; + +export const FeedbackIcon: StencilReactComponent< + FeedbackIconElement, + FeedbackIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "feedback-icon", + elementClass: FeedbackIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as FeedbackIconEvents, + defineCustomElement: defineFeedbackIcon, +}); + +export type FlowIconEvents = NonNullable; + +export const FlowIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "flow-icon", + elementClass: FlowIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as FlowIconEvents, + defineCustomElement: defineFlowIcon, + }); + +export type FolderIconEvents = NonNullable; + +export const FolderIcon: StencilReactComponent< + FolderIconElement, + FolderIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "folder-icon", + elementClass: FolderIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as FolderIconEvents, + defineCustomElement: defineFolderIcon, +}); + +export type ForwardIconEvents = NonNullable; + +export const ForwardIcon: StencilReactComponent< + ForwardIconElement, + ForwardIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "forward-icon", + elementClass: ForwardIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ForwardIconEvents, + defineCustomElement: defineForwardIcon, +}); + +export type GlobeIconEvents = NonNullable; + +export const GlobeIcon: StencilReactComponent< + GlobeIconElement, + GlobeIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "globe-icon", + elementClass: GlobeIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as GlobeIconEvents, + defineCustomElement: defineGlobeIcon, +}); + +export type GoogleLogoIconEvents = NonNullable; + +export const GoogleLogoIcon: StencilReactComponent< + GoogleLogoIconElement, + GoogleLogoIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "google-logo-icon", + elementClass: GoogleLogoIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as GoogleLogoIconEvents, + defineCustomElement: defineGoogleLogoIcon, +}); + +export type GoogleMeetIconEvents = NonNullable; + +export const GoogleMeetIcon: StencilReactComponent< + GoogleMeetIconElement, + GoogleMeetIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "google-meet-icon", + elementClass: GoogleMeetIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as GoogleMeetIconEvents, + defineCustomElement: defineGoogleMeetIcon, +}); + +export type InboxIconEvents = NonNullable; + +export const InboxIcon: StencilReactComponent< + InboxIconElement, + InboxIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "inbox-icon", + elementClass: InboxIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as InboxIconEvents, + defineCustomElement: defineInboxIcon, +}); + +export type InfoIconEvents = NonNullable; + +export const InfoIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "info-icon", + elementClass: InfoIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as InfoIconEvents, + defineCustomElement: defineInfoIcon, + }); + +export type InputColorPickerEvents = { + onNylasFormDropdownChanged: EventName< + CustomEvent<{ + value: string; + name: string; + error?: string; + label?: string; + }> + >; +}; + +export const InputColorPicker: StencilReactComponent< + InputColorPickerElement, + InputColorPickerEvents +> = /*@__PURE__*/ createComponent< + InputColorPickerElement, + InputColorPickerEvents +>({ + tagName: "input-color-picker", + elementClass: InputColorPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormDropdownChanged: "nylasFormDropdownChanged", + } as InputColorPickerEvents, + defineCustomElement: defineInputColorPicker, +}); + +export type InputComponentEvents = { + onNylasFormInputChanged: EventName< + CustomEvent<{ + value: string; + name: string; + label: string; + type: string; + error: string; + }> + >; + onNylasFormInputFocused: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; + onNylasFormInputBlurred: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const InputComponent: StencilReactComponent< + InputComponentElement, + InputComponentEvents +> = /*@__PURE__*/ createComponent({ + tagName: "input-component", + elementClass: InputComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormInputChanged: "nylasFormInputChanged", + onNylasFormInputFocused: "nylasFormInputFocused", + onNylasFormInputBlurred: "nylasFormInputBlurred", + } as InputComponentEvents, + defineCustomElement: defineInputComponent, +}); + +export type InputDropdownEvents = { + onInputOptionChanged: EventName< + InputDropdownCustomEvent<{ + value: DropdownOption["value"]; + name: string; + }> + >; +}; + +export const InputDropdown: StencilReactComponent< + InputDropdownElement, + InputDropdownEvents +> = /*@__PURE__*/ createComponent({ + tagName: "input-dropdown", + elementClass: InputDropdownElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onInputOptionChanged: "inputOptionChanged" } as InputDropdownEvents, + defineCustomElement: defineInputDropdown, +}); + +export type InputImageUrlEvents = { + onNylasFormInputImageUrlInvalid: EventName< + CustomEvent<{ value: string; name: string }> + >; + onValueChanged: EventName< + InputImageUrlCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const InputImageUrl: StencilReactComponent< + InputImageUrlElement, + InputImageUrlEvents +> = /*@__PURE__*/ createComponent({ + tagName: "input-image-url", + elementClass: InputImageUrlElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormInputImageUrlInvalid: "nylasFormInputImageUrlInvalid", + onValueChanged: "valueChanged", + } as InputImageUrlEvents, + defineCustomElement: defineInputImageUrl, +}); + +export type ItalicIconEvents = NonNullable; + +export const ItalicIcon: StencilReactComponent< + ItalicIconElement, + ItalicIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "italic-icon", + elementClass: ItalicIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ItalicIconEvents, + defineCustomElement: defineItalicIcon, +}); + +export type LoadingIconEvents = NonNullable; + +export const LoadingIcon: StencilReactComponent< + LoadingIconElement, + LoadingIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "loading-icon", + elementClass: LoadingIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as LoadingIconEvents, + defineCustomElement: defineLoadingIcon, +}); + +export type LocationIconEvents = NonNullable; + +export const LocationIcon: StencilReactComponent< + LocationIconElement, + LocationIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "location-icon", + elementClass: LocationIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as LocationIconEvents, + defineCustomElement: defineLocationIcon, +}); + +export type LocationOffIconEvents = NonNullable; + +export const LocationOffIcon: StencilReactComponent< + LocationOffIconElement, + LocationOffIconEvents +> = /*@__PURE__*/ createComponent< + LocationOffIconElement, + LocationOffIconEvents +>({ + tagName: "location-off-icon", + elementClass: LocationOffIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as LocationOffIconEvents, + defineCustomElement: defineLocationOffIcon, +}); + +export type MicrosoftLogoIconEvents = NonNullable; + +export const MicrosoftLogoIcon: StencilReactComponent< + MicrosoftLogoIconElement, + MicrosoftLogoIconEvents +> = /*@__PURE__*/ createComponent< + MicrosoftLogoIconElement, + MicrosoftLogoIconEvents +>({ + tagName: "microsoft-logo-icon", + elementClass: MicrosoftLogoIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as MicrosoftLogoIconEvents, + defineCustomElement: defineMicrosoftLogoIcon, +}); + +export type MicrosoftTeamsIconEvents = NonNullable; + +export const MicrosoftTeamsIcon: StencilReactComponent< + MicrosoftTeamsIconElement, + MicrosoftTeamsIconEvents +> = /*@__PURE__*/ createComponent< + MicrosoftTeamsIconElement, + MicrosoftTeamsIconEvents +>({ + tagName: "microsoft-teams-icon", + elementClass: MicrosoftTeamsIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as MicrosoftTeamsIconEvents, + defineCustomElement: defineMicrosoftTeamsIcon, +}); + +export type MultiSelectDropdownEvents = { + onSelectedOptionsChanged: EventName< + CustomEvent<{ + value: string[]; + name: string; + }> + >; +}; + +export const MultiSelectDropdown: StencilReactComponent< + MultiSelectDropdownElement, + MultiSelectDropdownEvents +> = /*@__PURE__*/ createComponent< + MultiSelectDropdownElement, + MultiSelectDropdownEvents +>({ + tagName: "multi-select-dropdown", + elementClass: MultiSelectDropdownElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onSelectedOptionsChanged: "selectedOptionsChanged", + } as MultiSelectDropdownEvents, + defineCustomElement: defineMultiSelectDropdown, +}); + +export type NylasAdditionalParticipantsEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasAdditionalParticipants: StencilReactComponent< + NylasAdditionalParticipantsElement, + NylasAdditionalParticipantsEvents +> = /*@__PURE__*/ createComponent< + NylasAdditionalParticipantsElement, + NylasAdditionalParticipantsEvents +>({ + tagName: "nylas-additional-participants", + elementClass: NylasAdditionalParticipantsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasAdditionalParticipantsEvents, + defineCustomElement: defineNylasAdditionalParticipants, +}); + +export type NylasAvailabilityPickerEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasAvailabilityPicker: StencilReactComponent< + NylasAvailabilityPickerElement, + NylasAvailabilityPickerEvents +> = /*@__PURE__*/ createComponent< + NylasAvailabilityPickerElement, + NylasAvailabilityPickerEvents +>({ + tagName: "nylas-availability-picker", + elementClass: NylasAvailabilityPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasAvailabilityPickerEvents, + defineCustomElement: defineNylasAvailabilityPicker, +}); + +export type NylasBookedEventCardEvents = { + onCancelBookingButtonClicked: EventName>; + onRescheduleButtonClicked: EventName< + NylasBookedEventCardCustomEvent<{ + bookingId: string; + errorHandler?: (error: NylasSchedulerErrorResponse) => void; + }> + >; + onRescheduleBookedEventError: EventName< + NylasBookedEventCardCustomEvent + >; + onCancelBookedEventValidationError: EventName< + CustomEvent<{ + error: { + title: string; + message: string; + }; + }> + >; +}; + +export const NylasBookedEventCard: StencilReactComponent< + NylasBookedEventCardElement, + NylasBookedEventCardEvents +> = /*@__PURE__*/ createComponent< + NylasBookedEventCardElement, + NylasBookedEventCardEvents +>({ + tagName: "nylas-booked-event-card", + elementClass: NylasBookedEventCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onCancelBookingButtonClicked: "cancelBookingButtonClicked", + onRescheduleButtonClicked: "rescheduleButtonClicked", + onRescheduleBookedEventError: "rescheduleBookedEventError", + onCancelBookedEventValidationError: "cancelBookedEventValidationError", + } as NylasBookedEventCardEvents, + defineCustomElement: defineNylasBookedEventCard, +}); + +export type NylasBookingCalendarPickerEvents = { + onValueChanged: EventName< + NylasBookingCalendarPickerCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasBookingCalendarPicker: StencilReactComponent< + NylasBookingCalendarPickerElement, + NylasBookingCalendarPickerEvents +> = /*@__PURE__*/ createComponent< + NylasBookingCalendarPickerElement, + NylasBookingCalendarPickerEvents +>({ + tagName: "nylas-booking-calendar-picker", + elementClass: NylasBookingCalendarPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasBookingCalendarPickerEvents, + defineCustomElement: defineNylasBookingCalendarPicker, +}); + +export type NylasBookingConfirmationRedirectEvents = { + onValueChanged: EventName< + NylasBookingConfirmationRedirectCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasBookingConfirmationRedirect: StencilReactComponent< + NylasBookingConfirmationRedirectElement, + NylasBookingConfirmationRedirectEvents +> = /*@__PURE__*/ createComponent< + NylasBookingConfirmationRedirectElement, + NylasBookingConfirmationRedirectEvents +>({ + tagName: "nylas-booking-confirmation-redirect", + elementClass: NylasBookingConfirmationRedirectElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasBookingConfirmationRedirectEvents, + defineCustomElement: defineNylasBookingConfirmationRedirect, +}); + +export type NylasBookingConfirmationTypeEvents = { + onValueChanged: EventName< + NylasBookingConfirmationTypeCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasBookingConfirmationType: StencilReactComponent< + NylasBookingConfirmationTypeElement, + NylasBookingConfirmationTypeEvents +> = /*@__PURE__*/ createComponent< + NylasBookingConfirmationTypeElement, + NylasBookingConfirmationTypeEvents +>({ + tagName: "nylas-booking-confirmation-type", + elementClass: NylasBookingConfirmationTypeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasBookingConfirmationTypeEvents, + defineCustomElement: defineNylasBookingConfirmationType, +}); + +export type NylasBookingFormEvents = { + onNameChanged: EventName>; + onEmailChanged: EventName>; + onBackButtonClicked: EventName>; + onDetailsConfirmed: EventName< + NylasBookingFormCustomEvent + >; + onBookingFormError: EventName< + NylasBookingFormCustomEvent> + >; + onBookingFormSubmitted: EventName>; +}; + +export const NylasBookingForm: StencilReactComponent< + NylasBookingFormElement, + NylasBookingFormEvents +> = /*@__PURE__*/ createComponent< + NylasBookingFormElement, + NylasBookingFormEvents +>({ + tagName: "nylas-booking-form", + elementClass: NylasBookingFormElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNameChanged: "nameChanged", + onEmailChanged: "emailChanged", + onBackButtonClicked: "backButtonClicked", + onDetailsConfirmed: "detailsConfirmed", + onBookingFormError: "bookingFormError", + onBookingFormSubmitted: "bookingFormSubmitted", + } as NylasBookingFormEvents, + defineCustomElement: defineNylasBookingForm, +}); + +export type NylasBookingFormConfigEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasBookingFormConfig: StencilReactComponent< + NylasBookingFormConfigElement, + NylasBookingFormConfigEvents +> = /*@__PURE__*/ createComponent< + NylasBookingFormConfigElement, + NylasBookingFormConfigEvents +>({ + tagName: "nylas-booking-form-config", + elementClass: NylasBookingFormConfigElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasBookingFormConfigEvents, + defineCustomElement: defineNylasBookingFormConfig, +}); + +export type NylasBufferTimeEvents = { + onValueChanged: EventName< + NylasBufferTimeCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasBufferTime: StencilReactComponent< + NylasBufferTimeElement, + NylasBufferTimeEvents +> = /*@__PURE__*/ createComponent< + NylasBufferTimeElement, + NylasBufferTimeEvents +>({ + tagName: "nylas-buffer-time", + elementClass: NylasBufferTimeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasBufferTimeEvents, + defineCustomElement: defineNylasBufferTime, +}); + +export type NylasCalendarPickerEvents = { + onValueChanged: EventName< + NylasCalendarPickerCustomEvent<{ + value: string[]; + name: string; + valueChangedHandler?: ( + event: CustomEvent<{ value: string[]; name: string }>, + ) => void; + }> + >; +}; + +export const NylasCalendarPicker: StencilReactComponent< + NylasCalendarPickerElement, + NylasCalendarPickerEvents +> = /*@__PURE__*/ createComponent< + NylasCalendarPickerElement, + NylasCalendarPickerEvents +>({ + tagName: "nylas-calendar-picker", + elementClass: NylasCalendarPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasCalendarPickerEvents, + defineCustomElement: defineNylasCalendarPicker, +}); + +export type NylasCancelBookingFormEvents = { + onGoBackButtonClicked: EventName>; + onCancelBookingFormSubmitted: EventName< + NylasCancelBookingFormCustomEvent<{ + bookingId: string; + action: "reject" | "cancel"; + reason: string; + errorHandler?: (error: NylasSchedulerErrorResponse) => void; + }> + >; + onTriggerValidation: EventName>; + onCancelBookedEventError: EventName< + NylasCancelBookingFormCustomEvent + >; + onCancelBookingFormError: EventName< + NylasCancelBookingFormCustomEvent> + >; +}; + +export const NylasCancelBookingForm: StencilReactComponent< + NylasCancelBookingFormElement, + NylasCancelBookingFormEvents +> = /*@__PURE__*/ createComponent< + NylasCancelBookingFormElement, + NylasCancelBookingFormEvents +>({ + tagName: "nylas-cancel-booking-form", + elementClass: NylasCancelBookingFormElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onGoBackButtonClicked: "goBackButtonClicked", + onCancelBookingFormSubmitted: "cancelBookingFormSubmitted", + onTriggerValidation: "triggerValidation", + onCancelBookedEventError: "cancelBookedEventError", + onCancelBookingFormError: "cancelBookingFormError", + } as NylasCancelBookingFormEvents, + defineCustomElement: defineNylasCancelBookingForm, +}); + +export type NylasCancellationPolicyEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasCancellationPolicy: StencilReactComponent< + NylasCancellationPolicyElement, + NylasCancellationPolicyEvents +> = /*@__PURE__*/ createComponent< + NylasCancellationPolicyElement, + NylasCancellationPolicyEvents +>({ + tagName: "nylas-cancellation-policy", + elementClass: NylasCancellationPolicyElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasCancellationPolicyEvents, + defineCustomElement: defineNylasCancellationPolicy, +}); + +export type NylasCancelledEventCardEvents = { + onCloseCancelEventCardClicked: EventName< + NylasCancelledEventCardCustomEvent<{ + errorHandler?: (error: NylasSchedulerErrorResponse) => void; + }> + >; + onCancelledEventCardError: EventName< + NylasCancelledEventCardCustomEvent + >; +}; + +export const NylasCancelledEventCard: StencilReactComponent< + NylasCancelledEventCardElement, + NylasCancelledEventCardEvents +> = /*@__PURE__*/ createComponent< + NylasCancelledEventCardElement, + NylasCancelledEventCardEvents +>({ + tagName: "nylas-cancelled-event-card", + elementClass: NylasCancelledEventCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onCloseCancelEventCardClicked: "closeCancelEventCardClicked", + onCancelledEventCardError: "cancelledEventCardError", + } as NylasCancelledEventCardEvents, + defineCustomElement: defineNylasCancelledEventCard, +}); + +export type NylasConfirmationEmailEvents = { + onValueChanged: EventName< + NylasConfirmationEmailCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasConfirmationEmail: StencilReactComponent< + NylasConfirmationEmailElement, + NylasConfirmationEmailEvents +> = /*@__PURE__*/ createComponent< + NylasConfirmationEmailElement, + NylasConfirmationEmailEvents +>({ + tagName: "nylas-confirmation-email", + elementClass: NylasConfirmationEmailElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasConfirmationEmailEvents, + defineCustomElement: defineNylasConfirmationEmail, +}); + +export type NylasConfirmedEventCardEvents = { + onCloseConfirmEventCardClicked: EventName< + NylasConfirmedEventCardCustomEvent<{ + errorHandler?: (error: NylasSchedulerErrorResponse) => void; + }> + >; + onConfirmedEventCardError: EventName< + NylasConfirmedEventCardCustomEvent + >; +}; + +export const NylasConfirmedEventCard: StencilReactComponent< + NylasConfirmedEventCardElement, + NylasConfirmedEventCardEvents +> = /*@__PURE__*/ createComponent< + NylasConfirmedEventCardElement, + NylasConfirmedEventCardEvents +>({ + tagName: "nylas-confirmed-event-card", + elementClass: NylasConfirmedEventCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onCloseConfirmEventCardClicked: "closeConfirmEventCardClicked", + onConfirmedEventCardError: "confirmedEventCardError", + } as NylasConfirmedEventCardEvents, + defineCustomElement: defineNylasConfirmedEventCard, +}); + +export type NylasConnectedCalendarsEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasConnectedCalendars: StencilReactComponent< + NylasConnectedCalendarsElement, + NylasConnectedCalendarsEvents +> = /*@__PURE__*/ createComponent< + NylasConnectedCalendarsElement, + NylasConnectedCalendarsEvents +>({ + tagName: "nylas-connected-calendars", + elementClass: NylasConnectedCalendarsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasConnectedCalendarsEvents, + defineCustomElement: defineNylasConnectedCalendars, +}); + +export type NylasCustomBookingFlowEvents = NonNullable; + +export const NylasCustomBookingFlow: StencilReactComponent< + NylasCustomBookingFlowElement, + NylasCustomBookingFlowEvents +> = /*@__PURE__*/ createComponent< + NylasCustomBookingFlowElement, + NylasCustomBookingFlowEvents +>({ + tagName: "nylas-custom-booking-flow", + elementClass: NylasCustomBookingFlowElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasCustomBookingFlowEvents, + defineCustomElement: defineNylasCustomBookingFlow, +}); + +export type NylasCustomEventSlugEvents = { + onValueChanged: EventName< + NylasCustomEventSlugCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasCustomEventSlug: StencilReactComponent< + NylasCustomEventSlugElement, + NylasCustomEventSlugEvents +> = /*@__PURE__*/ createComponent< + NylasCustomEventSlugElement, + NylasCustomEventSlugEvents +>({ + tagName: "nylas-custom-event-slug", + elementClass: NylasCustomEventSlugElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasCustomEventSlugEvents, + defineCustomElement: defineNylasCustomEventSlug, +}); + +export type NylasCustomizeBookingSettingsEvents = { + onValueChanged: EventName< + NylasCustomizeBookingSettingsCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasCustomizeBookingSettings: StencilReactComponent< + NylasCustomizeBookingSettingsElement, + NylasCustomizeBookingSettingsEvents +> = /*@__PURE__*/ createComponent< + NylasCustomizeBookingSettingsElement, + NylasCustomizeBookingSettingsEvents +>({ + tagName: "nylas-customize-booking-settings", + elementClass: NylasCustomizeBookingSettingsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasCustomizeBookingSettingsEvents, + defineCustomElement: defineNylasCustomizeBookingSettings, +}); + +export type NylasDateComponentEvents = { + onNylasFormInputChanged: EventName< + CustomEvent<{ + value: string; + name: string; + label: string; + type: string; + error: string; + }> + >; + onNylasFormInputFocused: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; + onNylasFormInputBlurred: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasDateComponent: StencilReactComponent< + NylasDateComponentElement, + NylasDateComponentEvents +> = /*@__PURE__*/ createComponent< + NylasDateComponentElement, + NylasDateComponentEvents +>({ + tagName: "nylas-date-component", + elementClass: NylasDateComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormInputChanged: "nylasFormInputChanged", + onNylasFormInputFocused: "nylasFormInputFocused", + onNylasFormInputBlurred: "nylasFormInputBlurred", + } as NylasDateComponentEvents, + defineCustomElement: defineNylasDateComponent, +}); + +export type NylasDatePickerEvents = { + onDateSelected: EventName>; + onMonthChanged: EventName>; +}; + +export const NylasDatePicker: StencilReactComponent< + NylasDatePickerElement, + NylasDatePickerEvents +> = /*@__PURE__*/ createComponent< + NylasDatePickerElement, + NylasDatePickerEvents +>({ + tagName: "nylas-date-picker", + elementClass: NylasDatePickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onDateSelected: "dateSelected", + onMonthChanged: "monthChanged", + } as NylasDatePickerEvents, + defineCustomElement: defineNylasDatePicker, +}); + +export type NylasDisableEmailsEvents = { + onValueChanged: EventName< + NylasDisableEmailsCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasDisableEmails: StencilReactComponent< + NylasDisableEmailsElement, + NylasDisableEmailsEvents +> = /*@__PURE__*/ createComponent< + NylasDisableEmailsElement, + NylasDisableEmailsEvents +>({ + tagName: "nylas-disable-emails", + elementClass: NylasDisableEmailsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasDisableEmailsEvents, + defineCustomElement: defineNylasDisableEmails, +}); + +export type NylasEditorTabsEvents = { + onSchedulerConfigChanged: EventName< + NylasEditorTabsCustomEvent + >; + onSchedulerConfigCreated: EventName< + NylasEditorTabsCustomEvent + >; + onCancelButtonClick: EventName>; + onFormSubmitted: EventName>; + onPreviewButtonClicked: EventName< + NylasEditorTabsCustomEvent + >; + onSchedulerEditorFormUpdated: EventName< + CustomEvent<{ value: string; name: string }> + >; + onNylasSchedulerError: EventName< + NylasEditorTabsCustomEvent<{ + notification: Notification; + host: HTMLElement; + }> + >; + onDismissNotification: EventName< + NylasEditorTabsCustomEvent<{ id: string; host: HTMLNylasEditorTabsElement }> + >; +}; + +export const NylasEditorTabs: StencilReactComponent< + NylasEditorTabsElement, + NylasEditorTabsEvents +> = /*@__PURE__*/ createComponent< + NylasEditorTabsElement, + NylasEditorTabsEvents +>({ + tagName: "nylas-editor-tabs", + elementClass: NylasEditorTabsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onSchedulerConfigChanged: "schedulerConfigChanged", + onSchedulerConfigCreated: "schedulerConfigCreated", + onCancelButtonClick: "cancelButtonClick", + onFormSubmitted: "formSubmitted", + onPreviewButtonClicked: "previewButtonClicked", + onSchedulerEditorFormUpdated: "schedulerEditorFormUpdated", + onNylasSchedulerError: "nylasSchedulerError", + onDismissNotification: "dismissNotification", + } as NylasEditorTabsEvents, + defineCustomElement: defineNylasEditorTabs, +}); + +export type NylasEditorTabsGroupEvents = { + onSchedulerConfigChanged: EventName< + NylasEditorTabsGroupCustomEvent< + SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement } + > + >; + onSchedulerConfigCreated: EventName< + NylasEditorTabsGroupCustomEvent< + SchedulerGroupEventDetail & { host: HTMLNylasEditorTabsGroupElement } + > + >; + onCancelButtonClick: EventName>; + onFormSubmitted: EventName>; + onPreviewButtonClicked: EventName< + NylasEditorTabsGroupCustomEvent + >; + onSchedulerEditorFormUpdated: EventName< + CustomEvent<{ value: string; name: string }> + >; + onGroupEventCreateTriggered: EventName< + NylasEditorTabsGroupCustomEvent<{ + groupEvent: Partial; + configId: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; + onGroupEventUpdateTriggered: EventName< + NylasEditorTabsGroupCustomEvent<{ + groupEvent: GroupEvent; + chosenOption: RecurrenceUpdateOption; + configId: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; + onGroupEventDeleteTriggered: EventName< + NylasEditorTabsGroupCustomEvent<{ + groupEvent: GroupEvent; + chosenOption: RecurrenceDeleteOption; + configId: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; + onGroupEventImportTriggered: EventName< + NylasEditorTabsGroupCustomEvent<{ + groupEvent: ImportGroupEventDetails; + configId: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; + onSaveGroupEventChangesError: EventName< + NylasEditorTabsGroupCustomEvent<{ + error: string; + configId: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; + onNylasSchedulerError: EventName< + NylasEditorTabsGroupCustomEvent<{ + notification: Notification; + host: HTMLElement; + }> + >; + onDismissNotification: EventName< + NylasEditorTabsGroupCustomEvent<{ + id: string; + host: HTMLNylasEditorTabsGroupElement; + }> + >; +}; + +export const NylasEditorTabsGroup: StencilReactComponent< + NylasEditorTabsGroupElement, + NylasEditorTabsGroupEvents +> = /*@__PURE__*/ createComponent< + NylasEditorTabsGroupElement, + NylasEditorTabsGroupEvents +>({ + tagName: "nylas-editor-tabs-group", + elementClass: NylasEditorTabsGroupElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onSchedulerConfigChanged: "schedulerConfigChanged", + onSchedulerConfigCreated: "schedulerConfigCreated", + onCancelButtonClick: "cancelButtonClick", + onFormSubmitted: "formSubmitted", + onPreviewButtonClicked: "previewButtonClicked", + onSchedulerEditorFormUpdated: "schedulerEditorFormUpdated", + onGroupEventCreateTriggered: "groupEventCreateTriggered", + onGroupEventUpdateTriggered: "groupEventUpdateTriggered", + onGroupEventDeleteTriggered: "groupEventDeleteTriggered", + onGroupEventImportTriggered: "groupEventImportTriggered", + onSaveGroupEventChangesError: "saveGroupEventChangesError", + onNylasSchedulerError: "nylasSchedulerError", + onDismissNotification: "dismissNotification", + } as NylasEditorTabsGroupEvents, + defineCustomElement: defineNylasEditorTabsGroup, +}); + +export type NylasEventCalendarEvents = { + onFetchMasterGroupEvent: EventName>; + onSaveGroupEventChanges: EventName< + NylasEventCalendarCustomEvent<{ + data: GroupEventAPIData; + action: "this" | "future" | "all"; + }> + >; + onDeleteGroupEvent: EventName< + NylasEventCalendarCustomEvent<{ + data: GroupEventAPIData; + action: "this" | "future" | "all"; + }> + >; + onGroupEventSelected: EventName< + NylasEventCalendarCustomEvent + >; + onCreateGroupEvent: EventName< + NylasEventCalendarCustomEvent + >; + onCalendarViewChanged: EventName< + CustomEvent<{ startTime: number; endTime: number }> + >; + onPreviosNextClicked: EventName< + CustomEvent<{ + direction: "prev" | "next"; + view: "day" | "week" | "month"; + currentViewRange: { startTime: number; endTime: number }; + }> + >; + onSetCalendarViewDateRange: EventName< + CustomEvent<{ startTime: number; endTime: number }> + >; + onImportGroupEvent: EventName< + CustomEvent<{ + event_id: string; + calendar_id: string; + }> + >; +}; + +export const NylasEventCalendar: StencilReactComponent< + NylasEventCalendarElement, + NylasEventCalendarEvents +> = /*@__PURE__*/ createComponent< + NylasEventCalendarElement, + NylasEventCalendarEvents +>({ + tagName: "nylas-event-calendar", + elementClass: NylasEventCalendarElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onFetchMasterGroupEvent: "fetchMasterGroupEvent", + onSaveGroupEventChanges: "saveGroupEventChanges", + onDeleteGroupEvent: "deleteGroupEvent", + onGroupEventSelected: "groupEventSelected", + onCreateGroupEvent: "createGroupEvent", + onCalendarViewChanged: "calendarViewChanged", + onPreviosNextClicked: "previosNextClicked", + onSetCalendarViewDateRange: "setCalendarViewDateRange", + onImportGroupEvent: "importGroupEvent", + } as NylasEventCalendarEvents, + defineCustomElement: defineNylasEventCalendar, +}); + +export type NylasEventCapacityEvents = { + onValueChanged: EventName< + NylasEventCapacityCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasEventCapacity: StencilReactComponent< + NylasEventCapacityElement, + NylasEventCapacityEvents +> = /*@__PURE__*/ createComponent< + NylasEventCapacityElement, + NylasEventCapacityEvents +>({ + tagName: "nylas-event-capacity", + elementClass: NylasEventCapacityElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasEventCapacityEvents, + defineCustomElement: defineNylasEventCapacity, +}); + +export type NylasEventDescriptionEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasEventDescription: StencilReactComponent< + NylasEventDescriptionElement, + NylasEventDescriptionEvents +> = /*@__PURE__*/ createComponent< + NylasEventDescriptionElement, + NylasEventDescriptionEvents +>({ + tagName: "nylas-event-description", + elementClass: NylasEventDescriptionElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasEventDescriptionEvents, + defineCustomElement: defineNylasEventDescription, +}); + +export type NylasEventDurationEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasEventDuration: StencilReactComponent< + NylasEventDurationElement, + NylasEventDurationEvents +> = /*@__PURE__*/ createComponent< + NylasEventDurationElement, + NylasEventDurationEvents +>({ + tagName: "nylas-event-duration", + elementClass: NylasEventDurationElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasEventDurationEvents, + defineCustomElement: defineNylasEventDuration, +}); + +export type NylasEventInfoEvents = NonNullable; + +export const NylasEventInfo: StencilReactComponent< + NylasEventInfoElement, + NylasEventInfoEvents +> = /*@__PURE__*/ createComponent({ + tagName: "nylas-event-info", + elementClass: NylasEventInfoElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasEventInfoEvents, + defineCustomElement: defineNylasEventInfo, +}); + +export type NylasEventLimitsEvents = NonNullable; + +export const NylasEventLimits: StencilReactComponent< + NylasEventLimitsElement, + NylasEventLimitsEvents +> = /*@__PURE__*/ createComponent< + NylasEventLimitsElement, + NylasEventLimitsEvents +>({ + tagName: "nylas-event-limits", + elementClass: NylasEventLimitsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasEventLimitsEvents, + defineCustomElement: defineNylasEventLimits, +}); + +export type NylasEventLocationEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasEventLocation: StencilReactComponent< + NylasEventLocationElement, + NylasEventLocationEvents +> = /*@__PURE__*/ createComponent< + NylasEventLocationElement, + NylasEventLocationEvents +>({ + tagName: "nylas-event-location", + elementClass: NylasEventLocationElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasEventLocationEvents, + defineCustomElement: defineNylasEventLocation, +}); + +export type NylasEventTimeslotEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; + onTimeWindowFormError: EventName< + CustomEvent<{ + key: string; + message: string; + uniqueIdentifier?: string; + }> + >; + onDateTimeInputError: EventName< + CustomEvent<{ + key: string; + message: string; + }> + >; +}; + +export const NylasEventTimeslot: StencilReactComponent< + NylasEventTimeslotElement, + NylasEventTimeslotEvents +> = /*@__PURE__*/ createComponent< + NylasEventTimeslotElement, + NylasEventTimeslotEvents +>({ + tagName: "nylas-event-timeslot", + elementClass: NylasEventTimeslotElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + onTimeWindowFormError: "timeWindowFormError", + onDateTimeInputError: "dateTimeInputError", + } as NylasEventTimeslotEvents, + defineCustomElement: defineNylasEventTimeslot, +}); + +export type NylasEventTitleEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasEventTitle: StencilReactComponent< + NylasEventTitleElement, + NylasEventTitleEvents +> = /*@__PURE__*/ createComponent< + NylasEventTitleElement, + NylasEventTitleEvents +>({ + tagName: "nylas-event-title", + elementClass: NylasEventTitleElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasEventTitleEvents, + defineCustomElement: defineNylasEventTitle, +}); + +export type NylasFeedbackFormEvents = { + onFeedbackModalClosed: EventName>; + onFeedbackSubmitted: EventName>; + onTriggerValidation: EventName>; +}; + +export const NylasFeedbackForm: StencilReactComponent< + NylasFeedbackFormElement, + NylasFeedbackFormEvents +> = /*@__PURE__*/ createComponent< + NylasFeedbackFormElement, + NylasFeedbackFormEvents +>({ + tagName: "nylas-feedback-form", + elementClass: NylasFeedbackFormElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onFeedbackModalClosed: "feedbackModalClosed", + onFeedbackSubmitted: "feedbackSubmitted", + onTriggerValidation: "triggerValidation", + } as NylasFeedbackFormEvents, + defineCustomElement: defineNylasFeedbackForm, +}); + +export type NylasFormCardEvents = NonNullable; + +export const NylasFormCard: StencilReactComponent< + NylasFormCardElement, + NylasFormCardEvents +> = /*@__PURE__*/ createComponent({ + tagName: "nylas-form-card", + elementClass: NylasFormCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasFormCardEvents, + defineCustomElement: defineNylasFormCard, +}); + +export type NylasLimitFutureBookingsEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasLimitFutureBookings: StencilReactComponent< + NylasLimitFutureBookingsElement, + NylasLimitFutureBookingsEvents +> = /*@__PURE__*/ createComponent< + NylasLimitFutureBookingsElement, + NylasLimitFutureBookingsEvents +>({ + tagName: "nylas-limit-future-bookings", + elementClass: NylasLimitFutureBookingsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasLimitFutureBookingsEvents, + defineCustomElement: defineNylasLimitFutureBookings, +}); + +export type NylasListConfigurationsEvents = { + onInitListConfigurations: EventName< + NylasListConfigurationsCustomEvent<{ + host: HTMLNylasListConfigurationsElement; + cursor?: string; + }> + >; + onCreateButtonClick: EventName< + NylasListConfigurationsCustomEvent + >; + onEditButtonClick: EventName< + NylasListConfigurationsCustomEvent<{ + host: HTMLNylasListConfigurationsElement; + configuration: Configuration | GroupConfiguration; + }> + >; + onDeleteButtonClick: EventName< + NylasListConfigurationsCustomEvent<{ + host: HTMLNylasListConfigurationsElement; + configuration: Configuration | GroupConfiguration; + }> + >; + onNylasSchedulerError: EventName< + NylasListConfigurationsCustomEvent<{ + notification: Notification; + host: HTMLElement; + }> + >; + onDismissNotification: EventName< + NylasListConfigurationsCustomEvent<{ + id: string; + host: HTMLNylasListConfigurationsElement; + }> + >; +}; + +export const NylasListConfigurations: StencilReactComponent< + NylasListConfigurationsElement, + NylasListConfigurationsEvents +> = /*@__PURE__*/ createComponent< + NylasListConfigurationsElement, + NylasListConfigurationsEvents +>({ + tagName: "nylas-list-configurations", + elementClass: NylasListConfigurationsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onInitListConfigurations: "initListConfigurations", + onCreateButtonClick: "createButtonClick", + onEditButtonClick: "editButtonClick", + onDeleteButtonClick: "deleteButtonClick", + onNylasSchedulerError: "nylasSchedulerError", + onDismissNotification: "dismissNotification", + } as NylasListConfigurationsEvents, + defineCustomElement: defineNylasListConfigurations, +}); + +export type NylasLocaleSwitchEvents = { + onTimezoneChanged: EventName>; + onLanguageChanged: EventName>; +}; + +export const NylasLocaleSwitch: StencilReactComponent< + NylasLocaleSwitchElement, + NylasLocaleSwitchEvents +> = /*@__PURE__*/ createComponent< + NylasLocaleSwitchElement, + NylasLocaleSwitchEvents +>({ + tagName: "nylas-locale-switch", + elementClass: NylasLocaleSwitchElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onTimezoneChanged: "timezoneChanged", + onLanguageChanged: "languageChanged", + } as NylasLocaleSwitchEvents, + defineCustomElement: defineNylasLocaleSwitch, +}); + +export type NylasLogoEvents = NonNullable; + +export const NylasLogo: StencilReactComponent< + NylasLogoElement, + NylasLogoEvents +> = /*@__PURE__*/ createComponent({ + tagName: "nylas-logo", + elementClass: NylasLogoElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasLogoEvents, + defineCustomElement: defineNylasLogo, +}); + +export type NylasMinBookingNoticeEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasMinBookingNotice: StencilReactComponent< + NylasMinBookingNoticeElement, + NylasMinBookingNoticeEvents +> = /*@__PURE__*/ createComponent< + NylasMinBookingNoticeElement, + NylasMinBookingNoticeEvents +>({ + tagName: "nylas-min-booking-notice", + elementClass: NylasMinBookingNoticeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasMinBookingNoticeEvents, + defineCustomElement: defineNylasMinBookingNotice, +}); + +export type NylasMinCancellationNoticeEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasMinCancellationNotice: StencilReactComponent< + NylasMinCancellationNoticeElement, + NylasMinCancellationNoticeEvents +> = /*@__PURE__*/ createComponent< + NylasMinCancellationNoticeElement, + NylasMinCancellationNoticeEvents +>({ + tagName: "nylas-min-cancellation-notice", + elementClass: NylasMinCancellationNoticeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasMinCancellationNoticeEvents, + defineCustomElement: defineNylasMinCancellationNotice, +}); + +export type NylasNotificationEvents = NonNullable; + +export const NylasNotification: StencilReactComponent< + NylasNotificationElement, + NylasNotificationEvents +> = /*@__PURE__*/ createComponent< + NylasNotificationElement, + NylasNotificationEvents +>({ + tagName: "nylas-notification", + elementClass: NylasNotificationElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasNotificationEvents, + defineCustomElement: defineNylasNotification, +}); + +// NOTE: Component not available in current web-elements version +// export type NylasOnlySpecificTimeAvailabilityEvents = { +// onValueChanged: EventName< +// CustomEvent<{ +// value: string; +// name: string; +// }> +// >; +// }; +// +// export const NylasOnlySpecificTimeAvailability: StencilReactComponent< +// NylasOnlySpecificTimeAvailabilityElement, +// NylasOnlySpecificTimeAvailabilityEvents +// > = /*@__PURE__*/ createComponent< +// NylasOnlySpecificTimeAvailabilityElement, +// NylasOnlySpecificTimeAvailabilityEvents +// >({ +// tagName: "nylas-only-specific-time-availability", +// elementClass: NylasOnlySpecificTimeAvailabilityElement, +// // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. +// react: React, +// events: { +// onValueChanged: "valueChanged", +// } as NylasOnlySpecificTimeAvailabilityEvents, +// defineCustomElement: defineNylasOnlySpecificTimeAvailability, +// }); + +export type NylasOrganizerConfirmationCardEvents = { + onRejectBookingButtonClicked: EventName< + NylasOrganizerConfirmationCardCustomEvent<{ + bookingId: string; + host: HTMLNylasOrganizerConfirmationCardElement; + }> + >; + onConfirmBookingButtonClicked: EventName< + NylasOrganizerConfirmationCardCustomEvent<{ + bookingId: string; + host: HTMLNylasOrganizerConfirmationCardElement; + errorHandler?: (error: NylasSchedulerErrorResponse) => void; + }> + >; + onConfirmBookingError: EventName< + NylasOrganizerConfirmationCardCustomEvent + >; +}; + +export const NylasOrganizerConfirmationCard: StencilReactComponent< + NylasOrganizerConfirmationCardElement, + NylasOrganizerConfirmationCardEvents +> = /*@__PURE__*/ createComponent< + NylasOrganizerConfirmationCardElement, + NylasOrganizerConfirmationCardEvents +>({ + tagName: "nylas-organizer-confirmation-card", + elementClass: NylasOrganizerConfirmationCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onRejectBookingButtonClicked: "rejectBookingButtonClicked", + onConfirmBookingButtonClicked: "confirmBookingButtonClicked", + onConfirmBookingError: "confirmBookingError", + } as NylasOrganizerConfirmationCardEvents, + defineCustomElement: defineNylasOrganizerConfirmationCard, +}); + +export type NylasPageNameEvents = { + onValueChanged: EventName< + NylasPageNameCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasPageName: StencilReactComponent< + NylasPageNameElement, + NylasPageNameEvents +> = /*@__PURE__*/ createComponent({ + tagName: "nylas-page-name", + elementClass: NylasPageNameElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasPageNameEvents, + defineCustomElement: defineNylasPageName, +}); + +export type NylasPageStylingEvents = { + onValueChanged: EventName< + NylasPageStylingCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; + onBookingFormSubmitted: EventName>; +}; + +export const NylasPageStyling: StencilReactComponent< + NylasPageStylingElement, + NylasPageStylingEvents +> = /*@__PURE__*/ createComponent< + NylasPageStylingElement, + NylasPageStylingEvents +>({ + tagName: "nylas-page-styling", + elementClass: NylasPageStylingElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + onBookingFormSubmitted: "bookingFormSubmitted", + } as NylasPageStylingEvents, + defineCustomElement: defineNylasPageStyling, +}); + +export type NylasParticipantBookingCalendarsEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasParticipantBookingCalendars: StencilReactComponent< + NylasParticipantBookingCalendarsElement, + NylasParticipantBookingCalendarsEvents +> = /*@__PURE__*/ createComponent< + NylasParticipantBookingCalendarsElement, + NylasParticipantBookingCalendarsEvents +>({ + tagName: "nylas-participant-booking-calendars", + elementClass: NylasParticipantBookingCalendarsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasParticipantBookingCalendarsEvents, + defineCustomElement: defineNylasParticipantBookingCalendars, +}); + +export type NylasParticipantsCustomAvailabilityEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasParticipantsCustomAvailability: StencilReactComponent< + NylasParticipantsCustomAvailabilityElement, + NylasParticipantsCustomAvailabilityEvents +> = /*@__PURE__*/ createComponent< + NylasParticipantsCustomAvailabilityElement, + NylasParticipantsCustomAvailabilityEvents +>({ + tagName: "nylas-participants-custom-availability", + elementClass: NylasParticipantsCustomAvailabilityElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasParticipantsCustomAvailabilityEvents, + defineCustomElement: defineNylasParticipantsCustomAvailability, +}); + +export type NylasReminderEmailsEvents = { + onValueChanged: EventName< + NylasReminderEmailsCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; + onNylasSuggestReminderMinutes: EventName>; +}; + +export const NylasReminderEmails: StencilReactComponent< + NylasReminderEmailsElement, + NylasReminderEmailsEvents +> = /*@__PURE__*/ createComponent< + NylasReminderEmailsElement, + NylasReminderEmailsEvents +>({ + tagName: "nylas-reminder-emails", + elementClass: NylasReminderEmailsElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + onNylasSuggestReminderMinutes: "nylasSuggestReminderMinutes", + } as NylasReminderEmailsEvents, + defineCustomElement: defineNylasReminderEmails, +}); + +export type NylasReminderTimeEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasReminderTime: StencilReactComponent< + NylasReminderTimeElement, + NylasReminderTimeEvents +> = /*@__PURE__*/ createComponent< + NylasReminderTimeElement, + NylasReminderTimeEvents +>({ + tagName: "nylas-reminder-time", + elementClass: NylasReminderTimeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasReminderTimeEvents, + defineCustomElement: defineNylasReminderTime, +}); + +export type NylasSchedulerEditorEvents = { + onInit: EventName< + NylasSchedulerEditorCustomEvent + >; + onLoggedIn: EventName< + NylasSchedulerEditorCustomEvent + >; + onLoggedOut: EventName< + NylasSchedulerEditorCustomEvent + >; + onSchedulerConfigCloseClicked: EventName< + NylasSchedulerEditorCustomEvent + >; +}; + +export const NylasSchedulerEditor: StencilReactComponent< + NylasSchedulerEditorElement, + NylasSchedulerEditorEvents +> = /*@__PURE__*/ createComponent< + NylasSchedulerEditorElement, + NylasSchedulerEditorEvents +>({ + tagName: "nylas-scheduler-editor", + elementClass: NylasSchedulerEditorElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onInit: "init", + onLoggedIn: "loggedIn", + onLoggedOut: "loggedOut", + onSchedulerConfigCloseClicked: "schedulerConfigCloseClicked", + } as NylasSchedulerEditorEvents, + defineCustomElement: defineNylasSchedulerEditor, +}); + +export type NylasSchedulingEvents = { + onInit: EventName>; + onSchedulerWillLoad: EventName< + NylasSchedulingCustomEvent + >; + onSchedulerDidLoad: EventName< + NylasSchedulingCustomEvent + >; + onNylasSchedulerError: EventName< + NylasSchedulingCustomEvent<{ + notification: Notification; + host: HTMLElement; + }> + >; + onNylasSchedulerInfo: EventName< + NylasSchedulingCustomEvent<{ + notification: Notification; + host: HTMLElement; + }> + >; + onConfigSettingsLoaded: EventName< + NylasSchedulingCustomEvent<{ + settings: NylasSchedulerResponse; + }> + >; + onBookingRefExtracted: EventName< + CustomEvent<{ configurationId: string; bookingId: string; salt?: string }> + >; + onBookedEventInfo: EventName< + NylasSchedulingCustomEvent> + >; +}; + +export const NylasScheduling: StencilReactComponent< + NylasSchedulingElement, + NylasSchedulingEvents +> = /*@__PURE__*/ createComponent< + NylasSchedulingElement, + NylasSchedulingEvents +>({ + tagName: "nylas-scheduling", + elementClass: NylasSchedulingElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onInit: "init", + onSchedulerWillLoad: "schedulerWillLoad", + onSchedulerDidLoad: "schedulerDidLoad", + onNylasSchedulerError: "nylasSchedulerError", + onNylasSchedulerInfo: "nylasSchedulerInfo", + onConfigSettingsLoaded: "configSettingsLoaded", + onBookingRefExtracted: "bookingRefExtracted", + onBookedEventInfo: "bookedEventInfo", + } as NylasSchedulingEvents, + defineCustomElement: defineNylasScheduling, +}); + +export type NylasSchedulingMethodEvents = { + onValueChanged: EventName< + NylasSchedulingMethodCustomEvent<{ + value: string; + name: string; + valueChanged?: ( + event: CustomEvent<{ value: string; name: string }>, + ) => void; + }> + >; +}; + +export const NylasSchedulingMethod: StencilReactComponent< + NylasSchedulingMethodElement, + NylasSchedulingMethodEvents +> = /*@__PURE__*/ createComponent< + NylasSchedulingMethodElement, + NylasSchedulingMethodEvents +>({ + tagName: "nylas-scheduling-method", + elementClass: NylasSchedulingMethodElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasSchedulingMethodEvents, + defineCustomElement: defineNylasSchedulingMethod, +}); + +export type NylasSelectEventTypeEvents = { + onReturnToAllSchedulingPagesEvent: EventName>; + onCreateEventTypeSelected: EventName< + NylasSelectEventTypeCustomEvent<{ eventType: CONFIGURATION_EVENT_TYPE }> + >; +}; + +export const NylasSelectEventType: StencilReactComponent< + NylasSelectEventTypeElement, + NylasSelectEventTypeEvents +> = /*@__PURE__*/ createComponent< + NylasSelectEventTypeElement, + NylasSelectEventTypeEvents +>({ + tagName: "nylas-select-event-type", + elementClass: NylasSelectEventTypeElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onReturnToAllSchedulingPagesEvent: "returnToAllSchedulingPagesEvent", + onCreateEventTypeSelected: "createEventTypeSelected", + } as NylasSelectEventTypeEvents, + defineCustomElement: defineNylasSelectEventType, +}); + +export type NylasSelectedEventCardEvents = NonNullable; + +export const NylasSelectedEventCard: StencilReactComponent< + NylasSelectedEventCardElement, + NylasSelectedEventCardEvents +> = /*@__PURE__*/ createComponent< + NylasSelectedEventCardElement, + NylasSelectedEventCardEvents +>({ + tagName: "nylas-selected-event-card", + elementClass: NylasSelectedEventCardElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as NylasSelectedEventCardEvents, + defineCustomElement: defineNylasSelectedEventCard, +}); + +export type NylasSpecificTimeAvailabilityPickerEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasSpecificTimeAvailabilityPicker: StencilReactComponent< + NylasSpecificTimeAvailabilityPickerElement, + NylasSpecificTimeAvailabilityPickerEvents +> = /*@__PURE__*/ createComponent< + NylasSpecificTimeAvailabilityPickerElement, + NylasSpecificTimeAvailabilityPickerEvents +>({ + tagName: "nylas-specific-time-availability-picker", + elementClass: NylasSpecificTimeAvailabilityPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onValueChanged: "valueChanged", + } as NylasSpecificTimeAvailabilityPickerEvents, + defineCustomElement: defineNylasSpecificTimeAvailabilityPicker, +}); + +export type NylasTimeWindowPickerEvents = { + onTimeChange: EventName< + CustomEvent<{ + key: string; + value: string; + }> + >; + onTimeWindowFormError: EventName< + CustomEvent<{ + key: string; + message: string; + }> + >; +}; + +export const NylasTimeWindowPicker: StencilReactComponent< + NylasTimeWindowPickerElement, + NylasTimeWindowPickerEvents +> = /*@__PURE__*/ createComponent< + NylasTimeWindowPickerElement, + NylasTimeWindowPickerEvents +>({ + tagName: "nylas-time-window-picker", + elementClass: NylasTimeWindowPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onTimeChange: "timeChange", + onTimeWindowFormError: "timeWindowFormError", + } as NylasTimeWindowPickerEvents, + defineCustomElement: defineNylasTimeWindowPicker, +}); + +export type NylasTimeslotIntervalEvents = { + onValueChanged: EventName< + CustomEvent<{ + value: string; + name: string; + }> + >; +}; + +export const NylasTimeslotInterval: StencilReactComponent< + NylasTimeslotIntervalElement, + NylasTimeslotIntervalEvents +> = /*@__PURE__*/ createComponent< + NylasTimeslotIntervalElement, + NylasTimeslotIntervalEvents +>({ + tagName: "nylas-timeslot-interval", + elementClass: NylasTimeslotIntervalElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { onValueChanged: "valueChanged" } as NylasTimeslotIntervalEvents, + defineCustomElement: defineNylasTimeslotInterval, +}); + +export type NylasTimeslotPickerEvents = { + onTimeslotSelected: EventName>; + onTimeslotConfirmed: EventName< + NylasTimeslotPickerCustomEvent<{ + timeslot: Timeslot; + host: HTMLNylasTimeslotPickerElement; + }> + >; + onValidateTimeslotError: EventName< + CustomEvent<{ error: string; type: "error" | "info" }> + >; +}; + +export const NylasTimeslotPicker: StencilReactComponent< + NylasTimeslotPickerElement, + NylasTimeslotPickerEvents +> = /*@__PURE__*/ createComponent< + NylasTimeslotPickerElement, + NylasTimeslotPickerEvents +>({ + tagName: "nylas-timeslot-picker", + elementClass: NylasTimeslotPickerElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onTimeslotSelected: "timeslotSelected", + onTimeslotConfirmed: "timeslotConfirmed", + onValidateTimeslotError: "validateTimeslotError", + } as NylasTimeslotPickerEvents, + defineCustomElement: defineNylasTimeslotPicker, +}); + +export type PaintbrushFillIconEvents = NonNullable; + +export const PaintbrushFillIcon: StencilReactComponent< + PaintbrushFillIconElement, + PaintbrushFillIconEvents +> = /*@__PURE__*/ createComponent< + PaintbrushFillIconElement, + PaintbrushFillIconEvents +>({ + tagName: "paintbrush-fill-icon", + elementClass: PaintbrushFillIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PaintbrushFillIconEvents, + defineCustomElement: definePaintbrushFillIcon, +}); + +export type PaintbrushIconEvents = NonNullable; + +export const PaintbrushIcon: StencilReactComponent< + PaintbrushIconElement, + PaintbrushIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "paintbrush-icon", + elementClass: PaintbrushIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PaintbrushIconEvents, + defineCustomElement: definePaintbrushIcon, +}); + +export type PeopleIconEvents = NonNullable; + +export const PeopleIcon: StencilReactComponent< + PeopleIconElement, + PeopleIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "people-icon", + elementClass: PeopleIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PeopleIconEvents, + defineCustomElement: definePeopleIcon, +}); + +export type PersonClipboardIconEvents = NonNullable; + +export const PersonClipboardIcon: StencilReactComponent< + PersonClipboardIconElement, + PersonClipboardIconEvents +> = /*@__PURE__*/ createComponent< + PersonClipboardIconElement, + PersonClipboardIconEvents +>({ + tagName: "person-clipboard-icon", + elementClass: PersonClipboardIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PersonClipboardIconEvents, + defineCustomElement: definePersonClipboardIcon, +}); + +export type PersonIconEvents = NonNullable; + +export const PersonIcon: StencilReactComponent< + PersonIconElement, + PersonIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "person-icon", + elementClass: PersonIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PersonIconEvents, + defineCustomElement: definePersonIcon, +}); + +export type PlayIconEvents = NonNullable; + +export const PlayIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "play-icon", + elementClass: PlayIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PlayIconEvents, + defineCustomElement: definePlayIcon, + }); + +export type PlusIconEvents = NonNullable; + +export const PlusIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "plus-icon", + elementClass: PlusIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as PlusIconEvents, + defineCustomElement: definePlusIcon, + }); + +export type RadioButtonGroupEvents = { + onNylasFormRadioChanged: EventName< + CustomEvent<{ + value: string; + name: string; + label?: string; + }> + >; +}; + +export const RadioButtonGroup: StencilReactComponent< + RadioButtonGroupElement, + RadioButtonGroupEvents +> = /*@__PURE__*/ createComponent< + RadioButtonGroupElement, + RadioButtonGroupEvents +>({ + tagName: "radio-button-group", + elementClass: RadioButtonGroupElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormRadioChanged: "nylasFormRadioChanged", + } as RadioButtonGroupEvents, + defineCustomElement: defineRadioButtonGroup, +}); + +export type RefreshIconEvents = NonNullable; + +export const RefreshIcon: StencilReactComponent< + RefreshIconElement, + RefreshIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "refresh-icon", + elementClass: RefreshIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as RefreshIconEvents, + defineCustomElement: defineRefreshIcon, +}); + +export type ReplyAllIconEvents = NonNullable; + +export const ReplyAllIcon: StencilReactComponent< + ReplyAllIconElement, + ReplyAllIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "reply-all-icon", + elementClass: ReplyAllIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ReplyAllIconEvents, + defineCustomElement: defineReplyAllIcon, +}); + +export type ReplyIconEvents = NonNullable; + +export const ReplyIcon: StencilReactComponent< + ReplyIconElement, + ReplyIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "reply-icon", + elementClass: ReplyIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ReplyIconEvents, + defineCustomElement: defineReplyIcon, +}); + +export type SearchIconEvents = NonNullable; + +export const SearchIcon: StencilReactComponent< + SearchIconElement, + SearchIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "search-icon", + elementClass: SearchIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as SearchIconEvents, + defineCustomElement: defineSearchIcon, +}); + +export type SelectDropdownEvents = { + onNylasFormDropdownChanged: EventName< + SelectDropdownCustomEvent<{ + value: DropdownOption["value"]; + name: string; + error?: string; + label?: string; + }> + >; + onNylasFormDropdownDefaultSelected: EventName< + SelectDropdownCustomEvent<{ + value: DropdownOption["value"]; + name: string; + error?: string; + label?: string; + }> + >; +}; + +export const SelectDropdown: StencilReactComponent< + SelectDropdownElement, + SelectDropdownEvents +> = /*@__PURE__*/ createComponent({ + tagName: "select-dropdown", + elementClass: SelectDropdownElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormDropdownChanged: "nylasFormDropdownChanged", + onNylasFormDropdownDefaultSelected: "nylasFormDropdownDefaultSelected", + } as SelectDropdownEvents, + defineCustomElement: defineSelectDropdown, +}); + +export type SentIconEvents = NonNullable; + +export const SentIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "sent-icon", + elementClass: SentIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as SentIconEvents, + defineCustomElement: defineSentIcon, + }); + +export type SpamIconEvents = NonNullable; + +export const SpamIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "spam-icon", + elementClass: SpamIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as SpamIconEvents, + defineCustomElement: defineSpamIcon, + }); + +export type StarIconEvents = NonNullable; + +export const StarIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "star-icon", + elementClass: StarIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as StarIconEvents, + defineCustomElement: defineStarIcon, + }); + +export type StopIconEvents = NonNullable; + +export const StopIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "stop-icon", + elementClass: StopIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as StopIconEvents, + defineCustomElement: defineStopIcon, + }); + +export type TextareaComponentEvents = { + onNylasFormInputChanged: EventName< + CustomEvent<{ + value: string; + name: string; + error: string; + label: string; + type: string; + }> + >; +}; + +export const TextareaComponent: StencilReactComponent< + TextareaComponentElement, + TextareaComponentEvents +> = /*@__PURE__*/ createComponent< + TextareaComponentElement, + TextareaComponentEvents +>({ + tagName: "textarea-component", + elementClass: TextareaComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormInputChanged: "nylasFormInputChanged", + } as TextareaComponentEvents, + defineCustomElement: defineTextareaComponent, +}); + +export type TimePeriodSelectorEvents = { + onTimePeriodChanged: EventName< + CustomEvent<{ number: number; period: string }> + >; +}; + +export const TimePeriodSelector: StencilReactComponent< + TimePeriodSelectorElement, + TimePeriodSelectorEvents +> = /*@__PURE__*/ createComponent< + TimePeriodSelectorElement, + TimePeriodSelectorEvents +>({ + tagName: "time-period-selector", + elementClass: TimePeriodSelectorElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onTimePeriodChanged: "timePeriodChanged", + } as TimePeriodSelectorEvents, + defineCustomElement: defineTimePeriodSelector, +}); + +export type ToggleSwitchEvents = { + onNylasFormSwitchToggled: EventName< + CustomEvent<{ + checked: boolean; + name: string; + label: string; + }> + >; +}; + +export const ToggleSwitch: StencilReactComponent< + ToggleSwitchElement, + ToggleSwitchEvents +> = /*@__PURE__*/ createComponent({ + tagName: "toggle-switch", + elementClass: ToggleSwitchElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: { + onNylasFormSwitchToggled: "nylasFormSwitchToggled", + } as ToggleSwitchEvents, + defineCustomElement: defineToggleSwitch, +}); + +export type TooltipComponentEvents = NonNullable; + +export const TooltipComponent: StencilReactComponent< + TooltipComponentElement, + TooltipComponentEvents +> = /*@__PURE__*/ createComponent< + TooltipComponentElement, + TooltipComponentEvents +>({ + tagName: "tooltip-component", + elementClass: TooltipComponentElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as TooltipComponentEvents, + defineCustomElement: defineTooltipComponent, +}); + +export type TranslateIconEvents = NonNullable; + +export const TranslateIcon: StencilReactComponent< + TranslateIconElement, + TranslateIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "translate-icon", + elementClass: TranslateIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as TranslateIconEvents, + defineCustomElement: defineTranslateIcon, +}); + +export type TrashFillIconEvents = NonNullable; + +export const TrashFillIcon: StencilReactComponent< + TrashFillIconElement, + TrashFillIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "trash-fill-icon", + elementClass: TrashFillIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as TrashFillIconEvents, + defineCustomElement: defineTrashFillIcon, +}); + +export type TrashIconEvents = NonNullable; + +export const TrashIcon: StencilReactComponent< + TrashIconElement, + TrashIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "trash-icon", + elementClass: TrashIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as TrashIconEvents, + defineCustomElement: defineTrashIcon, +}); + +export type UnderlineIconEvents = NonNullable; + +export const UnderlineIcon: StencilReactComponent< + UnderlineIconElement, + UnderlineIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "underline-icon", + elementClass: UnderlineIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as UnderlineIconEvents, + defineCustomElement: defineUnderlineIcon, +}); + +export type WarningIconEvents = NonNullable; + +export const WarningIcon: StencilReactComponent< + WarningIconElement, + WarningIconEvents +> = /*@__PURE__*/ createComponent({ + tagName: "warning-icon", + elementClass: WarningIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as WarningIconEvents, + defineCustomElement: defineWarningIcon, +}); + +export type ZoomIconEvents = NonNullable; + +export const ZoomIcon: StencilReactComponent = + /*@__PURE__*/ createComponent({ + tagName: "zoom-icon", + elementClass: ZoomIconElement, + // @ts-ignore - ignore potential React type mismatches between the Stencil Output Target and your project. + react: React, + events: {} as ZoomIconEvents, + defineCustomElement: defineZoomIcon, + }); diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts new file mode 100644 index 0000000..3d7e04f --- /dev/null +++ b/packages/react/src/index.ts @@ -0,0 +1,3 @@ +// Main entry point - re-exports from all modules for backward compatibility +export * from "./elements"; +export * from "./utils"; diff --git a/packages/react/src/main.tsx b/packages/react/src/main.tsx new file mode 100644 index 0000000..ab1ef48 --- /dev/null +++ b/packages/react/src/main.tsx @@ -0,0 +1,94 @@ +// This file is used for development purposes only +// feel free to update it as you see fit + +import React from "react"; +import { createRoot } from "react-dom/client"; + +const styles: { [key: string]: React.CSSProperties } = { + container: { + fontFamily: "sans-serif", + display: "flex", + flexDirection: "column", + alignItems: "center", + maxWidth: "500px", + margin: "0 auto", + maxHeight: "800px", + }, +}; + +const transcriptData = [ + { + start: 1000, + end: 2000, + speaker: "Alice", + text: "Hello world!", + }, + { + start: 5000, + end: 6000, + speaker: "Bob", + text: "How are you?", + }, + { + start: 7000, + end: 8000, + speaker: "Alice", + text: "I'm good, thanks! How about you?", + }, + { + start: 9000, + end: 10000, + speaker: "Bob", + text: "Doing well. Did you finish the report?", + }, + { + start: 11000, + end: 12000, + speaker: "Alice", + text: "Yes, I sent it this morning.", + }, + { + start: 13000, + end: 14000, + speaker: "Bob", + text: "Great! I'll review it after lunch.", + }, + { + start: 15000, + end: 16000, + speaker: "Alice", + text: "Let me know if you have any questions.", + }, + { + start: 17000, + end: 18000, + speaker: "Bob", + text: "Will do. Are you joining the team call later?", + }, + { + start: 19000, + end: 20000, + speaker: "Alice", + text: "Yes, I'll be there at 3 PM.", + }, + { + start: 21000, + end: 22000, + speaker: "Bob", + text: "Perfect. See you then!", + }, + { + start: 23000, + end: 24000, + speaker: "Alice", + text: "See you!", + }, +]; + +const App: React.FC = () =>
; + +const rootElement = document.getElementById("root"); +if (rootElement) { + const root = createRoot(rootElement); + root.render(); +} diff --git a/packages/react/src/utils.ts b/packages/react/src/utils.ts new file mode 100644 index 0000000..294c383 --- /dev/null +++ b/packages/react/src/utils.ts @@ -0,0 +1,3 @@ +// Entry point for utility functions and components +export { NylasIdentityRequestWrapper } from "@nylas/web-elements/components"; +export type { LANGUAGE_CODE } from "@nylas/web-elements/components"; diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json new file mode 100644 index 0000000..1b5e337 --- /dev/null +++ b/packages/react/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "ES2022", + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react", + "types": ["vitest/globals"], + + // Relaxed strictness + "noImplicitAny": false, + "strictNullChecks": false, + "noImplicitReturns": false, + + // Modern settings + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "dist" + }, + "include": ["src/**/*", "vitest.setup.ts"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/react/tsconfig.typedoc.json b/packages/react/tsconfig.typedoc.json new file mode 100644 index 0000000..8843259 --- /dev/null +++ b/packages/react/tsconfig.typedoc.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { "noEmit": true }, + "include": ["src/notetaker/**/*.*"] +} diff --git a/packages/react/typedoc.json b/packages/react/typedoc.json new file mode 100644 index 0000000..5f93672 --- /dev/null +++ b/packages/react/typedoc.json @@ -0,0 +1,23 @@ +{ + "$schema": "https://typedoc.org/schema.json", + "name": "nylas-react", + "tsconfig": "./tsconfig.typedoc.json", + "plugin": ["typedoc-plugin-markdown"], + "entryPoints": ["./src/notetaker/**/*.{ts,tsx}"], + "flattenOutputFiles": true, + "excludeScopesInPaths": true, + "hidePageHeader": true, + "hideBreadcrumbs": true, + "hidePageTitle": true, + "disableSources": true, + "entryFileName": "DOCS.md", + "interfacePropertiesFormat": "table", + "tableColumnSettings": { + "hideSources": true + }, + "headings": false, + "formatWithPrettier": true, + "excludeNotDocumented": true, + "maxTypeConversionDepth": 2, + "expandParameters": true +} diff --git a/packages/react/vite.config.ts b/packages/react/vite.config.ts new file mode 100644 index 0000000..3bd5a22 --- /dev/null +++ b/packages/react/vite.config.ts @@ -0,0 +1,45 @@ +import react from "@vitejs/plugin-react-swc"; +import { resolve } from "path"; +import { defineConfig } from "vite"; +import dts from "vite-plugin-dts"; +import tailwindcss from "@tailwindcss/vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), dts({ insertTypesEntry: true })], + build: { + lib: { + entry: { + index: resolve(__dirname, "src/index.ts"), + connect: resolve(__dirname, "src/connect.ts"), + elements: resolve(__dirname, "src/elements.ts"), + utils: resolve(__dirname, "src/utils.ts"), + }, + formats: ["es", "cjs"], + }, + cssCodeSplit: false, + sourcemap: true, + minify: "esbuild", + target: "es2022", + rollupOptions: { + external: [ + "react", + "react/jsx-runtime", + "react-dom", + "react-dom/client", + "@nylas/core", + "@nylas/connect", + "@stencil/react-output-target/runtime", + ], + output: { + exports: "named", + globals: { + "react-dom": "ReactDom", + react: "React", + }, + entryFileNames: "[format]/[name].js", + chunkFileNames: "[format]/[name].js", + }, + }, + }, +}); diff --git a/packages/react/vitest.config.ts b/packages/react/vitest.config.ts new file mode 100644 index 0000000..2d26fb2 --- /dev/null +++ b/packages/react/vitest.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + globals: true, + environment: "jsdom", + include: ["src/**/*.test.ts", "src/**/*.test.tsx"], + setupFiles: ["./vitest.setup.ts"], + coverage: { + provider: "v8", + reporter: ["text", "lcov"], + reportsDirectory: "./coverage", + }, + }, +}); diff --git a/packages/react/vitest.setup.ts b/packages/react/vitest.setup.ts new file mode 100644 index 0000000..d0de870 --- /dev/null +++ b/packages/react/vitest.setup.ts @@ -0,0 +1 @@ +import "@testing-library/jest-dom"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78baadf..b963925 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,13 +10,13 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.27.9 - version: 2.29.7(@types/node@20.19.13) + version: 2.29.7(@types/node@22.18.8) husky: specifier: ^8.0.3 version: 8.0.3 nx: specifier: 21.5.2 - version: 21.5.2 + version: 21.5.2(@swc/core@1.13.5) oxlint: specifier: ^1.16.0 version: 1.16.0 @@ -31,29 +31,173 @@ importers: version: 20.19.13 '@vitest/coverage-v8': specifier: ^2.1.9 - version: 2.1.9(vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.10.2)) - happy-dom: - specifier: ^15.10.2 - version: 15.10.2 + version: 2.1.9(vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1)) + jsdom: + specifier: ^26.0.0 + version: 26.1.0 typescript: specifier: ^5.3.3 version: 5.9.2 vite: specifier: ^5.4.21 - version: 5.4.21(@types/node@20.19.13) + version: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) vite-plugin-dts: specifier: ^3.7.0 - version: 3.9.1(@types/node@20.19.13)(rollup@4.52.5)(typescript@5.9.2)(vite@5.4.21(@types/node@20.19.13)) + version: 3.9.1(@types/node@20.19.13)(rollup@4.50.1)(typescript@5.9.2)(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) vitest: specifier: ^2.1.8 - version: 2.1.9(@types/node@20.19.13)(happy-dom@15.10.2) + version: 2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1) + + packages/react: + dependencies: + '@nylas/connect': + specifier: workspace:^ + version: link:../nylas-connect + '@nylas/core': + specifier: ^1.2.0 + version: 1.2.0(@stencil/core@4.37.1) + '@nylas/web-elements': + specifier: ^2.2.4 + version: 2.2.4(rollup@4.50.1) + '@stencil/react-output-target': + specifier: ^1.2.0 + version: 1.2.0(@stencil/core@4.37.1)(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + axios: + specifier: ^1.7.7 + version: 1.12.2 + dayjs: + specifier: 1.11.7 + version: 1.11.7 + lucide-react: + specifier: ^0.453.0 + version: 0.453.0(react@19.2.0) + react: + specifier: ^18 || ^19 + version: 19.2.0 + react-dom: + specifier: ^18 || ^19 + version: 19.2.0(react@19.2.0) + tailwind-variants: + specifier: ^1.0.0 + version: 1.0.0(tailwindcss@4.1.14) + zustand: + specifier: ^5.0.3 + version: 5.0.8(@types/react@19.2.0)(react@19.2.0) + devDependencies: + '@tailwindcss/vite': + specifier: ^4.0.3 + version: 4.1.14(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) + '@testing-library/dom': + specifier: ^10.0.0 + version: 10.4.1 + '@testing-library/jest-dom': + specifier: ^5.17.0 + version: 5.17.0 + '@testing-library/react': + specifier: ^16.0.0 + version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@types/jsdom': + specifier: ^21.1.7 + version: 21.1.7 + '@types/node': + specifier: ^20.11.13 + version: 20.19.13 + '@types/react': + specifier: ^19.1.10 + version: 19.2.0 + '@types/react-dom': + specifier: ^19.1.7 + version: 19.2.0(@types/react@19.2.0) + '@vitejs/plugin-react': + specifier: ^4.4.1 + version: 4.7.0(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) + '@vitejs/plugin-react-swc': + specifier: ^3.3.2 + version: 3.11.0(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) + '@vitest/coverage-v8': + specifier: ^2.1.9 + version: 2.1.9(vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1)) + jsdom: + specifier: ^26.0.0 + version: 26.1.0 + markdown-table: + specifier: ^3.0.4 + version: 3.0.4 + tailwindcss: + specifier: ^4.1.7 + version: 4.1.14 + tslib: + specifier: ^2.6.2 + version: 2.8.1 + typedoc: + specifier: ^0.28.3 + version: 0.28.13(typescript@5.9.2) + typedoc-plugin-markdown: + specifier: ^4.6.3 + version: 4.9.0(typedoc@0.28.13(typescript@5.9.2)) + typescript: + specifier: ^5.3.3 + version: 5.9.2 + vite: + specifier: ^5.4.21 + version: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) + vite-plugin-dts: + specifier: ^3.7.0 + version: 3.9.1(@types/node@20.19.13)(rollup@4.50.1)(typescript@5.9.2)(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) + vitest: + specifier: ^2.1.8 + version: 2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1) packages: + '@adobe/css-tools@4.4.4': + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + + '@babel/code-frame@7.27.1': + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.27.2': + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.27.1': + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-plugin-utils@7.27.1': + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} + engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -62,15 +206,43 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.4': resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.27.1': + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/runtime@7.28.4': resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.4': resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} @@ -133,6 +305,34 @@ packages: '@changesets/write@0.4.0': resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@emnapi/core@1.5.0': resolution: {integrity: sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==} @@ -142,6 +342,9 @@ packages: '@emnapi/wasi-threads@1.1.0': resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -280,6 +483,33 @@ packages: cpu: [x64] os: [win32] + '@fullcalendar/core@6.1.8': + resolution: {integrity: sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==} + + '@fullcalendar/daygrid@6.1.8': + resolution: {integrity: sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==} + peerDependencies: + '@fullcalendar/core': ~6.1.8 + + '@fullcalendar/interaction@6.1.8': + resolution: {integrity: sha512-r6W4E9ohaA87M2uPSlmpE2WT7Fzu7LN0u2pE6D/tThruCEaAPbN8Pw5+sqclsuyTIL09mg0eSJm/ggJekTabSA==} + peerDependencies: + '@fullcalendar/core': ~6.1.8 + + '@fullcalendar/rrule@6.1.8': + resolution: {integrity: sha512-Ikl1ipRCxeNlQ7UNcG0QC3yxAaiItXo1zYa90hodXwf/UK5Bi9aR0f/bcViIP89U0Uq4trUOy9yFaD61dLuYSg==} + peerDependencies: + '@fullcalendar/core': ~6.1.8 + rrule: ^2.6.0 + + '@fullcalendar/timegrid@6.1.8': + resolution: {integrity: sha512-3+3KHHCoNcaLs/gQt004hAqICbY5+WAffrZ0ePv+80HFB1OVh8BQ5XXLHSOUbTvXdgtUTcfBHuw9fhO31kt5gA==} + peerDependencies: + '@fullcalendar/core': ~6.1.8 + + '@gerrit0/mini-shiki@3.13.0': + resolution: {integrity: sha512-mCrNvZNYNrwKer5PWLF6cOc0OEe2eKzgy976x+IT2tynwJYl+7UpHTSeXQJGijgTcoOf+f359L946unWlYRnsg==} + '@inquirer/external-editor@1.0.2': resolution: {integrity: sha512-yy9cOoBnx58TlsPrIxauKIFQTiyH+0MK4e97y4sV9ERbI+zDxw7i2hxHLCIEGIE/8PPvDxGhgzIOTSOWcs6/MQ==} engines: {node: '>=18'} @@ -293,6 +523,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + '@istanbuljs/schema@0.1.3': resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -301,17 +535,32 @@ packages: resolution: {integrity: sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/expect-utils@30.2.0': + resolution: {integrity: sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/get-type@30.1.0': resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/pattern@30.0.1': + resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/schemas@30.0.5': resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jest/types@30.2.0': + resolution: {integrity: sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -322,6 +571,11 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@lit/react@1.0.8': + resolution: {integrity: sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==} + peerDependencies: + '@types/react': 17 || 18 || 19 + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -335,6 +589,9 @@ packages: resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} hasBin: true + '@microsoft/fetch-event-source@2.0.1': + resolution: {integrity: sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==} + '@microsoft/tsdoc-config@0.16.2': resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} @@ -406,6 +663,15 @@ packages: cpu: [x64] os: [win32] + '@nylas/core@1.2.0': + resolution: {integrity: sha512-eUlxzbeLSdGNx5t51cFxp+oD954MuPxFmL2a0IgqYGQ/TvT2RoIgTHiUhZIXWRZTSBrlNNZq+Bxklk3Z7nPs8g==} + + '@nylas/identity@3.1.0': + resolution: {integrity: sha512-EBW17UBAvsj1cT+BEbawdce9Uy04IsElr8hJJRB3lf8Aod/icdn0mxWdWCyCNrjW6fhRwz0Cv3Sh88DbTbC7yA==} + + '@nylas/web-elements@2.2.4': + resolution: {integrity: sha512-EVAF2xQ3Q2OYc4fDl49oZe8lgNIi7P5fF0EQ/RiKLWHGd2gtMyc4YcZBNHMH9hYpxVvxI5BzdRZax76xMCJq7Q==} + '@oxlint/darwin-arm64@1.16.0': resolution: {integrity: sha512-t9sBjbcG15Jgwgw2wY+rtfKEazdkKM/YhcdyjmGYeSjBXaczLfp/gZe03taC2qUHK+t6cxSYNkOLXRLWxaf3tw==} cpu: [arm64] @@ -450,6 +716,18 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@rolldown/pluginutils@1.0.0-beta.27': + resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} + + '@rollup/plugin-replace@6.0.2': + resolution: {integrity: sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@5.3.0': resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} @@ -459,113 +737,148 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': - resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==} + '@rollup/rollup-android-arm-eabi@4.50.1': + resolution: {integrity: sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.5': - resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==} + '@rollup/rollup-android-arm64@4.50.1': + resolution: {integrity: sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.5': - resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==} + '@rollup/rollup-darwin-arm64@4.34.9': + resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-arm64@4.50.1': + resolution: {integrity: sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.5': - resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==} + '@rollup/rollup-darwin-x64@4.34.9': + resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.5': - resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==} + '@rollup/rollup-darwin-x64@4.50.1': + resolution: {integrity: sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.50.1': + resolution: {integrity: sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.5': - resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==} + '@rollup/rollup-freebsd-x64@4.50.1': + resolution: {integrity: sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': - resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': + resolution: {integrity: sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.5': - resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==} + '@rollup/rollup-linux-arm-musleabihf@4.50.1': + resolution: {integrity: sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.5': - resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==} + '@rollup/rollup-linux-arm64-gnu@4.34.9': + resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.5': - resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==} + '@rollup/rollup-linux-arm64-gnu@4.50.1': + resolution: {integrity: sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.5': - resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==} + '@rollup/rollup-linux-arm64-musl@4.34.9': + resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.50.1': + resolution: {integrity: sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': + resolution: {integrity: sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.5': - resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==} + '@rollup/rollup-linux-ppc64-gnu@4.50.1': + resolution: {integrity: sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.5': - resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==} + '@rollup/rollup-linux-riscv64-gnu@4.50.1': + resolution: {integrity: sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.5': - resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==} + '@rollup/rollup-linux-riscv64-musl@4.50.1': + resolution: {integrity: sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.52.5': - resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==} + '@rollup/rollup-linux-s390x-gnu@4.50.1': + resolution: {integrity: sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.52.5': - resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==} + '@rollup/rollup-linux-x64-gnu@4.34.9': + resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.5': - resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==} + '@rollup/rollup-linux-x64-gnu@4.50.1': + resolution: {integrity: sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.52.5': - resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==} + '@rollup/rollup-linux-x64-musl@4.34.9': + resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.50.1': + resolution: {integrity: sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openharmony-arm64@4.50.1': + resolution: {integrity: sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.5': - resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==} + '@rollup/rollup-win32-arm64-msvc@4.34.9': + resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-arm64-msvc@4.50.1': + resolution: {integrity: sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.5': - resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==} + '@rollup/rollup-win32-ia32-msvc@4.50.1': + resolution: {integrity: sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.5': - resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==} + '@rollup/rollup-win32-x64-msvc@4.34.9': + resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.5': - resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==} + '@rollup/rollup-win32-x64-msvc@4.50.1': + resolution: {integrity: sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==} cpu: [x64] os: [win32] @@ -591,24 +904,345 @@ packages: '@rushstack/ts-command-line@4.19.1': resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + '@sentry-internal/browser-utils@8.55.0': + resolution: {integrity: sha512-ROgqtQfpH/82AQIpESPqPQe0UyWywKJsmVIqi3c5Fh+zkds5LUxnssTj3yNd1x+kxaPDVB023jAP+3ibNgeNDw==} + engines: {node: '>=14.18'} + + '@sentry-internal/feedback@8.55.0': + resolution: {integrity: sha512-cP3BD/Q6pquVQ+YL+rwCnorKuTXiS9KXW8HNKu4nmmBAyf7urjs+F6Hr1k9MXP5yQ8W3yK7jRWd09Yu6DHWOiw==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay-canvas@8.55.0': + resolution: {integrity: sha512-nIkfgRWk1091zHdu4NbocQsxZF1rv1f7bbp3tTIlZYbrH62XVZosx5iHAuZG0Zc48AETLE7K4AX9VGjvQj8i9w==} + engines: {node: '>=14.18'} + + '@sentry-internal/replay@8.55.0': + resolution: {integrity: sha512-roCDEGkORwolxBn8xAKedybY+Jlefq3xYmgN2fr3BTnsXjSYOPC7D1/mYqINBat99nDtvgFvNfRcZPiwwZ1hSw==} + engines: {node: '>=14.18'} + + '@sentry/browser@8.55.0': + resolution: {integrity: sha512-1A31mCEWCjaMxJt6qGUK+aDnLDcK6AwLAZnqpSchNysGni1pSn1RWSmk9TBF8qyTds5FH8B31H480uxMPUJ7Cw==} + engines: {node: '>=14.18'} + + '@sentry/core@8.55.0': + resolution: {integrity: sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA==} + engines: {node: '>=14.18'} + + '@shikijs/engine-oniguruma@3.13.0': + resolution: {integrity: sha512-O42rBGr4UDSlhT2ZFMxqM7QzIU+IcpoTMzb3W7AlziI1ZF7R8eS2M0yt5Ry35nnnTX/LTLXFPUjRFCIW+Operg==} + + '@shikijs/langs@3.13.0': + resolution: {integrity: sha512-672c3WAETDYHwrRP0yLy3W1QYB89Hbpj+pO4KhxK6FzIrDI2FoEXNiNCut6BQmEApYLfuYfpgOZaqbY+E9b8wQ==} + + '@shikijs/themes@3.13.0': + resolution: {integrity: sha512-Vxw1Nm1/Od8jyA7QuAenaV78BG2nSr3/gCGdBkLpfLscddCkzkL36Q5b67SrLLfvAJTOUzW39x4FHVCFriPVgg==} + + '@shikijs/types@3.13.0': + resolution: {integrity: sha512-oM9P+NCFri/mmQ8LoFGVfVyemm5Hi27330zuOBp0annwJdKH1kOLndw3zCtAVDehPLg9fKqoEx3Ht/wNZxolfw==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@sinclair/typebox@0.34.41': resolution: {integrity: sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==} + '@stencil/core@4.37.1': + resolution: {integrity: sha512-s4ZroxdYc2HU0b7V3n59RVtMKdNlTvWWBN8KofaP64eCzvg1qRh6SKMet7MJ069F1lx/FxDvsYfOv7pZRiMWmQ==} + engines: {node: '>=16.0.0', npm: '>=7.10.0'} + hasBin: true + + '@stencil/react-output-target@1.2.0': + resolution: {integrity: sha512-xDNpWdRg897T3Diy5V2d8dZUdjhc4QJ/5JZdTVyv3/e9UICdJPfCY6eKp/dWWgYlJ9AUE6GLHOI1iePZmLY12A==} + peerDependencies: + '@stencil/core': '>=3 || >= 4.0.0-beta.0 || >= 4.0.0' + react: ^18 || ^19 + react-dom: ^18 || ^19 + + '@stencil/store@2.2.0': + resolution: {integrity: sha512-+Ub0n3ghwxjXSGrLJDt6SIKJQhB4ch61KyzNkleIN5IADdhwvT8/9SjwU67hhSEoBTpQ81bVNlhuHSHS97iHbA==} + engines: {node: '>=18.0.0', npm: '>=6.0.0'} + peerDependencies: + '@stencil/core': '>=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0' + + '@swc/core-darwin-arm64@1.13.5': + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.13.5': + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.13.5': + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.13.5': + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.13.5': + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.13.5': + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.13.5': + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.13.5': + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.13.5': + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.13.5': + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.13.5': + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.25': + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} + + '@tailwindcss/node@4.1.14': + resolution: {integrity: sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==} + + '@tailwindcss/oxide-android-arm64@4.1.14': + resolution: {integrity: sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.1.14': + resolution: {integrity: sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.1.14': + resolution: {integrity: sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.1.14': + resolution: {integrity: sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': + resolution: {integrity: sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': + resolution: {integrity: sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': + resolution: {integrity: sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': + resolution: {integrity: sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.1.14': + resolution: {integrity: sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.1.14': + resolution: {integrity: sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': + resolution: {integrity: sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': + resolution: {integrity: sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.1.14': + resolution: {integrity: sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==} + engines: {node: '>= 10'} + + '@tailwindcss/vite@4.1.14': + resolution: {integrity: sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 + + '@testing-library/dom@10.4.1': + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} + engines: {node: '>=18'} + + '@testing-library/jest-dom@5.17.0': + resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + + '@testing-library/react@16.3.0': + resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} + engines: {node: '>=18'} + peerDependencies: + '@testing-library/dom': ^10.0.0 + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@ts-morph/common@0.23.0': + resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} + '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} '@types/argparse@1.0.38': resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest@30.0.0': + resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==} + + '@types/jsdom@21.1.7': + resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} + '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} '@types/node@20.19.13': resolution: {integrity: sha512-yCAeZl7a0DxgNVteXFHt9+uyFbqXGy/ShC4BlcHkoE0AfGXYv/BUiplV72DjMYXHDBXFjhvr6DD1NiRVfB4j8g==} + '@types/node@22.18.8': + resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} + + '@types/react-dom@19.2.0': + resolution: {integrity: sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==} + peerDependencies: + '@types/react': ^19.2.0 + + '@types/react@19.2.0': + resolution: {integrity: sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@vitejs/plugin-react-swc@3.11.0': + resolution: {integrity: sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==} + peerDependencies: + vite: ^4 || ^5 || ^6 || ^7 + + '@vitejs/plugin-react@4.7.0': + resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@vitest/coverage-v8@2.1.9': resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==} peerDependencies: @@ -684,6 +1318,10 @@ packages: resolution: {integrity: sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==} hasBin: true + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -717,6 +1355,13 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -737,6 +1382,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + baseline-browser-mapping@2.8.10: + resolution: {integrity: sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==} + hasBin: true + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -754,9 +1403,17 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -765,10 +1422,17 @@ packages: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + caniuse-lite@1.0.30001746: + resolution: {integrity: sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==} + chai@5.3.3: resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} engines: {node: '>=18'} + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -780,10 +1444,18 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + ci-info@4.3.0: + resolution: {integrity: sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==} + engines: {node: '>=8'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -800,6 +1472,9 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + code-block-writer@13.0.3: + resolution: {integrity: sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -815,15 +1490,43 @@ packages: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} engines: {node: ^12.20.0 || >=14} - computeds@0.0.1: - resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} + dayjs@1.11.7: + resolution: {integrity: sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==} de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} @@ -837,10 +1540,17 @@ packages: supports-color: optional: true + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -852,14 +1562,42 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} + engines: {node: '>=8'} + + dexie@3.2.7: + resolution: {integrity: sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==} + engines: {node: '>=6.0'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + + domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dotenv-expand@11.0.7: resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} engines: {node: '>=12'} @@ -875,6 +1613,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + electron-to-chromium@1.5.228: + resolution: {integrity: sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -884,6 +1625,10 @@ packages: end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} + engines: {node: '>=10.13.0'} + enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -896,6 +1641,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -928,6 +1677,14 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -943,6 +1700,10 @@ packages: resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} engines: {node: '>=12.0.0'} + expect@30.2.0: + resolution: {integrity: sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -1014,6 +1775,10 @@ packages: function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1045,8 +1810,8 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - happy-dom@15.10.2: - resolution: {integrity: sha512-NbA5XrSovenJIIcfixCREX3ZnV7yHP4phhbfuxxf4CPn+LZpz/jIM9EqJ2DrPwgVDSMoAKH3pZwQvkbsSiCrUw==} + happy-dom@15.11.7: + resolution: {integrity: sha512-KyrFvnl+J9US63TEzwoiJOQzZBJY7KgBushJA8X61DMbNsH+2ONkDuLDnCnwUiPTF42tLoEmrPyoqbenVA5zrg==} engines: {node: '>=18.0.0'} has-flag@4.0.0: @@ -1069,9 +1834,39 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true + html-dom-parser@5.1.1: + resolution: {integrity: sha512-+o4Y4Z0CLuyemeccvGN4bAO20aauB2N9tFEAep5x4OW34kV4PTarBHm6RL02afYt2BMKcr0D2Agep8S3nJPIBg==} + + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-react-parser@5.2.6: + resolution: {integrity: sha512-qcpPWLaSvqXi+TndiHbCa+z8qt0tVzjMwFGFBAa41ggC+ZA5BHaMIeMJla9g3VSp4SmiZb9qyQbmbpHYpIfPOg==} + peerDependencies: + '@types/react': 0.14 || 15 || 16 || 17 || 18 || 19 + react: 0.14 || 15 || 16 || 17 || 18 || 19 + peerDependenciesMeta: + '@types/react': + optional: true + + htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + + htmlparser2@8.0.2: + resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + human-id@4.1.1: resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} hasBin: true @@ -1081,6 +1876,13 @@ packages: engines: {node: '>=14'} hasBin: true + i18next@23.16.8: + resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + iconv-lite@0.7.0: resolution: {integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==} engines: {node: '>=0.10.0'} @@ -1096,9 +1898,20 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + inline-style-parser@0.2.4: + resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -1128,6 +1941,13 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-subdir@1.2.0: resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} engines: {node: '>=4'} @@ -1170,13 +1990,58 @@ packages: resolution: {integrity: sha512-4+prq+9J61mOVXCa4Qp8ZjavdxzrWQXrI80GNxP8f4tkI2syPuPrJgdRPZRrfUTRvIoUwcmNLbqEJy9W800+NQ==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + jest-diff@30.2.0: + resolution: {integrity: sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-matcher-utils@30.2.0: + resolution: {integrity: sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-message-util@30.2.0: + resolution: {integrity: sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-mock@30.2.0: + resolution: {integrity: sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-regex-util@30.0.1: + resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jest-util@30.2.0: + resolution: {integrity: sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -1191,13 +2056,83 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jwt-decode@3.1.2: + resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + lightningcss-darwin-arm64@1.30.1: + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.30.1: + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.30.1: + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.30.1: + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.30.1: + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.30.1: + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.30.1: + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.30.1: + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.30.1: + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.30.1: + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.30.1: + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} + engines: {node: '>= 12.0.0'} + lines-and-columns@2.0.3: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} @@ -1220,16 +2155,35 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + loupe@3.2.1: resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lucide-react@0.453.0: + resolution: {integrity: sha512-kL+RGZCcJi9BvJtzg2kshO192Ddy9hv3ij+cPrVPWSRzgCWCVazoQJxOjAwgK53NomL07HB7GPHW120FimjNhQ==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + + lunr@2.3.9: + resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string@0.30.19: resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} @@ -1240,10 +2194,20 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -1264,6 +2228,10 @@ packages: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + minimatch@3.0.8: resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} @@ -1282,6 +2250,15 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -1300,10 +2277,16 @@ packages: node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} + nwsapi@2.2.22: + resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} + nx@21.5.2: resolution: {integrity: sha512-hvq3W6mWsNuXzO1VWXpVcbGuF3e4cx0PyPavy8RgZUinbnh3Gk+f+2DGXyjKEyAG3Ql0Nl3V4RJERZzXEVl7EA==} hasBin: true @@ -1370,6 +2353,12 @@ packages: package-manager-detector@0.2.11: resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + parse-srcset@1.0.2: + resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -1418,6 +2407,9 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + preact@10.12.1: + resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -1428,13 +2420,25 @@ packages: engines: {node: '>=14'} hasBin: true + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-format@30.0.5: resolution: {integrity: sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==} engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + pretty-format@30.2.0: + resolution: {integrity: sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==} + engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -1445,9 +2449,36 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} + peerDependencies: + react: ^19.2.0 + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-property@2.0.2: + resolution: {integrity: sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==} + + react-refresh@0.17.0: + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} + engines: {node: '>=0.10.0'} + + react-style-stringify@1.2.0: + resolution: {integrity: sha512-88JZckqgbfXJaGcDQoTFKRmBwHBF0Ddaxz3PL9Q+vywAJruBY+NdN+ZiKSBe7r/pWtjbt0naZdtH5oNI1X3FLA==} + engines: {node: '>=14.0.0'} + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} + engines: {node: '>=0.10.0'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -1456,6 +2487,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -1484,11 +2519,17 @@ packages: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rollup@4.52.5: - resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==} + rollup@4.50.1: + resolution: {integrity: sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rrule@2.8.1: + resolution: {integrity: sha512-hM3dHSBMeaJ0Ktp7W38BJZ7O1zOgaFEsn41PDk+yHoEtfLV+PoJt9E9xAlZiWgf/iqEqionN0ebHFZIDAp+iGw==} + + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -1498,6 +2539,20 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sanitize-html@2.17.0: + resolution: {integrity: sha512-dLAADUSS8rBwhaevT12yCezvioCA+bmUTPH/u57xKPT8d++voeYE6HeluA/bPbQ15TwDBG2ii+QZIEmYx8VdxA==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -1530,6 +2585,9 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + sortablejs@1.15.6: + resolution: {integrity: sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1544,6 +2602,10 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -1577,10 +2639,20 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-to-js@1.1.17: + resolution: {integrity: sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA==} + + style-to-object@1.0.9: + resolution: {integrity: sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1593,10 +2665,33 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + tailwind-merge@3.0.2: + resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} + + tailwind-variants@1.0.0: + resolution: {integrity: sha512-2WSbv4ulEEyuBKomOunut65D8UZwxrHoRfYnxGcQNnHqlSCp2+B7Yz2W+yrNDrxRodOXtGD/1oCcKGNBnUqMqA==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + + tailwindcss@4.1.14: + resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==} + + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} + engines: {node: '>=6'} + tar-stream@2.2.0: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} + engines: {node: '>=18'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} @@ -1623,6 +2718,13 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + tmp@0.2.5: resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} @@ -1631,10 +2733,21 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true + ts-morph@22.0.0: + resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} + tsconfig-paths@4.2.0: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} @@ -1642,6 +2755,19 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + typedoc-plugin-markdown@4.9.0: + resolution: {integrity: sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw==} + engines: {node: '>= 18'} + peerDependencies: + typedoc: 0.28.x + + typedoc@0.28.13: + resolution: {integrity: sha512-dNWY8msnYB2a+7Audha+aTF1Pu3euiE7ySp53w8kEsXoYw7dMouV5A1UsTUY345aB152RHnmRMDiovuBi7BD+w==} + engines: {node: '>= 18', pnpm: '>= 10'} + hasBin: true + peerDependencies: + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -1652,6 +2778,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} @@ -1659,12 +2788,22 @@ packages: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + update-browserslist-db@1.1.3: + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + validator@13.15.15: resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} engines: {node: '>= 0.10'} @@ -1749,6 +2888,10 @@ packages: peerDependencies: typescript: '*' + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -1756,10 +2899,22 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + whatwg-mimetype@3.0.0: resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1781,13 +2936,39 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + ws@8.18.3: + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + yaml@2.8.1: resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} engines: {node: '>= 14.6'} @@ -1806,23 +2987,150 @@ packages: engines: {node: '>=8.0.0'} hasBin: true + zustand@5.0.8: + resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} + engines: {node: '>=12.20.0'} + peerDependencies: + '@types/react': '>=18.0.0' + immer: '>=9.0.6' + react: '>=18.0.0' + use-sync-external-store: '>=1.2.0' + peerDependenciesMeta: + '@types/react': + optional: true + immer: + optional: true + react: + optional: true + use-sync-external-store: + optional: true + snapshots: - '@ampproject/remapping@2.3.0': + '@adobe/css-tools@4.4.4': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + + '@babel/code-frame@7.27.1': + dependencies: + '@babel/helper-validator-identifier': 7.27.1 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.28.4': {} + + '@babel/core@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.1 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.28.3': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.27.2': + dependencies: + '@babel/compat-data': 7.28.4 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.26.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-module-imports@7.27.1': + dependencies: + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 + '@babel/core': 7.28.4 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.28.4 + transitivePeerDependencies: + - supports-color + + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helpers@7.28.4': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + '@babel/parser@7.28.4': dependencies: '@babel/types': 7.28.4 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + dependencies: + '@babel/core': 7.28.4 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.28.4': {} + '@babel/template@7.27.2': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@babel/traverse@7.28.4': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.3 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.4 + '@babel/template': 7.27.2 + '@babel/types': 7.28.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -1859,7 +3167,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.7(@types/node@20.19.13)': + '@changesets/cli@2.29.7(@types/node@22.18.8)': dependencies: '@changesets/apply-release-plan': 7.0.13 '@changesets/assemble-release-plan': 6.0.9 @@ -1875,7 +3183,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.2(@types/node@20.19.13) + '@inquirer/external-editor': 1.0.2(@types/node@22.18.8) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -1974,6 +3282,26 @@ snapshots: human-id: 4.1.1 prettier: 2.8.8 + '@csstools/color-helpers@5.1.0': {} + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + '@emnapi/core@1.5.0': dependencies: '@emnapi/wasi-threads': 1.1.0 @@ -1987,6 +3315,8 @@ snapshots: dependencies: tslib: 2.8.1 + '@emotion/unitless@0.10.0': {} + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -2056,12 +3386,42 @@ snapshots: '@esbuild/win32-x64@0.21.5': optional: true - '@inquirer/external-editor@1.0.2(@types/node@20.19.13)': + '@fullcalendar/core@6.1.8': + dependencies: + preact: 10.12.1 + + '@fullcalendar/daygrid@6.1.8(@fullcalendar/core@6.1.8)': + dependencies: + '@fullcalendar/core': 6.1.8 + + '@fullcalendar/interaction@6.1.8(@fullcalendar/core@6.1.8)': + dependencies: + '@fullcalendar/core': 6.1.8 + + '@fullcalendar/rrule@6.1.8(@fullcalendar/core@6.1.8)(rrule@2.8.1)': + dependencies: + '@fullcalendar/core': 6.1.8 + rrule: 2.8.1 + + '@fullcalendar/timegrid@6.1.8(@fullcalendar/core@6.1.8)': + dependencies: + '@fullcalendar/core': 6.1.8 + '@fullcalendar/daygrid': 6.1.8(@fullcalendar/core@6.1.8) + + '@gerrit0/mini-shiki@3.13.0': + dependencies: + '@shikijs/engine-oniguruma': 3.13.0 + '@shikijs/langs': 3.13.0 + '@shikijs/themes': 3.13.0 + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@inquirer/external-editor@1.0.2(@types/node@22.18.8)': dependencies: chardet: 2.1.0 iconv-lite: 0.7.0 optionalDependencies: - '@types/node': 20.19.13 + '@types/node': 22.18.8 '@isaacs/cliui@8.0.2': dependencies: @@ -2072,21 +3432,49 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@istanbuljs/schema@0.1.3': {} '@jest/diff-sequences@30.0.1': {} + '@jest/expect-utils@30.2.0': + dependencies: + '@jest/get-type': 30.1.0 + '@jest/get-type@30.1.0': {} + '@jest/pattern@30.0.1': + dependencies: + '@types/node': 20.19.13 + jest-regex-util: 30.0.1 + '@jest/schemas@30.0.5': dependencies: '@sinclair/typebox': 0.34.41 + '@jest/types@30.2.0': + dependencies: + '@jest/pattern': 30.0.1 + '@jest/schemas': 30.0.5 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 20.19.13 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/sourcemap-codec@1.5.5': {} @@ -2096,6 +3484,10 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@lit/react@1.0.8(@types/react@19.2.0)': + dependencies: + '@types/react': 19.2.0 + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.28.4 @@ -2138,6 +3530,8 @@ snapshots: transitivePeerDependencies: - '@types/node' + '@microsoft/fetch-event-source@2.0.1': {} + '@microsoft/tsdoc-config@0.16.2': dependencies: '@microsoft/tsdoc': 0.14.2 @@ -2195,6 +3589,42 @@ snapshots: '@nx/nx-win32-x64-msvc@21.5.2': optional: true + '@nylas/core@1.2.0(@stencil/core@4.37.1)': + dependencies: + '@stencil/store': 2.2.0(@stencil/core@4.37.1) + dexie: 3.2.7 + transitivePeerDependencies: + - '@stencil/core' + + '@nylas/identity@3.1.0': + dependencies: + '@microsoft/fetch-event-source': 2.0.1 + buffer: 6.0.3 + jwt-decode: 3.1.2 + react: 18.2.0 + uuid: 8.3.2 + + '@nylas/web-elements@2.2.4(rollup@4.50.1)': + dependencies: + '@fullcalendar/core': 6.1.8 + '@fullcalendar/daygrid': 6.1.8(@fullcalendar/core@6.1.8) + '@fullcalendar/interaction': 6.1.8(@fullcalendar/core@6.1.8) + '@fullcalendar/rrule': 6.1.8(@fullcalendar/core@6.1.8)(rrule@2.8.1) + '@fullcalendar/timegrid': 6.1.8(@fullcalendar/core@6.1.8) + '@nylas/core': 1.2.0(@stencil/core@4.37.1) + '@nylas/identity': 3.1.0 + '@rollup/plugin-replace': 6.0.2(rollup@4.50.1) + '@sentry/browser': 8.55.0 + '@stencil/core': 4.37.1 + d3-time: 3.1.0 + dayjs: 1.11.7 + i18next: 23.16.8 + rrule: 2.8.1 + sanitize-html: 2.17.0 + sortablejs: 1.15.6 + transitivePeerDependencies: + - rollup + '@oxlint/darwin-arm64@1.16.0': optional: true @@ -2222,78 +3652,108 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/pluginutils@5.3.0(rollup@4.52.5)': + '@rolldown/pluginutils@1.0.0-beta.27': {} + + '@rollup/plugin-replace@6.0.2(rollup@4.50.1)': + dependencies: + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) + magic-string: 0.30.19 + optionalDependencies: + rollup: 4.50.1 + + '@rollup/pluginutils@5.3.0(rollup@4.50.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.5 + rollup: 4.50.1 + + '@rollup/rollup-android-arm-eabi@4.50.1': + optional: true + + '@rollup/rollup-android-arm64@4.50.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.34.9': + optional: true + + '@rollup/rollup-darwin-arm64@4.50.1': + optional: true + + '@rollup/rollup-darwin-x64@4.34.9': + optional: true + + '@rollup/rollup-darwin-x64@4.50.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.50.1': + optional: true - '@rollup/rollup-android-arm-eabi@4.52.5': + '@rollup/rollup-freebsd-x64@4.50.1': optional: true - '@rollup/rollup-android-arm64@4.52.5': + '@rollup/rollup-linux-arm-gnueabihf@4.50.1': optional: true - '@rollup/rollup-darwin-arm64@4.52.5': + '@rollup/rollup-linux-arm-musleabihf@4.50.1': optional: true - '@rollup/rollup-darwin-x64@4.52.5': + '@rollup/rollup-linux-arm64-gnu@4.34.9': optional: true - '@rollup/rollup-freebsd-arm64@4.52.5': + '@rollup/rollup-linux-arm64-gnu@4.50.1': optional: true - '@rollup/rollup-freebsd-x64@4.52.5': + '@rollup/rollup-linux-arm64-musl@4.34.9': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.5': + '@rollup/rollup-linux-arm64-musl@4.50.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.5': + '@rollup/rollup-linux-loongarch64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.5': + '@rollup/rollup-linux-ppc64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.5': + '@rollup/rollup-linux-riscv64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.5': + '@rollup/rollup-linux-riscv64-musl@4.50.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.5': + '@rollup/rollup-linux-s390x-gnu@4.50.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.5': + '@rollup/rollup-linux-x64-gnu@4.34.9': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.5': + '@rollup/rollup-linux-x64-gnu@4.50.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.5': + '@rollup/rollup-linux-x64-musl@4.34.9': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.5': + '@rollup/rollup-linux-x64-musl@4.50.1': optional: true - '@rollup/rollup-linux-x64-musl@4.52.5': + '@rollup/rollup-openharmony-arm64@4.50.1': optional: true - '@rollup/rollup-openharmony-arm64@4.52.5': + '@rollup/rollup-win32-arm64-msvc@4.34.9': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.5': + '@rollup/rollup-win32-arm64-msvc@4.50.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.5': + '@rollup/rollup-win32-ia32-msvc@4.50.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.5': + '@rollup/rollup-win32-x64-msvc@4.34.9': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.5': + '@rollup/rollup-win32-x64-msvc@4.50.1': optional: true '@rushstack/node-core-library@4.0.2(@types/node@20.19.13)': @@ -2328,23 +3788,358 @@ snapshots: transitivePeerDependencies: - '@types/node' + '@sentry-internal/browser-utils@8.55.0': + dependencies: + '@sentry/core': 8.55.0 + + '@sentry-internal/feedback@8.55.0': + dependencies: + '@sentry/core': 8.55.0 + + '@sentry-internal/replay-canvas@8.55.0': + dependencies: + '@sentry-internal/replay': 8.55.0 + '@sentry/core': 8.55.0 + + '@sentry-internal/replay@8.55.0': + dependencies: + '@sentry-internal/browser-utils': 8.55.0 + '@sentry/core': 8.55.0 + + '@sentry/browser@8.55.0': + dependencies: + '@sentry-internal/browser-utils': 8.55.0 + '@sentry-internal/feedback': 8.55.0 + '@sentry-internal/replay': 8.55.0 + '@sentry-internal/replay-canvas': 8.55.0 + '@sentry/core': 8.55.0 + + '@sentry/core@8.55.0': {} + + '@shikijs/engine-oniguruma@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/themes@3.13.0': + dependencies: + '@shikijs/types': 3.13.0 + + '@shikijs/types@3.13.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@sinclair/typebox@0.34.41': {} + '@stencil/core@4.37.1': + optionalDependencies: + '@rollup/rollup-darwin-arm64': 4.34.9 + '@rollup/rollup-darwin-x64': 4.34.9 + '@rollup/rollup-linux-arm64-gnu': 4.34.9 + '@rollup/rollup-linux-arm64-musl': 4.34.9 + '@rollup/rollup-linux-x64-gnu': 4.34.9 + '@rollup/rollup-linux-x64-musl': 4.34.9 + '@rollup/rollup-win32-arm64-msvc': 4.34.9 + '@rollup/rollup-win32-x64-msvc': 4.34.9 + + '@stencil/react-output-target@1.2.0(@stencil/core@4.37.1)(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@lit/react': 1.0.8(@types/react@19.2.0) + '@stencil/core': 4.37.1 + html-react-parser: 5.2.6(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-style-stringify: 1.2.0 + ts-morph: 22.0.0 + transitivePeerDependencies: + - '@types/react' + + '@stencil/store@2.2.0(@stencil/core@4.37.1)': + dependencies: + '@stencil/core': 4.37.1 + + '@swc/core-darwin-arm64@1.13.5': + optional: true + + '@swc/core-darwin-x64@1.13.5': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.13.5': + optional: true + + '@swc/core-linux-arm64-gnu@1.13.5': + optional: true + + '@swc/core-linux-arm64-musl@1.13.5': + optional: true + + '@swc/core-linux-x64-gnu@1.13.5': + optional: true + + '@swc/core-linux-x64-musl@1.13.5': + optional: true + + '@swc/core-win32-arm64-msvc@1.13.5': + optional: true + + '@swc/core-win32-ia32-msvc@1.13.5': + optional: true + + '@swc/core-win32-x64-msvc@1.13.5': + optional: true + + '@swc/core@1.13.5': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.25 + optionalDependencies: + '@swc/core-darwin-arm64': 1.13.5 + '@swc/core-darwin-x64': 1.13.5 + '@swc/core-linux-arm-gnueabihf': 1.13.5 + '@swc/core-linux-arm64-gnu': 1.13.5 + '@swc/core-linux-arm64-musl': 1.13.5 + '@swc/core-linux-x64-gnu': 1.13.5 + '@swc/core-linux-x64-musl': 1.13.5 + '@swc/core-win32-arm64-msvc': 1.13.5 + '@swc/core-win32-ia32-msvc': 1.13.5 + '@swc/core-win32-x64-msvc': 1.13.5 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.25': + dependencies: + '@swc/counter': 0.1.3 + + '@tailwindcss/node@4.1.14': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 + lightningcss: 1.30.1 + magic-string: 0.30.19 + source-map-js: 1.2.1 + tailwindcss: 4.1.14 + + '@tailwindcss/oxide-android-arm64@4.1.14': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.1.14': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.1.14': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.1.14': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.1.14': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': + optional: true + + '@tailwindcss/oxide@4.1.14': + dependencies: + detect-libc: 2.1.1 + tar: 7.5.1 + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-x64': 4.1.14 + '@tailwindcss/oxide-freebsd-x64': 4.1.14 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.14 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.14 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-x64-musl': 4.1.14 + '@tailwindcss/oxide-wasm32-wasi': 4.1.14 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.14 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.14 + + '@tailwindcss/vite@4.1.14(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1))': + dependencies: + '@tailwindcss/node': 4.1.14 + '@tailwindcss/oxide': 4.1.14 + tailwindcss: 4.1.14 + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) + + '@testing-library/dom@10.4.1': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/runtime': 7.28.4 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + picocolors: 1.1.1 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@5.17.0': + dependencies: + '@adobe/css-tools': 4.4.4 + '@babel/runtime': 7.28.4 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@babel/runtime': 7.28.4 + '@testing-library/dom': 10.4.1 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@ts-morph/common@0.23.0': + dependencies: + fast-glob: 3.3.3 + minimatch: 9.0.5 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + '@tybys/wasm-util@0.9.0': dependencies: tslib: 2.8.1 '@types/argparse@1.0.38': {} + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@types/babel__generator': 7.27.0 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.28.0 + + '@types/babel__generator@7.27.0': + dependencies: + '@babel/types': 7.28.4 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + + '@types/babel__traverse@7.28.0': + dependencies: + '@babel/types': 7.28.4 + '@types/estree@1.0.8': {} + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest@30.0.0': + dependencies: + expect: 30.2.0 + pretty-format: 30.0.5 + + '@types/jsdom@21.1.7': + dependencies: + '@types/node': 20.19.13 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 + '@types/node@12.20.55': {} '@types/node@20.19.13': dependencies: undici-types: 6.21.0 - '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.10.2))': + '@types/node@22.18.8': + dependencies: + undici-types: 6.21.0 + optional: true + + '@types/react-dom@19.2.0(@types/react@19.2.0)': + dependencies: + '@types/react': 19.2.0 + + '@types/react@19.2.0': + dependencies: + csstype: 3.1.3 + + '@types/stack-utils@2.0.3': {} + + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 30.0.0 + + '@types/tough-cookie@4.0.5': {} + + '@types/unist@3.0.3': {} + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@vitejs/plugin-react-swc@3.11.0(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1))': + dependencies: + '@rolldown/pluginutils': 1.0.0-beta.27 + '@swc/core': 1.13.5 + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) + transitivePeerDependencies: + - '@swc/helpers' + + '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1))': + dependencies: + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@rolldown/pluginutils': 1.0.0-beta.27 + '@types/babel__core': 7.20.5 + react-refresh: 0.17.0 + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@2.1.9(vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -2358,7 +4153,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@20.19.13)(happy-dom@15.10.2) + vitest: 2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1) transitivePeerDependencies: - supports-color @@ -2369,13 +4164,13 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@20.19.13))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - vite: 5.4.21(@types/node@20.19.13) + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) '@vitest/pretty-format@2.1.9': dependencies: @@ -2455,6 +4250,8 @@ snapshots: dependencies: argparse: 2.0.1 + agent-base@7.1.4: {} + ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -2482,6 +4279,12 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + array-union@2.1.0: {} assertion-error@2.0.1: {} @@ -2500,6 +4303,8 @@ snapshots: base64-js@1.5.1: {} + baseline-browser-mapping@2.8.10: {} + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -2523,7 +4328,20 @@ snapshots: dependencies: fill-range: 7.1.1 - buffer@5.7.1: + browserslist@4.26.3: + dependencies: + baseline-browser-mapping: 2.8.10 + caniuse-lite: 1.0.30001746 + electron-to-chromium: 1.5.228 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.3) + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 @@ -2535,6 +4353,8 @@ snapshots: es-errors: 1.3.0 function-bind: 1.1.2 + caniuse-lite@1.0.30001746: {} + chai@5.3.3: dependencies: assertion-error: 2.0.1 @@ -2543,6 +4363,11 @@ snapshots: loupe: 3.2.1 pathval: 2.0.1 + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -2552,8 +4377,12 @@ snapshots: check-error@2.1.1: {} + chownr@3.0.0: {} + ci-info@3.9.0: {} + ci-info@4.3.0: {} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -2568,6 +4397,8 @@ snapshots: clone@1.0.4: {} + code-block-writer@13.0.3: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -2585,20 +4416,50 @@ snapshots: concat-map@0.0.1: {} + convert-source-map@2.0.0: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + css.escape@1.5.1: {} + + cssstyle@4.6.0: + dependencies: + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 + + csstype@3.1.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + data-urls@5.0.0: + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + + dayjs@1.11.7: {} + de-indent@1.0.2: {} debug@4.4.1: dependencies: ms: 2.1.3 + decimal.js@10.6.0: {} + deep-eql@5.0.2: {} + deepmerge@4.3.1: {} + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -2607,12 +4468,38 @@ snapshots: delayed-stream@1.0.0: {} + dequal@2.0.3: {} + detect-indent@6.1.0: {} + detect-libc@2.1.1: {} + + dexie@3.2.7: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 + dom-accessibility-api@0.5.16: {} + + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + + domutils@3.2.2: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dotenv-expand@11.0.7: dependencies: dotenv: 16.4.7 @@ -2627,6 +4514,8 @@ snapshots: eastasianwidth@0.2.0: {} + electron-to-chromium@1.5.228: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -2635,6 +4524,11 @@ snapshots: dependencies: once: 1.4.0 + enhanced-resolve@5.18.3: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.3 + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -2646,6 +4540,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -2693,6 +4589,10 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + esprima@4.0.1: {} estree-walker@2.0.2: {} @@ -2703,6 +4603,15 @@ snapshots: expect-type@1.2.2: {} + expect@30.2.0: + dependencies: + '@jest/expect-utils': 30.2.0 + '@jest/get-type': 30.1.0 + jest-matcher-utils: 30.2.0 + jest-message-util: 30.2.0 + jest-mock: 30.2.0 + jest-util: 30.2.0 + extendable-error@0.1.7: {} fast-deep-equal@3.1.3: {} @@ -2774,6 +4683,8 @@ snapshots: function-bind@1.1.2: {} + gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -2820,11 +4731,12 @@ snapshots: graceful-fs@4.2.11: {} - happy-dom@15.10.2: + happy-dom@15.11.7: dependencies: entities: 4.5.0 webidl-conversions: 7.0.0 whatwg-mimetype: 3.0.0 + optional: true has-flag@4.0.0: {} @@ -2840,12 +4752,67 @@ snapshots: he@1.2.0: {} + html-dom-parser@5.1.1: + dependencies: + domhandler: 5.0.3 + htmlparser2: 10.0.0 + + html-encoding-sniffer@4.0.0: + dependencies: + whatwg-encoding: 3.1.1 + html-escaper@2.0.2: {} + html-react-parser@5.2.6(@types/react@19.2.0)(react@19.2.0): + dependencies: + domhandler: 5.0.3 + html-dom-parser: 5.1.1 + react: 19.2.0 + react-property: 2.0.2 + style-to-js: 1.1.17 + optionalDependencies: + '@types/react': 19.2.0 + + htmlparser2@10.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + + htmlparser2@8.0.2: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 4.5.0 + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + human-id@4.1.1: {} husky@8.0.3: {} + i18next@23.16.8: + dependencies: + '@babel/runtime': 7.28.4 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + iconv-lite@0.7.0: dependencies: safer-buffer: 2.1.2 @@ -2856,8 +4823,14 @@ snapshots: import-lazy@4.0.0: {} + indent-string@4.0.0: {} + inherits@2.0.4: {} + inline-style-parser@0.2.4: {} + + internmap@2.0.3: {} + is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -2876,6 +4849,10 @@ snapshots: is-number@7.0.0: {} + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 @@ -2924,13 +4901,89 @@ snapshots: chalk: 4.1.2 pretty-format: 30.0.5 + jest-diff@30.2.0: + dependencies: + '@jest/diff-sequences': 30.0.1 + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + pretty-format: 30.2.0 + + jest-matcher-utils@30.2.0: + dependencies: + '@jest/get-type': 30.1.0 + chalk: 4.1.2 + jest-diff: 30.2.0 + pretty-format: 30.2.0 + + jest-message-util@30.2.0: + dependencies: + '@babel/code-frame': 7.27.1 + '@jest/types': 30.2.0 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 30.2.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 20.19.13 + jest-util: 30.2.0 + + jest-regex-util@30.0.1: {} + + jest-util@30.2.0: + dependencies: + '@jest/types': 30.2.0 + '@types/node': 20.19.13 + chalk: 4.1.2 + ci-info: 4.3.0 + graceful-fs: 4.2.11 + picomatch: 4.0.3 + + jiti@2.6.1: {} + jju@1.4.0: {} + js-tokens@4.0.0: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 + jsdom@26.1.0: + dependencies: + cssstyle: 4.6.0 + data-urls: 5.0.0 + decimal.js: 10.6.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.22 + parse5: 7.3.0 + rrweb-cssom: 0.8.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.18.3 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + json-schema-traverse@0.4.1: {} json5@2.2.3: {} @@ -2941,10 +4994,61 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jwt-decode@3.1.2: {} + kolorist@1.8.0: {} + lightningcss-darwin-arm64@1.30.1: + optional: true + + lightningcss-darwin-x64@1.30.1: + optional: true + + lightningcss-freebsd-x64@1.30.1: + optional: true + + lightningcss-linux-arm-gnueabihf@1.30.1: + optional: true + + lightningcss-linux-arm64-gnu@1.30.1: + optional: true + + lightningcss-linux-arm64-musl@1.30.1: + optional: true + + lightningcss-linux-x64-gnu@1.30.1: + optional: true + + lightningcss-linux-x64-musl@1.30.1: + optional: true + + lightningcss-win32-arm64-msvc@1.30.1: + optional: true + + lightningcss-win32-x64-msvc@1.30.1: + optional: true + + lightningcss@1.30.1: + dependencies: + detect-libc: 2.1.1 + optionalDependencies: + lightningcss-darwin-arm64: 1.30.1 + lightningcss-darwin-x64: 1.30.1 + lightningcss-freebsd-x64: 1.30.1 + lightningcss-linux-arm-gnueabihf: 1.30.1 + lightningcss-linux-arm64-gnu: 1.30.1 + lightningcss-linux-arm64-musl: 1.30.1 + lightningcss-linux-x64-gnu: 1.30.1 + lightningcss-linux-x64-musl: 1.30.1 + lightningcss-win32-arm64-msvc: 1.30.1 + lightningcss-win32-x64-msvc: 1.30.1 + lines-and-columns@2.0.3: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + locate-path@5.0.0: dependencies: p-locate: 4.1.0 @@ -2962,14 +5066,30 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + loupe@3.2.1: {} lru-cache@10.4.3: {} + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + lru-cache@6.0.0: dependencies: yallist: 4.0.0 + lucide-react@0.453.0(react@19.2.0): + dependencies: + react: 19.2.0 + + lunr@2.3.9: {} + + lz-string@1.5.0: {} + magic-string@0.30.19: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2984,8 +5104,21 @@ snapshots: dependencies: semver: 7.7.2 + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + + markdown-table@3.0.4: {} + math-intrinsics@1.1.0: {} + mdurl@2.0.0: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -3001,6 +5134,8 @@ snapshots: mimic-fn@2.1.0: {} + min-indent@1.0.1: {} + minimatch@3.0.8: dependencies: brace-expansion: 1.1.12 @@ -3017,6 +5152,12 @@ snapshots: minipass@7.1.2: {} + minizlib@3.1.0: + dependencies: + minipass: 7.1.2 + + mkdirp@3.0.1: {} + mri@1.2.0: {} ms@2.1.3: {} @@ -3027,11 +5168,15 @@ snapshots: node-machine-id@1.1.12: {} + node-releases@2.0.21: {} + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - nx@21.5.2: + nwsapi@2.2.22: {} + + nx@21.5.2(@swc/core@1.13.5): dependencies: '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 @@ -3079,6 +5224,7 @@ snapshots: '@nx/nx-linux-x64-musl': 21.5.2 '@nx/nx-win32-arm64-msvc': 21.5.2 '@nx/nx-win32-x64-msvc': 21.5.2 + '@swc/core': 1.13.5 transitivePeerDependencies: - debug @@ -3142,6 +5288,12 @@ snapshots: dependencies: quansync: 0.2.11 + parse-srcset@1.0.2: {} + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + path-browserify@1.0.1: {} path-exists@4.0.0: {} @@ -3175,26 +5327,63 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + preact@10.12.1: {} + prettier@2.8.8: {} prettier@3.6.2: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + pretty-format@30.0.5: dependencies: '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 react-is: 18.3.1 + pretty-format@30.2.0: + dependencies: + '@jest/schemas': 30.0.5 + ansi-styles: 5.2.0 + react-is: 18.3.1 + proxy-from-env@1.1.0: {} + punycode.js@2.3.1: {} + punycode@2.3.1: {} quansync@0.2.11: {} queue-microtask@1.2.3: {} + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 + + react-is@17.0.2: {} + react-is@18.3.1: {} + react-property@2.0.2: {} + + react-refresh@0.17.0: {} + + react-style-stringify@1.2.0: + dependencies: + '@emotion/unitless': 0.10.0 + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + react@19.2.0: {} + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -3208,6 +5397,11 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + require-directory@2.1.1: {} resolve-from@5.0.0: {} @@ -3232,34 +5426,39 @@ snapshots: reusify@1.1.0: {} - rollup@4.52.5: + rollup@4.50.1: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.5 - '@rollup/rollup-android-arm64': 4.52.5 - '@rollup/rollup-darwin-arm64': 4.52.5 - '@rollup/rollup-darwin-x64': 4.52.5 - '@rollup/rollup-freebsd-arm64': 4.52.5 - '@rollup/rollup-freebsd-x64': 4.52.5 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.5 - '@rollup/rollup-linux-arm-musleabihf': 4.52.5 - '@rollup/rollup-linux-arm64-gnu': 4.52.5 - '@rollup/rollup-linux-arm64-musl': 4.52.5 - '@rollup/rollup-linux-loong64-gnu': 4.52.5 - '@rollup/rollup-linux-ppc64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-gnu': 4.52.5 - '@rollup/rollup-linux-riscv64-musl': 4.52.5 - '@rollup/rollup-linux-s390x-gnu': 4.52.5 - '@rollup/rollup-linux-x64-gnu': 4.52.5 - '@rollup/rollup-linux-x64-musl': 4.52.5 - '@rollup/rollup-openharmony-arm64': 4.52.5 - '@rollup/rollup-win32-arm64-msvc': 4.52.5 - '@rollup/rollup-win32-ia32-msvc': 4.52.5 - '@rollup/rollup-win32-x64-gnu': 4.52.5 - '@rollup/rollup-win32-x64-msvc': 4.52.5 + '@rollup/rollup-android-arm-eabi': 4.50.1 + '@rollup/rollup-android-arm64': 4.50.1 + '@rollup/rollup-darwin-arm64': 4.50.1 + '@rollup/rollup-darwin-x64': 4.50.1 + '@rollup/rollup-freebsd-arm64': 4.50.1 + '@rollup/rollup-freebsd-x64': 4.50.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.1 + '@rollup/rollup-linux-arm-musleabihf': 4.50.1 + '@rollup/rollup-linux-arm64-gnu': 4.50.1 + '@rollup/rollup-linux-arm64-musl': 4.50.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.50.1 + '@rollup/rollup-linux-ppc64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-gnu': 4.50.1 + '@rollup/rollup-linux-riscv64-musl': 4.50.1 + '@rollup/rollup-linux-s390x-gnu': 4.50.1 + '@rollup/rollup-linux-x64-gnu': 4.50.1 + '@rollup/rollup-linux-x64-musl': 4.50.1 + '@rollup/rollup-openharmony-arm64': 4.50.1 + '@rollup/rollup-win32-arm64-msvc': 4.50.1 + '@rollup/rollup-win32-ia32-msvc': 4.50.1 + '@rollup/rollup-win32-x64-msvc': 4.50.1 fsevents: 2.3.3 + rrule@2.8.1: + dependencies: + tslib: 2.8.1 + + rrweb-cssom@0.8.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -3268,6 +5467,23 @@ snapshots: safer-buffer@2.1.2: {} + sanitize-html@2.17.0: + dependencies: + deepmerge: 4.3.1 + escape-string-regexp: 4.0.0 + htmlparser2: 8.0.2 + is-plain-object: 5.0.0 + parse-srcset: 1.0.2 + postcss: 8.5.6 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.27.0: {} + + semver@6.3.1: {} + semver@7.5.4: dependencies: lru-cache: 6.0.0 @@ -3288,6 +5504,8 @@ snapshots: slash@3.0.0: {} + sortablejs@1.15.6: {} + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -3299,6 +5517,10 @@ snapshots: sprintf-js@1.0.3: {} + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + stackback@0.0.2: {} std-env@3.9.0: {} @@ -3331,8 +5553,20 @@ snapshots: strip-bom@3.0.0: {} + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@3.1.1: {} + style-to-js@1.1.17: + dependencies: + style-to-object: 1.0.9 + + style-to-object@1.0.9: + dependencies: + inline-style-parser: 0.2.4 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -3343,6 +5577,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + symbol-tree@3.2.4: {} + + tailwind-merge@3.0.2: {} + + tailwind-variants@1.0.0(tailwindcss@4.1.14): + dependencies: + tailwind-merge: 3.0.2 + tailwindcss: 4.1.14 + + tailwindcss@4.1.14: {} + + tapable@2.2.3: {} + tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -3351,6 +5598,14 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + tar@7.5.1: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + term-size@2.2.1: {} test-exclude@7.0.1: @@ -3369,14 +5624,33 @@ snapshots: tinyspy@3.0.2: {} + tldts-core@6.1.86: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + tmp@0.2.5: {} to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + tree-kill@1.2.2: {} + ts-morph@22.0.0: + dependencies: + '@ts-morph/common': 0.23.0 + code-block-writer: 13.0.3 + tsconfig-paths@4.2.0: dependencies: json5: 2.2.3 @@ -3385,29 +5659,52 @@ snapshots: tslib@2.8.1: {} + typedoc-plugin-markdown@4.9.0(typedoc@0.28.13(typescript@5.9.2)): + dependencies: + typedoc: 0.28.13(typescript@5.9.2) + + typedoc@0.28.13(typescript@5.9.2): + dependencies: + '@gerrit0/mini-shiki': 3.13.0 + lunr: 2.3.9 + markdown-it: 14.1.0 + minimatch: 9.0.5 + typescript: 5.9.2 + yaml: 2.8.1 + typescript@5.4.2: {} typescript@5.9.2: {} + uc.micro@2.1.0: {} + undici-types@6.21.0: {} universalify@0.1.2: {} + update-browserslist-db@1.1.3(browserslist@4.26.3): + dependencies: + browserslist: 4.26.3 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 util-deprecate@1.0.2: {} + uuid@8.3.2: {} + validator@13.15.15: {} - vite-node@2.1.9(@types/node@20.19.13): + vite-node@2.1.9(@types/node@20.19.13)(lightningcss@1.30.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.21(@types/node@20.19.13) + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) transitivePeerDependencies: - '@types/node' - less @@ -3419,10 +5716,10 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@20.19.13)(rollup@4.52.5)(typescript@5.9.2)(vite@5.4.21(@types/node@20.19.13)): + vite-plugin-dts@3.9.1(@types/node@20.19.13)(rollup@4.50.1)(typescript@5.9.2)(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@20.19.13) - '@rollup/pluginutils': 5.3.0(rollup@4.52.5) + '@rollup/pluginutils': 5.3.0(rollup@4.50.1) '@vue/language-core': 1.8.27(typescript@5.9.2) debug: 4.4.1 kolorist: 1.8.0 @@ -3430,25 +5727,26 @@ snapshots: typescript: 5.9.2 vue-tsc: 1.8.27(typescript@5.9.2) optionalDependencies: - vite: 5.4.21(@types/node@20.19.13) + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.4.21(@types/node@20.19.13): + vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 - rollup: 4.52.5 + rollup: 4.50.1 optionalDependencies: '@types/node': 20.19.13 fsevents: 2.3.3 + lightningcss: 1.30.1 - vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.10.2): + vitest@2.1.9(@types/node@20.19.13)(happy-dom@15.11.7)(jsdom@26.1.0)(lightningcss@1.30.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@20.19.13)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@20.19.13)(lightningcss@1.30.1)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -3464,12 +5762,13 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@20.19.13) - vite-node: 2.1.9(@types/node@20.19.13) + vite: 5.4.21(@types/node@20.19.13)(lightningcss@1.30.1) + vite-node: 2.1.9(@types/node@20.19.13)(lightningcss@1.30.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.13 - happy-dom: 15.10.2 + happy-dom: 15.11.7 + jsdom: 26.1.0 transitivePeerDependencies: - less - lightningcss @@ -3493,13 +5792,29 @@ snapshots: semver: 7.7.2 typescript: 5.9.2 + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + wcwidth@1.0.1: dependencies: defaults: 1.0.4 webidl-conversions@7.0.0: {} - whatwg-mimetype@3.0.0: {} + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@3.0.0: + optional: true + + whatwg-mimetype@4.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 which@2.0.2: dependencies: @@ -3524,10 +5839,20 @@ snapshots: wrappy@1.0.2: {} + ws@8.18.3: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + y18n@5.0.8: {} + yallist@3.1.1: {} + yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@2.8.1: {} yargs-parser@21.1.1: {} @@ -3549,3 +5874,8 @@ snapshots: validator: 13.15.15 optionalDependencies: commander: 9.5.0 + + zustand@5.0.8(@types/react@19.2.0)(react@19.2.0): + optionalDependencies: + '@types/react': 19.2.0 + react: 19.2.0