// biome.jsonc
{
"linter": {
"rules": {
"style": {
"noRestrictedImports": {
"level": "error",
"options": {
"paths": {
"react-aria-components": {
"importNames": [
"Autocomplete",
"Breadcrumb",
"Breadcrumbs",
"Button",
"Calendar",
"CalendarCell",
"CalendarGrid",
"CalendarGridBody",
"CalendarGridHeader",
"CalendarHeaderCell",
"CalendarStateContext",
"Cell",
"Checkbox",
"CheckboxContext",
"CheckboxGroup",
"Collection",
"CollectionRendererContext",
"ColorArea",
"ColorField",
"ColorFieldStateContext",
"ColorPicker",
"ColorPickerStateContext",
"ColorSlider",
"ColorSwatch",
"ColorSwatchPicker",
"ColorSwatchPickerItem",
"ColorThumb",
"ColorWheel",
"ColorWheelTrack",
"Column",
"ColumnResizer",
"ComboBox",
"DateField",
"DateInput",
"DatePicker",
"DateRangePicker",
"DateSegment",
"DefaultCollectionRenderer",
"Dialog",
"DialogTrigger",
"Disclosure",
"DisclosureGroup",
"DisclosurePanel",
"DisclosureStateContext",
"DropZone",
"FieldError",
"FieldErrorContext",
"FileTrigger",
"Form",
"GridList",
"GridListHeader",
"GridListItem",
"GridListSection",
"Group",
"Header",
"Heading",
"Input",
"Keyboard",
"Label",
"Link",
"ListBox",
"ListBoxItem",
"ListBoxSection",
"Menu",
"MenuItem",
"MenuSection",
"MenuTrigger",
"Meter",
"Modal",
"ModalContext",
"ModalOverlay",
"NumberField",
"OverlayArrow",
"OverlayTriggerStateContext",
"Popover",
"Pressable",
"ProgressBar",
"Radio",
"RadioGroup",
"RangeCalendar",
"RangeCalendarStateContext",
"ResizableTableContainer",
"Row",
"SearchField",
"Select",
"SelectValue",
"Separator",
"Slider",
"SliderOutput",
"SliderStateContext",
"SliderThumb",
"SliderTrack",
"SubmenuTrigger",
"Switch",
"Tab",
"TabList",
"TabPanel",
"TabPanels",
"Table",
"TableBody",
"TableHeader",
"TableLayout",
"TableLoadMoreItem",
"TableStateContext",
"Tabs",
"Tag",
"TagGroup",
"TagList",
"Text",
"TextArea",
"TextField",
"TimeField",
"ToggleButton",
"ToggleButtonGroup",
"Toolbar",
"Tooltip",
"TooltipTrigger",
"Tree",
"TreeItem",
"TreeItemContent",
"Virtualizer"
],
"message": "react-aria-components is ui-lib's dependency, not yours: import the quebi component instead (Button -> @/components/button, TextField -> @/components/text-field, and so on). Helpers the library does not wrap, like parseColor, and type-only imports stay allowed. See https://ui-lib.quebi.de/rules/import-components-not-primitives"
}
}
}
}
}
}
},
"overrides": [
{
"includes": [
"src/components/**",
"components/ui/**"
],
"linter": {
"rules": {
"style": {
"noRestrictedImports": "off"
}
}
}
}
]
}