* removed relative imports from editor core
* Update issue widget file paths and imports to use kebab case instead of camel case, to align with coding conventions and improve consistency.
* Update Tiptap core and extensions versions to 2.1.13 and Tiptap React version to 2.1.13. Update Tiptap table imports to use the new location in package @tiptap/pm/tables. Update AlertLabel component to use the new type definition for LucideIcon.
* updated lock file
* removed default exports from editor/core
* fixed injecting css into the core package itself
* seperated css code to have single source of origin wrt to the package
* removed default imports from document editor
* all instances using index as key while mapping fixed
* Update Lite Text Editor package.json to remove @plane/editor-types as a dependency.
Update Lite Text Editor index.ts to update the import of IMentionSuggestion and IMentionHighlight from @plane/editor-types to @plane/editor-core.
Update Lite Text Editor ui/index.tsx to update the import of UploadImage, DeleteImage, IMentionSuggestion, and RestoreImage from @plane/editor-types to @plane/editor-core.
Update Lite Text Editor ui/menus/fixed-menu/index.tsx to update the import of UploadImage from @plane/editor-types to @plane/editor-core.
Update turbo.json to remove @plane/editor-types#build as a dependency for @plane/lite-text-editor#build, @plane/rich-text-editor#build, and @plane/document-editor#build.
* Remove deprecated import and adjust tippy.js usage in the slash-commands.tsx file of the editor extensions package.
* Update dependencies in `rich-text-editor/package.json`, remove `@plane/editor-types` and add `@plane/editor-core` in `rich-text-editor/src/index.ts`, and update imports in `rich-text-editor/src/ui/extensions/index.tsx` and `rich-text-editor/src/ui/index.tsx` to use `@plane/editor-core` instead of `@plane/editor-types`.
* Update package.json dependencies and add new types for image deletion, upload, restore, mention highlight, mention suggestion, and slash command item.
* Update import statements in various files to use the new package "@plane/editor-core" instead of "@plane/editor-types".
* fixed document editor to follow conventions
* Refactor imports in the Rich Text Editor package to use relative paths instead of absolute paths.
- Updated imports in `index.ts`, `ui/index.tsx`, and `ui/menus/bubble-menu/index.tsx` to use relative paths.
- Updated `tsconfig.json` to include the `baseUrl` compiler option and adjust the `include` and `exclude` paths.
* Refactor Lite Text Editor code to use relative import paths instead of absolute import paths.
* Added LucideIconType to the exports in index.ts for use in other files.
Created a new file lucide-icon.ts which contains the type LucideIconType.
Updated the icon type in HeadingOneItem in menu-items/index.tsx to use LucideIconType.
Updated the Icon type in AlertLabel in alert-label.tsx to use LucideIconType.
Updated the Icon type in VerticalDropdownItemProps in vertical-dropdown-menu.tsx to use LucideIconType.
Updated the Icon type in BubbleMenuItem in fixed-menu/index.tsx to use LucideIconType.
Deleted the file tooltip.tsx since it is no longer used.
Updated the Icon type in BubbleMenuItem in bubble-menu/index.tsx to use LucideIconType.
* ♻️ refactor: simplify rendering logic in slash-commands.tsx
The rendering logic in the file "slash-commands.tsx" has been simplified. Previously, the code used inline positioning for the popup, but it has now been removed. Instead of appending the popup to the document body, it is now appended to the element with the ID "tiptap-container". The "flip" option has also been removed. These changes have improved the readability and maintainability of the code.
* fixed build errors caused due to core's internal imports
* regression: fixed pages not saving issue and not duplicating with proper content issue
* build: Update @tiptap dependencies
Updated the @tiptap dependencies in the package.json files of `document-editor`, `extensions`, and `rich-text-editor` packages to version 2.1.13.
* 🚑 fix: Correct appendTo selector in slash-commands.tsx
Update the `appendTo` function call in `slash-commands.tsx` to use the correct selector `#editor-container` instead of `#tiptap-container`. This ensures that the component is appended to the appropriate container in the editor extension.
Note: The commit message assumes that the change is a fix for an issue or error. If it's not a fix, please provide more context so that an appropriate commit type can be determined.
* chore: format all files in the project
* fix: removing @types/react from dependencies
* fix: adding prettier and eslint config
* chore: format files
* fix: upgrading turbo version
* chore: ignoring warnings and adding todos
* fix: updated the type of bubble menu item in the document editor
* chore: format files
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* feat: added heading 3 in the editor summary markings
* feat: fixed editor and summary bar sizing
* feat: added `issue-embed` extension
* feat: exposed issue embed extension
* feat: added main embed config configuration to document editor body
* feat: added peek overview and issue embed fetch function
* feat: enabled slash commands to take additonal suggestions from editors
* chore: replaced `IssueEmbedWidget` into widget extension
* chore: removed issue embed from previous places
* feat: added issue embed suggestion extension
* feat: added issue embed suggestion renderer
* feat: added issue embed suggestions into extensions module
* feat: added issues in issueEmbedConfiguration in document editor
* chore: package fixes
* chore: removed log statements
* feat: added title updation logic into document editor
* fix: issue suggestion items, not rendering issue widget on enter
* feat: added error card for issue widget
* feat: improved focus logic for issue search and navigate
* feat: appended transactionid for issueWidgetTransaction
* chore: packages update
* feat: disabled editing of title in readonly mode
* feat: added issueEmbedConfig in readonly editor
* fix: issue suggestions not loading after structure changed to object
* feat: added toast messages for success/error messages from doc editor
* fix: issue suggestions sorting issue
* fix: formatting errors resolved
* fix: infinite reloading of the readonly document editor
* fix: css in avatar of issue widget card
* feat: added show alert on pages reload
* feat: added saving state for the pages editor
* fix: issue with heading 3 in side bar view
* style: updated issue suggestions dropdown ui
* fix: Pages intiliazation and mutation with updated MobX store
* fixed image uploads being cancelled on refocus due to swr
* fix: issue with same description rerendering empty content fixed
* fix: scroll in issue suggestion view
* fix: added submission prop
* fix: Updated the comment update to take issue id in inbox issues
* feat:changed date representation in IssueEmbedCard
* fix: page details mutation with optimistic updates using swr
* fix: menu options in read only editor with auth fixed
* fix: add error handling for title and page desc
* fixed yarn.lock
* fix: read-only editor title wrapping
* fix: build error with rich text editor
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
Co-authored-by: Palanikannan1437 <73993394+Palanikannan1437@users.noreply.github.com>
* image can't be inserted inside table
Now we've diabled image icon from showing up if the cursor is inside a table node or if a table cell is selected
* added drag drop support for document editor
* fixed missing dependencies
* better variable names and comments
* drag drop migrated
* custom horizontal rule created
* init transaction hijack
* fixed code block with better contrast, keyboard tripple enter press disabled and syntax highlighting
* fixed link selector closing on open behaviour
* added better keymaps and syntax highlights
* made drag and drop working for code blocks
* fixed drag drop for code blocks
* moved drag drop only to rich text editor
* fixed drag and drop only for description
* enabled drag handles for peek overview and main issues
* got images to old state
* migrated table to new project structure
* fixed range errors while deleting table nodes with no nodes below and removed console logs
* fixed css for rendering table menu
* removed old table menu
* added support for read only editors as well
* text-black removed
* added design colors
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* feat: created custom mention component
* feat: added mention suggestions and suggestion highlights
* feat: created mention suggestion list for displaying mention suggestions
* feat: created custom mention text component, for handling click event
* feat: exposed mention component
* feat: integrated and exposed `mentions` componenet with `editor-core`
* feat: integrated mentions extension with the core editor package
* feat: exposed suggestion types from mentions
* feat: added `mention-suggestion` parameters in `r-t-e` and `l-t-e`
* feat: added `IssueMention` model in apiserver models
* chore: updated activities background job and added bs4 in requirements
* feat: added mention removal logic in issue_activity
* chore: exposed mention types from `r-t-e` and `l-t-e`
* feat: integrated mentions in side peek view description form
* feat: added mentions in issue modal form
* feat: created custom react-hook for editor suggestions
* feat: integrated mention suggestions block in RichTextEditor
* feat: added `mentions` integration in `lite-text-editor` instances
* fix: tailwind loading nodemodules from packages
* feat: added styles for the mention suggestion list
* fix: update module import to resolve build failure
* feat: added mentions as an issue filter
* feat: added UI Changes to Implement `mention` filters
* feat: added `mentions` as a filter option in the header
* feat: added mentions in the filter list options
* feat: added mentions in default display filter options
* feat: added filters in applied and issue params in store
* feat: modified types for adding mentions as a filter option
* feat: modified `notification-card` to display message when it exists in object
* feat: rewrote user mention management upon the changes made in develop
* chore: merged debounce PR with the current PR for tracing changes
* fix: mentions_filters updated with the new setup
* feat: updated requirements for bs4
* feat: modified `mentions-filter` to remove many to many dependency
* feat: implemented list manipulation instead of for loop
* feat: added readonly functionality in `read-only` editor core
* feat: added UI Changes for read-only mode
* feat: added mentions store in web Root Store
* chore: renamed `use-editor-suggestions` hook
* feat: UI Improvements for conditional highlights w.r.t readonly in mentionNode
* fix: removed mentions from `filter_set` parameters
* fix: minor merge fixes
* fix: package lock updates
---------
Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com>
* initialized tiptap component with common tailwind config
* added common tailwind config to web
* abstracted upload and delete functions
* removed tiptap pro extension
* fixed types
* removed old tailwind config and fixed plane package imports
* exported tiptap editor with and without ref
* updated package name to @plane/editor
* finally fixed import errors
* added turbo dependency for tiptap
* reverted back types and fixed tailwind
* migrated all components to use the common package
* removed old tiptap dependency
* improved dev experience to build the tiptap package before starting dev server
* resolved lock life and missing deps
* fixed dependency issue with react type resolution
* chore: updated pulls build CI for using turbo builds
* comment editor basic version added
* new structure of editor components
* refactored editor to not require workspace slug
* added seperation of extensions and props
* refactoring to LiteTextEditor and RichTextEditor
* fixed global css issue with highlight js
* refactoring tiptap to core/lite/rich text editor
* read only editor support added
* replaced all read-only instances
* trimming html at start and end of content added
* onSubmit on enterkey captured
* removed absolute imports from editor/core package
* removed absolute imports from lite-text-editor
* removed absolute imports from rich-text-editor
* fixed dependencies in editor package
* fixed tailwind config for editor
* Enter key behaviour added for Comments
* fixed modal form issue
* added comment editor with fixed menu
* added support for range commands
* modified turbo config for build pipeline of space and web projects
* fixed shift enter behavior for lists
* removed extra margin from access specifiers
* removed tiptap instance from web
* fixed bugs returning empty editor boxes
* fixed toggle Underline behvaiour
* updated bubble menu to use core package's utilities
* added editor/core readme and fixed imports
* fixed ts issues with link plugin
* added usage of common dependance for slash commands
* completed core package's documentation
* fixed tsconfig by removing path aliases
* Completed readme for rich-text-editor
* Added rich text editor documentation
* changed readme title of core package
---------
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
* removing dependency on tiptap pro extension
* updated docs to remove tiptap pro setup instructions
* chore: removed pro extension promt from setup.sh
* chore: Removed Pro Extension Setup from CI
---------
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
* chore: moved app & space from apps to root
* chore: modified workspace configuration
* chore: modified dockerfiles for space and web
* chore: modified icons for space
* feat: updated files for new svg icons supported by next-images
* chore: added /spaces base path for next
* chore: added compose config for space
* chore: updated husky configuration
* chore: updated workflows for new configuration
* chore: changed app name to web
* fix: resolved build errors with web
* chore: reset file tracing root for both projects
* chore: added nginx config for deploy
* fix: eslint and tsconfig settings for space app
* husky setup fixes based on new dir
* eslint fixes
* prettier formatting
---------
Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com>
* added image-resizing support
* link form removed
* updated image upload logic and 35% default width on upload
* removed shadow, added alert if not saved and ts errors
* prevent enter key on Link selector to trigger modal submit
* added workspace slug to all tiptap instances
* added delete plugin with loading indicator
* added better syncing of "Saved" state of editor and Image uploads
* removed redundant description_html check
* remirror instances commented out to avoid prosemirror conflicts
* styles migrated for remirror to tiptap transition
* added bubblemenu support with extensions
* fixed css for task lists and code with syntax highlighting
* added support for slash command
* fixed bubble menu to match styles and added better seperation in UI
* saving with debounce logic added and it's stored in backend
* added migration support by updating to html
* Image uploads done
* improved file structure and delete image function implemented
* Integrated tiptap with Issue Modal
* added additional props and Tiptap Integration with Comments
* added tiptap integration with user activity feeds
* added ref control support and bubble menu support for readonly editor
* added tiptap support for plane pages
* added tiptap support to gpt assistant modal (yet to be tested)
* removed remirror instances and cleaned up code
* improved code structure for extracting props in Tiptap
* fixing ts errors for next build
* fixing node ts error for Horizontal Rule
* added ts fix for node types
* temp fix
* temp fix
* added min height for issue description in modal
* added resolutions to prosemirror-model version
* trying pnpm overrides
* explicitly added prosemirror deps
* bugfixes
* removed extra gap at the top and moved saved indicator to the bottom
* fix: slash command scroll position
* chore: update custom css variables
* matched theme colours
* fixed gpt-assistant modal
* updated yarn lock
* added debounced updates for the title and removed saved state after timeout
* added css animations for saved state
* build fixes and remove remirror instances
* minor commenting fixes
---------
Co-authored-by: Palanikannan1437 <73993394+Palanikannan1437@users.noreply.github.com>
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* fix: replacing first, last name and email with display name
* fix: different endpoint for workspace & project member
* fix: falling back to email if display_name doesn't exist
* fix: analytics showing user id instead of display name
* chore: global bar graph component
* chore: global pie graph component
* chore: global line graph component
* chore: removed unnecessary file
* chore: refactored global chart components to accept all props
* chore: global calendar graph component added
* chore: global scatter plot graph component
* fix: undo/redo, placeholder overlapping with text, horizontal cursor
refractor: removed a lot of state-management that was not required
* fix: forwarding ref to remirror for getting extra helper functions
* fix: icon type error
* fix: value type not supported error on page block
* style: spacing, and UX for add link
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* removing dependencies from .env
* dev: Passing the arguments from docker compose to DockerWeb in nextjs to define base environment variables
* dev: removed env from docker-compose and taking the env from shell
* dev: Updated docker file and used console in signin to test the env from docker
* dev: Docker setting env variables via shell
* removed env variables and args
* Update Dockerfile.web
* Update Dockerfile.web
* Update signin.tsx
* .
* .
* dev: Added BASE_URL from docker
* dev: Updated docker config
* dev: scripts for replacing variable during runtime
* dev: entrypoint script
* dev: update replace env script and update docker entrypoint command for frontend
* dev: update replace env script to not update process.env
* dev: update docker file to add missing variables as well
* fix: updated docker compose yml and web
* dev: create start script to run docker and update script for replacing variables
* dev: update setup script and env example script to create variables in the root of the project
* .
* dev: update docker compose hub
* dev: update docker compose hub command
* dev: update docker compose yml and env example
* dev: update docker compose hub
* dev: single docker
---------
Co-authored-by: Narayana <narayana.vadapalli1996@gmail.com>
Co-authored-by: gurusainath <gurusainath007@gmail.com>
* chore: add next theme and initial setup
* chore: add dark mode colors to layouts
* chore: user general setting page theming
* chore: dashboard theming
* chore: project page theming
* chore: workspace setting page theming
* chore: my issue page theming
* chore: cmdk theming
* chore: change hardcode bg and text color to theme
* chore: change color name according to the design
* style: fix card in the dashboard
* style: fix merge conflict design issues
* style: add light high contrast and dark high contrast
* style: fix cmd k menu color and selection
* feat: change theme from cmdk menu
* chore: add multiple theme field to custom theme
* chore: removed custom theming
* fix: build error
---------
Co-authored-by: Saheb Giri <iamsahebgiri@gmail.com>
* feat: cmdk integration
* feat: create view, cycle, project, module and workspace from command k
* feat: user can logout directly from command menu
* feat: user can visit sub page like various settings
* feat: change state of issue from command menu
* chore: add current issue state and minor UX improvements
* refactor: moved change issue state to new file
* feat: change issue priority from command k
* feat: delete issue from command k
* feat: copy issue url to clipboard
* fix: change placeholder when settings page is selected
* chore: remove logout option from cmd k
* feat: add help options to cmd k
* feat: assign issue to member from cmd k
* feat: now assign issue to yourself from cmd k
* chore: implement new cmd k design with icons
* feat: implemented global search feature in the cmd k
* feat: add keyboard acessibility to cmd k list items
* chore: remove console logs
* fix: pages icon in cmd list
---------
Co-authored-by: Aaryan Khandelwal <aaryankhandu123@gmail.com>
* minor docker fixes
* eslint config changes
* dockerfile changes to backend and frontend
* oauth enabled env flag
* sentry enabled env flag
* build: get alternatives for environment variables and static file storage
* build: automatically generate random secret key if not provided
* build: update docker compose for next url env add channels to requirements for asgi server and save files in local machine for docker environment
* build: update nginx conf for backend base url update backend dockerfile to make way for static file uploads
* feat: create a default user with given values else default values
* chore: update docker python version and other dependency version in docker
* build: update local settings file to run it in docker
* fix: update script to run in default production setting
* fix: env variable changes and env setup shell script added
* Added Single Dockerfile to run the Entire plane application
* docs build fixes
---------
Co-authored-by: Narayana <narayana.vadapalli1996@gmail.com>
Co-authored-by: pablohashescobar <nikhilschacko@gmail.com>
* refractor: removed modules from user.context
* refractor: removed cycles from user context
* refractor: removed state from user context
* feat: implement channel protocol for tracking issue-activites
* refactor: remove blocking code and add todo
* refactor: refactor the consumer with function modules
* feat: add columns for identifiers for easier redirection
* style: minor padding, coloring and consistency changes
* feat: track blocker issues
* feat: track issue after creation
* feat: add runworker in procfile
* refractor: moved all context provider to _app for more clarity
* dev: added our icons
* refractor: removed issues from user context
* refactor: rename db names to plural and remove admin register file
* refactor: integrate permission layer in endpoints
* feat: create product email html templates
* refractor: changed to getServerSide from getInitialProps, removed unused component imports and minor refractoring
* feat: remirror added
* feat: workspace member user details endpoint
* fix: resolved build issue
* refactor: remove www
* feat: workspace details on user endpoint
* feat: added authorization in project settings
refractor: improved code readability
* fix: removed hard-coded workspace slug value, and added workspace in user interface
* refactor: invitation workflow for already existing users
* feat: modified remirror, fix: issue details sidebar
* fix: merge conflicts
* fix: merge conflicts
* fix: added missing dependencies
* refactor: remove user dependency from invitations
* refactor: issue description context is updated with manager
* dev: redis instance rewrite for ssl settings and remove REDIS_TLS env variable
* chore: upgrade python package requirements
* dev: added new migrations for changes
* dev: ssl config for django channels redis connection
* chore: upgrade channels requirements
* refactor: better function for connecting with redis ssl django channels
* chore: cleanup on manifest file
* revert: user endpoint changes
* build: setup asgi
* refactor: update invitation endpoint to do bulk operations
* style: cycles page, custom listbox, issue details page
* refractor: removed folder that were moved to workspaceSlug
* dev: uvicorn in requirements
* Update index.tsx
* refactor: get workspace slug on user endpoint
* fix: workspace slug redirections and slug value in user context
* fix: user context bugs, drag and drop in cycles and modules
* fix: merge conflicts
* fix: user context and create issue modal
* refactor: add extra columns for json and html description and script for back migrating old issues
* refactor: move all 500 errors to 400
* refractor: removed active project, active workspace, projects, and workspaces from user context
* refractor: change from /home to /, added home page redirection logic
added explict GET method on fetch request, and fixed invitation page not fetching all invitations
* fix: passing project id in command palette
* style: home page, feat: image in remirror
* fix: bugs
* chore: remove test_runner workflow from github actions
* dev: update Procfile worker count and python runtime upgrade
* refactor: update response from 404 to 403
* feat: filtering using both name and issue identifier in command palette
showing my issues instead of project issue in command palette, hiding again according to route in command palette
* fix: mutation on different CRUD operations
* fix: redirection in my issues pages
* feat: added authorization in workspace settings, moved command palette to app-layout
* feat: endpoint and column to store my issue props
* style: authorization new design,
fix: made whole button on authorization page clickable, lib/auth on unsuccessful api call redirecting to error page
* feat: return project details on modules and cycles
* fix: create cycle and state coming below issue modal, showing loader for rich text editor
refractor: changed from sprint to cycle in issue type
* fix: issue delete mustation
and some code refractor
* fix: mutation bugs, remirror bugs, style: consistent droopdowns and buttons
* feat: user role in model
* dev: added new migrations
* fix: add url for workspace availability check
* feat: onboarding screens
* fix: update url for workspace name check and add authentication layer and
fix invitation endpoint
* refactor: bulk invitations message
* refactor: response on workspace invitarions
* refactor: update identifier endpoint
* refactor: invitations endpoint
* feat: onboarding logic and validations
* fix: email striep
* dev: added workspace space member unique_together
* chore: back populate neccesary data for description field
* feat: emoji-picker gets close on select, public will be default option in create project
* fix: update error in project creation
* fix: mutation error on issue count in kanban view
some minor code refractoring
* fix: module bugs
* fix: issue activities and issue comments mutation handled at issue detail
* fix: error message for creating updates without permissions
* fix: showing no user left to invite in project invite
fix: - mutation in project settings control, style: - showing loader in project settings controller, - showing request pending for user that hasn't accepted invitation
* refactor: file asset upload directory
* fix: update last workspace id on user invitation accept
* style: onboarding screens
* style: cycles, issue activity
* feat: add json and html column in issue comments
* fix: submitting create issue modal on enter click, project not getting deselected
* feat: file size validator
* fix: emoji picker not closing on all emoji select
* feat: added validation in identifier such that it only accept uppercase text
* dev: commenting is now richer
* fix: shortcuts not getting opened in settings layouts
* style: showing sidebar on unauthorized pages
* fix: error code on exception
* fix: add issue button is working on my issues pages
* feat: new way of assets
* fix: updated activity content for description field
* fix: mutation on project settings control
style: blocker and blocked changed to outline button
* fix: description activity logging
* refactor: check for workspace slug on workspace creation
* fix: typo on workspace url check
* fix: workspace name uniqueness
* fix: remove workspace from read only field
* fix: file upload endpoint, workspace slug check
* chore: drop unique_together constraint for name and workspace
* chore: settings files cleanup and use PubSub backend on django channels
* chore: change in channels backend
* refactor: issue activity api to combine comments
* fix: instance created at key
* fix: result list
* style: create project, cycle modal, view dropdown
* feat: merged issue activities and issue comments into a single section
* fix: remirror dynamic update of issue description
* fix: removed commented code
* fix: issue acitivties mutation
* fix: empty comments cant be submitted
* fix: workspace avatar has been updated while loading
* refactor: update docker-compose to run redis and database in heroku and docker environment
* refactor: removesingle docker file configuration
* refactor: update take off script to run in asgi
* docs: added workspace, quickstart documentation
* fix: reading editor values on focus out
* refactor: cleanup environment variables and create .env.example
* refactor: add extra variables in example env
* fix: warning and erros on console
lazy loading images with low priority, added validation on onboarding for user to either join or create workspace, on onboarding user can't click button while form is getting submitted, profile page going into loading state when updated, refractor: made some state local, removed unnecessary console logs and comments, changed some variable and function name to make more sence
* feat: env examples
* fix: workspace member does not exist
* fi: remove pagination from issue list api
* refactor: remove env example from root
* feat: documentation for projects on plane
* feat: create code of conduct and contributing guidelines
* fix: update docker setup to check handle redis
* revert: bring back pagination to avoid breaking
* feat: made image uploader modal, used it in profile page and workspace page,
delete project from project settings page, join project modal in project list page
* feat: create workspace page, style: made ui consistent
* style: updated onboarding and create workspace page design
* style: responsive sidebar
* fix: updated ui imports