@eocrm/design-system 0.0.0-stage → 0.6.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AI-PRIMER.md +341 -0
- package/README.md +262 -2
- package/docs/components/Accordion.md +114 -0
- package/docs/components/AgentAvatar.md +58 -0
- package/docs/components/Alert.md +81 -0
- package/docs/components/AppLayout.md +70 -0
- package/docs/components/Avatar.md +49 -0
- package/docs/components/AvatarGroup.md +47 -0
- package/docs/components/Badge.md +60 -0
- package/docs/components/Banner.md +89 -0
- package/docs/components/BrandIcon.md +32 -0
- package/docs/components/Breadcrumb.md +72 -0
- package/docs/components/Button.md +107 -0
- package/docs/components/ButtonGroup.md +78 -0
- package/docs/components/Calendar.md +158 -0
- package/docs/components/Card.md +165 -0
- package/docs/components/CatalogPicker.md +83 -0
- package/docs/components/Chart.md +114 -0
- package/docs/components/ChatBubble.md +55 -0
- package/docs/components/ChatLauncher.md +97 -0
- package/docs/components/Checkbox.md +55 -0
- package/docs/components/CircularProgress.md +53 -0
- package/docs/components/Cluster.md +96 -0
- package/docs/components/Code.md +35 -0
- package/docs/components/CodeBlock.md +67 -0
- package/docs/components/ColorPicker.md +115 -0
- package/docs/components/ConfirmationPopover.md +70 -0
- package/docs/components/Constrain.md +39 -0
- package/docs/components/CurrencySelect.md +57 -0
- package/docs/components/CursorPagination.md +43 -0
- package/docs/components/DashboardCanvas.md +79 -0
- package/docs/components/DashboardWidget.md +131 -0
- package/docs/components/DataTable.md +88 -0
- package/docs/components/DatePicker.md +68 -0
- package/docs/components/DateRangePicker.md +71 -0
- package/docs/components/DateStrip.md +56 -0
- package/docs/components/DefinitionList.md +82 -0
- package/docs/components/Divider.md +57 -0
- package/docs/components/Dot.md +26 -0
- package/docs/components/Drawer.md +94 -0
- package/docs/components/DropdownMenu.md +299 -0
- package/docs/components/EmojiPicker.md +84 -0
- package/docs/components/EmptyState.md +55 -0
- package/docs/components/EntityChip.md +102 -0
- package/docs/components/ErrorState.md +72 -0
- package/docs/components/Field.md +91 -0
- package/docs/components/FileUpload.md +109 -0
- package/docs/components/FilterChip.md +88 -0
- package/docs/components/FlowCanvas.md +108 -0
- package/docs/components/FormRow.md +31 -0
- package/docs/components/FormSection.md +37 -0
- package/docs/components/Grid.md +103 -0
- package/docs/components/Highlight.md +75 -0
- package/docs/components/HighlightedText.md +50 -0
- package/docs/components/IconPicker.md +134 -0
- package/docs/components/IconTile.md +30 -0
- package/docs/components/Image.md +84 -0
- package/docs/components/ImageCrop.md +163 -0
- package/docs/components/Indent.md +31 -0
- package/docs/components/InlineDatePicker.md +58 -0
- package/docs/components/InlineDateRangePicker.md +57 -0
- package/docs/components/Input.md +54 -0
- package/docs/components/Kanban.md +122 -0
- package/docs/components/Kbd.md +41 -0
- package/docs/components/Lightbox.md +105 -0
- package/docs/components/Link.md +65 -0
- package/docs/components/LinkCard.md +41 -0
- package/docs/components/LiquidEditor.md +84 -0
- package/docs/components/List.md +68 -0
- package/docs/components/LiveRegion.md +29 -0
- package/docs/components/LocaleProvider.md +25 -0
- package/docs/components/Logo.md +41 -0
- package/docs/components/Masonry.md +48 -0
- package/docs/components/MediaTile.md +95 -0
- package/docs/components/Modal.md +107 -0
- package/docs/components/MoneyInput.md +62 -0
- package/docs/components/OptionsPicker.md +123 -0
- package/docs/components/OtpInput.md +65 -0
- package/docs/components/Page.md +35 -0
- package/docs/components/PageHeader.md +133 -0
- package/docs/components/Pagination.md +44 -0
- package/docs/components/Palette.md +32 -0
- package/docs/components/PasswordInput.md +45 -0
- package/docs/components/PasswordStrengthMeter.md +27 -0
- package/docs/components/PersonDisplay.md +153 -0
- package/docs/components/PhoneInput.md +54 -0
- package/docs/components/PillMenu.md +91 -0
- package/docs/components/Popover.md +127 -0
- package/docs/components/Progress.md +56 -0
- package/docs/components/QrCode.md +34 -0
- package/docs/components/Radio.md +37 -0
- package/docs/components/RadioGroup.md +56 -0
- package/docs/components/Rail.md +191 -0
- package/docs/components/RelativeDateInput.md +114 -0
- package/docs/components/RichText.md +44 -0
- package/docs/components/RichTextEditor.md +112 -0
- package/docs/components/Screen.md +37 -0
- package/docs/components/ScrollArea.md +39 -0
- package/docs/components/Select.md +131 -0
- package/docs/components/SettingRow.md +98 -0
- package/docs/components/Skeleton.md +68 -0
- package/docs/components/Slider.md +92 -0
- package/docs/components/SlotGrid.md +55 -0
- package/docs/components/SocialButton.md +31 -0
- package/docs/components/Sortable.md +127 -0
- package/docs/components/SortableGroup.md +52 -0
- package/docs/components/Sparkline.md +51 -0
- package/docs/components/Split.md +76 -0
- package/docs/components/Stack.md +59 -0
- package/docs/components/StagePath.md +66 -0
- package/docs/components/StatGroup.md +61 -0
- package/docs/components/StatTile.md +58 -0
- package/docs/components/Sticky.md +69 -0
- package/docs/components/Switch.md +89 -0
- package/docs/components/Table.md +184 -0
- package/docs/components/TableOfContents.md +76 -0
- package/docs/components/Tabs.md +94 -0
- package/docs/components/Text.md +63 -0
- package/docs/components/Textarea.md +59 -0
- package/docs/components/Thread.md +52 -0
- package/docs/components/TimeField.md +70 -0
- package/docs/components/Timeline.md +57 -0
- package/docs/components/Title.md +54 -0
- package/docs/components/ToastViewport.md +61 -0
- package/docs/components/Tooltip.md +63 -0
- package/docs/components/TopBar.md +214 -0
- package/docs/components/Tour.md +85 -0
- package/docs/components/TreeView.md +113 -0
- package/docs/components/VisuallyHidden.md +43 -0
- package/docs/components/WidgetPreview.md +54 -0
- package/docs/components/useBelowBreakpoint.md +11 -0
- package/docs/components/useMonth.md +18 -0
- package/docs/setup.md +51 -0
- package/docs/theming.md +95 -0
- package/docs/tokens.md +123 -0
- package/docs/transient-state.md +56 -0
- package/package.json +82 -4
- package/src/_meta/manifest.ts +293 -0
- package/src/app/AppProvider.tsx +78 -0
- package/src/app/index.ts +3 -0
- package/src/app/themeTokens.ts +95 -0
- package/src/calendar/dateMath.ts +114 -0
- package/src/calendar/formatters.ts +75 -0
- package/src/calendar/index.ts +39 -0
- package/src/calendar/types.ts +36 -0
- package/src/calendar/useAgenda.ts +70 -0
- package/src/calendar/useDay.ts +51 -0
- package/src/calendar/useMonth.ts +82 -0
- package/src/calendar/useWeek.ts +62 -0
- package/src/calendar/weekInfo.ts +83 -0
- package/src/components/Accordion/Accordion.module.scss +304 -0
- package/src/components/Accordion/Accordion.tokens.scss +64 -0
- package/src/components/Accordion/Accordion.tsx +272 -0
- package/src/components/Accordion/AccordionContent.tsx +36 -0
- package/src/components/Accordion/AccordionItem.tsx +66 -0
- package/src/components/Accordion/AccordionTrigger.tsx +121 -0
- package/src/components/Accordion/context.ts +47 -0
- package/src/components/Accordion/index.ts +14 -0
- package/src/components/Alert/Alert.module.scss +92 -0
- package/src/components/Alert/Alert.tokens.scss +60 -0
- package/src/components/Alert/Alert.tsx +136 -0
- package/src/components/Alert/index.ts +2 -0
- package/src/components/AppLayout/AppLayout.module.scss +130 -0
- package/src/components/AppLayout/AppLayout.tokens.scss +27 -0
- package/src/components/AppLayout/AppLayout.tsx +211 -0
- package/src/components/AppLayout/index.ts +2 -0
- package/src/components/Avatar/AgentAvatar.module.scss +117 -0
- package/src/components/Avatar/AgentAvatar.tsx +122 -0
- package/src/components/Avatar/Avatar.module.scss +181 -0
- package/src/components/Avatar/Avatar.tokens.scss +107 -0
- package/src/components/Avatar/Avatar.tsx +210 -0
- package/src/components/Avatar/AvatarGroup.module.scss +128 -0
- package/src/components/Avatar/AvatarGroup.tsx +119 -0
- package/src/components/Avatar/AvatarGroupContext.tsx +20 -0
- package/src/components/Avatar/index.ts +6 -0
- package/src/components/Badge/Badge.module.scss +124 -0
- package/src/components/Badge/Badge.tokens.scss +74 -0
- package/src/components/Badge/Badge.tsx +164 -0
- package/src/components/Badge/index.ts +2 -0
- package/src/components/Banner/Banner.module.scss +73 -0
- package/src/components/Banner/Banner.tokens.scss +51 -0
- package/src/components/Banner/Banner.tsx +138 -0
- package/src/components/Banner/index.ts +2 -0
- package/src/components/BrandIcon/BrandIcon.module.scss +5 -0
- package/src/components/BrandIcon/BrandIcon.tsx +99 -0
- package/src/components/BrandIcon/index.ts +2 -0
- package/src/components/Breadcrumb/Breadcrumb.module.scss +32 -0
- package/src/components/Breadcrumb/Breadcrumb.tokens.scss +9 -0
- package/src/components/Breadcrumb/Breadcrumb.tsx +146 -0
- package/src/components/Breadcrumb/index.ts +2 -0
- package/src/components/Button/Button.module.scss +167 -0
- package/src/components/Button/Button.tokens.scss +90 -0
- package/src/components/Button/Button.tsx +205 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/ButtonGroup/ButtonGroup.module.scss +134 -0
- package/src/components/ButtonGroup/ButtonGroup.tokens.scss +42 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +278 -0
- package/src/components/ButtonGroup/ButtonGroupItem.tsx +74 -0
- package/src/components/ButtonGroup/context.ts +45 -0
- package/src/components/ButtonGroup/index.ts +2 -0
- package/src/components/Calendar/AgendaView.module.scss +231 -0
- package/src/components/Calendar/AgendaView.tsx +214 -0
- package/src/components/Calendar/AllDayBand.module.scss +18 -0
- package/src/components/Calendar/AllDayBand.tsx +75 -0
- package/src/components/Calendar/Calendar.module.scss +23 -0
- package/src/components/Calendar/Calendar.tokens.scss +262 -0
- package/src/components/Calendar/Calendar.tsx +370 -0
- package/src/components/Calendar/DayCell.module.scss +30 -0
- package/src/components/Calendar/DayCell.tsx +50 -0
- package/src/components/Calendar/DayView.module.scss +10 -0
- package/src/components/Calendar/DayView.tsx +163 -0
- package/src/components/Calendar/EventChip.module.scss +171 -0
- package/src/components/Calendar/EventChip.tsx +115 -0
- package/src/components/Calendar/HourGrid.module.scss +123 -0
- package/src/components/Calendar/HourGrid.tsx +381 -0
- package/src/components/Calendar/MonthView.module.scss +99 -0
- package/src/components/Calendar/MonthView.tsx +296 -0
- package/src/components/Calendar/TimedEvent.module.scss +205 -0
- package/src/components/Calendar/TimedEvent.tsx +247 -0
- package/src/components/Calendar/ViewSwitcher.module.scss +3 -0
- package/src/components/Calendar/ViewSwitcher.tsx +47 -0
- package/src/components/Calendar/WeekView.module.scss +10 -0
- package/src/components/Calendar/WeekView.tsx +137 -0
- package/src/components/Calendar/eventColor.ts +60 -0
- package/src/components/Calendar/index.ts +18 -0
- package/src/components/Calendar/types.ts +451 -0
- package/src/components/Calendar/useEventDrag.ts +783 -0
- package/src/components/Calendar/utils.ts +622 -0
- package/src/components/Card/Card.module.scss +264 -0
- package/src/components/Card/Card.tokens.scss +55 -0
- package/src/components/Card/Card.tsx +170 -0
- package/src/components/Card/CardBody.tsx +45 -0
- package/src/components/Card/CardHeader.tsx +113 -0
- package/src/components/Card/CardList.tsx +24 -0
- package/src/components/Card/CardListRow.tsx +24 -0
- package/src/components/Card/index.ts +7 -0
- package/src/components/CatalogPicker/CatalogPicker.module.scss +193 -0
- package/src/components/CatalogPicker/CatalogPicker.tokens.scss +26 -0
- package/src/components/CatalogPicker/CatalogPicker.tsx +339 -0
- package/src/components/CatalogPicker/index.ts +2 -0
- package/src/components/Chart/Chart.module.scss +287 -0
- package/src/components/Chart/Chart.tokens.scss +63 -0
- package/src/components/Chart/Chart.tsx +607 -0
- package/src/components/Chart/ChartLegend.tsx +99 -0
- package/src/components/Chart/ChartTable.tsx +62 -0
- package/src/components/Chart/ChartTooltip.tsx +91 -0
- package/src/components/Chart/chartModel.ts +689 -0
- package/src/components/Chart/index.ts +2 -0
- package/src/components/ChatBubble/ChatBubble.module.scss +93 -0
- package/src/components/ChatBubble/ChatBubble.tokens.scss +17 -0
- package/src/components/ChatBubble/ChatBubble.tsx +61 -0
- package/src/components/ChatBubble/ChatBubbleList.tsx +27 -0
- package/src/components/ChatBubble/index.ts +3 -0
- package/src/components/ChatLauncher/ChatLauncher.module.scss +68 -0
- package/src/components/ChatLauncher/ChatLauncher.tokens.scss +27 -0
- package/src/components/ChatLauncher/ChatLauncher.tsx +202 -0
- package/src/components/ChatLauncher/index.ts +2 -0
- package/src/components/ChatLauncher/isAtBottom.ts +12 -0
- package/src/components/Checkbox/Checkbox.module.scss +147 -0
- package/src/components/Checkbox/Checkbox.tokens.scss +44 -0
- package/src/components/Checkbox/Checkbox.tsx +188 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/CircularProgress/CircularProgress.module.scss +133 -0
- package/src/components/CircularProgress/CircularProgress.tokens.scss +40 -0
- package/src/components/CircularProgress/CircularProgress.tsx +139 -0
- package/src/components/CircularProgress/index.ts +7 -0
- package/src/components/Cluster/Cluster.module.scss +145 -0
- package/src/components/Cluster/Cluster.tokens.scss +11 -0
- package/src/components/Cluster/Cluster.tsx +215 -0
- package/src/components/Cluster/index.ts +2 -0
- package/src/components/Code/Code.module.scss +28 -0
- package/src/components/Code/Code.tokens.scss +15 -0
- package/src/components/Code/Code.tsx +44 -0
- package/src/components/Code/index.ts +2 -0
- package/src/components/CodeBlock/CodeBlock.module.scss +146 -0
- package/src/components/CodeBlock/CodeBlock.tokens.scss +27 -0
- package/src/components/CodeBlock/CodeBlock.tsx +274 -0
- package/src/components/CodeBlock/highlight.ts +179 -0
- package/src/components/CodeBlock/index.ts +8 -0
- package/src/components/CodeBlock/sampleSync.ts +42 -0
- package/src/components/ColorPicker/ColorPicker.module.scss +286 -0
- package/src/components/ColorPicker/ColorPicker.tokens.scss +60 -0
- package/src/components/ColorPicker/ColorPicker.tsx +367 -0
- package/src/components/ColorPicker/ColorPickerPanel.tsx +265 -0
- package/src/components/ColorPicker/SVSquare.tsx +189 -0
- package/src/components/ColorPicker/colorMath.ts +141 -0
- package/src/components/ColorPicker/index.ts +6 -0
- package/src/components/ConfirmationPopover/ConfirmationPopover.module.scss +39 -0
- package/src/components/ConfirmationPopover/ConfirmationPopover.tokens.scss +13 -0
- package/src/components/ConfirmationPopover/ConfirmationPopover.tsx +395 -0
- package/src/components/ConfirmationPopover/index.ts +2 -0
- package/src/components/Constrain/Constrain.module.scss +99 -0
- package/src/components/Constrain/Constrain.tsx +79 -0
- package/src/components/Constrain/index.ts +2 -0
- package/src/components/CurrencySelect/CurrencySelect.module.scss +7 -0
- package/src/components/CurrencySelect/CurrencySelect.tsx +167 -0
- package/src/components/CurrencySelect/index.ts +3 -0
- package/src/components/CursorPagination/CursorPagination.module.scss +69 -0
- package/src/components/CursorPagination/CursorPagination.tokens.scss +32 -0
- package/src/components/CursorPagination/CursorPagination.tsx +121 -0
- package/src/components/CursorPagination/index.ts +2 -0
- package/src/components/DashboardCanvas/DashboardCanvas.module.scss +360 -0
- package/src/components/DashboardCanvas/DashboardCanvas.tokens.scss +48 -0
- package/src/components/DashboardCanvas/DashboardCanvas.tsx +1270 -0
- package/src/components/DashboardCanvas/DashboardCanvasItem.tsx +140 -0
- package/src/components/DashboardCanvas/DashboardCanvasSection.tsx +174 -0
- package/src/components/DashboardCanvas/engine.ts +363 -0
- package/src/components/DashboardCanvas/index.ts +9 -0
- package/src/components/DashboardWidget/DashboardWidget.module.scss +100 -0
- package/src/components/DashboardWidget/DashboardWidget.tokens.scss +16 -0
- package/src/components/DashboardWidget/DashboardWidget.tsx +188 -0
- package/src/components/DashboardWidget/index.ts +7 -0
- package/src/components/DataTable/BodyRow.tsx +197 -0
- package/src/components/DataTable/ColumnVisibilityTrigger.module.scss +7 -0
- package/src/components/DataTable/ColumnVisibilityTrigger.tsx +105 -0
- package/src/components/DataTable/DataTable.module.scss +511 -0
- package/src/components/DataTable/DataTable.tokens.scss +80 -0
- package/src/components/DataTable/DataTable.tsx +734 -0
- package/src/components/DataTable/HeaderCell.module.scss +215 -0
- package/src/components/DataTable/HeaderCell.tsx +440 -0
- package/src/components/DataTable/columnShift.ts +117 -0
- package/src/components/DataTable/index.ts +23 -0
- package/src/components/DataTable/pinStyle.ts +47 -0
- package/src/components/DataTable/reorderColumns.ts +66 -0
- package/src/components/DataTable/types.ts +289 -0
- package/src/components/DataTable/useColumnDragShift.ts +216 -0
- package/src/components/DataTable/useDataTable.ts +372 -0
- package/src/components/DataTable/useResizeHandle.ts +97 -0
- package/src/components/DatePicker/DatePicker.module.scss +180 -0
- package/src/components/DatePicker/DatePicker.tokens.scss +152 -0
- package/src/components/DatePicker/DatePicker.tsx +664 -0
- package/src/components/DatePicker/DatePickerGrid.module.scss +172 -0
- package/src/components/DatePicker/DatePickerGrid.tsx +341 -0
- package/src/components/DatePicker/InlineDatePicker.module.scss +32 -0
- package/src/components/DatePicker/InlineDatePicker.tsx +201 -0
- package/src/components/DatePicker/index.ts +4 -0
- package/src/components/DatePicker/utils.ts +364 -0
- package/src/components/DateRangePicker/DateRangePicker.module.scss +237 -0
- package/src/components/DateRangePicker/DateRangePicker.tokens.scss +78 -0
- package/src/components/DateRangePicker/DateRangePicker.tsx +720 -0
- package/src/components/DateRangePicker/InlineDateRangePicker.module.scss +94 -0
- package/src/components/DateRangePicker/InlineDateRangePicker.tsx +376 -0
- package/src/components/DateRangePicker/index.ts +5 -0
- package/src/components/DateRangePicker/utils.ts +151 -0
- package/src/components/DateStrip/DateStrip.module.scss +78 -0
- package/src/components/DateStrip/DateStrip.tokens.scss +23 -0
- package/src/components/DateStrip/DateStrip.tsx +205 -0
- package/src/components/DateStrip/index.ts +2 -0
- package/src/components/DefinitionList/DefinitionList.module.scss +102 -0
- package/src/components/DefinitionList/DefinitionList.tokens.scss +29 -0
- package/src/components/DefinitionList/DefinitionList.tsx +198 -0
- package/src/components/DefinitionList/index.ts +9 -0
- package/src/components/Divider/Divider.module.scss +144 -0
- package/src/components/Divider/Divider.tokens.scss +21 -0
- package/src/components/Divider/Divider.tsx +103 -0
- package/src/components/Divider/index.ts +2 -0
- package/src/components/Dot/Dot.module.scss +40 -0
- package/src/components/Dot/Dot.tokens.scss +4 -0
- package/src/components/Dot/Dot.tsx +45 -0
- package/src/components/Dot/index.ts +2 -0
- package/src/components/Drawer/Body.tsx +23 -0
- package/src/components/Drawer/Close.tsx +35 -0
- package/src/components/Drawer/Content.tsx +93 -0
- package/src/components/Drawer/Drawer.module.scss +232 -0
- package/src/components/Drawer/Drawer.tokens.scss +38 -0
- package/src/components/Drawer/Drawer.tsx +23 -0
- package/src/components/Drawer/DrawerRoot.tsx +190 -0
- package/src/components/Drawer/Footer.tsx +24 -0
- package/src/components/Drawer/Header.tsx +64 -0
- package/src/components/Drawer/Overlay.tsx +82 -0
- package/src/components/Drawer/context.ts +44 -0
- package/src/components/Drawer/index.ts +12 -0
- package/src/components/Drawer/useDragToClose.ts +149 -0
- package/src/components/DropdownMenu/CheckboxItem.tsx +144 -0
- package/src/components/DropdownMenu/Content.tsx +419 -0
- package/src/components/DropdownMenu/DropdownMenu.module.scss +280 -0
- package/src/components/DropdownMenu/DropdownMenu.tokens.scss +88 -0
- package/src/components/DropdownMenu/DropdownMenu.tsx +43 -0
- package/src/components/DropdownMenu/Group.tsx +76 -0
- package/src/components/DropdownMenu/Item.tsx +148 -0
- package/src/components/DropdownMenu/ItemIndicator.tsx +30 -0
- package/src/components/DropdownMenu/Radio.tsx +178 -0
- package/src/components/DropdownMenu/Root.tsx +100 -0
- package/src/components/DropdownMenu/Sub.tsx +332 -0
- package/src/components/DropdownMenu/Trigger.tsx +76 -0
- package/src/components/DropdownMenu/context.ts +65 -0
- package/src/components/DropdownMenu/index.ts +20 -0
- package/src/components/EmojiPicker/EmojiPicker.module.scss +84 -0
- package/src/components/EmojiPicker/EmojiPicker.tokens.scss +24 -0
- package/src/components/EmojiPicker/EmojiPicker.tsx +341 -0
- package/src/components/EmojiPicker/emojiData.ts +245 -0
- package/src/components/EmojiPicker/index.ts +3 -0
- package/src/components/EmptyState/EmptyState.module.scss +102 -0
- package/src/components/EmptyState/EmptyState.tokens.scss +28 -0
- package/src/components/EmptyState/EmptyState.tsx +112 -0
- package/src/components/EmptyState/index.ts +7 -0
- package/src/components/EntityChip/EntityChip.module.scss +275 -0
- package/src/components/EntityChip/EntityChip.tokens.scss +66 -0
- package/src/components/EntityChip/EntityChip.tsx +649 -0
- package/src/components/EntityChip/index.ts +10 -0
- package/src/components/ErrorState/ErrorState.module.scss +105 -0
- package/src/components/ErrorState/ErrorState.tokens.scss +32 -0
- package/src/components/ErrorState/ErrorState.tsx +125 -0
- package/src/components/ErrorState/index.ts +8 -0
- package/src/components/Field/Field.module.scss +46 -0
- package/src/components/Field/Field.tsx +185 -0
- package/src/components/Field/index.ts +2 -0
- package/src/components/FileUpload/FileUpload.module.scss +187 -0
- package/src/components/FileUpload/FileUpload.tokens.scss +81 -0
- package/src/components/FileUpload/FileUpload.tsx +569 -0
- package/src/components/FileUpload/formatBytes.ts +34 -0
- package/src/components/FileUpload/iconForFile.ts +40 -0
- package/src/components/FileUpload/index.ts +2 -0
- package/src/components/FilterChip/FilterChip.module.scss +61 -0
- package/src/components/FilterChip/FilterChip.tokens.scss +25 -0
- package/src/components/FilterChip/FilterChip.tsx +208 -0
- package/src/components/FilterChip/index.ts +5 -0
- package/src/components/FlowCanvas/FlowCanvas.module.scss +329 -0
- package/src/components/FlowCanvas/FlowCanvas.tokens.scss +45 -0
- package/src/components/FlowCanvas/FlowCanvas.tsx +1867 -0
- package/src/components/FlowCanvas/FlowControls.tsx +46 -0
- package/src/components/FlowCanvas/FlowEdge.tsx +58 -0
- package/src/components/FlowCanvas/FlowNode.tsx +76 -0
- package/src/components/FlowCanvas/edgePath.ts +85 -0
- package/src/components/FlowCanvas/index.ts +4 -0
- package/src/components/FlowCanvas/layout.ts +148 -0
- package/src/components/FlowCanvas/spatialNav.ts +76 -0
- package/src/components/FlowCanvas/types.ts +59 -0
- package/src/components/FlowCanvas/useViewport.ts +122 -0
- package/src/components/FormRow/FormRow.module.scss +2 -0
- package/src/components/FormRow/FormRow.tsx +37 -0
- package/src/components/FormRow/index.ts +2 -0
- package/src/components/FormSection/FormSection.module.scss +24 -0
- package/src/components/FormSection/FormSection.tsx +46 -0
- package/src/components/FormSection/index.ts +2 -0
- package/src/components/Grid/Grid.module.scss +162 -0
- package/src/components/Grid/Grid.tokens.scss +13 -0
- package/src/components/Grid/Grid.tsx +226 -0
- package/src/components/Grid/GridItem.tsx +77 -0
- package/src/components/Grid/index.ts +11 -0
- package/src/components/Highlight/Highlight.module.scss +43 -0
- package/src/components/Highlight/Highlight.tokens.scss +35 -0
- package/src/components/Highlight/Highlight.tsx +164 -0
- package/src/components/Highlight/HighlightOverlay.tsx +100 -0
- package/src/components/Highlight/index.ts +2 -0
- package/src/components/HighlightedText/HighlightedText.module.scss +11 -0
- package/src/components/HighlightedText/HighlightedText.tokens.scss +9 -0
- package/src/components/HighlightedText/HighlightedText.tsx +50 -0
- package/src/components/HighlightedText/highlightRanges.ts +44 -0
- package/src/components/HighlightedText/index.ts +2 -0
- package/src/components/IconPicker/IconPicker.module.scss +175 -0
- package/src/components/IconPicker/IconPicker.tokens.scss +40 -0
- package/src/components/IconPicker/IconPicker.tsx +629 -0
- package/src/components/IconPicker/index.ts +9 -0
- package/src/components/IconTile/IconTile.module.scss +57 -0
- package/src/components/IconTile/IconTile.tokens.scss +16 -0
- package/src/components/IconTile/IconTile.tsx +91 -0
- package/src/components/IconTile/index.ts +2 -0
- package/src/components/Image/Image.module.scss +266 -0
- package/src/components/Image/Image.tokens.scss +55 -0
- package/src/components/Image/Image.tsx +342 -0
- package/src/components/Image/index.ts +2 -0
- package/src/components/ImageCrop/ImageCrop.module.scss +274 -0
- package/src/components/ImageCrop/ImageCrop.tokens.scss +33 -0
- package/src/components/ImageCrop/ImageCrop.tsx +542 -0
- package/src/components/ImageCrop/cropGeometry.ts +120 -0
- package/src/components/ImageCrop/extractCropBlob.ts +140 -0
- package/src/components/ImageCrop/index.ts +11 -0
- package/src/components/ImageCrop/useCropPreview.ts +161 -0
- package/src/components/Indent/Indent.module.scss +33 -0
- package/src/components/Indent/Indent.tokens.scss +10 -0
- package/src/components/Indent/Indent.tsx +46 -0
- package/src/components/Indent/index.ts +2 -0
- package/src/components/Input/Input.module.scss +99 -0
- package/src/components/Input/Input.tokens.scss +54 -0
- package/src/components/Input/Input.tsx +105 -0
- package/src/components/Input/Suggestions.tsx +260 -0
- package/src/components/Input/index.ts +2 -0
- package/src/components/Kanban/Kanban.module.scss +39 -0
- package/src/components/Kanban/Kanban.tokens.scss +15 -0
- package/src/components/Kanban/Kanban.tsx +951 -0
- package/src/components/Kanban/index.ts +7 -0
- package/src/components/Kbd/Kbd.module.scss +47 -0
- package/src/components/Kbd/Kbd.tokens.scss +26 -0
- package/src/components/Kbd/Kbd.tsx +73 -0
- package/src/components/Kbd/index.ts +2 -0
- package/src/components/Lightbox/Lightbox.module.scss +283 -0
- package/src/components/Lightbox/Lightbox.tokens.scss +36 -0
- package/src/components/Lightbox/Lightbox.tsx +506 -0
- package/src/components/Lightbox/index.ts +2 -0
- package/src/components/Link/Link.module.scss +78 -0
- package/src/components/Link/Link.tokens.scss +28 -0
- package/src/components/Link/Link.tsx +114 -0
- package/src/components/Link/index.ts +2 -0
- package/src/components/LinkCard/LinkCard.module.scss +92 -0
- package/src/components/LinkCard/LinkCard.tokens.scss +9 -0
- package/src/components/LinkCard/LinkCard.tsx +72 -0
- package/src/components/LinkCard/index.ts +2 -0
- package/src/components/LiquidEditor/AutocompleteMenu.tsx +133 -0
- package/src/components/LiquidEditor/HighlightLayer.tsx +53 -0
- package/src/components/LiquidEditor/InsertVariableMenu.tsx +81 -0
- package/src/components/LiquidEditor/LiquidEditor.module.scss +339 -0
- package/src/components/LiquidEditor/LiquidEditor.tokens.scss +81 -0
- package/src/components/LiquidEditor/LiquidEditor.tsx +412 -0
- package/src/components/LiquidEditor/PreviewPane.tsx +29 -0
- package/src/components/LiquidEditor/caretCoordinates.ts +97 -0
- package/src/components/LiquidEditor/index.ts +7 -0
- package/src/components/LiquidEditor/liquidFilters.ts +23 -0
- package/src/components/LiquidEditor/liquidTokenizer.ts +235 -0
- package/src/components/LiquidEditor/types.ts +101 -0
- package/src/components/LiquidEditor/useLiquidAutocomplete.ts +178 -0
- package/src/components/List/List.module.scss +105 -0
- package/src/components/List/List.tokens.scss +42 -0
- package/src/components/List/List.tsx +124 -0
- package/src/components/List/index.ts +9 -0
- package/src/components/LiveRegion/LiveRegion.module.scss +3 -0
- package/src/components/LiveRegion/LiveRegion.tsx +116 -0
- package/src/components/LiveRegion/index.ts +2 -0
- package/src/components/Logo/Logo.module.scss +139 -0
- package/src/components/Logo/Logo.tokens.scss +14 -0
- package/src/components/Logo/Logo.tsx +126 -0
- package/src/components/Logo/index.ts +2 -0
- package/src/components/Masonry/Masonry.module.scss +42 -0
- package/src/components/Masonry/Masonry.tokens.scss +8 -0
- package/src/components/Masonry/Masonry.tsx +136 -0
- package/src/components/Masonry/index.ts +2 -0
- package/src/components/Masonry/masonryUtils.ts +42 -0
- package/src/components/MediaTile/MediaTile.module.scss +183 -0
- package/src/components/MediaTile/MediaTile.tokens.scss +60 -0
- package/src/components/MediaTile/MediaTile.tsx +208 -0
- package/src/components/MediaTile/index.ts +8 -0
- package/src/components/Modal/Body.tsx +27 -0
- package/src/components/Modal/Close.tsx +45 -0
- package/src/components/Modal/Content.tsx +98 -0
- package/src/components/Modal/Footer.tsx +28 -0
- package/src/components/Modal/Header.tsx +51 -0
- package/src/components/Modal/Modal.module.scss +262 -0
- package/src/components/Modal/Modal.tokens.scss +50 -0
- package/src/components/Modal/Modal.tsx +23 -0
- package/src/components/Modal/ModalRoot.tsx +299 -0
- package/src/components/Modal/Overlay.tsx +101 -0
- package/src/components/Modal/context.ts +60 -0
- package/src/components/Modal/index.ts +11 -0
- package/src/components/MoneyInput/MoneyInput.module.scss +57 -0
- package/src/components/MoneyInput/MoneyInput.tsx +433 -0
- package/src/components/MoneyInput/index.ts +2 -0
- package/src/components/OptionsPicker/OptionsPicker.module.scss +216 -0
- package/src/components/OptionsPicker/OptionsPicker.tokens.scss +68 -0
- package/src/components/OptionsPicker/OptionsPicker.tsx +936 -0
- package/src/components/OptionsPicker/index.ts +9 -0
- package/src/components/OtpInput/OtpInput.module.scss +69 -0
- package/src/components/OtpInput/OtpInput.tokens.scss +45 -0
- package/src/components/OtpInput/OtpInput.tsx +368 -0
- package/src/components/OtpInput/index.ts +2 -0
- package/src/components/Page/Page.module.scss +30 -0
- package/src/components/Page/Page.tokens.scss +11 -0
- package/src/components/Page/Page.tsx +53 -0
- package/src/components/Page/index.ts +2 -0
- package/src/components/PageHeader/PageHeader.module.scss +197 -0
- package/src/components/PageHeader/PageHeader.tokens.scss +41 -0
- package/src/components/PageHeader/PageHeader.tsx +310 -0
- package/src/components/PageHeader/index.ts +20 -0
- package/src/components/Pagination/Pagination.module.scss +117 -0
- package/src/components/Pagination/Pagination.tokens.scss +54 -0
- package/src/components/Pagination/Pagination.tsx +165 -0
- package/src/components/Pagination/index.ts +4 -0
- package/src/components/Pagination/paginationRange.ts +72 -0
- package/src/components/PasswordInput/PasswordInput.module.scss +120 -0
- package/src/components/PasswordInput/PasswordInput.tokens.scss +44 -0
- package/src/components/PasswordInput/PasswordInput.tsx +210 -0
- package/src/components/PasswordInput/index.ts +2 -0
- package/src/components/PasswordStrengthMeter/PasswordStrengthMeter.module.scss +80 -0
- package/src/components/PasswordStrengthMeter/PasswordStrengthMeter.tokens.scss +40 -0
- package/src/components/PasswordStrengthMeter/PasswordStrengthMeter.tsx +96 -0
- package/src/components/PasswordStrengthMeter/index.ts +2 -0
- package/src/components/PersonDisplay/PersonDisplay.module.scss +180 -0
- package/src/components/PersonDisplay/PersonDisplay.tokens.scss +35 -0
- package/src/components/PersonDisplay/PersonDisplay.tsx +420 -0
- package/src/components/PersonDisplay/index.ts +10 -0
- package/src/components/PhoneInput/PhoneInput.module.scss +23 -0
- package/src/components/PhoneInput/PhoneInput.tsx +271 -0
- package/src/components/PhoneInput/index.ts +4 -0
- package/src/components/PhoneInput/phone.ts +128 -0
- package/src/components/PillMenu/PillMenu.module.scss +117 -0
- package/src/components/PillMenu/PillMenu.tokens.scss +22 -0
- package/src/components/PillMenu/PillMenu.tsx +324 -0
- package/src/components/PillMenu/index.ts +2 -0
- package/src/components/Popover/Anchor.tsx +37 -0
- package/src/components/Popover/Close.tsx +45 -0
- package/src/components/Popover/Content.tsx +213 -0
- package/src/components/Popover/Heading.tsx +33 -0
- package/src/components/Popover/Popover.module.scss +177 -0
- package/src/components/Popover/Popover.tokens.scss +22 -0
- package/src/components/Popover/Popover.tsx +23 -0
- package/src/components/Popover/PopoverRoot.tsx +75 -0
- package/src/components/Popover/Trigger.tsx +86 -0
- package/src/components/Popover/context.ts +22 -0
- package/src/components/Popover/index.ts +7 -0
- package/src/components/Progress/Progress.module.scss +110 -0
- package/src/components/Progress/Progress.tokens.scss +44 -0
- package/src/components/Progress/Progress.tsx +129 -0
- package/src/components/Progress/index.ts +2 -0
- package/src/components/QrCode/QrCode.module.scss +97 -0
- package/src/components/QrCode/QrCode.tokens.scss +17 -0
- package/src/components/QrCode/QrCode.tsx +233 -0
- package/src/components/QrCode/index.ts +2 -0
- package/src/components/QrCode/qr.ts +161 -0
- package/src/components/Radio/Radio.module.scss +175 -0
- package/src/components/Radio/Radio.tokens.scss +59 -0
- package/src/components/Radio/Radio.tsx +127 -0
- package/src/components/Radio/RadioGroup.module.scss +42 -0
- package/src/components/Radio/RadioGroup.tsx +120 -0
- package/src/components/Radio/RadioGroupContext.tsx +30 -0
- package/src/components/Radio/index.ts +4 -0
- package/src/components/Rail/Rail.module.scss +510 -0
- package/src/components/Rail/Rail.tokens.scss +92 -0
- package/src/components/Rail/Rail.tsx +287 -0
- package/src/components/Rail/RailCollapseToggle.tsx +57 -0
- package/src/components/Rail/RailFooter.tsx +17 -0
- package/src/components/Rail/RailGroup.tsx +728 -0
- package/src/components/Rail/RailGroupContext.ts +9 -0
- package/src/components/Rail/RailHeader.tsx +23 -0
- package/src/components/Rail/RailItem.tsx +119 -0
- package/src/components/Rail/RailSection.tsx +39 -0
- package/src/components/Rail/RailSpacer.tsx +19 -0
- package/src/components/Rail/index.ts +9 -0
- package/src/components/RelativeDateInput/RelativeDateInput.module.scss +15 -0
- package/src/components/RelativeDateInput/RelativeDateInput.tokens.scss +6 -0
- package/src/components/RelativeDateInput/RelativeDateInput.tsx +474 -0
- package/src/components/RelativeDateInput/index.ts +10 -0
- package/src/components/RelativeDateInput/relativeDate.ts +127 -0
- package/src/components/RichText/RichText.module.scss +5 -0
- package/src/components/RichText/RichText.tsx +70 -0
- package/src/components/RichText/RichTextAttachment.module.scss +82 -0
- package/src/components/RichText/RichTextAttachment.tsx +122 -0
- package/src/components/RichText/_prose.scss +79 -0
- package/src/components/RichText/attachmentIcon.tsx +24 -0
- package/src/components/RichText/engine/attachment.ts +154 -0
- package/src/components/RichText/engine/autolink.ts +64 -0
- package/src/components/RichText/engine/blockUnit.ts +174 -0
- package/src/components/RichText/engine/colorMarks.ts +85 -0
- package/src/components/RichText/engine/escape.ts +11 -0
- package/src/components/RichText/engine/fromHtml.ts +353 -0
- package/src/components/RichText/engine/fromMarkdown.ts +20 -0
- package/src/components/RichText/engine/inlines.ts +82 -0
- package/src/components/RichText/engine/listDepths.ts +32 -0
- package/src/components/RichText/engine/marks.ts +80 -0
- package/src/components/RichText/engine/mdToHtml.ts +178 -0
- package/src/components/RichText/engine/model.ts +157 -0
- package/src/components/RichText/engine/position.ts +118 -0
- package/src/components/RichText/engine/renderDoc.tsx +395 -0
- package/src/components/RichText/engine/renderLink.ts +15 -0
- package/src/components/RichText/engine/renderMention.ts +16 -0
- package/src/components/RichText/engine/safeHref.ts +22 -0
- package/src/components/RichText/engine/toHtml.ts +154 -0
- package/src/components/RichText/engine/toMarkdown.ts +97 -0
- package/src/components/RichText/engine/transforms.ts +434 -0
- package/src/components/RichText/imageMaxHeightStyle.ts +10 -0
- package/src/components/RichText/index.ts +31 -0
- package/src/components/RichTextEditor/RichTextAttachmentConfig.tsx +264 -0
- package/src/components/RichTextEditor/RichTextBlockControls.tsx +365 -0
- package/src/components/RichTextEditor/RichTextBlockMenu.tsx +162 -0
- package/src/components/RichTextEditor/RichTextColorMenu.tsx +115 -0
- package/src/components/RichTextEditor/RichTextEditor.module.scss +298 -0
- package/src/components/RichTextEditor/RichTextEditor.tsx +1910 -0
- package/src/components/RichTextEditor/RichTextImageResizer.tsx +131 -0
- package/src/components/RichTextEditor/RichTextLinkEditor.tsx +151 -0
- package/src/components/RichTextEditor/RichTextMentionMenu.tsx +99 -0
- package/src/components/RichTextEditor/RichTextToolbar.tsx +379 -0
- package/src/components/RichTextEditor/autolinkInput.ts +65 -0
- package/src/components/RichTextEditor/blockDrop.ts +9 -0
- package/src/components/RichTextEditor/blockReflow.ts +62 -0
- package/src/components/RichTextEditor/commands.ts +300 -0
- package/src/components/RichTextEditor/history.ts +93 -0
- package/src/components/RichTextEditor/icons.tsx +152 -0
- package/src/components/RichTextEditor/imageSize.ts +70 -0
- package/src/components/RichTextEditor/index.ts +5 -0
- package/src/components/RichTextEditor/input.ts +209 -0
- package/src/components/RichTextEditor/inputRules.ts +71 -0
- package/src/components/RichTextEditor/links.ts +103 -0
- package/src/components/RichTextEditor/mentionContext.ts +37 -0
- package/src/components/RichTextEditor/mentions.ts +28 -0
- package/src/components/RichTextEditor/preventSelectionLoss.ts +15 -0
- package/src/components/RichTextEditor/selection.ts +415 -0
- package/src/components/RichTextEditor/shortcuts.ts +44 -0
- package/src/components/RichTextEditor/useAnchoredFloating.ts +50 -0
- package/src/components/RichTextEditor/useAttachmentConfig.ts +134 -0
- package/src/components/RichTextEditor/useDismissOnOutsidePointerDown.ts +26 -0
- package/src/components/RichTextEditor/useLinkEditor.ts +107 -0
- package/src/components/RichTextEditor/useMention.ts +226 -0
- package/src/components/RichTextEditor/useOverlayRect.ts +73 -0
- package/src/components/RichTextEditor/useUpload.ts +246 -0
- package/src/components/Screen/Screen.module.scss +46 -0
- package/src/components/Screen/Screen.tokens.scss +20 -0
- package/src/components/Screen/Screen.tsx +97 -0
- package/src/components/Screen/index.ts +2 -0
- package/src/components/ScrollArea/ScrollArea.module.scss +39 -0
- package/src/components/ScrollArea/ScrollArea.tokens.scss +15 -0
- package/src/components/ScrollArea/ScrollArea.tsx +154 -0
- package/src/components/ScrollArea/index.ts +2 -0
- package/src/components/Select/Chip.tsx +45 -0
- package/src/components/Select/Empty.tsx +39 -0
- package/src/components/Select/Error.tsx +51 -0
- package/src/components/Select/HiddenInputs.tsx +44 -0
- package/src/components/Select/Listbox.tsx +557 -0
- package/src/components/Select/Loading.tsx +30 -0
- package/src/components/Select/Select.module.scss +512 -0
- package/src/components/Select/Select.tokens.scss +140 -0
- package/src/components/Select/Select.tsx +685 -0
- package/src/components/Select/Trigger.tsx +952 -0
- package/src/components/Select/context.ts +101 -0
- package/src/components/Select/emptyStateText.ts +19 -0
- package/src/components/Select/index.ts +9 -0
- package/src/components/Select/useSelectState.ts +157 -0
- package/src/components/Select/utils-types.ts +7 -0
- package/src/components/Select/utils.ts +122 -0
- package/src/components/SettingRow/SettingRow.module.scss +166 -0
- package/src/components/SettingRow/SettingRow.tokens.scss +37 -0
- package/src/components/SettingRow/SettingRow.tsx +242 -0
- package/src/components/SettingRow/index.ts +7 -0
- package/src/components/Skeleton/Skeleton.module.scss +55 -0
- package/src/components/Skeleton/Skeleton.tokens.scss +17 -0
- package/src/components/Skeleton/Skeleton.tsx +131 -0
- package/src/components/Skeleton/index.ts +4 -0
- package/src/components/Skeleton/useSkeletonVisibility.ts +95 -0
- package/src/components/Slider/Slider.module.scss +293 -0
- package/src/components/Slider/Slider.tokens.scss +98 -0
- package/src/components/Slider/Slider.tsx +624 -0
- package/src/components/Slider/index.ts +9 -0
- package/src/components/SlotGrid/SlotGrid.module.scss +61 -0
- package/src/components/SlotGrid/SlotGrid.tokens.scss +21 -0
- package/src/components/SlotGrid/SlotGrid.tsx +111 -0
- package/src/components/SlotGrid/index.ts +2 -0
- package/src/components/SocialButton/SocialButton.module.scss +4 -0
- package/src/components/SocialButton/SocialButton.tsx +40 -0
- package/src/components/SocialButton/index.ts +2 -0
- package/src/components/Sortable/Sortable.module.scss +177 -0
- package/src/components/Sortable/Sortable.tokens.scss +27 -0
- package/src/components/Sortable/Sortable.tsx +572 -0
- package/src/components/Sortable/containerAwareCollision.ts +125 -0
- package/src/components/Sortable/index.ts +13 -0
- package/src/components/SortableGroup/SortableGroup.module.scss +23 -0
- package/src/components/SortableGroup/SortableGroup.tsx +315 -0
- package/src/components/SortableGroup/index.ts +4 -0
- package/src/components/SortableGroup/moveSortableItem.ts +39 -0
- package/src/components/Sparkline/Sparkline.module.scss +28 -0
- package/src/components/Sparkline/Sparkline.tokens.scss +7 -0
- package/src/components/Sparkline/Sparkline.tsx +133 -0
- package/src/components/Sparkline/index.ts +2 -0
- package/src/components/Sparkline/sparklineModel.ts +119 -0
- package/src/components/Split/Split.module.scss +158 -0
- package/src/components/Split/Split.tokens.scss +10 -0
- package/src/components/Split/Split.tsx +231 -0
- package/src/components/Split/index.ts +2 -0
- package/src/components/Stack/Stack.module.scss +67 -0
- package/src/components/Stack/Stack.tokens.scss +11 -0
- package/src/components/Stack/Stack.tsx +100 -0
- package/src/components/Stack/index.ts +2 -0
- package/src/components/StagePath/StagePath.module.scss +255 -0
- package/src/components/StagePath/StagePath.tokens.scss +43 -0
- package/src/components/StagePath/StagePath.tsx +176 -0
- package/src/components/StagePath/index.ts +2 -0
- package/src/components/StatGroup/StatGroup.module.scss +6 -0
- package/src/components/StatGroup/StatGroup.tsx +70 -0
- package/src/components/StatGroup/StatGroupContext.ts +10 -0
- package/src/components/StatGroup/StatTile.module.scss +99 -0
- package/src/components/StatGroup/StatTile.tokens.scss +35 -0
- package/src/components/StatGroup/StatTile.tsx +143 -0
- package/src/components/StatGroup/index.ts +4 -0
- package/src/components/Sticky/Sticky.module.scss +98 -0
- package/src/components/Sticky/Sticky.tokens.scss +17 -0
- package/src/components/Sticky/Sticky.tsx +103 -0
- package/src/components/Sticky/index.ts +2 -0
- package/src/components/Switch/Switch.module.scss +182 -0
- package/src/components/Switch/Switch.tokens.scss +59 -0
- package/src/components/Switch/Switch.tsx +214 -0
- package/src/components/Switch/index.ts +2 -0
- package/src/components/Table/Table.module.scss +308 -0
- package/src/components/Table/Table.tokens.scss +79 -0
- package/src/components/Table/Table.tsx +381 -0
- package/src/components/Table/index.ts +15 -0
- package/src/components/TableOfContents/TableOfContents.module.scss +83 -0
- package/src/components/TableOfContents/TableOfContents.tokens.scss +26 -0
- package/src/components/TableOfContents/TableOfContents.tsx +192 -0
- package/src/components/TableOfContents/activeSection.ts +18 -0
- package/src/components/TableOfContents/index.ts +2 -0
- package/src/components/Tabs/Tabs.module.scss +359 -0
- package/src/components/Tabs/Tabs.tokens.scss +50 -0
- package/src/components/Tabs/Tabs.tsx +538 -0
- package/src/components/Tabs/index.ts +2 -0
- package/src/components/Text/Text.module.scss +115 -0
- package/src/components/Text/Text.tokens.scss +55 -0
- package/src/components/Text/Text.tsx +197 -0
- package/src/components/Text/index.ts +2 -0
- package/src/components/Textarea/Textarea.module.scss +94 -0
- package/src/components/Textarea/Textarea.tokens.scss +48 -0
- package/src/components/Textarea/Textarea.tsx +246 -0
- package/src/components/Textarea/index.ts +2 -0
- package/src/components/Thread/Thread.module.scss +161 -0
- package/src/components/Thread/Thread.tokens.scss +32 -0
- package/src/components/Thread/Thread.tsx +176 -0
- package/src/components/Thread/index.ts +2 -0
- package/src/components/TimeField/TimeField.module.scss +232 -0
- package/src/components/TimeField/TimeField.tsx +793 -0
- package/src/components/TimeField/index.ts +2 -0
- package/src/components/Timeline/Timeline.module.scss +58 -0
- package/src/components/Timeline/Timeline.tokens.scss +13 -0
- package/src/components/Timeline/Timeline.tsx +53 -0
- package/src/components/Timeline/index.ts +2 -0
- package/src/components/Title/Title.module.scss +84 -0
- package/src/components/Title/Title.tokens.scss +37 -0
- package/src/components/Title/Title.tsx +150 -0
- package/src/components/Title/index.ts +2 -0
- package/src/components/Toast/Toast.module.scss +299 -0
- package/src/components/Toast/Toast.tokens.scss +65 -0
- package/src/components/Toast/Toast.tsx +122 -0
- package/src/components/Toast/ToastViewport.tsx +166 -0
- package/src/components/Toast/api.ts +175 -0
- package/src/components/Toast/index.ts +5 -0
- package/src/components/Toast/store.ts +133 -0
- package/src/components/Toast/useToastTimer.ts +94 -0
- package/src/components/Tooltip/Tooltip.module.scss +99 -0
- package/src/components/Tooltip/Tooltip.tokens.scss +23 -0
- package/src/components/Tooltip/Tooltip.tsx +341 -0
- package/src/components/Tooltip/index.ts +2 -0
- package/src/components/TopBar/TopBar.module.scss +235 -0
- package/src/components/TopBar/TopBar.tokens.scss +79 -0
- package/src/components/TopBar/TopBar.tsx +87 -0
- package/src/components/TopBar/TopBarEnd.tsx +20 -0
- package/src/components/TopBar/TopBarIconButton.tsx +86 -0
- package/src/components/TopBar/TopBarSearch.tsx +319 -0
- package/src/components/TopBar/TopBarSearchPanel.tsx +268 -0
- package/src/components/TopBar/TopBarStart.tsx +20 -0
- package/src/components/TopBar/index.ts +11 -0
- package/src/components/Tour/Spotlight.tsx +121 -0
- package/src/components/Tour/Tour.module.scss +210 -0
- package/src/components/Tour/Tour.tokens.scss +58 -0
- package/src/components/Tour/Tour.tsx +617 -0
- package/src/components/Tour/index.ts +2 -0
- package/src/components/Tour/useTourTarget.ts +115 -0
- package/src/components/TreeView/TreeView.module.scss +268 -0
- package/src/components/TreeView/TreeView.tokens.scss +36 -0
- package/src/components/TreeView/TreeView.tsx +536 -0
- package/src/components/TreeView/index.ts +3 -0
- package/src/components/TreeView/treeModel.ts +224 -0
- package/src/components/VisuallyHidden/VisuallyHidden.module.scss +7 -0
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +29 -0
- package/src/components/VisuallyHidden/index.ts +2 -0
- package/src/components/WidgetPreview/WidgetPreview.module.scss +11 -0
- package/src/components/WidgetPreview/WidgetPreview.tokens.scss +26 -0
- package/src/components/WidgetPreview/WidgetPreview.tsx +36 -0
- package/src/components/WidgetPreview/WidgetShape.module.scss +140 -0
- package/src/components/WidgetPreview/WidgetShape.tsx +159 -0
- package/src/components/WidgetPreview/index.ts +2 -0
- package/src/components/_internal/Trend.tsx +27 -0
- package/src/components/_internal/choiceTile.scss +74 -0
- package/src/components/_internal/collapse.scss +10 -0
- package/src/components/_internal/collapse.ts +58 -0
- package/src/components/_internal/currency.ts +257 -0
- package/src/components/_internal/dragAnnouncements.ts +200 -0
- package/src/components/_internal/fieldWiring.ts +225 -0
- package/src/components/_internal/gridSpan.ts +54 -0
- package/src/components/_internal/isoDay.ts +35 -0
- package/src/components/_internal/letterKey.ts +26 -0
- package/src/components/_internal/overlay/focusRestore.ts +21 -0
- package/src/components/_internal/overlay/index.ts +12 -0
- package/src/components/_internal/overlay/tourHold.ts +23 -0
- package/src/components/_internal/overlay/useFocusTrap.ts +120 -0
- package/src/components/_internal/overlay/useInOverlay.ts +81 -0
- package/src/components/_internal/overlay/useOverlayStack.ts +232 -0
- package/src/components/_internal/overlay/useScrollLock.ts +112 -0
- package/src/components/_internal/refs.ts +48 -0
- package/src/components/_internal/statusColor.ts +26 -0
- package/src/components/_internal/timeUtils.ts +23 -0
- package/src/components/_internal/useAsyncOptions.ts +145 -0
- package/src/components/_internal/useClippedTooltip.ts +50 -0
- package/src/components/_internal/useControllableState.ts +50 -0
- package/src/components.manifest.json +1141 -0
- package/src/hooks/useBelowBreakpoint.ts +58 -0
- package/src/i18n/I18nProvider.tsx +52 -0
- package/src/i18n/LocaleProvider.tsx +17 -0
- package/src/i18n/en.ts +648 -0
- package/src/i18n/format.ts +71 -0
- package/src/i18n/index.ts +13 -0
- package/src/i18n/messages.ts +1275 -0
- package/src/i18n/ru.ts +677 -0
- package/src/i18n/useLocale.ts +19 -0
- package/src/i18n/useTranslation.ts +58 -0
- package/src/index.ts +913 -0
- package/src/palette/index.ts +2 -0
- package/src/palette/palette.ts +108 -0
- package/src/styles/dark.scss +4 -0
- package/src/styles/global.scss +7 -0
- package/src/styles/mixins.scss +143 -0
- package/src/styles/reset.scss +78 -0
- package/src/styles/tokens.scss +18 -0
- package/src/styles/typography.scss +44 -0
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
@use '../../styles/mixins' as *;
|
|
2
|
+
@use './DataTable.tokens';
|
|
3
|
+
@use '../Table/Table.tokens';
|
|
4
|
+
@use '../_internal/collapse' as bp;
|
|
5
|
+
|
|
6
|
+
// Visual / behavior modifiers ONLY. No layout (Rule 4).
|
|
7
|
+
|
|
8
|
+
// stylelint-disable property-disallowed-list -- Rule 4 escape hatch: these are
|
|
9
|
+
// internal table-sizing properties (not consumer layout). Same precedent as the
|
|
10
|
+
// Table primitive's `position: sticky` for the sticky-header band.
|
|
11
|
+
.root {
|
|
12
|
+
// table-layout: fixed + width: max-content makes each <col>'s declared
|
|
13
|
+
// width AUTHORITATIVE for the cell. Default `table-layout: auto` plus the
|
|
14
|
+
// Table primitive's `min-width: 100%` would distribute columns
|
|
15
|
+
// proportionally within the parent's width, which causes pin offsets to
|
|
16
|
+
// misalign — the 44px auto-cell rendering at e.g. 40px because the table
|
|
17
|
+
// was capped at the wrap's width, then the left-pinned column at left:44
|
|
18
|
+
// leaves a 4px gap that exposes scroll content during horizontal scroll.
|
|
19
|
+
// `width: max-content` lets the table grow to its intrinsic column-sum
|
|
20
|
+
// width when that exceeds the wrap; Table primitive's scrollWrap then
|
|
21
|
+
// scrolls horizontally as designed.
|
|
22
|
+
table-layout: fixed;
|
|
23
|
+
width: max-content;
|
|
24
|
+
min-width: 100%;
|
|
25
|
+
}
|
|
26
|
+
// stylelint-enable property-disallowed-list
|
|
27
|
+
|
|
28
|
+
// Even with table-layout: fixed, body cells inflate to fit their content's
|
|
29
|
+
// min-content width if there's no overflow constraint — defeating col widths
|
|
30
|
+
// and breaking pinning offset math (sticky cells overlap or gap because the
|
|
31
|
+
// hook's pin offsets use declared widths, but rendered widths are larger).
|
|
32
|
+
// Force every cell inside a DataTable to clip + ellipsize. This is an
|
|
33
|
+
// opinionated default: consumers wanting multi-line cells can opt out by
|
|
34
|
+
// styling specific cell content with `white-space: normal` or by avoiding
|
|
35
|
+
// DataTable (use the raw <Table> primitive instead).
|
|
36
|
+
.root :where(th, td) {
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
text-overflow: ellipsis;
|
|
39
|
+
white-space: nowrap;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Reserve room in the cell's left padding for the column reorder grip. The
|
|
43
|
+
// grip is absolute-positioned inside the header's padding zone; body cells
|
|
44
|
+
// share the same padding-left so the header label aligns with the body
|
|
45
|
+
// content below it.
|
|
46
|
+
// Doubled `.root` is deliberate: specificity 0,2,1 beats the Table primitive's
|
|
47
|
+
// density-driven `.density-dense .th` / `.density-comfortable .td` rules
|
|
48
|
+
// (0,2,0) which would otherwise reset padding-x via the density shorthand.
|
|
49
|
+
// `:is(th, td)` over `:where(th, td)` is also deliberate — `:is()` preserves
|
|
50
|
+
// the type-selector specificity bump (whereas `:where()` drops to 0,0,0).
|
|
51
|
+
// Only padding-LEFT is overridden; the right side stays density-driven so
|
|
52
|
+
// dense tables keep their tight trailing edge. The auto-select cell is
|
|
53
|
+
// excluded so its centered checkbox stays centered (asymmetric L/R padding
|
|
54
|
+
// would otherwise shift the checkbox right).
|
|
55
|
+
.root.root :is(th, td):not(.autoCell) {
|
|
56
|
+
padding-left: var(--data-table-cell-padding-left);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// Selection auto-column — fixed narrow width is set via inline <col width> in colgroup.
|
|
60
|
+
.autoCell {
|
|
61
|
+
// text-align center is set by <Table.Cell align="center" />
|
|
62
|
+
vertical-align: middle;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.clickableRow {
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
|
|
68
|
+
// Inset: the row's ring must sit inside the row box, not overlap its
|
|
69
|
+
// neighbour. (`outline: none` used to sit below too — written for an
|
|
70
|
+
// outline that the box-shadow mixin never emitted, and it would now erase
|
|
71
|
+
// the ring.)
|
|
72
|
+
&:focus-visible {
|
|
73
|
+
@include focus-ring($offset: calc(-1 * var(--ring-offset)));
|
|
74
|
+
|
|
75
|
+
border-radius: var(--data-table-clickable-row-radius);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Empty state row — single colspan cell with centered content.
|
|
80
|
+
.emptyCell {
|
|
81
|
+
text-align: center;
|
|
82
|
+
padding: var(--data-table-empty-padding);
|
|
83
|
+
color: var(--data-table-empty-fg);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Skeleton row cells — give some visual breathing room.
|
|
87
|
+
.skeletonCell {
|
|
88
|
+
vertical-align: middle;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Auto-select cell sticky-left classes (Phase 2+).
|
|
92
|
+
// Separate header/body variants avoid needing :global(thead/tbody) selectors
|
|
93
|
+
// (no :global precedent exists in this codebase).
|
|
94
|
+
|
|
95
|
+
// Header version: auto-select header is the sticky "corner" — stacks above:
|
|
96
|
+
// - Table's sticky-header band (z-index 1 per Table.module.scss)
|
|
97
|
+
// - Pinned body cells (z-index 1 per DataTable.module.scss)
|
|
98
|
+
// :where() in Table.module.scss drops the header band's specificity so this wins.
|
|
99
|
+
.autoCellStickyHeader {
|
|
100
|
+
background: var(--data-table-auto-cell-sticky-header-bg);
|
|
101
|
+
z-index: 3;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Body version (applied in Task 7): stays above unpinned body cells (z-index 0)
|
|
105
|
+
// but below sticky header band (z-index 1 in Table primitive).
|
|
106
|
+
.autoCellStickyBody {
|
|
107
|
+
background: var(--data-table-auto-cell-sticky-body-bg);
|
|
108
|
+
z-index: 1;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Body pinned-cell sticky styles. Mirrors HeaderCell.module.scss's
|
|
112
|
+
// .pinnedLeft / .pinnedRight but at body z-index (1 instead of 3).
|
|
113
|
+
|
|
114
|
+
.pinnedLeft,
|
|
115
|
+
.pinnedRight {
|
|
116
|
+
background: var(--data-table-pinned-bg);
|
|
117
|
+
z-index: 1;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.pinnedLeft {
|
|
121
|
+
box-shadow: var(--data-table-pinned-shadow-left);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.pinnedRight {
|
|
125
|
+
box-shadow: var(--data-table-pinned-shadow-right);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Pinned rows (separate <tbody> above the main body) get a subtle tint.
|
|
129
|
+
.pinnedRow {
|
|
130
|
+
background: var(--data-table-pinned-row-bg);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.pinnedRow .pinnedLeft,
|
|
134
|
+
.pinnedRow .pinnedRight {
|
|
135
|
+
// Explicitly re-apply the pinned-row tint so it overrides the per-cell
|
|
136
|
+
// --color-table-bg background that would otherwise win via higher specificity
|
|
137
|
+
// from the body .pinnedLeft / .pinnedRight rule above.
|
|
138
|
+
background: var(--data-table-pinned-row-bg);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Dedicated tbody class for the pinned-rows section (used in Task 8).
|
|
142
|
+
.pinnedRowsTbody {
|
|
143
|
+
// No layout-affecting styles — Rule 4. Background and visual modifiers only.
|
|
144
|
+
background: var(--data-table-pinned-row-bg);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Pinned cells have an opaque background (so unpinned scrolling content can't
|
|
148
|
+
// show through them). That background would otherwise defeat the row-level
|
|
149
|
+
// hover and selected highlights from the Table primitive — pinned cells would
|
|
150
|
+
// stay "white" while the rest of the row turns blue. Mirror the row states
|
|
151
|
+
// here so the pinned cells visually participate in selection / hover.
|
|
152
|
+
// `:not(.pinnedRow)` excludes the always-tinted pinned-rows section — its
|
|
153
|
+
// pinned-cell background is already overridden above to use the pinned-row
|
|
154
|
+
// tint, and we don't want hover/selected to override that tint and create a
|
|
155
|
+
// visual mismatch between pinned-cell and unpinned-cell backgrounds within
|
|
156
|
+
// the same pinned row.
|
|
157
|
+
.root tbody tr:not(.pinnedRow):hover .pinnedLeft,
|
|
158
|
+
.root tbody tr:not(.pinnedRow):hover .pinnedRight,
|
|
159
|
+
.root tbody tr:not(.pinnedRow):hover .autoCellStickyBody {
|
|
160
|
+
background: var(--data-table-pinned-bg-row-hover);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.root tbody tr:not(.pinnedRow)[aria-selected='true'] .pinnedLeft,
|
|
164
|
+
.root tbody tr:not(.pinnedRow)[aria-selected='true'] .pinnedRight,
|
|
165
|
+
.root tbody tr:not(.pinnedRow)[aria-selected='true'] .autoCellStickyBody {
|
|
166
|
+
background: var(--data-table-pinned-bg-row-selected);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Expand chevron button — small clickable target inside the auto-expand
|
|
170
|
+
// cell. Mirrors the visual weight of the auto-select Checkbox: 14px icon
|
|
171
|
+
// inside ~24px hit area, transparent background, focus-visible ring.
|
|
172
|
+
.expandButton {
|
|
173
|
+
display: inline-flex;
|
|
174
|
+
align-items: center;
|
|
175
|
+
justify-content: center;
|
|
176
|
+
width: 24px;
|
|
177
|
+
height: 24px;
|
|
178
|
+
padding: 0;
|
|
179
|
+
border: none;
|
|
180
|
+
background: transparent;
|
|
181
|
+
color: var(--data-table-expand-button-fg);
|
|
182
|
+
cursor: pointer;
|
|
183
|
+
border-radius: var(--data-table-expand-button-radius);
|
|
184
|
+
transition:
|
|
185
|
+
background var(--data-table-expand-button-transition-bg),
|
|
186
|
+
color var(--data-table-expand-button-transition-color);
|
|
187
|
+
|
|
188
|
+
&:hover {
|
|
189
|
+
background: var(--data-table-expand-button-bg-hover);
|
|
190
|
+
color: var(--data-table-expand-button-fg-hover);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
&:focus-visible {
|
|
194
|
+
@include focus-ring;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// Expanded detail row — the extra <Table.Row> rendered below a data row
|
|
199
|
+
// when its expansion state is true. Spans all columns via colSpan. It's
|
|
200
|
+
// a panel, not a table row: the consumer's renderExpandedRow output
|
|
201
|
+
// lives inside, so we strip all row-level styling (striped tint, hover
|
|
202
|
+
// flash, cursor) and let the panel sit on the table's base background.
|
|
203
|
+
// Crucially NOT clickable (no .clickableRow class) so onRowClick
|
|
204
|
+
// doesn't fire when the consumer interacts with their rendered detail
|
|
205
|
+
// content.
|
|
206
|
+
// Selectors must beat the Table primitive's row-styling chains:
|
|
207
|
+
// .hover .tbody .tr:hover → (0,4,0)
|
|
208
|
+
// .striped .tbody .tr:nth-of-type(even) → (0,4,0)
|
|
209
|
+
// The doubled-class trick (`.expandedDetailRow.expandedDetailRow`) plus
|
|
210
|
+
// `tbody tr` elements yields (0,4,2) — wins by element count on tie.
|
|
211
|
+
.root tbody tr.expandedDetailRow.expandedDetailRow {
|
|
212
|
+
background: transparent;
|
|
213
|
+
cursor: default;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
.root tbody tr.expandedDetailRow.expandedDetailRow:hover,
|
|
217
|
+
.root tbody tr.expandedDetailRow.expandedDetailRow:nth-of-type(even) {
|
|
218
|
+
background: transparent;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// The single colSpan cell that holds the consumer's renderExpandedRow
|
|
222
|
+
// output. Symmetric vertical padding — the panel sits flush against
|
|
223
|
+
// the data row above it (which acts as its own visual anchor) and
|
|
224
|
+
// needs the same breathing room below before the next data row.
|
|
225
|
+
// Selector must beat Table primitive's density modifiers:
|
|
226
|
+
// .density-dense .td → (0,2,0)
|
|
227
|
+
// .density-comfortable .td → (0,2,0)
|
|
228
|
+
// `.root .expandedDetailRow .expandedDetailCell` is (0,3,0) — wins.
|
|
229
|
+
.root .expandedDetailRow .expandedDetailCell {
|
|
230
|
+
padding: var(--data-table-expanded-detail-padding);
|
|
231
|
+
white-space: normal;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Opt-in responsive wrapper. The table's available inline size, rather than
|
|
235
|
+
// the viewport, drives the presentation switch.
|
|
236
|
+
.responsiveContainer {
|
|
237
|
+
container-type: inline-size;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
.responsiveScrollWrap {
|
|
241
|
+
width: 100%;
|
|
242
|
+
overflow-x: auto;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// These nodes stay mounted while an opted-in table crosses its container
|
|
246
|
+
// breakpoint. They are layout-neutral in the wide presentation.
|
|
247
|
+
.responsiveVisualLabel {
|
|
248
|
+
display: none;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
.responsiveValue {
|
|
252
|
+
display: contents;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// Re-template the existing semantic table tree as cards without remounting
|
|
256
|
+
// consumer cell content. Wide-table state (column sizes, order, and pins) stays
|
|
257
|
+
// intact and becomes visible again when the container widens.
|
|
258
|
+
@mixin stacked-presentation {
|
|
259
|
+
// DndContext appends accessibility siblings beside the table. This mixin is
|
|
260
|
+
// mounted on the named, direct scroll wrapper: the breakpoint target is a
|
|
261
|
+
// descendant of the size container, and every child selector stays inside
|
|
262
|
+
// that table instance rather than reaching nested tables.
|
|
263
|
+
> .root {
|
|
264
|
+
display: block;
|
|
265
|
+
width: 100%;
|
|
266
|
+
min-width: 0;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
> .root > colgroup {
|
|
270
|
+
display: none;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
> .root > :where(caption, thead, tbody) {
|
|
274
|
+
width: 100%;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
> .root > :where(caption, thead) {
|
|
278
|
+
display: block;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
> .root > thead > tr {
|
|
282
|
+
display: flex;
|
|
283
|
+
flex-wrap: wrap;
|
|
284
|
+
gap: var(--space-1);
|
|
285
|
+
width: 100%;
|
|
286
|
+
padding: var(--space-1);
|
|
287
|
+
border-bottom: var(--border-width) solid var(--table-border-color);
|
|
288
|
+
background: var(--table-header-bg);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// With no retained header item, every cell below is out of flow. Neutralize
|
|
292
|
+
// the row paint as well so expansion-only and plain-data tables do not show
|
|
293
|
+
// an empty compact band.
|
|
294
|
+
> .root > thead[data-responsive-has-items='false'] > tr {
|
|
295
|
+
gap: 0;
|
|
296
|
+
padding: 0;
|
|
297
|
+
border: 0;
|
|
298
|
+
background: transparent;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// A string header is proven to be the plain visual label repeated in each
|
|
302
|
+
// card. Rich nodes and render functions stay visible because they may contain
|
|
303
|
+
// focusable controls. The empty expansion auto-header is hidden separately.
|
|
304
|
+
// stylelint-disable property-disallowed-list -- Visually hidden header cells
|
|
305
|
+
// retain native table labelling for assistive technology without occupying
|
|
306
|
+
// room in the compact strip.
|
|
307
|
+
> .root
|
|
308
|
+
> thead
|
|
309
|
+
> tr
|
|
310
|
+
> th[data-responsive-plain-label='true']:not([data-responsive-sortable='true']),
|
|
311
|
+
> .root > thead > tr > th.autoCell:not([data-responsive-control='true']) {
|
|
312
|
+
@include visually-hidden;
|
|
313
|
+
|
|
314
|
+
position: absolute !important;
|
|
315
|
+
left: auto !important;
|
|
316
|
+
right: auto !important;
|
|
317
|
+
transform: none !important;
|
|
318
|
+
}
|
|
319
|
+
// stylelint-enable property-disallowed-list
|
|
320
|
+
|
|
321
|
+
> .root
|
|
322
|
+
> thead
|
|
323
|
+
> tr
|
|
324
|
+
> th:is([data-responsive-control='true'], [data-responsive-retained-header='true']) {
|
|
325
|
+
display: block;
|
|
326
|
+
width: auto;
|
|
327
|
+
padding: var(--space-1) var(--space-2);
|
|
328
|
+
border: 0;
|
|
329
|
+
background: transparent;
|
|
330
|
+
white-space: normal;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
> .root > tbody {
|
|
334
|
+
display: grid;
|
|
335
|
+
gap: var(--space-3);
|
|
336
|
+
width: 100%;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
> .root > tbody + tbody {
|
|
340
|
+
padding-block-start: var(--space-3);
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
> .root > tbody > tr {
|
|
344
|
+
display: grid;
|
|
345
|
+
grid-template-columns: repeat(2, min-content) minmax(0, 1fr);
|
|
346
|
+
gap: var(--space-1);
|
|
347
|
+
width: 100%;
|
|
348
|
+
padding: var(--space-1);
|
|
349
|
+
border: var(--border-width) solid var(--table-border-color);
|
|
350
|
+
border-radius: var(--data-table-clickable-row-radius);
|
|
351
|
+
background: var(--table-bg);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
// Pinned rows stay tinted across the Table primitive's striped, hover, and
|
|
355
|
+
// selected state selectors. Matching each state keeps the cascade explicit
|
|
356
|
+
// without making the tint globally important.
|
|
357
|
+
> .root > tbody > tr.pinnedRow,
|
|
358
|
+
> .root > tbody > tr.pinnedRow:nth-of-type(even),
|
|
359
|
+
> .root > tbody > tr.pinnedRow:hover,
|
|
360
|
+
> .root > tbody > tr.pinnedRow[aria-selected='true'],
|
|
361
|
+
> .root > tbody > tr.pinnedRow[aria-selected='true']:hover {
|
|
362
|
+
background: var(--data-table-pinned-row-bg);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
> .root > tbody > tr > td {
|
|
366
|
+
border: 0;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// stylelint-disable property-disallowed-list -- Responsive card internals:
|
|
370
|
+
// field/detail cells must span the card grid, and wide-table sticky offsets
|
|
371
|
+
// are inline styles that require !important to neutralize below the query.
|
|
372
|
+
> .root > tbody > tr > .responsiveDataCell,
|
|
373
|
+
> .root > tbody > tr > .responsiveFullWidth,
|
|
374
|
+
> .root > tbody > tr > .expandedDetailCell {
|
|
375
|
+
grid-column: 1 / -1;
|
|
376
|
+
width: 100%;
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
> .root > thead > tr > th,
|
|
380
|
+
> .root > tbody > tr > td {
|
|
381
|
+
position: static !important;
|
|
382
|
+
left: auto !important;
|
|
383
|
+
right: auto !important;
|
|
384
|
+
transform: none !important;
|
|
385
|
+
}
|
|
386
|
+
// stylelint-enable property-disallowed-list
|
|
387
|
+
|
|
388
|
+
> .root > tbody > tr > .responsiveDataCell {
|
|
389
|
+
display: grid;
|
|
390
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
|
|
391
|
+
align-items: start;
|
|
392
|
+
gap: var(--space-2);
|
|
393
|
+
overflow: visible;
|
|
394
|
+
text-align: start;
|
|
395
|
+
text-overflow: clip;
|
|
396
|
+
white-space: normal;
|
|
397
|
+
overflow-wrap: anywhere;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
> .root > tbody > tr > .responsiveDataCell > .responsiveVisualLabel {
|
|
401
|
+
display: block;
|
|
402
|
+
color: var(--table-header-fg);
|
|
403
|
+
font-weight: var(--table-header-font-weight);
|
|
404
|
+
overflow-wrap: anywhere;
|
|
405
|
+
white-space: normal;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// stylelint-disable property-disallowed-list -- Responsive card internals:
|
|
409
|
+
// the stable value wrapper owns the value grid track, and unlabelled values
|
|
410
|
+
// expand over the absent label track.
|
|
411
|
+
> .root > tbody > tr > .responsiveDataCell > .responsiveValue {
|
|
412
|
+
display: block;
|
|
413
|
+
grid-column: 2;
|
|
414
|
+
min-width: 0;
|
|
415
|
+
overflow: visible;
|
|
416
|
+
overflow-wrap: anywhere;
|
|
417
|
+
white-space: normal;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Nothing here neutralizes `white-space` on arbitrary descendants, and
|
|
421
|
+
// nothing should (#527). The cell's own nowrap is undone above; a descendant
|
|
422
|
+
// that DECLARES its own — PersonDisplay's description, Badge, Text's public
|
|
423
|
+
// `truncate` prop — declares it for a reason and contains itself. A blanket
|
|
424
|
+
// `:where(*) { white-space: normal }` here reaches into every one of them and
|
|
425
|
+
// breaks them mid-word, because `overflow-wrap: anywhere` above is inherited.
|
|
426
|
+
// DataTable.test.tsx enforces this.
|
|
427
|
+
|
|
428
|
+
> .root > tbody > tr > .responsiveDataCell > .responsiveVisualLabel:empty {
|
|
429
|
+
display: none;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
> .root > tbody > tr > .responsiveDataCell > .responsiveVisualLabel:empty + .responsiveValue {
|
|
433
|
+
grid-column: 1 / -1;
|
|
434
|
+
}
|
|
435
|
+
// stylelint-enable property-disallowed-list
|
|
436
|
+
|
|
437
|
+
// Auto cells remain compact, unlabelled controls. Transparent pinned-cell
|
|
438
|
+
// paint lets the row's striped, hover, selected, or pinned tone show through.
|
|
439
|
+
> .root > tbody > tr > .autoCell {
|
|
440
|
+
width: auto;
|
|
441
|
+
border: 0;
|
|
442
|
+
background: transparent;
|
|
443
|
+
box-shadow: none;
|
|
444
|
+
white-space: normal;
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
> .root > tbody > tr > :is(.pinnedLeft, .pinnedRight) {
|
|
448
|
+
background: transparent;
|
|
449
|
+
box-shadow: none;
|
|
450
|
+
z-index: auto;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// HeaderCell owns separate CSS-module pin classes, so its stable DOM hook is
|
|
454
|
+
// the only safe way to neutralize header pin paint from this module.
|
|
455
|
+
> .root > thead > tr > th[data-responsive-pinned='true'] {
|
|
456
|
+
background: transparent;
|
|
457
|
+
box-shadow: none;
|
|
458
|
+
z-index: auto;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
// Reordering and resizing describe the wide column layout. The elements use
|
|
462
|
+
// stable data hooks because HeaderCell's CSS-module classes are separately
|
|
463
|
+
// hashed and must never be selected across module boundaries.
|
|
464
|
+
> .root
|
|
465
|
+
> thead
|
|
466
|
+
> tr
|
|
467
|
+
> th
|
|
468
|
+
> span
|
|
469
|
+
> span
|
|
470
|
+
> :is([data-responsive-drag-grip], [data-responsive-resize-handle]) {
|
|
471
|
+
display: none;
|
|
472
|
+
pointer-events: none;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
> .root > thead > tr > th > span > span > [data-responsive-header-content] {
|
|
476
|
+
padding-right: 0;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
> .root > tbody > :where(.expandedDetailRow, .pinnedRow),
|
|
480
|
+
> .root > tbody > tr > :where(.responsiveFullWidth, .expandedDetailCell) {
|
|
481
|
+
width: 100%;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
> .root > tbody > tr > :where(.responsiveFullWidth, .expandedDetailCell) {
|
|
485
|
+
overflow: visible;
|
|
486
|
+
text-overflow: clip;
|
|
487
|
+
white-space: normal;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
@container (max-width: #{bp.$collapse-sm}) {
|
|
492
|
+
.responsiveContainer > .responsiveScrollWrap.collapseSm {
|
|
493
|
+
@include stacked-presentation;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
@container (max-width: #{bp.$collapse-md}) {
|
|
498
|
+
.responsiveContainer > .responsiveScrollWrap.collapseMd {
|
|
499
|
+
@include stacked-presentation;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
@container (max-width: #{bp.$collapse-lg}) {
|
|
504
|
+
.responsiveContainer > .responsiveScrollWrap.collapseLg {
|
|
505
|
+
@include stacked-presentation;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
.srStatus {
|
|
510
|
+
@include visually-hidden;
|
|
511
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// DataTable.tokens.scss — Component-scoped tokens for <DataTable>, its <HeaderCell>, and <ColumnVisibilityTrigger>. Mirrors the structural-selector hierarchy (header / pinned / pinned-row tints + the doubled-class expanded-detail row). The Table-primitive surface tokens (--color-table-*) are kept primitive — DataTable references them by their semantic name so a Table theme override still reaches DataTable.
|
|
2
|
+
:root {
|
|
3
|
+
// ── Root + cell defaults ─────────────────────────────────────────────────
|
|
4
|
+
--data-table-clickable-row-radius: var(--radius-sm);
|
|
5
|
+
|
|
6
|
+
// Reserved left-padding on every DataTable cell so the absolutely-positioned
|
|
7
|
+
// header reorder grip sits in dedicated space without overlapping the column
|
|
8
|
+
// label. Applied uniformly to body cells too so the header label visually
|
|
9
|
+
// aligns with the column's body content.
|
|
10
|
+
--data-table-cell-padding-left: var(--space-4);
|
|
11
|
+
|
|
12
|
+
// ── Empty state ──────────────────────────────────────────────────────────
|
|
13
|
+
--data-table-empty-padding: var(--space-6) var(--space-4);
|
|
14
|
+
--data-table-empty-fg: var(--color-fg-muted);
|
|
15
|
+
|
|
16
|
+
// ── Sticky auto-select cells ─────────────────────────────────────────────
|
|
17
|
+
--data-table-auto-cell-sticky-header-bg: var(--color-table-header-bg);
|
|
18
|
+
--data-table-auto-cell-sticky-body-bg: var(--color-table-bg);
|
|
19
|
+
|
|
20
|
+
// ── Pinned columns (body) ────────────────────────────────────────────────
|
|
21
|
+
--data-table-pinned-bg: var(--color-table-bg);
|
|
22
|
+
--data-table-pinned-shadow-left: var(--shadow-table-pinned-edge);
|
|
23
|
+
--data-table-pinned-shadow-right: var(--shadow-table-pinned-edge-right);
|
|
24
|
+
|
|
25
|
+
// ── Pinned rows ──────────────────────────────────────────────────────────
|
|
26
|
+
--data-table-pinned-row-bg: var(--color-bg-row-pinned);
|
|
27
|
+
|
|
28
|
+
// ── Pinned-cell hover / selected (mirrors row-level Table primitive) ─────
|
|
29
|
+
--data-table-pinned-bg-row-hover: var(--color-table-row-bg-hover);
|
|
30
|
+
--data-table-pinned-bg-row-selected: var(--color-table-row-bg-selected);
|
|
31
|
+
|
|
32
|
+
// ── Expand button (chevron) ──────────────────────────────────────────────
|
|
33
|
+
--data-table-expand-button-fg: var(--color-fg-muted);
|
|
34
|
+
--data-table-expand-button-radius: var(--radius-sm);
|
|
35
|
+
--data-table-expand-button-bg-hover: var(--color-bg-muted);
|
|
36
|
+
--data-table-expand-button-fg-hover: var(--color-fg);
|
|
37
|
+
--data-table-expand-button-transition-bg: var(--transition-fast);
|
|
38
|
+
--data-table-expand-button-transition-color: var(--transition-fast);
|
|
39
|
+
|
|
40
|
+
// ── Expanded detail row ──────────────────────────────────────────────────
|
|
41
|
+
--data-table-expanded-detail-padding: var(--space-3) var(--space-4);
|
|
42
|
+
|
|
43
|
+
// ── ColumnVisibilityTrigger ──────────────────────────────────────────────
|
|
44
|
+
--data-table-column-visibility-gap: var(--space-1);
|
|
45
|
+
|
|
46
|
+
// ── HeaderCell — grip / inner / label / sort / resize / drag ────────────
|
|
47
|
+
--data-table-header-grip-fg: var(--color-fg-muted);
|
|
48
|
+
--data-table-header-grip-opacity-hidden: var(--opacity-hidden);
|
|
49
|
+
--data-table-header-grip-opacity-visible: var(--opacity-visible);
|
|
50
|
+
--data-table-header-grip-transition: var(--transition-fast);
|
|
51
|
+
--data-table-header-grip-focus-radius: var(--radius-sm);
|
|
52
|
+
|
|
53
|
+
--data-table-header-inner-gap: var(--space-1);
|
|
54
|
+
|
|
55
|
+
--data-table-header-label-gap: var(--space-1);
|
|
56
|
+
--data-table-header-label-font-weight: var(--font-weight-semibold);
|
|
57
|
+
--data-table-header-label-fg: var(--color-fg);
|
|
58
|
+
--data-table-header-label-focus-radius: var(--radius-sm);
|
|
59
|
+
|
|
60
|
+
--data-table-header-sort-icon-fg: var(--color-fg-muted);
|
|
61
|
+
--data-table-header-sort-icon-fg-active: var(--color-fg);
|
|
62
|
+
|
|
63
|
+
--data-table-header-resize-handle-opacity-hidden: var(--opacity-hidden);
|
|
64
|
+
--data-table-header-resize-handle-opacity-visible: var(--opacity-visible);
|
|
65
|
+
--data-table-header-resize-handle-transition: var(--transition-fast);
|
|
66
|
+
--data-table-header-resize-chevron-fg: var(--color-fg-muted);
|
|
67
|
+
--data-table-header-resize-chevron-transition: var(--transition-fast);
|
|
68
|
+
--data-table-header-resize-bar-bg: var(--color-fg-muted);
|
|
69
|
+
--data-table-header-resize-bar-transition-bg: var(--transition-fast);
|
|
70
|
+
--data-table-header-resize-bar-transition-width: var(--transition-fast);
|
|
71
|
+
--data-table-header-resize-bar-bg-active: var(--color-accent);
|
|
72
|
+
--data-table-header-resize-chevron-fg-active: var(--color-accent);
|
|
73
|
+
|
|
74
|
+
--data-table-header-dragging-opacity: var(--opacity-dragging);
|
|
75
|
+
|
|
76
|
+
// HeaderCell — pinned column variant
|
|
77
|
+
--data-table-header-pinned-bg: var(--color-table-header-bg);
|
|
78
|
+
--data-table-header-pinned-shadow-left: var(--shadow-table-pinned-edge);
|
|
79
|
+
--data-table-header-pinned-shadow-right: var(--shadow-table-pinned-edge-right);
|
|
80
|
+
}
|