@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,360 @@
|
|
|
1
|
+
@use './DashboardCanvas.tokens' as tokens;
|
|
2
|
+
@use '../../styles/mixins' as *;
|
|
3
|
+
@use '../_internal/collapse' as bp;
|
|
4
|
+
|
|
5
|
+
// Root stacks its own children — the top-level container grid, then one band
|
|
6
|
+
// per section, top to bottom. This is the component's own internal
|
|
7
|
+
// composition (Stack/Cluster precedent), not layout imposed on a parent.
|
|
8
|
+
// ALWAYS a size container (unconditional, unlike Grid's opt-in
|
|
9
|
+
// `collapseBelow`) — the below-breakpoint single-column stack (bottom of
|
|
10
|
+
// this file) depends on it. NAMED, because each grid also sits inside an
|
|
11
|
+
// unnamed `.sizer` container (square cells, below): the stack step rules
|
|
12
|
+
// must keep querying the CANVAS width, and a bare `@container` would
|
|
13
|
+
// resolve against the nearer sizer instead. See DashboardCanvas.tsx's JSDoc
|
|
14
|
+
// ❌ anti-pattern paragraph for the intrinsic-sizing caveat this carries.
|
|
15
|
+
.canvas {
|
|
16
|
+
// Relative only as the anchor for the internal drag ghost (Rule 4's
|
|
17
|
+
// sanctioned internal-child-anchor use).
|
|
18
|
+
position: relative;
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-direction: column;
|
|
21
|
+
gap: var(--dashboard-canvas-gap);
|
|
22
|
+
container: dashboard-canvas / inline-size;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Square-cell measuring box around every container grid (top level and each
|
|
26
|
+
// section body). `cqw` in `--dashboard-canvas-row` must equal the GRID's own
|
|
27
|
+
// width — an element can't resolve cq units against itself, and the canvas
|
|
28
|
+
// root is wrong for section bodies (Accordion.Content's padding shrinks
|
|
29
|
+
// them) — so each grid gets this zero-styling wrapper as its nearest size
|
|
30
|
+
// container.
|
|
31
|
+
.sizer {
|
|
32
|
+
container-type: inline-size;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Edit-mode drag surfaces: whole item bodies and section headers start drags,
|
|
36
|
+
// so the browser must not claim their touch gestures (Sortable precedent).
|
|
37
|
+
// Narrow width disables editing exactly like readOnly (DashboardCanvas.tsx's
|
|
38
|
+
// `editingEnabled` gate) — excluded here too so the cursor doesn't lie.
|
|
39
|
+
.canvas:not([data-readonly], [data-narrow]) .item {
|
|
40
|
+
touch-action: none;
|
|
41
|
+
cursor: grab;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Edit-mode snap grid (#356): dots on BOTH cell-edge lattices per axis —
|
|
45
|
+
// cell STARTS (k·pitch) and cell ENDS ((k+1)·pitch − gap) — so all four
|
|
46
|
+
// corners of a snapped widget land exactly on dots. Horizontal pitch is
|
|
47
|
+
// fr-based — a column's outer edge repeats every (100% + gap) / N (N
|
|
48
|
+
// columns, N-1 gaps between them: container width = N·colWidth + (N-1)·gap,
|
|
49
|
+
// and colWidth + gap is exactly that expression / N). Vertical pitch is the
|
|
50
|
+
// row unit + gap. One tile therefore holds FOUR dots (start/end × both
|
|
51
|
+
// axes), and the whole field is shifted by −gap/2 (background-position) so
|
|
52
|
+
// every dot center sits half a gap inside its tile — full circles, never
|
|
53
|
+
// clipped on tile seams (`circle at 0 0` used to quarter-clip every dot).
|
|
54
|
+
// Within a tile, cell start = gap/2 and cell end = 100% − gap/2.
|
|
55
|
+
@function dc-dot($x, $y) {
|
|
56
|
+
@return radial-gradient(
|
|
57
|
+
circle at #{$x} #{$y},
|
|
58
|
+
var(--dashboard-canvas-dot-color) var(--dashboard-canvas-dot-size),
|
|
59
|
+
transparent var(--dashboard-canvas-dot-size)
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.canvas:not([data-readonly], [data-narrow]) .container {
|
|
64
|
+
$start: calc(var(--dashboard-canvas-gap) / 2);
|
|
65
|
+
$end: calc(100% - var(--dashboard-canvas-gap) / 2);
|
|
66
|
+
|
|
67
|
+
background-image:
|
|
68
|
+
dc-dot($start, $start), dc-dot($end, $start), dc-dot($start, $end), dc-dot($end, $end);
|
|
69
|
+
background-position: calc(var(--dashboard-canvas-gap) / -2) calc(var(--dashboard-canvas-gap) / -2);
|
|
70
|
+
background-size: calc((100% + var(--dashboard-canvas-gap)) / var(--dc-cols, 24))
|
|
71
|
+
calc(var(--dc-row-unit) + var(--dashboard-canvas-gap));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.canvas[data-dragging] {
|
|
75
|
+
cursor: grabbing;
|
|
76
|
+
user-select: none;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// #696: while a move-drag is active, pad the hovered drop-target container by
|
|
80
|
+
// the dragged item's height so there is always room to drop below the last
|
|
81
|
+
// row. Only that container: padding every one would shift the bands below it
|
|
82
|
+
// out from under the pointer. The padding is
|
|
83
|
+
// h x (row + gap), one gap more than the item's own height. The dot
|
|
84
|
+
// background paints on the padding box, so the strip stays dotted.
|
|
85
|
+
.canvas[data-dragging]:not([data-readonly], [data-narrow]) .container[data-dc-drop-target] {
|
|
86
|
+
padding-block-end: calc(
|
|
87
|
+
var(--dc-trailing-rows, 0) * (var(--dc-row-unit) + var(--dashboard-canvas-gap))
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// One container grid — used for both the top-level items and each section's
|
|
92
|
+
// body. `--dc-cols` is stamped inline on the canvas root (24 by default) and
|
|
93
|
+
// inherits down. Below-breakpoint re-templating to a single column: see the
|
|
94
|
+
// `@container dashboard-canvas` step blocks at the bottom of this file.
|
|
95
|
+
// `--dc-row-unit` (private): the resolved row unit — the consumer-overridable
|
|
96
|
+
// `--dashboard-canvas-row` token when set, else the SQUARE default: one
|
|
97
|
+
// column's width, i.e. the grid's own width (100cqw via the `.sizer`
|
|
98
|
+
// wrapper) minus the (N-1) gaps, split into N columns. Declared HERE, not in
|
|
99
|
+
// tokens.scss's :root, because var() substitution happens at the declaring
|
|
100
|
+
// element and `--dc-cols` only exists inside a canvas.
|
|
101
|
+
.container {
|
|
102
|
+
--dc-row-unit: var(
|
|
103
|
+
--dashboard-canvas-row,
|
|
104
|
+
calc((100cqw - (var(--dc-cols, 24) - 1) * var(--dashboard-canvas-gap)) / var(--dc-cols, 24))
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
display: grid;
|
|
108
|
+
grid-template-columns: repeat(var(--dc-cols, 24), minmax(0, 1fr));
|
|
109
|
+
grid-auto-rows: var(--dc-row-unit);
|
|
110
|
+
gap: var(--dashboard-canvas-gap);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// #353: an EMPTY container has no rows, so its rect collapses to zero height
|
|
114
|
+
// and the pointer hit-test can never land in it — an empty, expanded body
|
|
115
|
+
// keeps droppable height while editing is on: one row unit, floored at
|
|
116
|
+
// --space-12 (a square row shrinks with width; ~18px is too thin a target
|
|
117
|
+
// and too short for the drop-hint text). Any pointer y in the strip
|
|
118
|
+
// resolves to some cell and the engine compacts the drop to y 0. `[inert]`
|
|
119
|
+
// excludes collapsed section bodies (never drop targets, and their Accordion
|
|
120
|
+
// collapse must still animate to zero); the readOnly/narrow gate matches the
|
|
121
|
+
// other edit-only affordances, so view mode shows no blank strips.
|
|
122
|
+
// `position: relative` is the internal anchor for `.dropHint` (Rule 4's
|
|
123
|
+
// sanctioned use), which fills the whole strip independent of row geometry.
|
|
124
|
+
.canvas:not([data-readonly], [data-narrow]) .container[data-dc-empty]:not([inert]) {
|
|
125
|
+
position: relative;
|
|
126
|
+
min-height: max(var(--dc-row-unit), var(--space-12));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// #353 drop affordance: rendered by DashboardCanvasSection inside an empty
|
|
130
|
+
// body only while a move (drag or keyboard pick) is in flight.
|
|
131
|
+
.dropHint {
|
|
132
|
+
position: absolute;
|
|
133
|
+
inset: 0;
|
|
134
|
+
display: flex;
|
|
135
|
+
align-items: center;
|
|
136
|
+
justify-content: center;
|
|
137
|
+
border: var(--border-width) dashed var(--dashboard-canvas-drop-preview-border);
|
|
138
|
+
border-radius: var(--radius-md);
|
|
139
|
+
color: var(--dashboard-canvas-handle-fg);
|
|
140
|
+
font-size: var(--font-size-sm);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Item placement — the value is resolved in DashboardCanvasItem.tsx and
|
|
144
|
+
// injected as inline custom properties (Grid.Item precedent: per-cell
|
|
145
|
+
// placement is this layout family's own prop, not consumer layout). The cell
|
|
146
|
+
// itself is a bare positioned box (#344) — no background/border/radius/
|
|
147
|
+
// shadow of its own; that's whatever `renderItem` returns (typically a
|
|
148
|
+
// `<Card>`). Only gesture-state affordances below get their own chrome.
|
|
149
|
+
.item {
|
|
150
|
+
// stylelint-disable-next-line property-disallowed-list -- DashboardCanvasItem's sanctioned job: per-cell grid placement (Grid.Item precedent), not consumer layout (Rule 4 exemption)
|
|
151
|
+
grid-column: var(--dc-col, auto);
|
|
152
|
+
// stylelint-disable-next-line property-disallowed-list -- see grid-column comment above
|
|
153
|
+
grid-row: var(--dc-row, auto);
|
|
154
|
+
position: relative; // anchor for the internal resize handles
|
|
155
|
+
overflow: auto;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// The dragged item's cell renders the snapped drop preview — the ghost
|
|
159
|
+
// carries the content, so the cell shows only the highlighted slot. Its own
|
|
160
|
+
// full border (the idle `.item` has none to inherit from).
|
|
161
|
+
.item[data-dc-drop-preview] {
|
|
162
|
+
background: var(--dashboard-canvas-drop-preview-bg);
|
|
163
|
+
border: var(--border-width) dashed var(--dashboard-canvas-drop-preview-border);
|
|
164
|
+
|
|
165
|
+
> * {
|
|
166
|
+
visibility: hidden;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.item[data-dc-resizing] {
|
|
171
|
+
border: var(--border-width) solid var(--dashboard-canvas-drop-preview-border);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// Keyboard editing: the cell itself is the focusable editing surface.
|
|
175
|
+
// Inset so the ring stays inside the cell's own bounds — with no
|
|
176
|
+
// background/border of its own to sit against, an outer ring would visually
|
|
177
|
+
// bleed into the grid gap and read as belonging to the neighboring cell.
|
|
178
|
+
// `.item` is also `overflow: auto`, so an outset ring would be clipped by the
|
|
179
|
+
// cell itself on top of that.
|
|
180
|
+
// What the inset band covers (the mixin's own requirement at an inset call
|
|
181
|
+
// site): the outermost 2px of the cell. Base `.item` has no border there, so
|
|
182
|
+
// normally nothing. While `[data-dc-picked]` or `[data-dc-resizing]` is set the
|
|
183
|
+
// cell carries a 1px `--dashboard-canvas-drop-preview-border`, and a picked
|
|
184
|
+
// cell IS the focused one — so the ring paints over that border for the
|
|
185
|
+
// duration of a keyboard move. Acceptable: the ring is the stronger of the two
|
|
186
|
+
// markers and the picked state is also carried by `--dashboard-canvas-item-
|
|
187
|
+
// shadow-dragging`, which sits outside the band.
|
|
188
|
+
.item:focus-visible {
|
|
189
|
+
@include focus-ring(var(--color-accent), $offset: calc(-1 * var(--ring-offset)));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// A keyboard-picked item travels with the engine preview — mark it like an
|
|
193
|
+
// armed drag (content stays visible; there is no ghost on the keyboard path).
|
|
194
|
+
.item[data-dc-picked] {
|
|
195
|
+
border: var(--border-width) solid var(--dashboard-canvas-drop-preview-border);
|
|
196
|
+
box-shadow: var(--dashboard-canvas-item-shadow-dragging);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// Cursor-following drag ghost: the moved item's content at its original px
|
|
200
|
+
// size, translated per pointermove in canvas-relative coordinates. No
|
|
201
|
+
// background/border of its own — the content it carries (`renderItem`'s
|
|
202
|
+
// output) supplies that; the shadow is the "lifted, mid-drag" cue.
|
|
203
|
+
.ghost {
|
|
204
|
+
position: absolute;
|
|
205
|
+
top: 0;
|
|
206
|
+
left: 0;
|
|
207
|
+
overflow: hidden;
|
|
208
|
+
pointer-events: none;
|
|
209
|
+
opacity: var(--dashboard-canvas-ghost-opacity);
|
|
210
|
+
box-shadow: var(--dashboard-canvas-item-shadow-dragging);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Resize handles — pointer-only edge/corner corridors (keyboard resize is
|
|
214
|
+
// Task 4). 24px hit targets (WCAG 2.5.8, FlowCanvas token precedent); the
|
|
215
|
+
// only visible affordance is the cursor plus the SE corner glyph on hover.
|
|
216
|
+
.handleE,
|
|
217
|
+
.handleS,
|
|
218
|
+
.handleSE {
|
|
219
|
+
position: absolute;
|
|
220
|
+
touch-action: none;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
.handleE {
|
|
224
|
+
top: 0;
|
|
225
|
+
right: 0;
|
|
226
|
+
bottom: 0;
|
|
227
|
+
width: var(--dashboard-canvas-handle-hit);
|
|
228
|
+
cursor: ew-resize;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.handleS {
|
|
232
|
+
right: 0;
|
|
233
|
+
bottom: 0;
|
|
234
|
+
left: 0;
|
|
235
|
+
height: var(--dashboard-canvas-handle-hit);
|
|
236
|
+
cursor: ns-resize;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.handleSE {
|
|
240
|
+
right: 0;
|
|
241
|
+
bottom: 0;
|
|
242
|
+
width: var(--dashboard-canvas-handle-hit);
|
|
243
|
+
height: var(--dashboard-canvas-handle-hit);
|
|
244
|
+
cursor: nwse-resize;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.handleSE::after {
|
|
248
|
+
content: '';
|
|
249
|
+
position: absolute;
|
|
250
|
+
right: var(--space-1);
|
|
251
|
+
bottom: var(--space-1);
|
|
252
|
+
width: var(--space-2);
|
|
253
|
+
height: var(--space-2);
|
|
254
|
+
border-right: var(--border-width-emphasis) solid var(--dashboard-canvas-handle-fg);
|
|
255
|
+
border-bottom: var(--border-width-emphasis) solid var(--dashboard-canvas-handle-fg);
|
|
256
|
+
border-bottom-right-radius: var(--radius-sm);
|
|
257
|
+
visibility: hidden;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
.item:hover .handleSE::after {
|
|
261
|
+
visibility: visible;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// Live insertion indicator between section bands during a band-reorder drag.
|
|
265
|
+
.bandIndicator {
|
|
266
|
+
height: var(--space-1);
|
|
267
|
+
border-radius: var(--radius-full);
|
|
268
|
+
background: var(--dashboard-canvas-drop-indicator);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Section bands are `<Accordion>` Items now (#344) — header/chevron/panel
|
|
272
|
+
// chrome + the open↔close animation come from Accordion's own CSS.
|
|
273
|
+
|
|
274
|
+
// Band-reorder grip: a dedicated handle in the Trigger's `actions` slot
|
|
275
|
+
// (DashboardCanvasSection's remarks explain why it can't just be "grab the
|
|
276
|
+
// header" once the header IS the toggle button). It's the ONLY pointer
|
|
277
|
+
// affordance for band reorder, so it gets the same 24px hit corridor as the
|
|
278
|
+
// resize handles (WCAG 2.5.8) even though the glyph itself is smaller.
|
|
279
|
+
// Pointer-only; not rendered at all in readOnly (no `:not([data-readonly])`
|
|
280
|
+
// gate needed here — DashboardCanvasSection omits the element outright).
|
|
281
|
+
.sectionDragHandle {
|
|
282
|
+
display: flex;
|
|
283
|
+
align-items: center;
|
|
284
|
+
justify-content: center;
|
|
285
|
+
width: var(--dashboard-canvas-handle-hit);
|
|
286
|
+
height: var(--dashboard-canvas-handle-hit);
|
|
287
|
+
color: var(--dashboard-canvas-handle-fg);
|
|
288
|
+
touch-action: none;
|
|
289
|
+
cursor: grab;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Keyboard instructions + live announcement region.
|
|
293
|
+
.srOnly {
|
|
294
|
+
@include visually-hidden;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// --- below-breakpoint single-column stacking ---------------------------
|
|
298
|
+
// Below the `stackBelow` breakpoint (`_internal/collapse.scss` constants —
|
|
299
|
+
// kept in sync by hand with DashboardCanvas.tsx's STACK_GATE_PX, the same
|
|
300
|
+
// JS/CSS pairing the editing gate uses), every container grid re-templates
|
|
301
|
+
// to one column and each item spans the full row at its own height. One
|
|
302
|
+
// step block per breakpoint, gated by the stamped `.stackXx` class (#318
|
|
303
|
+
// per-breakpoint pattern). Queries are NAMED (`dashboard-canvas`): the
|
|
304
|
+
// matched elements' nearest container is the unnamed `.sizer` (square
|
|
305
|
+
// cells), and the stack must key off the canvas width, which is also what
|
|
306
|
+
// the JS gate observes.
|
|
307
|
+
// The row unit switches to the fixed stacked token: the square `cqw` unit
|
|
308
|
+
// would collapse to ~1/24 of the width once items span the full row.
|
|
309
|
+
// DOM order is ALREADY (container band order, y, x) —
|
|
310
|
+
// DashboardCanvasItem.tsx's `sortByPosition`, load-bearing exactly for this
|
|
311
|
+
// — so the correct (section, y, x) stack order falls out for free; no JS
|
|
312
|
+
// re-render needed for the reflow itself, only for the editing gate
|
|
313
|
+
// (DashboardCanvas.tsx's `isNarrow`/`editingEnabled`).
|
|
314
|
+
// Specificity: the base `.item` rule above (`grid-column: var(--dc-col, auto);
|
|
315
|
+
// grid-row: var(--dc-row, auto);`) is one class = (0,1,0). `.canvas.stackXx
|
|
316
|
+
// .item` below is three classes = (0,3,0), which beats it unconditionally —
|
|
317
|
+
// no reliance on this file's own source order surviving bundling (#318
|
|
318
|
+
// precedent; same reasoning as Grid's `.collapsible.collapseXx` double
|
|
319
|
+
// class). Same math for the `.container` rules.
|
|
320
|
+
@mixin stacked-container {
|
|
321
|
+
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
322
|
+
grid-auto-rows: var(--dashboard-canvas-row-stacked);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
@mixin stacked-item {
|
|
326
|
+
// stylelint-disable-next-line property-disallowed-list -- below-breakpoint override is DashboardCanvas's own placement mechanism, same sanction as the base .item rule above
|
|
327
|
+
grid-column: 1 / -1;
|
|
328
|
+
// stylelint-disable-next-line property-disallowed-list -- see grid-column comment above
|
|
329
|
+
grid-row: var(--dc-h-span, auto);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
@container dashboard-canvas (max-width: #{bp.$collapse-sm}) {
|
|
333
|
+
.canvas.stackSm .container {
|
|
334
|
+
@include stacked-container;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
.canvas.stackSm .item {
|
|
338
|
+
@include stacked-item;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
@container dashboard-canvas (max-width: #{bp.$collapse-md}) {
|
|
343
|
+
.canvas.stackMd .container {
|
|
344
|
+
@include stacked-container;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.canvas.stackMd .item {
|
|
348
|
+
@include stacked-item;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
@container dashboard-canvas (max-width: #{bp.$collapse-lg}) {
|
|
353
|
+
.canvas.stackLg .container {
|
|
354
|
+
@include stacked-container;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.canvas.stackLg .item {
|
|
358
|
+
@include stacked-item;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// DashboardCanvas.tokens.scss — component-scoped tokens for <DashboardCanvas>.
|
|
2
|
+
// Every token defaults to a primitive so the resolved values match the
|
|
3
|
+
// global theme; consumers retheme by overriding these custom properties.
|
|
4
|
+
:root {
|
|
5
|
+
// Grid geometry. `--dashboard-canvas-row` (the row unit) deliberately has
|
|
6
|
+
// NO :root default: its built-in default makes cells SQUARE by deriving
|
|
7
|
+
// one column's width from `--dc-cols` (stamped inline on the canvas root),
|
|
8
|
+
// and a var() inside a :root declaration would substitute AT :root — where
|
|
9
|
+
// `--dc-cols` doesn't exist — instead of at the grid. The square calc
|
|
10
|
+
// therefore lives on `.container` in DashboardCanvas.module.scss
|
|
11
|
+
// (`--dc-row-unit`), with `--dashboard-canvas-row` consulted first — override
|
|
12
|
+
// it anywhere (e.g. `--dashboard-canvas-row: 48px` at :root) for
|
|
13
|
+
// fixed-height, non-square rows.
|
|
14
|
+
|
|
15
|
+
// Row unit for the below-`stackBelow` single-column stack, where items
|
|
16
|
+
// span the full row and the square unit above would collapse to ~1/24 of
|
|
17
|
+
// the width. The pre-#350 fixed default ("~48px + gap", --space-12).
|
|
18
|
+
--dashboard-canvas-row-stacked: var(--space-12);
|
|
19
|
+
--dashboard-canvas-gap: var(--space-3);
|
|
20
|
+
|
|
21
|
+
// Items are chrome-less bare cells (#344) — background/border/radius/shadow
|
|
22
|
+
// belong to whatever `renderItem` returns (typically a `<Card>`), not the
|
|
23
|
+
// cell. Only gesture-state surfaces below are the canvas's own to style.
|
|
24
|
+
|
|
25
|
+
// Drag ghost + snapped drop-preview + resize/pick surfaces — the item's
|
|
26
|
+
// OWN chrome-less idle state carries none of these; they're gesture
|
|
27
|
+
// affordances, not idle chrome.
|
|
28
|
+
--dashboard-canvas-ghost-opacity: 0.6;
|
|
29
|
+
--dashboard-canvas-item-shadow-dragging: var(--shadow-lg);
|
|
30
|
+
--dashboard-canvas-drop-preview-bg: var(--color-accent-bg-subtle);
|
|
31
|
+
--dashboard-canvas-drop-preview-border: var(--color-accent);
|
|
32
|
+
|
|
33
|
+
// Resize handles: 24px pointer corridor (WCAG 2.5.8) + hover glyph color.
|
|
34
|
+
--dashboard-canvas-handle-hit: var(--space-6);
|
|
35
|
+
--dashboard-canvas-handle-fg: var(--color-fg-subtle);
|
|
36
|
+
|
|
37
|
+
// Band-reorder insertion indicator. The section grip handle reuses
|
|
38
|
+
// --dashboard-canvas-handle-fg above (same "drag affordance glyph" role).
|
|
39
|
+
--dashboard-canvas-drop-indicator: var(--color-accent);
|
|
40
|
+
|
|
41
|
+
// Edit-mode snap-grid dots (#344) — one dot per cell corner, hidden in
|
|
42
|
+
// readOnly/narrow (DashboardCanvas.module.scss's `:not([data-readonly],
|
|
43
|
+
// [data-narrow])` gate, same one the drag cursor uses). #354: 1px
|
|
44
|
+
// dots were invisible at 100% zoom, so the size is 1.5px; the color is the
|
|
45
|
+
// subtler-but-visible border-strong (fg-subtle was too loud).
|
|
46
|
+
--dashboard-canvas-dot-color: var(--color-border-strong);
|
|
47
|
+
--dashboard-canvas-dot-size: 1.5px;
|
|
48
|
+
}
|