@olddevs/ui 0.0.0-stage → 4.0.0
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/CHANGELOG.md +13 -0
- package/LICENSE +21 -0
- package/NOTICE +100 -0
- package/README.md +145 -2
- package/README.ru.md +146 -0
- package/dist/color.d.ts +22 -0
- package/dist/color.d.ts.map +1 -0
- package/dist/color.js +2 -0
- package/dist/color.js.map +1 -0
- package/dist/components/actions/Alert.d.ts +46 -0
- package/dist/components/actions/Alert.d.ts.map +1 -0
- package/dist/components/actions/Alert.js +20 -0
- package/dist/components/actions/Alert.js.map +1 -0
- package/dist/components/actions/Banner.d.ts +58 -0
- package/dist/components/actions/Banner.d.ts.map +1 -0
- package/dist/components/actions/Banner.js +20 -0
- package/dist/components/actions/Banner.js.map +1 -0
- package/dist/components/actions/Button.d.ts +79 -0
- package/dist/components/actions/Button.d.ts.map +1 -0
- package/dist/components/actions/Button.js +29 -0
- package/dist/components/actions/Button.js.map +1 -0
- package/dist/components/actions/ButtonGroup.d.ts +32 -0
- package/dist/components/actions/ButtonGroup.d.ts.map +1 -0
- package/dist/components/actions/ButtonGroup.js +10 -0
- package/dist/components/actions/ButtonGroup.js.map +1 -0
- package/dist/components/actions/Chip.d.ts +36 -0
- package/dist/components/actions/Chip.d.ts.map +1 -0
- package/dist/components/actions/Chip.js +16 -0
- package/dist/components/actions/Chip.js.map +1 -0
- package/dist/components/actions/CopyButton.d.ts +32 -0
- package/dist/components/actions/CopyButton.d.ts.map +1 -0
- package/dist/components/actions/CopyButton.js +41 -0
- package/dist/components/actions/CopyButton.js.map +1 -0
- package/dist/components/actions/Progress.d.ts +36 -0
- package/dist/components/actions/Progress.d.ts.map +1 -0
- package/dist/components/actions/Progress.js +14 -0
- package/dist/components/actions/Progress.js.map +1 -0
- package/dist/components/actions/Segmented.d.ts +64 -0
- package/dist/components/actions/Segmented.d.ts.map +1 -0
- package/dist/components/actions/Segmented.js +14 -0
- package/dist/components/actions/Segmented.js.map +1 -0
- package/dist/components/actions/Spinner.d.ts +46 -0
- package/dist/components/actions/Spinner.d.ts.map +1 -0
- package/dist/components/actions/Spinner.js +17 -0
- package/dist/components/actions/Spinner.js.map +1 -0
- package/dist/components/actions/SplitButton.d.ts +92 -0
- package/dist/components/actions/SplitButton.d.ts.map +1 -0
- package/dist/components/actions/SplitButton.js +21 -0
- package/dist/components/actions/SplitButton.js.map +1 -0
- package/dist/components/actions/StatusBadge.d.ts +26 -0
- package/dist/components/actions/StatusBadge.d.ts.map +1 -0
- package/dist/components/actions/StatusBadge.js +14 -0
- package/dist/components/actions/StatusBadge.js.map +1 -0
- package/dist/components/actions/Toaster.d.ts +83 -0
- package/dist/components/actions/Toaster.d.ts.map +1 -0
- package/dist/components/actions/Toaster.js +38 -0
- package/dist/components/actions/Toaster.js.map +1 -0
- package/dist/components/actions/Toggle.d.ts +75 -0
- package/dist/components/actions/Toggle.d.ts.map +1 -0
- package/dist/components/actions/Toggle.js +39 -0
- package/dist/components/actions/Toggle.js.map +1 -0
- package/dist/components/actions/ToggleGroup.d.ts +63 -0
- package/dist/components/actions/ToggleGroup.d.ts.map +1 -0
- package/dist/components/actions/ToggleGroup.js +30 -0
- package/dist/components/actions/ToggleGroup.js.map +1 -0
- package/dist/components/actions/Toolbar.d.ts +52 -0
- package/dist/components/actions/Toolbar.d.ts.map +1 -0
- package/dist/components/actions/Toolbar.js +98 -0
- package/dist/components/actions/Toolbar.js.map +1 -0
- package/dist/components/actions/Truncate.d.ts +31 -0
- package/dist/components/actions/Truncate.d.ts.map +1 -0
- package/dist/components/actions/Truncate.js +32 -0
- package/dist/components/actions/Truncate.js.map +1 -0
- package/dist/components/app-shell/AppShell.d.ts +106 -0
- package/dist/components/app-shell/AppShell.d.ts.map +1 -0
- package/dist/components/app-shell/AppShell.js +29 -0
- package/dist/components/app-shell/AppShell.js.map +1 -0
- package/dist/components/app-shell/MobileTabBar.d.ts +130 -0
- package/dist/components/app-shell/MobileTabBar.d.ts.map +1 -0
- package/dist/components/app-shell/MobileTabBar.js +50 -0
- package/dist/components/app-shell/MobileTabBar.js.map +1 -0
- package/dist/components/app-shell/NavItem.d.ts +72 -0
- package/dist/components/app-shell/NavItem.d.ts.map +1 -0
- package/dist/components/app-shell/NavItem.js +22 -0
- package/dist/components/app-shell/NavItem.js.map +1 -0
- package/dist/components/app-shell/SideNav.d.ts +65 -0
- package/dist/components/app-shell/SideNav.d.ts.map +1 -0
- package/dist/components/app-shell/SideNav.js +31 -0
- package/dist/components/app-shell/SideNav.js.map +1 -0
- package/dist/components/app-shell/SplitPanel.d.ts +121 -0
- package/dist/components/app-shell/SplitPanel.d.ts.map +1 -0
- package/dist/components/app-shell/SplitPanel.js +88 -0
- package/dist/components/app-shell/SplitPanel.js.map +1 -0
- package/dist/components/app-shell/TopBar.d.ts +43 -0
- package/dist/components/app-shell/TopBar.d.ts.map +1 -0
- package/dist/components/app-shell/TopBar.js +24 -0
- package/dist/components/app-shell/TopBar.js.map +1 -0
- package/dist/components/content/AspectRatio.d.ts +25 -0
- package/dist/components/content/AspectRatio.d.ts.map +1 -0
- package/dist/components/content/AspectRatio.js +7 -0
- package/dist/components/content/AspectRatio.js.map +1 -0
- package/dist/components/content/Avatar.d.ts +22 -0
- package/dist/components/content/Avatar.d.ts.map +1 -0
- package/dist/components/content/Avatar.js +23 -0
- package/dist/components/content/Avatar.js.map +1 -0
- package/dist/components/content/AvatarGroup.d.ts +42 -0
- package/dist/components/content/AvatarGroup.d.ts.map +1 -0
- package/dist/components/content/AvatarGroup.js +11 -0
- package/dist/components/content/AvatarGroup.js.map +1 -0
- package/dist/components/content/Badge.d.ts +41 -0
- package/dist/components/content/Badge.d.ts.map +1 -0
- package/dist/components/content/Badge.js +13 -0
- package/dist/components/content/Badge.js.map +1 -0
- package/dist/components/content/Card.d.ts +59 -0
- package/dist/components/content/Card.d.ts.map +1 -0
- package/dist/components/content/Card.js +20 -0
- package/dist/components/content/Card.js.map +1 -0
- package/dist/components/content/Carousel.d.ts +79 -0
- package/dist/components/content/Carousel.d.ts.map +1 -0
- package/dist/components/content/Carousel.js +172 -0
- package/dist/components/content/Carousel.js.map +1 -0
- package/dist/components/content/CodeView.d.ts +76 -0
- package/dist/components/content/CodeView.d.ts.map +1 -0
- package/dist/components/content/CodeView.js +12 -0
- package/dist/components/content/CodeView.js.map +1 -0
- package/dist/components/content/DescriptionList.d.ts +31 -0
- package/dist/components/content/DescriptionList.d.ts.map +1 -0
- package/dist/components/content/DescriptionList.js +10 -0
- package/dist/components/content/DescriptionList.js.map +1 -0
- package/dist/components/content/EditableList.d.ts +162 -0
- package/dist/components/content/EditableList.d.ts.map +1 -0
- package/dist/components/content/EditableList.js +241 -0
- package/dist/components/content/EditableList.js.map +1 -0
- package/dist/components/content/EmptyState.d.ts +31 -0
- package/dist/components/content/EmptyState.d.ts.map +1 -0
- package/dist/components/content/EmptyState.js +9 -0
- package/dist/components/content/EmptyState.js.map +1 -0
- package/dist/components/content/ErrorState.d.ts +52 -0
- package/dist/components/content/ErrorState.d.ts.map +1 -0
- package/dist/components/content/ErrorState.js +16 -0
- package/dist/components/content/ErrorState.js.map +1 -0
- package/dist/components/content/Grid.d.ts +57 -0
- package/dist/components/content/Grid.d.ts.map +1 -0
- package/dist/components/content/Grid.js +85 -0
- package/dist/components/content/Grid.js.map +1 -0
- package/dist/components/content/Heading.d.ts +43 -0
- package/dist/components/content/Heading.d.ts.map +1 -0
- package/dist/components/content/Heading.js +21 -0
- package/dist/components/content/Heading.js.map +1 -0
- package/dist/components/content/Image.d.ts +94 -0
- package/dist/components/content/Image.d.ts.map +1 -0
- package/dist/components/content/Image.js +41 -0
- package/dist/components/content/Image.js.map +1 -0
- package/dist/components/content/Kbd.d.ts +31 -0
- package/dist/components/content/Kbd.d.ts.map +1 -0
- package/dist/components/content/Kbd.js +13 -0
- package/dist/components/content/Kbd.js.map +1 -0
- package/dist/components/content/Keyboard.d.ts +32 -0
- package/dist/components/content/Keyboard.d.ts.map +1 -0
- package/dist/components/content/Keyboard.js +381 -0
- package/dist/components/content/Keyboard.js.map +1 -0
- package/dist/components/content/Link.d.ts +46 -0
- package/dist/components/content/Link.d.ts.map +1 -0
- package/dist/components/content/Link.js +38 -0
- package/dist/components/content/Link.js.map +1 -0
- package/dist/components/content/MediaCard.d.ts +56 -0
- package/dist/components/content/MediaCard.d.ts.map +1 -0
- package/dist/components/content/MediaCard.js +15 -0
- package/dist/components/content/MediaCard.js.map +1 -0
- package/dist/components/content/NotificationCenter.d.ts +68 -0
- package/dist/components/content/NotificationCenter.d.ts.map +1 -0
- package/dist/components/content/NotificationCenter.js +14 -0
- package/dist/components/content/NotificationCenter.js.map +1 -0
- package/dist/components/content/NotificationList.d.ts +111 -0
- package/dist/components/content/NotificationList.d.ts.map +1 -0
- package/dist/components/content/NotificationList.js +48 -0
- package/dist/components/content/NotificationList.js.map +1 -0
- package/dist/components/content/ScrollArea.d.ts +30 -0
- package/dist/components/content/ScrollArea.d.ts.map +1 -0
- package/dist/components/content/ScrollArea.js +7 -0
- package/dist/components/content/ScrollArea.js.map +1 -0
- package/dist/components/content/Separator.d.ts +19 -0
- package/dist/components/content/Separator.d.ts.map +1 -0
- package/dist/components/content/Separator.js +14 -0
- package/dist/components/content/Separator.js.map +1 -0
- package/dist/components/content/Skeleton.d.ts +24 -0
- package/dist/components/content/Skeleton.d.ts.map +1 -0
- package/dist/components/content/Skeleton.js +8 -0
- package/dist/components/content/Skeleton.js.map +1 -0
- package/dist/components/content/SortableList.d.ts +98 -0
- package/dist/components/content/SortableList.d.ts.map +1 -0
- package/dist/components/content/SortableList.js +46 -0
- package/dist/components/content/SortableList.js.map +1 -0
- package/dist/components/content/Stat.d.ts +46 -0
- package/dist/components/content/Stat.d.ts.map +1 -0
- package/dist/components/content/Stat.js +12 -0
- package/dist/components/content/Stat.js.map +1 -0
- package/dist/components/content/Table.d.ts +110 -0
- package/dist/components/content/Table.d.ts.map +1 -0
- package/dist/components/content/Table.js +66 -0
- package/dist/components/content/Table.js.map +1 -0
- package/dist/components/content/TagGroup.d.ts +120 -0
- package/dist/components/content/TagGroup.d.ts.map +1 -0
- package/dist/components/content/TagGroup.js +20 -0
- package/dist/components/content/TagGroup.js.map +1 -0
- package/dist/components/content/Text.d.ts +55 -0
- package/dist/components/content/Text.d.ts.map +1 -0
- package/dist/components/content/Text.js +27 -0
- package/dist/components/content/Text.js.map +1 -0
- package/dist/components/content/Timeline.d.ts +50 -0
- package/dist/components/content/Timeline.d.ts.map +1 -0
- package/dist/components/content/Timeline.js +15 -0
- package/dist/components/content/Timeline.js.map +1 -0
- package/dist/components/content/VirtualGrid.d.ts +171 -0
- package/dist/components/content/VirtualGrid.d.ts.map +1 -0
- package/dist/components/content/VirtualGrid.js +267 -0
- package/dist/components/content/VirtualGrid.js.map +1 -0
- package/dist/components/content/VisuallyHidden.d.ts +24 -0
- package/dist/components/content/VisuallyHidden.d.ts.map +1 -0
- package/dist/components/content/VisuallyHidden.js +3 -0
- package/dist/components/content/VisuallyHidden.js.map +1 -0
- package/dist/components/content/keyboardEditing.d.ts +15 -0
- package/dist/components/content/keyboardEditing.d.ts.map +1 -0
- package/dist/components/content/keyboardEditing.js +28 -0
- package/dist/components/content/keyboardEditing.js.map +1 -0
- package/dist/components/content/useDragToSelect.d.ts +41 -0
- package/dist/components/content/useDragToSelect.d.ts.map +1 -0
- package/dist/components/content/useDragToSelect.js +190 -0
- package/dist/components/content/useDragToSelect.js.map +1 -0
- package/dist/components/date-time/Calendar.d.ts +67 -0
- package/dist/components/date-time/Calendar.d.ts.map +1 -0
- package/dist/components/date-time/Calendar.js +28 -0
- package/dist/components/date-time/Calendar.js.map +1 -0
- package/dist/components/date-time/DatePicker.d.ts +57 -0
- package/dist/components/date-time/DatePicker.d.ts.map +1 -0
- package/dist/components/date-time/DatePicker.js +37 -0
- package/dist/components/date-time/DatePicker.js.map +1 -0
- package/dist/components/date-time/DateRangePicker.d.ts +91 -0
- package/dist/components/date-time/DateRangePicker.d.ts.map +1 -0
- package/dist/components/date-time/DateRangePicker.js +72 -0
- package/dist/components/date-time/DateRangePicker.js.map +1 -0
- package/dist/components/date-time/DateTimePicker.d.ts +55 -0
- package/dist/components/date-time/DateTimePicker.d.ts.map +1 -0
- package/dist/components/date-time/DateTimePicker.js +9 -0
- package/dist/components/date-time/DateTimePicker.js.map +1 -0
- package/dist/components/date-time/RangeCalendar.d.ts +50 -0
- package/dist/components/date-time/RangeCalendar.d.ts.map +1 -0
- package/dist/components/date-time/RangeCalendar.js +17 -0
- package/dist/components/date-time/RangeCalendar.js.map +1 -0
- package/dist/components/date-time/TimePicker.d.ts +47 -0
- package/dist/components/date-time/TimePicker.d.ts.map +1 -0
- package/dist/components/date-time/TimePicker.js +148 -0
- package/dist/components/date-time/TimePicker.js.map +1 -0
- package/dist/components/inputs/Checkbox.d.ts +140 -0
- package/dist/components/inputs/Checkbox.d.ts.map +1 -0
- package/dist/components/inputs/Checkbox.js +29 -0
- package/dist/components/inputs/Checkbox.js.map +1 -0
- package/dist/components/inputs/CheckboxCard.d.ts +17 -0
- package/dist/components/inputs/CheckboxCard.d.ts.map +1 -0
- package/dist/components/inputs/CheckboxCard.js +25 -0
- package/dist/components/inputs/CheckboxCard.js.map +1 -0
- package/dist/components/inputs/CheckboxGroup.d.ts +68 -0
- package/dist/components/inputs/CheckboxGroup.d.ts.map +1 -0
- package/dist/components/inputs/CheckboxGroup.js +14 -0
- package/dist/components/inputs/CheckboxGroup.js.map +1 -0
- package/dist/components/inputs/ChoiceCardBody.d.ts +16 -0
- package/dist/components/inputs/ChoiceCardBody.d.ts.map +1 -0
- package/dist/components/inputs/ChoiceCardBody.js +10 -0
- package/dist/components/inputs/ChoiceCardBody.js.map +1 -0
- package/dist/components/inputs/ColorPicker.d.ts +71 -0
- package/dist/components/inputs/ColorPicker.d.ts.map +1 -0
- package/dist/components/inputs/ColorPicker.js +30 -0
- package/dist/components/inputs/ColorPicker.js.map +1 -0
- package/dist/components/inputs/Combobox.d.ts +41 -0
- package/dist/components/inputs/Combobox.d.ts.map +1 -0
- package/dist/components/inputs/Combobox.js +16 -0
- package/dist/components/inputs/Combobox.js.map +1 -0
- package/dist/components/inputs/FileDropzone.d.ts +51 -0
- package/dist/components/inputs/FileDropzone.d.ts.map +1 -0
- package/dist/components/inputs/FileDropzone.js +75 -0
- package/dist/components/inputs/FileDropzone.js.map +1 -0
- package/dist/components/inputs/Form.d.ts +50 -0
- package/dist/components/inputs/Form.d.ts.map +1 -0
- package/dist/components/inputs/Form.js +14 -0
- package/dist/components/inputs/Form.js.map +1 -0
- package/dist/components/inputs/FormField.d.ts +89 -0
- package/dist/components/inputs/FormField.d.ts.map +1 -0
- package/dist/components/inputs/FormField.js +24 -0
- package/dist/components/inputs/FormField.js.map +1 -0
- package/dist/components/inputs/FormLayout.d.ts +47 -0
- package/dist/components/inputs/FormLayout.d.ts.map +1 -0
- package/dist/components/inputs/FormLayout.js +12 -0
- package/dist/components/inputs/FormLayout.js.map +1 -0
- package/dist/components/inputs/InlineEdit.d.ts +50 -0
- package/dist/components/inputs/InlineEdit.d.ts.map +1 -0
- package/dist/components/inputs/InlineEdit.js +70 -0
- package/dist/components/inputs/InlineEdit.js.map +1 -0
- package/dist/components/inputs/MaskedInput.d.ts +66 -0
- package/dist/components/inputs/MaskedInput.d.ts.map +1 -0
- package/dist/components/inputs/MaskedInput.js +73 -0
- package/dist/components/inputs/MaskedInput.js.map +1 -0
- package/dist/components/inputs/NumberInput.d.ts +53 -0
- package/dist/components/inputs/NumberInput.d.ts.map +1 -0
- package/dist/components/inputs/NumberInput.js +17 -0
- package/dist/components/inputs/NumberInput.js.map +1 -0
- package/dist/components/inputs/PasswordInput.d.ts +49 -0
- package/dist/components/inputs/PasswordInput.d.ts.map +1 -0
- package/dist/components/inputs/PasswordInput.js +49 -0
- package/dist/components/inputs/PasswordInput.js.map +1 -0
- package/dist/components/inputs/PhoneInput.d.ts +35 -0
- package/dist/components/inputs/PhoneInput.d.ts.map +1 -0
- package/dist/components/inputs/PhoneInput.js +9 -0
- package/dist/components/inputs/PhoneInput.js.map +1 -0
- package/dist/components/inputs/PinInput.d.ts +50 -0
- package/dist/components/inputs/PinInput.d.ts.map +1 -0
- package/dist/components/inputs/PinInput.js +67 -0
- package/dist/components/inputs/PinInput.js.map +1 -0
- package/dist/components/inputs/RadioGroup.d.ts +86 -0
- package/dist/components/inputs/RadioGroup.d.ts.map +1 -0
- package/dist/components/inputs/RadioGroup.js +51 -0
- package/dist/components/inputs/RadioGroup.js.map +1 -0
- package/dist/components/inputs/Rating.d.ts +69 -0
- package/dist/components/inputs/Rating.d.ts.map +1 -0
- package/dist/components/inputs/Rating.js +51 -0
- package/dist/components/inputs/Rating.js.map +1 -0
- package/dist/components/inputs/SearchControl.d.ts +85 -0
- package/dist/components/inputs/SearchControl.d.ts.map +1 -0
- package/dist/components/inputs/SearchControl.js +62 -0
- package/dist/components/inputs/SearchControl.js.map +1 -0
- package/dist/components/inputs/Select.d.ts +205 -0
- package/dist/components/inputs/Select.d.ts.map +1 -0
- package/dist/components/inputs/Select.js +136 -0
- package/dist/components/inputs/Select.js.map +1 -0
- package/dist/components/inputs/Slider.d.ts +59 -0
- package/dist/components/inputs/Slider.d.ts.map +1 -0
- package/dist/components/inputs/Slider.js +153 -0
- package/dist/components/inputs/Slider.js.map +1 -0
- package/dist/components/inputs/SwatchGroup.d.ts +101 -0
- package/dist/components/inputs/SwatchGroup.d.ts.map +1 -0
- package/dist/components/inputs/SwatchGroup.js +57 -0
- package/dist/components/inputs/SwatchGroup.js.map +1 -0
- package/dist/components/inputs/TagInput.d.ts +45 -0
- package/dist/components/inputs/TagInput.d.ts.map +1 -0
- package/dist/components/inputs/TagInput.js +56 -0
- package/dist/components/inputs/TagInput.js.map +1 -0
- package/dist/components/inputs/TextControl.d.ts +101 -0
- package/dist/components/inputs/TextControl.d.ts.map +1 -0
- package/dist/components/inputs/TextControl.js +31 -0
- package/dist/components/inputs/TextControl.js.map +1 -0
- package/dist/components/inputs/Transfer.d.ts +84 -0
- package/dist/components/inputs/Transfer.d.ts.map +1 -0
- package/dist/components/inputs/Transfer.js +112 -0
- package/dist/components/inputs/Transfer.js.map +1 -0
- package/dist/components/inputs/TreeSelect.d.ts +73 -0
- package/dist/components/inputs/TreeSelect.d.ts.map +1 -0
- package/dist/components/inputs/TreeSelect.js +60 -0
- package/dist/components/inputs/TreeSelect.js.map +1 -0
- package/dist/components/inputs/UploadQueue.d.ts +84 -0
- package/dist/components/inputs/UploadQueue.d.ts.map +1 -0
- package/dist/components/inputs/UploadQueue.js +30 -0
- package/dist/components/inputs/UploadQueue.js.map +1 -0
- package/dist/components/navigation/Accordion.d.ts +44 -0
- package/dist/components/navigation/Accordion.d.ts.map +1 -0
- package/dist/components/navigation/Accordion.js +12 -0
- package/dist/components/navigation/Accordion.js.map +1 -0
- package/dist/components/navigation/Breadcrumbs.d.ts +35 -0
- package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/navigation/Breadcrumbs.js +17 -0
- package/dist/components/navigation/Breadcrumbs.js.map +1 -0
- package/dist/components/navigation/ContextualSaveBar.d.ts +90 -0
- package/dist/components/navigation/ContextualSaveBar.d.ts.map +1 -0
- package/dist/components/navigation/ContextualSaveBar.js +20 -0
- package/dist/components/navigation/ContextualSaveBar.js.map +1 -0
- package/dist/components/navigation/PageHeader.d.ts +17 -0
- package/dist/components/navigation/PageHeader.d.ts.map +1 -0
- package/dist/components/navigation/PageHeader.js +8 -0
- package/dist/components/navigation/PageHeader.js.map +1 -0
- package/dist/components/navigation/Pagination.d.ts +44 -0
- package/dist/components/navigation/Pagination.d.ts.map +1 -0
- package/dist/components/navigation/Pagination.js +57 -0
- package/dist/components/navigation/Pagination.js.map +1 -0
- package/dist/components/navigation/SectionHeader.d.ts +32 -0
- package/dist/components/navigation/SectionHeader.d.ts.map +1 -0
- package/dist/components/navigation/SectionHeader.js +13 -0
- package/dist/components/navigation/SectionHeader.js.map +1 -0
- package/dist/components/navigation/SelectionBar.d.ts +65 -0
- package/dist/components/navigation/SelectionBar.d.ts.map +1 -0
- package/dist/components/navigation/SelectionBar.js +24 -0
- package/dist/components/navigation/SelectionBar.js.map +1 -0
- package/dist/components/navigation/Stepper.d.ts +45 -0
- package/dist/components/navigation/Stepper.d.ts.map +1 -0
- package/dist/components/navigation/Stepper.js +16 -0
- package/dist/components/navigation/Stepper.js.map +1 -0
- package/dist/components/navigation/Tabs.d.ts +45 -0
- package/dist/components/navigation/Tabs.d.ts.map +1 -0
- package/dist/components/navigation/Tabs.js +51 -0
- package/dist/components/navigation/Tabs.js.map +1 -0
- package/dist/components/navigation/TreeView.d.ts +101 -0
- package/dist/components/navigation/TreeView.d.ts.map +1 -0
- package/dist/components/navigation/TreeView.js +27 -0
- package/dist/components/navigation/TreeView.js.map +1 -0
- package/dist/components/overlays/CommandPalette.d.ts +115 -0
- package/dist/components/overlays/CommandPalette.d.ts.map +1 -0
- package/dist/components/overlays/CommandPalette.js +43 -0
- package/dist/components/overlays/CommandPalette.js.map +1 -0
- package/dist/components/overlays/ConfirmDialog.d.ts +67 -0
- package/dist/components/overlays/ConfirmDialog.d.ts.map +1 -0
- package/dist/components/overlays/ConfirmDialog.js +47 -0
- package/dist/components/overlays/ConfirmDialog.js.map +1 -0
- package/dist/components/overlays/ContextMenu.d.ts +122 -0
- package/dist/components/overlays/ContextMenu.d.ts.map +1 -0
- package/dist/components/overlays/ContextMenu.js +39 -0
- package/dist/components/overlays/ContextMenu.js.map +1 -0
- package/dist/components/overlays/Dialog.d.ts +113 -0
- package/dist/components/overlays/Dialog.d.ts.map +1 -0
- package/dist/components/overlays/Dialog.js +43 -0
- package/dist/components/overlays/Dialog.js.map +1 -0
- package/dist/components/overlays/Drawer.d.ts +53 -0
- package/dist/components/overlays/Drawer.d.ts.map +1 -0
- package/dist/components/overlays/Drawer.js +32 -0
- package/dist/components/overlays/Drawer.js.map +1 -0
- package/dist/components/overlays/HelpTooltip.d.ts +41 -0
- package/dist/components/overlays/HelpTooltip.d.ts.map +1 -0
- package/dist/components/overlays/HelpTooltip.js +10 -0
- package/dist/components/overlays/HelpTooltip.js.map +1 -0
- package/dist/components/overlays/HoverCard.d.ts +62 -0
- package/dist/components/overlays/HoverCard.d.ts.map +1 -0
- package/dist/components/overlays/HoverCard.js +175 -0
- package/dist/components/overlays/HoverCard.js.map +1 -0
- package/dist/components/overlays/Menu.d.ts +113 -0
- package/dist/components/overlays/Menu.d.ts.map +1 -0
- package/dist/components/overlays/Menu.js +26 -0
- package/dist/components/overlays/Menu.js.map +1 -0
- package/dist/components/overlays/ModalHeader.d.ts +77 -0
- package/dist/components/overlays/ModalHeader.d.ts.map +1 -0
- package/dist/components/overlays/ModalHeader.js +11 -0
- package/dist/components/overlays/ModalHeader.js.map +1 -0
- package/dist/components/overlays/ModalOverlay.d.ts +45 -0
- package/dist/components/overlays/ModalOverlay.d.ts.map +1 -0
- package/dist/components/overlays/ModalOverlay.js +29 -0
- package/dist/components/overlays/ModalOverlay.js.map +1 -0
- package/dist/components/overlays/Popover.d.ts +56 -0
- package/dist/components/overlays/Popover.d.ts.map +1 -0
- package/dist/components/overlays/Popover.js +16 -0
- package/dist/components/overlays/Popover.js.map +1 -0
- package/dist/components/overlays/ShortcutsHelp.d.ts +70 -0
- package/dist/components/overlays/ShortcutsHelp.d.ts.map +1 -0
- package/dist/components/overlays/ShortcutsHelp.js +20 -0
- package/dist/components/overlays/ShortcutsHelp.js.map +1 -0
- package/dist/components/overlays/Tooltip.d.ts +35 -0
- package/dist/components/overlays/Tooltip.d.ts.map +1 -0
- package/dist/components/overlays/Tooltip.js +18 -0
- package/dist/components/overlays/Tooltip.js.map +1 -0
- package/dist/components/table/DataTable.d.ts +60 -0
- package/dist/components/table/DataTable.d.ts.map +1 -0
- package/dist/components/table/DataTable.js +20 -0
- package/dist/components/table/DataTable.js.map +1 -0
- package/dist/components/table/FilterBar.d.ts +35 -0
- package/dist/components/table/FilterBar.d.ts.map +1 -0
- package/dist/components/table/FilterBar.js +17 -0
- package/dist/components/table/FilterBar.js.map +1 -0
- package/dist/components/table/FilterBarAdd.d.ts +57 -0
- package/dist/components/table/FilterBarAdd.d.ts.map +1 -0
- package/dist/components/table/FilterBarAdd.js +83 -0
- package/dist/components/table/FilterBarAdd.js.map +1 -0
- package/dist/components/table/SavedViews.d.ts +83 -0
- package/dist/components/table/SavedViews.d.ts.map +1 -0
- package/dist/components/table/SavedViews.js +12 -0
- package/dist/components/table/SavedViews.js.map +1 -0
- package/dist/components/table/TablePreferences.d.ts +45 -0
- package/dist/components/table/TablePreferences.d.ts.map +1 -0
- package/dist/components/table/TablePreferences.js +41 -0
- package/dist/components/table/TablePreferences.js.map +1 -0
- package/dist/components/table/TableToolbar.d.ts +38 -0
- package/dist/components/table/TableToolbar.d.ts.map +1 -0
- package/dist/components/table/TableToolbar.js +11 -0
- package/dist/components/table/TableToolbar.js.map +1 -0
- package/dist/editor/RichTextEditor.d.ts +274 -0
- package/dist/editor/RichTextEditor.d.ts.map +1 -0
- package/dist/editor/RichTextEditor.js +671 -0
- package/dist/editor/RichTextEditor.js.map +1 -0
- package/dist/editor/RichTextView.d.ts +70 -0
- package/dist/editor/RichTextView.d.ts.map +1 -0
- package/dist/editor/RichTextView.js +24 -0
- package/dist/editor/RichTextView.js.map +1 -0
- package/dist/editor/core/atomText.d.ts +21 -0
- package/dist/editor/core/atomText.d.ts.map +1 -0
- package/dist/editor/core/atomText.js +77 -0
- package/dist/editor/core/atomText.js.map +1 -0
- package/dist/editor/core/blockCommands.d.ts +94 -0
- package/dist/editor/core/blockCommands.d.ts.map +1 -0
- package/dist/editor/core/blockCommands.js +188 -0
- package/dist/editor/core/blockCommands.js.map +1 -0
- package/dist/editor/core/blockTypes.d.ts +89 -0
- package/dist/editor/core/blockTypes.d.ts.map +1 -0
- package/dist/editor/core/blockTypes.js +121 -0
- package/dist/editor/core/blockTypes.js.map +1 -0
- package/dist/editor/core/containers.d.ts +43 -0
- package/dist/editor/core/containers.d.ts.map +1 -0
- package/dist/editor/core/containers.js +52 -0
- package/dist/editor/core/containers.js.map +1 -0
- package/dist/editor/core/customMarkdown.d.ts +8 -0
- package/dist/editor/core/customMarkdown.d.ts.map +1 -0
- package/dist/editor/core/customMarkdown.js +34 -0
- package/dist/editor/core/customMarkdown.js.map +1 -0
- package/dist/editor/core/customTool.d.ts +407 -0
- package/dist/editor/core/customTool.d.ts.map +1 -0
- package/dist/editor/core/customTool.js +31 -0
- package/dist/editor/core/customTool.js.map +1 -0
- package/dist/editor/core/customToolEngine.d.ts +31 -0
- package/dist/editor/core/customToolEngine.d.ts.map +1 -0
- package/dist/editor/core/customToolEngine.js +324 -0
- package/dist/editor/core/customToolEngine.js.map +1 -0
- package/dist/editor/core/document.d.ts +17 -0
- package/dist/editor/core/document.d.ts.map +1 -0
- package/dist/editor/core/document.js +11 -0
- package/dist/editor/core/document.js.map +1 -0
- package/dist/editor/core/emptiness.d.ts +18 -0
- package/dist/editor/core/emptiness.d.ts.map +1 -0
- package/dist/editor/core/emptiness.js +14 -0
- package/dist/editor/core/emptiness.js.map +1 -0
- package/dist/editor/core/extensions.d.ts +78 -0
- package/dist/editor/core/extensions.d.ts.map +1 -0
- package/dist/editor/core/extensions.js +134 -0
- package/dist/editor/core/extensions.js.map +1 -0
- package/dist/editor/core/fieldNotice.d.ts +48 -0
- package/dist/editor/core/fieldNotice.d.ts.map +1 -0
- package/dist/editor/core/fieldNotice.js +18 -0
- package/dist/editor/core/fieldNotice.js.map +1 -0
- package/dist/editor/core/handle.d.ts +110 -0
- package/dist/editor/core/handle.d.ts.map +1 -0
- package/dist/editor/core/handle.js +149 -0
- package/dist/editor/core/handle.js.map +1 -0
- package/dist/editor/core/insertItems.d.ts +147 -0
- package/dist/editor/core/insertItems.d.ts.map +1 -0
- package/dist/editor/core/insertItems.js +215 -0
- package/dist/editor/core/insertItems.js.map +1 -0
- package/dist/editor/core/jsonDocument.d.ts +42 -0
- package/dist/editor/core/jsonDocument.d.ts.map +1 -0
- package/dist/editor/core/jsonDocument.js +44 -0
- package/dist/editor/core/jsonDocument.js.map +1 -0
- package/dist/editor/core/markdown.d.ts +47 -0
- package/dist/editor/core/markdown.d.ts.map +1 -0
- package/dist/editor/core/markdown.js +169 -0
- package/dist/editor/core/markdown.js.map +1 -0
- package/dist/editor/core/maxLength.d.ts +43 -0
- package/dist/editor/core/maxLength.d.ts.map +1 -0
- package/dist/editor/core/maxLength.js +45 -0
- package/dist/editor/core/maxLength.js.map +1 -0
- package/dist/editor/core/pasteTrim.d.ts +8 -0
- package/dist/editor/core/pasteTrim.d.ts.map +1 -0
- package/dist/editor/core/pasteTrim.js +61 -0
- package/dist/editor/core/pasteTrim.js.map +1 -0
- package/dist/editor/core/schema.d.ts +479 -0
- package/dist/editor/core/schema.d.ts.map +1 -0
- package/dist/editor/core/schema.js +371 -0
- package/dist/editor/core/schema.js.map +1 -0
- package/dist/editor/core/schemaConform.d.ts +30 -0
- package/dist/editor/core/schemaConform.d.ts.map +1 -0
- package/dist/editor/core/schemaConform.js +72 -0
- package/dist/editor/core/schemaConform.js.map +1 -0
- package/dist/editor/core/shortcuts.d.ts +110 -0
- package/dist/editor/core/shortcuts.d.ts.map +1 -0
- package/dist/editor/core/shortcuts.js +299 -0
- package/dist/editor/core/shortcuts.js.map +1 -0
- package/dist/editor/core/skeleton.d.ts +11 -0
- package/dist/editor/core/skeleton.d.ts.map +1 -0
- package/dist/editor/core/skeleton.js +48 -0
- package/dist/editor/core/skeleton.js.map +1 -0
- package/dist/editor/core/slashCommand.d.ts +46 -0
- package/dist/editor/core/slashCommand.d.ts.map +1 -0
- package/dist/editor/core/slashCommand.js +67 -0
- package/dist/editor/core/slashCommand.js.map +1 -0
- package/dist/editor/core/sourceFormat.d.ts +30 -0
- package/dist/editor/core/sourceFormat.d.ts.map +1 -0
- package/dist/editor/core/sourceFormat.js +136 -0
- package/dist/editor/core/sourceFormat.js.map +1 -0
- package/dist/editor/core/toolButtons.d.ts +58 -0
- package/dist/editor/core/toolButtons.d.ts.map +1 -0
- package/dist/editor/core/toolButtons.js +64 -0
- package/dist/editor/core/toolButtons.js.map +1 -0
- package/dist/editor/core/toolDescriptor.d.ts +304 -0
- package/dist/editor/core/toolDescriptor.d.ts.map +1 -0
- package/dist/editor/core/toolDescriptor.js +29 -0
- package/dist/editor/core/toolDescriptor.js.map +1 -0
- package/dist/editor/core/toolEntryShortcuts.d.ts +20 -0
- package/dist/editor/core/toolEntryShortcuts.d.ts.map +1 -0
- package/dist/editor/core/toolEntryShortcuts.js +46 -0
- package/dist/editor/core/toolEntryShortcuts.js.map +1 -0
- package/dist/editor/core/toolLoader.d.ts +14 -0
- package/dist/editor/core/toolLoader.d.ts.map +1 -0
- package/dist/editor/core/toolLoader.js +20 -0
- package/dist/editor/core/toolLoader.js.map +1 -0
- package/dist/editor/core/tools.d.ts +90 -0
- package/dist/editor/core/tools.d.ts.map +1 -0
- package/dist/editor/core/tools.js +56 -0
- package/dist/editor/core/tools.js.map +1 -0
- package/dist/editor/core/viewIsland.d.ts +17 -0
- package/dist/editor/core/viewIsland.d.ts.map +1 -0
- package/dist/editor/core/viewIsland.js +4 -0
- package/dist/editor/core/viewIsland.js.map +1 -0
- package/dist/editor/features/builtins.d.ts +25 -0
- package/dist/editor/features/builtins.d.ts.map +1 -0
- package/dist/editor/features/builtins.js +88 -0
- package/dist/editor/features/builtins.js.map +1 -0
- package/dist/editor/features/code/CodeBlockView.d.ts +38 -0
- package/dist/editor/features/code/CodeBlockView.d.ts.map +1 -0
- package/dist/editor/features/code/CodeBlockView.js +98 -0
- package/dist/editor/features/code/CodeBlockView.js.map +1 -0
- package/dist/editor/features/code/CodeCopyButton.d.ts +20 -0
- package/dist/editor/features/code/CodeCopyButton.d.ts.map +1 -0
- package/dist/editor/features/code/CodeCopyButton.js +29 -0
- package/dist/editor/features/code/CodeCopyButton.js.map +1 -0
- package/dist/editor/features/code/CodeCopyIsland.d.ts +37 -0
- package/dist/editor/features/code/CodeCopyIsland.d.ts.map +1 -0
- package/dist/editor/features/code/CodeCopyIsland.js +21 -0
- package/dist/editor/features/code/CodeCopyIsland.js.map +1 -0
- package/dist/editor/features/code/codeBlock.d.ts +25 -0
- package/dist/editor/features/code/codeBlock.d.ts.map +1 -0
- package/dist/editor/features/code/codeBlock.js +116 -0
- package/dist/editor/features/code/codeBlock.js.map +1 -0
- package/dist/editor/features/code/codeBlockTool.d.ts +24 -0
- package/dist/editor/features/code/codeBlockTool.d.ts.map +1 -0
- package/dist/editor/features/code/codeBlockTool.js +66 -0
- package/dist/editor/features/code/codeBlockTool.js.map +1 -0
- package/dist/editor/features/code/codeHeader.d.ts +41 -0
- package/dist/editor/features/code/codeHeader.d.ts.map +1 -0
- package/dist/editor/features/code/codeHeader.js +25 -0
- package/dist/editor/features/code/codeHeader.js.map +1 -0
- package/dist/editor/features/code/codeLanguages.d.ts +76 -0
- package/dist/editor/features/code/codeLanguages.d.ts.map +1 -0
- package/dist/editor/features/code/codeLanguages.js +24 -0
- package/dist/editor/features/code/codeLanguages.js.map +1 -0
- package/dist/editor/features/code/highlight.d.ts +20 -0
- package/dist/editor/features/code/highlight.d.ts.map +1 -0
- package/dist/editor/features/code/highlight.js +51 -0
- package/dist/editor/features/code/highlight.js.map +1 -0
- package/dist/editor/features/code/highlightNodes.d.ts +31 -0
- package/dist/editor/features/code/highlightNodes.d.ts.map +1 -0
- package/dist/editor/features/code/highlightNodes.js +25 -0
- package/dist/editor/features/code/highlightNodes.js.map +1 -0
- package/dist/editor/features/code/lowlight.d.ts +20 -0
- package/dist/editor/features/code/lowlight.d.ts.map +1 -0
- package/dist/editor/features/code/lowlight.js +26 -0
- package/dist/editor/features/code/lowlight.js.map +1 -0
- package/dist/editor/features/color/CustomColorPopover.d.ts +40 -0
- package/dist/editor/features/color/CustomColorPopover.d.ts.map +1 -0
- package/dist/editor/features/color/CustomColorPopover.js +70 -0
- package/dist/editor/features/color/CustomColorPopover.js.map +1 -0
- package/dist/editor/features/color/contrast.d.ts +26 -0
- package/dist/editor/features/color/contrast.d.ts.map +1 -0
- package/dist/editor/features/color/contrast.js +27 -0
- package/dist/editor/features/color/contrast.js.map +1 -0
- package/dist/editor/features/color/customColor.d.ts +65 -0
- package/dist/editor/features/color/customColor.d.ts.map +1 -0
- package/dist/editor/features/color/customColor.js +29 -0
- package/dist/editor/features/color/customColor.js.map +1 -0
- package/dist/editor/features/color/styleExtensions.d.ts +28 -0
- package/dist/editor/features/color/styleExtensions.d.ts.map +1 -0
- package/dist/editor/features/color/styleExtensions.js +172 -0
- package/dist/editor/features/color/styleExtensions.js.map +1 -0
- package/dist/editor/features/emoji/EmojiGrid.d.ts +34 -0
- package/dist/editor/features/emoji/EmojiGrid.d.ts.map +1 -0
- package/dist/editor/features/emoji/EmojiGrid.js +71 -0
- package/dist/editor/features/emoji/EmojiGrid.js.map +1 -0
- package/dist/editor/features/emoji/emoji.d.ts +47 -0
- package/dist/editor/features/emoji/emoji.d.ts.map +1 -0
- package/dist/editor/features/emoji/emoji.js +108 -0
- package/dist/editor/features/emoji/emoji.js.map +1 -0
- package/dist/editor/features/emoji/emojiTool.d.ts +32 -0
- package/dist/editor/features/emoji/emojiTool.d.ts.map +1 -0
- package/dist/editor/features/emoji/emojiTool.js +34 -0
- package/dist/editor/features/emoji/emojiTool.js.map +1 -0
- package/dist/editor/features/image/ImagePopover.d.ts +29 -0
- package/dist/editor/features/image/ImagePopover.d.ts.map +1 -0
- package/dist/editor/features/image/ImagePopover.js +89 -0
- package/dist/editor/features/image/ImagePopover.js.map +1 -0
- package/dist/editor/features/image/ImageToolbar.d.ts +25 -0
- package/dist/editor/features/image/ImageToolbar.d.ts.map +1 -0
- package/dist/editor/features/image/ImageToolbar.js +49 -0
- package/dist/editor/features/image/ImageToolbar.js.map +1 -0
- package/dist/editor/features/image/image.d.ts +115 -0
- package/dist/editor/features/image/image.d.ts.map +1 -0
- package/dist/editor/features/image/image.js +539 -0
- package/dist/editor/features/image/image.js.map +1 -0
- package/dist/editor/features/image/imageNotice.d.ts +6 -0
- package/dist/editor/features/image/imageNotice.d.ts.map +1 -0
- package/dist/editor/features/image/imageNotice.js +16 -0
- package/dist/editor/features/image/imageNotice.js.map +1 -0
- package/dist/editor/features/layout/columnLayouts.d.ts +36 -0
- package/dist/editor/features/layout/columnLayouts.d.ts.map +1 -0
- package/dist/editor/features/layout/columnLayouts.js +33 -0
- package/dist/editor/features/layout/columnLayouts.js.map +1 -0
- package/dist/editor/features/layout/layout.d.ts +81 -0
- package/dist/editor/features/layout/layout.d.ts.map +1 -0
- package/dist/editor/features/layout/layout.js +318 -0
- package/dist/editor/features/layout/layout.js.map +1 -0
- package/dist/editor/features/link/LinkPopover.d.ts +21 -0
- package/dist/editor/features/link/LinkPopover.d.ts.map +1 -0
- package/dist/editor/features/link/LinkPopover.js +54 -0
- package/dist/editor/features/link/LinkPopover.js.map +1 -0
- package/dist/editor/features/link/link.d.ts +41 -0
- package/dist/editor/features/link/link.d.ts.map +1 -0
- package/dist/editor/features/link/link.js +66 -0
- package/dist/editor/features/link/link.js.map +1 -0
- package/dist/editor/features/link/linkTool.d.ts +13 -0
- package/dist/editor/features/link/linkTool.d.ts.map +1 -0
- package/dist/editor/features/link/linkTool.js +25 -0
- package/dist/editor/features/link/linkTool.js.map +1 -0
- package/dist/editor/features/search/SearchPanel.d.ts +31 -0
- package/dist/editor/features/search/SearchPanel.d.ts.map +1 -0
- package/dist/editor/features/search/SearchPanel.js +101 -0
- package/dist/editor/features/search/SearchPanel.js.map +1 -0
- package/dist/editor/features/search/revealMatch.d.ts +25 -0
- package/dist/editor/features/search/revealMatch.d.ts.map +1 -0
- package/dist/editor/features/search/revealMatch.js +41 -0
- package/dist/editor/features/search/revealMatch.js.map +1 -0
- package/dist/editor/features/search/searchMatch.d.ts +53 -0
- package/dist/editor/features/search/searchMatch.d.ts.map +1 -0
- package/dist/editor/features/search/searchMatch.js +67 -0
- package/dist/editor/features/search/searchMatch.js.map +1 -0
- package/dist/editor/features/search/searchPlugin.d.ts +48 -0
- package/dist/editor/features/search/searchPlugin.d.ts.map +1 -0
- package/dist/editor/features/search/searchPlugin.js +151 -0
- package/dist/editor/features/search/searchPlugin.js.map +1 -0
- package/dist/editor/features/search/searchTool.d.ts +13 -0
- package/dist/editor/features/search/searchTool.d.ts.map +1 -0
- package/dist/editor/features/search/searchTool.js +18 -0
- package/dist/editor/features/search/searchTool.js.map +1 -0
- package/dist/editor/features/table/TableInsertDialog.d.ts +29 -0
- package/dist/editor/features/table/TableInsertDialog.d.ts.map +1 -0
- package/dist/editor/features/table/TableInsertDialog.js +37 -0
- package/dist/editor/features/table/TableInsertDialog.js.map +1 -0
- package/dist/editor/features/table/TableMenuButton.d.ts +40 -0
- package/dist/editor/features/table/TableMenuButton.d.ts.map +1 -0
- package/dist/editor/features/table/TableMenuButton.js +97 -0
- package/dist/editor/features/table/TableMenuButton.js.map +1 -0
- package/dist/editor/features/table/TableSizeGrid.d.ts +60 -0
- package/dist/editor/features/table/TableSizeGrid.d.ts.map +1 -0
- package/dist/editor/features/table/TableSizeGrid.js +88 -0
- package/dist/editor/features/table/TableSizeGrid.js.map +1 -0
- package/dist/editor/features/table/tableActions.d.ts +110 -0
- package/dist/editor/features/table/tableActions.d.ts.map +1 -0
- package/dist/editor/features/table/tableActions.js +254 -0
- package/dist/editor/features/table/tableActions.js.map +1 -0
- package/dist/editor/features/table/tableCells.d.ts +41 -0
- package/dist/editor/features/table/tableCells.d.ts.map +1 -0
- package/dist/editor/features/table/tableCells.js +38 -0
- package/dist/editor/features/table/tableCells.js.map +1 -0
- package/dist/editor/features/table/tableChunk.d.ts +4 -0
- package/dist/editor/features/table/tableChunk.d.ts.map +1 -0
- package/dist/editor/features/table/tableChunk.js +5 -0
- package/dist/editor/features/table/tableChunk.js.map +1 -0
- package/dist/editor/features/table/tableTool.d.ts +22 -0
- package/dist/editor/features/table/tableTool.d.ts.map +1 -0
- package/dist/editor/features/table/tableTool.js +42 -0
- package/dist/editor/features/table/tableTool.js.map +1 -0
- package/dist/editor/features/table/tables.d.ts +79 -0
- package/dist/editor/features/table/tables.d.ts.map +1 -0
- package/dist/editor/features/table/tables.js +118 -0
- package/dist/editor/features/table/tables.js.map +1 -0
- package/dist/editor/features/wrapper/wrapper.d.ts +73 -0
- package/dist/editor/features/wrapper/wrapper.d.ts.map +1 -0
- package/dist/editor/features/wrapper/wrapper.js +198 -0
- package/dist/editor/features/wrapper/wrapper.js.map +1 -0
- package/dist/editor/features/wrapper/wrapperTones.d.ts +39 -0
- package/dist/editor/features/wrapper/wrapperTones.d.ts.map +1 -0
- package/dist/editor/features/wrapper/wrapperTones.js +19 -0
- package/dist/editor/features/wrapper/wrapperTones.js.map +1 -0
- package/dist/editor/highlight-entry.d.ts +24 -0
- package/dist/editor/highlight-entry.d.ts.map +1 -0
- package/dist/editor/highlight-entry.js +3 -0
- package/dist/editor/highlight-entry.js.map +1 -0
- package/dist/editor/hooks/useChangeThrottle.d.ts +24 -0
- package/dist/editor/hooks/useChangeThrottle.d.ts.map +1 -0
- package/dist/editor/hooks/useChangeThrottle.js +35 -0
- package/dist/editor/hooks/useChangeThrottle.js.map +1 -0
- package/dist/editor/hooks/useCoarsePointer.d.ts +17 -0
- package/dist/editor/hooks/useCoarsePointer.d.ts.map +1 -0
- package/dist/editor/hooks/useCoarsePointer.js +19 -0
- package/dist/editor/hooks/useCoarsePointer.js.map +1 -0
- package/dist/editor/hooks/useFieldsetDisabled.d.ts +22 -0
- package/dist/editor/hooks/useFieldsetDisabled.d.ts.map +1 -0
- package/dist/editor/hooks/useFieldsetDisabled.js +29 -0
- package/dist/editor/hooks/useFieldsetDisabled.js.map +1 -0
- package/dist/editor/hooks/useRichTextEditorState.d.ts +25 -0
- package/dist/editor/hooks/useRichTextEditorState.d.ts.map +1 -0
- package/dist/editor/hooks/useRichTextEditorState.js +17 -0
- package/dist/editor/hooks/useRichTextEditorState.js.map +1 -0
- package/dist/editor/hooks/useSubmenuPlacement.d.ts +19 -0
- package/dist/editor/hooks/useSubmenuPlacement.d.ts.map +1 -0
- package/dist/editor/hooks/useSubmenuPlacement.js +20 -0
- package/dist/editor/hooks/useSubmenuPlacement.js.map +1 -0
- package/dist/editor/index.d.ts +32 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +7 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/schema-entry.d.ts +29 -0
- package/dist/editor/schema-entry.d.ts.map +1 -0
- package/dist/editor/schema-entry.js +3 -0
- package/dist/editor/schema-entry.js.map +1 -0
- package/dist/editor/styles/codeTheme.d.ts +49 -0
- package/dist/editor/styles/codeTheme.d.ts.map +1 -0
- package/dist/editor/styles/codeTheme.js +11 -0
- package/dist/editor/styles/codeTheme.js.map +1 -0
- package/dist/editor/styles/glass.d.ts +40 -0
- package/dist/editor/styles/glass.d.ts.map +1 -0
- package/dist/editor/styles/glass.js +15 -0
- package/dist/editor/styles/glass.js.map +1 -0
- package/dist/editor/styles/palette.d.ts +181 -0
- package/dist/editor/styles/palette.d.ts.map +1 -0
- package/dist/editor/styles/palette.js +57 -0
- package/dist/editor/styles/palette.js.map +1 -0
- package/dist/editor/styles/prose.d.ts +56 -0
- package/dist/editor/styles/prose.d.ts.map +1 -0
- package/dist/editor/styles/prose.js +154 -0
- package/dist/editor/styles/prose.js.map +1 -0
- package/dist/editor/styles/surface.d.ts +22 -0
- package/dist/editor/styles/surface.d.ts.map +1 -0
- package/dist/editor/styles/surface.js +4 -0
- package/dist/editor/styles/surface.js.map +1 -0
- package/dist/editor/styles/tokens.d.ts +136 -0
- package/dist/editor/styles/tokens.d.ts.map +1 -0
- package/dist/editor/styles/tokens.js +38 -0
- package/dist/editor/styles/tokens.js.map +1 -0
- package/dist/editor/ui/BlockHandle.d.ts +40 -0
- package/dist/editor/ui/BlockHandle.d.ts.map +1 -0
- package/dist/editor/ui/BlockHandle.js +394 -0
- package/dist/editor/ui/BlockHandle.js.map +1 -0
- package/dist/editor/ui/BlockIsland.d.ts +3 -0
- package/dist/editor/ui/BlockIsland.d.ts.map +1 -0
- package/dist/editor/ui/BlockIsland.js +8 -0
- package/dist/editor/ui/BlockIsland.js.map +1 -0
- package/dist/editor/ui/BlockIslandSlots.d.ts +31 -0
- package/dist/editor/ui/BlockIslandSlots.d.ts.map +1 -0
- package/dist/editor/ui/BlockIslandSlots.js +61 -0
- package/dist/editor/ui/BlockIslandSlots.js.map +1 -0
- package/dist/editor/ui/ColorMenus.d.ts +18 -0
- package/dist/editor/ui/ColorMenus.d.ts.map +1 -0
- package/dist/editor/ui/ColorMenus.js +281 -0
- package/dist/editor/ui/ColorMenus.js.map +1 -0
- package/dist/editor/ui/EditorToolbar.d.ts +71 -0
- package/dist/editor/ui/EditorToolbar.d.ts.map +1 -0
- package/dist/editor/ui/EditorToolbar.js +197 -0
- package/dist/editor/ui/EditorToolbar.js.map +1 -0
- package/dist/editor/ui/FieldResizer.d.ts +22 -0
- package/dist/editor/ui/FieldResizer.d.ts.map +1 -0
- package/dist/editor/ui/FieldResizer.js +75 -0
- package/dist/editor/ui/FieldResizer.js.map +1 -0
- package/dist/editor/ui/FieldStatus.d.ts +32 -0
- package/dist/editor/ui/FieldStatus.d.ts.map +1 -0
- package/dist/editor/ui/FieldStatus.js +15 -0
- package/dist/editor/ui/FieldStatus.js.map +1 -0
- package/dist/editor/ui/FloatingToolbar.d.ts +32 -0
- package/dist/editor/ui/FloatingToolbar.d.ts.map +1 -0
- package/dist/editor/ui/FloatingToolbar.js +17 -0
- package/dist/editor/ui/FloatingToolbar.js.map +1 -0
- package/dist/editor/ui/FormatMenus.d.ts +210 -0
- package/dist/editor/ui/FormatMenus.d.ts.map +1 -0
- package/dist/editor/ui/FormatMenus.js +296 -0
- package/dist/editor/ui/FormatMenus.js.map +1 -0
- package/dist/editor/ui/InsertMenuButton.d.ts +25 -0
- package/dist/editor/ui/InsertMenuButton.d.ts.map +1 -0
- package/dist/editor/ui/InsertMenuButton.js +28 -0
- package/dist/editor/ui/InsertMenuButton.js.map +1 -0
- package/dist/editor/ui/SelectionBubble.d.ts +46 -0
- package/dist/editor/ui/SelectionBubble.d.ts.map +1 -0
- package/dist/editor/ui/SelectionBubble.js +90 -0
- package/dist/editor/ui/SelectionBubble.js.map +1 -0
- package/dist/editor/ui/ShortcutsButton.d.ts +29 -0
- package/dist/editor/ui/ShortcutsButton.d.ts.map +1 -0
- package/dist/editor/ui/ShortcutsButton.js +34 -0
- package/dist/editor/ui/ShortcutsButton.js.map +1 -0
- package/dist/editor/ui/SlashMenu.d.ts +42 -0
- package/dist/editor/ui/SlashMenu.d.ts.map +1 -0
- package/dist/editor/ui/SlashMenu.js +114 -0
- package/dist/editor/ui/SlashMenu.js.map +1 -0
- package/dist/editor/ui/SuggestionList.d.ts +60 -0
- package/dist/editor/ui/SuggestionList.d.ts.map +1 -0
- package/dist/editor/ui/SuggestionList.js +61 -0
- package/dist/editor/ui/SuggestionList.js.map +1 -0
- package/dist/editor/ui/TextCard.d.ts +20 -0
- package/dist/editor/ui/TextCard.d.ts.map +1 -0
- package/dist/editor/ui/TextCard.js +192 -0
- package/dist/editor/ui/TextCard.js.map +1 -0
- package/dist/editor/ui/ToolButtonView.d.ts +58 -0
- package/dist/editor/ui/ToolButtonView.d.ts.map +1 -0
- package/dist/editor/ui/ToolButtonView.js +86 -0
- package/dist/editor/ui/ToolButtonView.js.map +1 -0
- package/dist/editor/ui/TriggerMenu.d.ts +25 -0
- package/dist/editor/ui/TriggerMenu.d.ts.map +1 -0
- package/dist/editor/ui/TriggerMenu.js +180 -0
- package/dist/editor/ui/TriggerMenu.js.map +1 -0
- package/dist/editor/ui/focusWithin.d.ts +22 -0
- package/dist/editor/ui/focusWithin.d.ts.map +1 -0
- package/dist/editor/ui/focusWithin.js +5 -0
- package/dist/editor/ui/focusWithin.js.map +1 -0
- package/dist/editor/ui/lockableMenu.d.ts +28 -0
- package/dist/editor/ui/lockableMenu.d.ts.map +1 -0
- package/dist/editor/ui/lockableMenu.js +17 -0
- package/dist/editor/ui/lockableMenu.js.map +1 -0
- package/dist/editor/ui/rowMarks.d.ts +21 -0
- package/dist/editor/ui/rowMarks.d.ts.map +1 -0
- package/dist/editor/ui/rowMarks.js +35 -0
- package/dist/editor/ui/rowMarks.js.map +1 -0
- package/dist/editor/ui/selectionMenu.d.ts +61 -0
- package/dist/editor/ui/selectionMenu.d.ts.map +1 -0
- package/dist/editor/ui/selectionMenu.js +32 -0
- package/dist/editor/ui/selectionMenu.js.map +1 -0
- package/dist/hooks/useFieldDescription.d.ts +45 -0
- package/dist/hooks/useFieldDescription.d.ts.map +1 -0
- package/dist/hooks/useFieldDescription.js +23 -0
- package/dist/hooks/useFieldDescription.js.map +1 -0
- package/dist/hooks/useMediaQuery.d.ts +25 -0
- package/dist/hooks/useMediaQuery.d.ts.map +1 -0
- package/dist/hooks/useMediaQuery.js +14 -0
- package/dist/hooks/useMediaQuery.js.map +1 -0
- package/dist/hooks/useOpenerFocus.d.ts +10 -0
- package/dist/hooks/useOpenerFocus.d.ts.map +1 -0
- package/dist/hooks/useOpenerFocus.js +35 -0
- package/dist/hooks/useOpenerFocus.js.map +1 -0
- package/dist/hooks/useOverlayLayer.d.ts +23 -0
- package/dist/hooks/useOverlayLayer.d.ts.map +1 -0
- package/dist/hooks/useOverlayLayer.js +19 -0
- package/dist/hooks/useOverlayLayer.js.map +1 -0
- package/dist/hooks/useScrollLock.d.ts +3 -0
- package/dist/hooks/useScrollLock.d.ts.map +1 -0
- package/dist/hooks/useScrollLock.js +52 -0
- package/dist/hooks/useScrollLock.js.map +1 -0
- package/dist/hooks/useStickyOffset.d.ts +53 -0
- package/dist/hooks/useStickyOffset.d.ts.map +1 -0
- package/dist/hooks/useStickyOffset.js +91 -0
- package/dist/hooks/useStickyOffset.js.map +1 -0
- package/dist/hooks/useTableState.d.ts +35 -0
- package/dist/hooks/useTableState.d.ts.map +1 -0
- package/dist/hooks/useTableState.js +23 -0
- package/dist/hooks/useTableState.js.map +1 -0
- package/dist/i18n/UiProvider.d.ts +53 -0
- package/dist/i18n/UiProvider.d.ts.map +1 -0
- package/dist/i18n/UiProvider.js +63 -0
- package/dist/i18n/UiProvider.js.map +1 -0
- package/dist/i18n/context.d.ts +26 -0
- package/dist/i18n/context.d.ts.map +1 -0
- package/dist/i18n/context.js +4 -0
- package/dist/i18n/context.js.map +1 -0
- package/dist/i18n/defaults.d.ts +19 -0
- package/dist/i18n/defaults.d.ts.map +1 -0
- package/dist/i18n/defaults.js +574 -0
- package/dist/i18n/defaults.js.map +1 -0
- package/dist/i18n/messages.d.ts +1178 -0
- package/dist/i18n/messages.d.ts.map +1 -0
- package/dist/i18n/messages.js +2 -0
- package/dist/i18n/messages.js.map +1 -0
- package/dist/i18n/useMessages.d.ts +26 -0
- package/dist/i18n/useMessages.d.ts.map +1 -0
- package/dist/i18n/useMessages.js +22 -0
- package/dist/i18n/useMessages.js.map +1 -0
- package/dist/icons.d.ts +437 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +2 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +250 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/accessible-name.d.ts +34 -0
- package/dist/lib/accessible-name.d.ts.map +1 -0
- package/dist/lib/accessible-name.js +2 -0
- package/dist/lib/accessible-name.js.map +1 -0
- package/dist/lib/bottom-bar-slot.d.ts +24 -0
- package/dist/lib/bottom-bar-slot.d.ts.map +1 -0
- package/dist/lib/bottom-bar-slot.js +4 -0
- package/dist/lib/bottom-bar-slot.js.map +1 -0
- package/dist/lib/button.d.ts +36 -0
- package/dist/lib/button.d.ts.map +1 -0
- package/dist/lib/button.js +35 -0
- package/dist/lib/button.js.map +1 -0
- package/dist/lib/choice-card.d.ts +64 -0
- package/dist/lib/choice-card.d.ts.map +1 -0
- package/dist/lib/choice-card.js +15 -0
- package/dist/lib/choice-card.js.map +1 -0
- package/dist/lib/clamp.d.ts +17 -0
- package/dist/lib/clamp.d.ts.map +1 -0
- package/dist/lib/clamp.js +4 -0
- package/dist/lib/clamp.js.map +1 -0
- package/dist/lib/cn.d.ts +12 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/cn.js +14 -0
- package/dist/lib/cn.js.map +1 -0
- package/dist/lib/date.d.ts +61 -0
- package/dist/lib/date.d.ts.map +1 -0
- package/dist/lib/date.js +30 -0
- package/dist/lib/date.js.map +1 -0
- package/dist/lib/dev-warn.d.ts +26 -0
- package/dist/lib/dev-warn.d.ts.map +1 -0
- package/dist/lib/dev-warn.js +28 -0
- package/dist/lib/dev-warn.js.map +1 -0
- package/dist/lib/empty.d.ts +35 -0
- package/dist/lib/empty.d.ts.map +1 -0
- package/dist/lib/empty.js +11 -0
- package/dist/lib/empty.js.map +1 -0
- package/dist/lib/field.d.ts +105 -0
- package/dist/lib/field.d.ts.map +1 -0
- package/dist/lib/field.js +18 -0
- package/dist/lib/field.js.map +1 -0
- package/dist/lib/filter-range.d.ts +24 -0
- package/dist/lib/filter-range.d.ts.map +1 -0
- package/dist/lib/filter-range.js +27 -0
- package/dist/lib/filter-range.js.map +1 -0
- package/dist/lib/interaction-modality.d.ts +40 -0
- package/dist/lib/interaction-modality.d.ts.map +1 -0
- package/dist/lib/interaction-modality.js +60 -0
- package/dist/lib/interaction-modality.js.map +1 -0
- package/dist/lib/mask.d.ts +94 -0
- package/dist/lib/mask.d.ts.map +1 -0
- package/dist/lib/mask.js +114 -0
- package/dist/lib/mask.js.map +1 -0
- package/dist/lib/menu.d.ts +85 -0
- package/dist/lib/menu.d.ts.map +1 -0
- package/dist/lib/menu.js +33 -0
- package/dist/lib/menu.js.map +1 -0
- package/dist/lib/overlay-layer.d.ts +101 -0
- package/dist/lib/overlay-layer.d.ts.map +1 -0
- package/dist/lib/overlay-layer.js +40 -0
- package/dist/lib/overlay-layer.js.map +1 -0
- package/dist/lib/period.d.ts +82 -0
- package/dist/lib/period.d.ts.map +1 -0
- package/dist/lib/period.js +58 -0
- package/dist/lib/period.js.map +1 -0
- package/dist/lib/progress-status.d.ts +38 -0
- package/dist/lib/progress-status.d.ts.map +1 -0
- package/dist/lib/progress-status.js +7 -0
- package/dist/lib/progress-status.js.map +1 -0
- package/dist/lib/published-height.d.ts +16 -0
- package/dist/lib/published-height.d.ts.map +1 -0
- package/dist/lib/published-height.js +72 -0
- package/dist/lib/published-height.js.map +1 -0
- package/dist/lib/reorder.d.ts +44 -0
- package/dist/lib/reorder.d.ts.map +1 -0
- package/dist/lib/reorder.js +22 -0
- package/dist/lib/reorder.js.map +1 -0
- package/dist/lib/responsive.d.ts +51 -0
- package/dist/lib/responsive.d.ts.map +1 -0
- package/dist/lib/responsive.js +12 -0
- package/dist/lib/responsive.js.map +1 -0
- package/dist/lib/state.d.ts +25 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +21 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/table-state.d.ts +105 -0
- package/dist/lib/table-state.d.ts.map +1 -0
- package/dist/lib/table-state.js +121 -0
- package/dist/lib/table-state.js.map +1 -0
- package/dist/lib/tag.d.ts +25 -0
- package/dist/lib/tag.d.ts.map +1 -0
- package/dist/lib/tag.js +6 -0
- package/dist/lib/tag.js.map +1 -0
- package/dist/lib/themes.d.ts +54 -0
- package/dist/lib/themes.d.ts.map +1 -0
- package/dist/lib/themes.js +40 -0
- package/dist/lib/themes.js.map +1 -0
- package/dist/lib/time.d.ts +35 -0
- package/dist/lib/time.d.ts.map +1 -0
- package/dist/lib/time.js +68 -0
- package/dist/lib/time.js.map +1 -0
- package/dist/lib/toolbar-axis.d.ts +17 -0
- package/dist/lib/toolbar-axis.d.ts.map +1 -0
- package/dist/lib/toolbar-axis.js +10 -0
- package/dist/lib/toolbar-axis.js.map +1 -0
- package/dist/lib/touch.d.ts +16 -0
- package/dist/lib/touch.d.ts.map +1 -0
- package/dist/lib/touch.js +2 -0
- package/dist/lib/touch.js.map +1 -0
- package/dist/lib/variants.d.ts +204 -0
- package/dist/lib/variants.d.ts.map +1 -0
- package/dist/lib/variants.js +127 -0
- package/dist/lib/variants.js.map +1 -0
- package/dist/locales/en.d.ts +11 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +3 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/locales/ru.d.ts +5 -0
- package/dist/locales/ru.d.ts.map +1 -0
- package/dist/locales/ru.js +591 -0
- package/dist/locales/ru.js.map +1 -0
- package/docs/accessibility.en.md +79 -0
- package/docs/accessibility.md +73 -0
- package/docs/api/editor-extension.en.md +309 -0
- package/docs/api/editor-extension.md +308 -0
- package/docs/api/messages.md +750 -0
- package/docs/api/migration-notes.en.md +885 -0
- package/docs/api/migration-notes.md +890 -0
- package/docs/api/utilities.md +252 -0
- package/docs/component-selection.en.md +48 -0
- package/docs/component-selection.md +44 -0
- package/docs/components/actions/button.en.md +59 -0
- package/docs/components/actions/button.md +58 -0
- package/docs/components/actions/chip.en.md +47 -0
- package/docs/components/actions/chip.md +46 -0
- package/docs/components/actions/copy-and-truncate.en.md +98 -0
- package/docs/components/actions/copy-and-truncate.md +96 -0
- package/docs/components/actions/feedback.en.md +69 -0
- package/docs/components/actions/feedback.md +68 -0
- package/docs/components/actions/split-button.en.md +76 -0
- package/docs/components/actions/split-button.md +75 -0
- package/docs/components/actions/toggles.en.md +139 -0
- package/docs/components/actions/toggles.md +136 -0
- package/docs/components/actions/toolbar.en.md +197 -0
- package/docs/components/actions/toolbar.md +192 -0
- package/docs/components/app-shell/app-shell.en.md +172 -0
- package/docs/components/app-shell/app-shell.md +172 -0
- package/docs/components/app-shell/mobile-tab-bar.en.md +207 -0
- package/docs/components/app-shell/mobile-tab-bar.md +210 -0
- package/docs/components/app-shell/side-nav.en.md +153 -0
- package/docs/components/app-shell/side-nav.md +152 -0
- package/docs/components/app-shell/split-panel.en.md +148 -0
- package/docs/components/app-shell/split-panel.md +147 -0
- package/docs/components/app-shell/top-bar.en.md +103 -0
- package/docs/components/app-shell/top-bar.md +100 -0
- package/docs/components/content/avatar.en.md +123 -0
- package/docs/components/content/avatar.md +119 -0
- package/docs/components/content/card.en.md +123 -0
- package/docs/components/content/card.md +122 -0
- package/docs/components/content/carousel.en.md +236 -0
- package/docs/components/content/carousel.md +227 -0
- package/docs/components/content/code-view.en.md +177 -0
- package/docs/components/content/code-view.md +172 -0
- package/docs/components/content/data-display.en.md +205 -0
- package/docs/components/content/data-display.md +212 -0
- package/docs/components/content/editable-list.en.md +437 -0
- package/docs/components/content/editable-list.md +418 -0
- package/docs/components/content/empty-and-loading.en.md +149 -0
- package/docs/components/content/empty-and-loading.md +149 -0
- package/docs/components/content/grid.en.md +148 -0
- package/docs/components/content/grid.md +142 -0
- package/docs/components/content/image.en.md +115 -0
- package/docs/components/content/image.md +114 -0
- package/docs/components/content/keyboard.en.md +129 -0
- package/docs/components/content/keyboard.md +129 -0
- package/docs/components/content/layout-primitives.en.md +105 -0
- package/docs/components/content/layout-primitives.md +104 -0
- package/docs/components/content/media-card.en.md +137 -0
- package/docs/components/content/media-card.md +132 -0
- package/docs/components/content/notifications.en.md +216 -0
- package/docs/components/content/notifications.md +207 -0
- package/docs/components/content/rich-text-view.en.md +325 -0
- package/docs/components/content/rich-text-view.md +324 -0
- package/docs/components/content/sortable-list.en.md +212 -0
- package/docs/components/content/sortable-list.md +206 -0
- package/docs/components/content/tag-group.en.md +158 -0
- package/docs/components/content/tag-group.md +151 -0
- package/docs/components/content/timeline.en.md +77 -0
- package/docs/components/content/timeline.md +76 -0
- package/docs/components/content/typography.en.md +152 -0
- package/docs/components/content/typography.md +146 -0
- package/docs/components/content/virtual-grid.en.md +305 -0
- package/docs/components/content/virtual-grid.md +315 -0
- package/docs/components/date-time/calendar.en.md +47 -0
- package/docs/components/date-time/calendar.md +46 -0
- package/docs/components/date-time/date-picker.en.md +52 -0
- package/docs/components/date-time/date-picker.md +50 -0
- package/docs/components/date-time/date-range-picker.en.md +58 -0
- package/docs/components/date-time/date-range-picker.md +57 -0
- package/docs/components/date-time/date-time-picker.en.md +44 -0
- package/docs/components/date-time/date-time-picker.md +43 -0
- package/docs/components/date-time/range-calendar.en.md +47 -0
- package/docs/components/date-time/range-calendar.md +46 -0
- package/docs/components/date-time/time-picker.en.md +47 -0
- package/docs/components/date-time/time-picker.md +51 -0
- package/docs/components/index.en.md +155 -0
- package/docs/components/index.md +150 -0
- package/docs/components/inputs/choice-controls.en.md +118 -0
- package/docs/components/inputs/choice-controls.md +112 -0
- package/docs/components/inputs/color-picker.en.md +126 -0
- package/docs/components/inputs/color-picker.md +122 -0
- package/docs/components/inputs/combobox.en.md +62 -0
- package/docs/components/inputs/combobox.md +58 -0
- package/docs/components/inputs/file-dropzone.en.md +51 -0
- package/docs/components/inputs/file-dropzone.md +50 -0
- package/docs/components/inputs/form-layout.en.md +99 -0
- package/docs/components/inputs/form-layout.md +97 -0
- package/docs/components/inputs/form.en.md +87 -0
- package/docs/components/inputs/form.md +86 -0
- package/docs/components/inputs/inline-edit.en.md +93 -0
- package/docs/components/inputs/inline-edit.md +94 -0
- package/docs/components/inputs/masked-input.en.md +149 -0
- package/docs/components/inputs/masked-input.md +147 -0
- package/docs/components/inputs/number-input.en.md +81 -0
- package/docs/components/inputs/number-input.md +80 -0
- package/docs/components/inputs/password-input.en.md +101 -0
- package/docs/components/inputs/password-input.md +97 -0
- package/docs/components/inputs/phone-input.en.md +78 -0
- package/docs/components/inputs/phone-input.md +76 -0
- package/docs/components/inputs/pin-input.en.md +109 -0
- package/docs/components/inputs/pin-input.md +108 -0
- package/docs/components/inputs/rating.en.md +100 -0
- package/docs/components/inputs/rating.md +99 -0
- package/docs/components/inputs/rich-text-editor.en.md +1539 -0
- package/docs/components/inputs/rich-text-editor.md +1538 -0
- package/docs/components/inputs/search-control.en.md +60 -0
- package/docs/components/inputs/search-control.md +58 -0
- package/docs/components/inputs/select.en.md +68 -0
- package/docs/components/inputs/select.md +65 -0
- package/docs/components/inputs/slider.en.md +60 -0
- package/docs/components/inputs/slider.md +59 -0
- package/docs/components/inputs/swatch-group.en.md +181 -0
- package/docs/components/inputs/swatch-group.md +177 -0
- package/docs/components/inputs/tag-input.en.md +50 -0
- package/docs/components/inputs/tag-input.md +48 -0
- package/docs/components/inputs/text-control.en.md +76 -0
- package/docs/components/inputs/text-control.md +74 -0
- package/docs/components/inputs/transfer.en.md +118 -0
- package/docs/components/inputs/transfer.md +114 -0
- package/docs/components/inputs/tree-select.en.md +91 -0
- package/docs/components/inputs/tree-select.md +89 -0
- package/docs/components/inputs/upload-queue.en.md +160 -0
- package/docs/components/inputs/upload-queue.md +158 -0
- package/docs/components/navigation/accordion.en.md +76 -0
- package/docs/components/navigation/accordion.md +75 -0
- package/docs/components/navigation/breadcrumbs.en.md +73 -0
- package/docs/components/navigation/breadcrumbs.md +72 -0
- package/docs/components/navigation/contextual-save-bar.en.md +104 -0
- package/docs/components/navigation/contextual-save-bar.md +103 -0
- package/docs/components/navigation/page-header.en.md +71 -0
- package/docs/components/navigation/page-header.md +70 -0
- package/docs/components/navigation/pagination.en.md +69 -0
- package/docs/components/navigation/pagination.md +69 -0
- package/docs/components/navigation/section-header.en.md +67 -0
- package/docs/components/navigation/section-header.md +66 -0
- package/docs/components/navigation/selection-bar.en.md +83 -0
- package/docs/components/navigation/selection-bar.md +83 -0
- package/docs/components/navigation/stepper.en.md +78 -0
- package/docs/components/navigation/stepper.md +77 -0
- package/docs/components/navigation/tabs.en.md +71 -0
- package/docs/components/navigation/tabs.md +70 -0
- package/docs/components/navigation/tree-view.en.md +173 -0
- package/docs/components/navigation/tree-view.md +172 -0
- package/docs/components/overlays/command-palette.en.md +153 -0
- package/docs/components/overlays/command-palette.md +147 -0
- package/docs/components/overlays/confirm-dialog.en.md +134 -0
- package/docs/components/overlays/confirm-dialog.md +127 -0
- package/docs/components/overlays/context-menu.en.md +115 -0
- package/docs/components/overlays/context-menu.md +113 -0
- package/docs/components/overlays/dialog.en.md +120 -0
- package/docs/components/overlays/dialog.md +117 -0
- package/docs/components/overlays/drawer.en.md +87 -0
- package/docs/components/overlays/drawer.md +88 -0
- package/docs/components/overlays/hover-card.en.md +179 -0
- package/docs/components/overlays/hover-card.md +175 -0
- package/docs/components/overlays/menu.en.md +103 -0
- package/docs/components/overlays/menu.md +100 -0
- package/docs/components/overlays/popover.en.md +78 -0
- package/docs/components/overlays/popover.md +77 -0
- package/docs/components/overlays/shortcuts-help.en.md +190 -0
- package/docs/components/overlays/shortcuts-help.md +186 -0
- package/docs/components/overlays/tooltip.en.md +78 -0
- package/docs/components/overlays/tooltip.md +77 -0
- package/docs/components/table/data-table.en.md +137 -0
- package/docs/components/table/data-table.md +133 -0
- package/docs/components/table/filter-bar.en.md +161 -0
- package/docs/components/table/filter-bar.md +155 -0
- package/docs/components/table/saved-views.en.md +117 -0
- package/docs/components/table/saved-views.md +115 -0
- package/docs/components/table/toolbar.en.md +100 -0
- package/docs/components/table/toolbar.md +97 -0
- package/docs/conventions.md +358 -0
- package/docs/getting-started.en.md +382 -0
- package/docs/getting-started.md +381 -0
- package/docs/glossary.en.md +179 -0
- package/docs/glossary.md +174 -0
- package/docs/i18n.en.md +147 -0
- package/docs/i18n.md +143 -0
- package/docs/icons.en.md +252 -0
- package/docs/icons.md +251 -0
- package/docs/index.md +62 -0
- package/docs/palette.en.md +400 -0
- package/docs/palette.md +396 -0
- package/docs/theming.en.md +522 -0
- package/docs/theming.md +518 -0
- package/llms.txt +144 -0
- package/package.json +173 -4
- package/src/color.ts +21 -0
- package/src/components/actions/Alert.tsx +121 -0
- package/src/components/actions/Banner.tsx +120 -0
- package/src/components/actions/Button.tsx +241 -0
- package/src/components/actions/ButtonGroup.tsx +65 -0
- package/src/components/actions/Chip.tsx +113 -0
- package/src/components/actions/CopyButton.tsx +112 -0
- package/src/components/actions/Progress.tsx +103 -0
- package/src/components/actions/Segmented.tsx +162 -0
- package/src/components/actions/Spinner.tsx +80 -0
- package/src/components/actions/SplitButton.tsx +164 -0
- package/src/components/actions/StatusBadge.tsx +61 -0
- package/src/components/actions/Toaster.tsx +148 -0
- package/src/components/actions/Toggle.tsx +224 -0
- package/src/components/actions/ToggleGroup.tsx +147 -0
- package/src/components/actions/Toolbar.tsx +223 -0
- package/src/components/actions/Truncate.tsx +96 -0
- package/src/components/app-shell/AppShell.tsx +268 -0
- package/src/components/app-shell/MobileTabBar.tsx +305 -0
- package/src/components/app-shell/NavItem.tsx +149 -0
- package/src/components/app-shell/SideNav.tsx +217 -0
- package/src/components/app-shell/SplitPanel.tsx +381 -0
- package/src/components/app-shell/TopBar.tsx +115 -0
- package/src/components/content/AspectRatio.tsx +45 -0
- package/src/components/content/Avatar.tsx +132 -0
- package/src/components/content/AvatarGroup.tsx +92 -0
- package/src/components/content/Badge.tsx +78 -0
- package/src/components/content/Card.tsx +117 -0
- package/src/components/content/Carousel.tsx +427 -0
- package/src/components/content/CodeView.tsx +178 -0
- package/src/components/content/DescriptionList.tsx +64 -0
- package/src/components/content/EditableList.tsx +879 -0
- package/src/components/content/EmptyState.tsx +65 -0
- package/src/components/content/ErrorState.tsx +100 -0
- package/src/components/content/Grid.tsx +208 -0
- package/src/components/content/Heading.tsx +81 -0
- package/src/components/content/Image.tsx +235 -0
- package/src/components/content/Kbd.tsx +67 -0
- package/src/components/content/Keyboard.tsx +634 -0
- package/src/components/content/Link.tsx +199 -0
- package/src/components/content/MediaCard.tsx +167 -0
- package/src/components/content/NotificationCenter.tsx +168 -0
- package/src/components/content/NotificationList.tsx +329 -0
- package/src/components/content/ScrollArea.tsx +69 -0
- package/src/components/content/Separator.tsx +62 -0
- package/src/components/content/Skeleton.tsx +40 -0
- package/src/components/content/SortableList.tsx +249 -0
- package/src/components/content/Stat.tsx +75 -0
- package/src/components/content/Table.tsx +500 -0
- package/src/components/content/TagGroup.tsx +222 -0
- package/src/components/content/Text.tsx +127 -0
- package/src/components/content/Timeline.tsx +126 -0
- package/src/components/content/VirtualGrid.tsx +726 -0
- package/src/components/content/VisuallyHidden.tsx +25 -0
- package/src/components/content/keyboardEditing.ts +51 -0
- package/src/components/content/useDragToSelect.ts +255 -0
- package/src/components/date-time/Calendar.tsx +181 -0
- package/src/components/date-time/DatePicker.tsx +143 -0
- package/src/components/date-time/DateRangePicker.tsx +349 -0
- package/src/components/date-time/DateTimePicker.tsx +92 -0
- package/src/components/date-time/RangeCalendar.tsx +156 -0
- package/src/components/date-time/TimePicker.tsx +377 -0
- package/src/components/inputs/Checkbox.tsx +284 -0
- package/src/components/inputs/CheckboxCard.tsx +132 -0
- package/src/components/inputs/CheckboxGroup.tsx +140 -0
- package/src/components/inputs/ChoiceCardBody.tsx +53 -0
- package/src/components/inputs/ColorPicker.tsx +221 -0
- package/src/components/inputs/Combobox.tsx +156 -0
- package/src/components/inputs/FileDropzone.tsx +253 -0
- package/src/components/inputs/Form.tsx +77 -0
- package/src/components/inputs/FormField.tsx +235 -0
- package/src/components/inputs/FormLayout.tsx +80 -0
- package/src/components/inputs/InlineEdit.tsx +205 -0
- package/src/components/inputs/MaskedInput.tsx +288 -0
- package/src/components/inputs/NumberInput.tsx +138 -0
- package/src/components/inputs/PasswordInput.tsx +166 -0
- package/src/components/inputs/PhoneInput.tsx +55 -0
- package/src/components/inputs/PinInput.tsx +197 -0
- package/src/components/inputs/RadioGroup.tsx +322 -0
- package/src/components/inputs/Rating.tsx +224 -0
- package/src/components/inputs/SearchControl.tsx +278 -0
- package/src/components/inputs/Select.tsx +741 -0
- package/src/components/inputs/Slider.tsx +436 -0
- package/src/components/inputs/SwatchGroup.tsx +342 -0
- package/src/components/inputs/TagInput.tsx +221 -0
- package/src/components/inputs/TextControl.tsx +335 -0
- package/src/components/inputs/Transfer.tsx +368 -0
- package/src/components/inputs/TreeSelect.tsx +275 -0
- package/src/components/inputs/UploadQueue.tsx +240 -0
- package/src/components/navigation/Accordion.tsx +118 -0
- package/src/components/navigation/Breadcrumbs.tsx +112 -0
- package/src/components/navigation/ContextualSaveBar.tsx +174 -0
- package/src/components/navigation/PageHeader.tsx +41 -0
- package/src/components/navigation/Pagination.tsx +184 -0
- package/src/components/navigation/SectionHeader.tsx +54 -0
- package/src/components/navigation/SelectionBar.tsx +151 -0
- package/src/components/navigation/Stepper.tsx +153 -0
- package/src/components/navigation/Tabs.tsx +130 -0
- package/src/components/navigation/TreeView.tsx +246 -0
- package/src/components/overlays/CommandPalette.tsx +343 -0
- package/src/components/overlays/ConfirmDialog.tsx +272 -0
- package/src/components/overlays/ContextMenu.tsx +284 -0
- package/src/components/overlays/Dialog.tsx +283 -0
- package/src/components/overlays/Drawer.tsx +193 -0
- package/src/components/overlays/HelpTooltip.tsx +96 -0
- package/src/components/overlays/HoverCard.tsx +404 -0
- package/src/components/overlays/Menu.tsx +243 -0
- package/src/components/overlays/ModalHeader.tsx +125 -0
- package/src/components/overlays/ModalOverlay.tsx +108 -0
- package/src/components/overlays/Popover.tsx +120 -0
- package/src/components/overlays/ShortcutsHelp.tsx +147 -0
- package/src/components/overlays/Tooltip.tsx +89 -0
- package/src/components/table/DataTable.tsx +164 -0
- package/src/components/table/FilterBar.tsx +114 -0
- package/src/components/table/FilterBarAdd.tsx +268 -0
- package/src/components/table/SavedViews.tsx +122 -0
- package/src/components/table/TablePreferences.tsx +173 -0
- package/src/components/table/TableToolbar.tsx +74 -0
- package/src/editor/RichTextEditor.tsx +1747 -0
- package/src/editor/RichTextView.tsx +119 -0
- package/src/editor/core/atomText.ts +140 -0
- package/src/editor/core/blockCommands.ts +329 -0
- package/src/editor/core/blockTypes.ts +252 -0
- package/src/editor/core/containers.ts +100 -0
- package/src/editor/core/customMarkdown.ts +74 -0
- package/src/editor/core/customTool.ts +472 -0
- package/src/editor/core/customToolEngine.ts +442 -0
- package/src/editor/core/document.ts +27 -0
- package/src/editor/core/emptiness.ts +31 -0
- package/src/editor/core/extensions.ts +295 -0
- package/src/editor/core/fieldNotice.ts +75 -0
- package/src/editor/core/handle.ts +311 -0
- package/src/editor/core/insertItems.ts +434 -0
- package/src/editor/core/jsonDocument.ts +99 -0
- package/src/editor/core/markdown.ts +313 -0
- package/src/editor/core/maxLength.ts +99 -0
- package/src/editor/core/pasteTrim.ts +85 -0
- package/src/editor/core/schema.ts +986 -0
- package/src/editor/core/schemaConform.ts +122 -0
- package/src/editor/core/shortcuts.ts +435 -0
- package/src/editor/core/skeleton.ts +108 -0
- package/src/editor/core/slashCommand.ts +143 -0
- package/src/editor/core/sourceFormat.ts +194 -0
- package/src/editor/core/toolButtons.ts +133 -0
- package/src/editor/core/toolDescriptor.ts +359 -0
- package/src/editor/core/toolEntryShortcuts.ts +66 -0
- package/src/editor/core/toolLoader.ts +50 -0
- package/src/editor/core/tools.ts +150 -0
- package/src/editor/core/viewIsland.ts +35 -0
- package/src/editor/features/builtins.ts +145 -0
- package/src/editor/features/code/CodeBlockView.tsx +240 -0
- package/src/editor/features/code/CodeCopyButton.tsx +76 -0
- package/src/editor/features/code/CodeCopyIsland.tsx +71 -0
- package/src/editor/features/code/codeBlock.ts +188 -0
- package/src/editor/features/code/codeBlockTool.ts +107 -0
- package/src/editor/features/code/codeHeader.ts +97 -0
- package/src/editor/features/code/codeLanguages.ts +62 -0
- package/src/editor/features/code/highlight.ts +109 -0
- package/src/editor/features/code/highlightNodes.ts +65 -0
- package/src/editor/features/code/lowlight.ts +45 -0
- package/src/editor/features/color/CustomColorPopover.tsx +180 -0
- package/src/editor/features/color/contrast.ts +52 -0
- package/src/editor/features/color/customColor.ts +91 -0
- package/src/editor/features/color/styleExtensions.ts +316 -0
- package/src/editor/features/emoji/EmojiGrid.tsx +160 -0
- package/src/editor/features/emoji/emoji.ts +156 -0
- package/src/editor/features/emoji/emojiTool.tsx +67 -0
- package/src/editor/features/image/ImagePopover.tsx +254 -0
- package/src/editor/features/image/ImageToolbar.tsx +147 -0
- package/src/editor/features/image/image.ts +821 -0
- package/src/editor/features/image/imageNotice.ts +27 -0
- package/src/editor/features/layout/columnLayouts.ts +71 -0
- package/src/editor/features/layout/layout.ts +537 -0
- package/src/editor/features/link/LinkPopover.tsx +114 -0
- package/src/editor/features/link/link.ts +112 -0
- package/src/editor/features/link/linkTool.tsx +36 -0
- package/src/editor/features/search/SearchPanel.tsx +264 -0
- package/src/editor/features/search/revealMatch.ts +69 -0
- package/src/editor/features/search/searchMatch.ts +129 -0
- package/src/editor/features/search/searchPlugin.ts +254 -0
- package/src/editor/features/search/searchTool.ts +30 -0
- package/src/editor/features/table/TableInsertDialog.tsx +129 -0
- package/src/editor/features/table/TableMenuButton.tsx +503 -0
- package/src/editor/features/table/TableSizeGrid.tsx +265 -0
- package/src/editor/features/table/tableActions.ts +380 -0
- package/src/editor/features/table/tableCells.ts +63 -0
- package/src/editor/features/table/tableChunk.ts +11 -0
- package/src/editor/features/table/tableTool.ts +74 -0
- package/src/editor/features/table/tables.ts +220 -0
- package/src/editor/features/wrapper/wrapper.ts +350 -0
- package/src/editor/features/wrapper/wrapperTones.ts +51 -0
- package/src/editor/highlight-entry.ts +23 -0
- package/src/editor/highlight-grammars.d.ts +12 -0
- package/src/editor/hooks/useChangeThrottle.ts +62 -0
- package/src/editor/hooks/useCoarsePointer.ts +36 -0
- package/src/editor/hooks/useFieldsetDisabled.ts +53 -0
- package/src/editor/hooks/useRichTextEditorState.ts +51 -0
- package/src/editor/hooks/useSubmenuPlacement.ts +40 -0
- package/src/editor/index.ts +59 -0
- package/src/editor/schema-entry.ts +40 -0
- package/src/editor/styles/codeTheme.ts +66 -0
- package/src/editor/styles/glass.ts +66 -0
- package/src/editor/styles/palette.ts +191 -0
- package/src/editor/styles/prose.ts +429 -0
- package/src/editor/styles/surface.ts +24 -0
- package/src/editor/styles/tokens.ts +173 -0
- package/src/editor/ui/BlockHandle.tsx +601 -0
- package/src/editor/ui/BlockIsland.tsx +23 -0
- package/src/editor/ui/BlockIslandSlots.tsx +114 -0
- package/src/editor/ui/ColorMenus.tsx +613 -0
- package/src/editor/ui/EditorToolbar.tsx +630 -0
- package/src/editor/ui/FieldResizer.tsx +155 -0
- package/src/editor/ui/FieldStatus.tsx +85 -0
- package/src/editor/ui/FloatingToolbar.tsx +77 -0
- package/src/editor/ui/FormatMenus.tsx +706 -0
- package/src/editor/ui/InsertMenuButton.tsx +104 -0
- package/src/editor/ui/SelectionBubble.tsx +317 -0
- package/src/editor/ui/ShortcutsButton.tsx +128 -0
- package/src/editor/ui/SlashMenu.tsx +199 -0
- package/src/editor/ui/SuggestionList.tsx +217 -0
- package/src/editor/ui/TextCard.tsx +312 -0
- package/src/editor/ui/ToolButtonView.tsx +242 -0
- package/src/editor/ui/TriggerMenu.tsx +255 -0
- package/src/editor/ui/focusWithin.ts +26 -0
- package/src/editor/ui/lockableMenu.ts +37 -0
- package/src/editor/ui/rowMarks.ts +66 -0
- package/src/editor/ui/selectionMenu.ts +97 -0
- package/src/hooks/useFieldDescription.ts +126 -0
- package/src/hooks/useMediaQuery.ts +46 -0
- package/src/hooks/useOpenerFocus.ts +118 -0
- package/src/hooks/useOverlayLayer.ts +42 -0
- package/src/hooks/useScrollLock.ts +92 -0
- package/src/hooks/useStickyOffset.ts +228 -0
- package/src/hooks/useTableState.ts +76 -0
- package/src/i18n/UiProvider.tsx +152 -0
- package/src/i18n/context.ts +30 -0
- package/src/i18n/defaults.ts +657 -0
- package/src/i18n/messages.ts +1183 -0
- package/src/i18n/useMessages.ts +47 -0
- package/src/icons.ts +566 -0
- package/src/index.ts +502 -0
- package/src/lib/accessible-name.ts +35 -0
- package/src/lib/bottom-bar-slot.ts +27 -0
- package/src/lib/button.ts +158 -0
- package/src/lib/choice-card.ts +79 -0
- package/src/lib/clamp.ts +18 -0
- package/src/lib/cn.ts +48 -0
- package/src/lib/date.ts +87 -0
- package/src/lib/dev-warn.ts +82 -0
- package/src/lib/empty.ts +43 -0
- package/src/lib/field.ts +125 -0
- package/src/lib/filter-range.ts +48 -0
- package/src/lib/interaction-modality.ts +134 -0
- package/src/lib/mask.ts +226 -0
- package/src/lib/menu.ts +196 -0
- package/src/lib/overlay-layer.ts +163 -0
- package/src/lib/period.ts +167 -0
- package/src/lib/progress-status.ts +44 -0
- package/src/lib/published-height.ts +147 -0
- package/src/lib/reorder.ts +65 -0
- package/src/lib/responsive.ts +71 -0
- package/src/lib/state.ts +39 -0
- package/src/lib/table-state.ts +264 -0
- package/src/lib/tag.ts +31 -0
- package/src/lib/themes.ts +144 -0
- package/src/lib/time.ts +107 -0
- package/src/lib/toolbar-axis.tsx +31 -0
- package/src/lib/touch.ts +15 -0
- package/src/lib/variants.ts +342 -0
- package/src/locales/en.ts +10 -0
- package/src/locales/ru.ts +695 -0
- package/styles.css +1650 -0
package/styles.css
ADDED
|
@@ -0,0 +1,1650 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Токены, темы и базовые стили дизайн-системы @olddevs/ui.
|
|
3
|
+
*
|
|
4
|
+
* ВАЖНО: здесь НЕТ `@import "tailwindcss"` — и это намеренно.
|
|
5
|
+
* Tailwind импортирует потребитель, у себя, один раз:
|
|
6
|
+
*
|
|
7
|
+
* @import "tailwindcss";
|
|
8
|
+
* @import "@olddevs/ui/styles.css";
|
|
9
|
+
*
|
|
10
|
+
* Tailwind 4 обрабатывает `@theme` из импортированных файлов, поэтому мост
|
|
11
|
+
* токенов работает. Если бы Tailwind импортировался и отсюда, у потребителя
|
|
12
|
+
* оказалось бы два preflight и задвоенные утилиты.
|
|
13
|
+
*
|
|
14
|
+
* Что сюда НЕ входит и остаётся у потребителя: стили конкретных экранов —
|
|
15
|
+
* фоновые блобы дашборда, оформление собственного сёрчбара, safe-area
|
|
16
|
+
* мобильного таб-бара. Это прикладной слой, а не система.
|
|
17
|
+
*
|
|
18
|
+
* В 2.0.0 отсюда убраны 22 токена прежнего продукта (`--gsb-*`, `--thumb-*`,
|
|
19
|
+
* `--favorite*`, `--mobile-nav-*`, `--image-chrome*`, `--overlay-scrim-strong`):
|
|
20
|
+
* их не читал ни один компонент кита — только CSS его приложения. Список и
|
|
21
|
+
* действие для потребителя — в `docs/api/migration-notes.md`.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* Варианты состояний react-aria-components.
|
|
26
|
+
*
|
|
27
|
+
* Строка стоит ЗДЕСЬ, а не у потребителя, и это проверено: Tailwind 4
|
|
28
|
+
* обрабатывает `@plugin` из импортированного файла так же, как `@theme`, —
|
|
29
|
+
* потребителю по-прежнему достаточно двух строк, `@import "tailwindcss"` и
|
|
30
|
+
* `@import "@olddevs/ui/styles.css"`. Пакет плагина лежит в обычных
|
|
31
|
+
* `dependencies`, поэтому резолвится от этого файла в любой раскладке
|
|
32
|
+
* node_modules.
|
|
33
|
+
*
|
|
34
|
+
* Плагин не добавляет новых имён поверх штатных, а ПЕРЕОПРЕДЕЛЯЕТ их на
|
|
35
|
+
* двойной селектор:
|
|
36
|
+
*
|
|
37
|
+
* .hover\:bg-x:is(:where([data-rac])[data-hovered], :where(:not([data-rac])):hover)
|
|
38
|
+
*
|
|
39
|
+
* Отсюда главное следствие для словаря тонов: `hover:`, `focus-visible:`,
|
|
40
|
+
* `disabled:`, `invalid:`, `indeterminate:` и `open:` из `TONE_TOKENS`
|
|
41
|
+
* работают и на нативных элементах, и на элементах RAC — а те сплошь и рядом
|
|
42
|
+
* отрисованы дивами с ролью (`MenuItem`, `ListBoxItem`, `Row`), где ни
|
|
43
|
+
* `:hover`, ни `:disabled` не сработали бы. Дублировать словарь в форме
|
|
44
|
+
* `data-*` не нужно.
|
|
45
|
+
*
|
|
46
|
+
* Пишется `hover:`, а не `hovered:` — имя варианта штатное, атрибут
|
|
47
|
+
* `data-hovered`. Собственные имена есть только у состояний без
|
|
48
|
+
* CSS-эквивалента: `selected:`, `pressed:`, `entering:`/`exiting:`,
|
|
49
|
+
* `placement-*:`.
|
|
50
|
+
*/
|
|
51
|
+
@plugin "tailwindcss-react-aria-components";
|
|
52
|
+
|
|
53
|
+
@theme {
|
|
54
|
+
--color-surface-app: var(--surface-app);
|
|
55
|
+
--color-surface-panel: var(--surface-panel);
|
|
56
|
+
--color-surface-panel-hover: var(--surface-panel-hover);
|
|
57
|
+
--color-surface-elevated: var(--surface-elevated);
|
|
58
|
+
--color-surface-contrast: var(--surface-contrast);
|
|
59
|
+
--color-surface-inverse: var(--surface-inverse);
|
|
60
|
+
--color-surface-inverse-hover: var(--surface-inverse-hover);
|
|
61
|
+
--color-surface-inverse-pressed: var(--surface-inverse-pressed);
|
|
62
|
+
|
|
63
|
+
--color-text-primary: var(--text-primary);
|
|
64
|
+
--color-text-secondary: var(--text-secondary);
|
|
65
|
+
--color-text-muted: var(--text-muted);
|
|
66
|
+
--color-text-on-accent: var(--text-on-accent);
|
|
67
|
+
--color-text-on-inverse: var(--text-on-inverse);
|
|
68
|
+
--color-text-on-warning: var(--text-on-warning);
|
|
69
|
+
--color-text-on-success: var(--text-on-success);
|
|
70
|
+
|
|
71
|
+
--color-border-default: var(--border-default);
|
|
72
|
+
--color-border-soft: var(--border-soft);
|
|
73
|
+
|
|
74
|
+
--color-accent: var(--accent);
|
|
75
|
+
--color-accent-hover: var(--accent-hover);
|
|
76
|
+
--color-accent-soft: var(--accent-soft);
|
|
77
|
+
--color-accent-on-inverse: var(--accent-on-inverse);
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* Тона под полными именами — целевой словарь. Заливка (`--success`) и её
|
|
81
|
+
* «читаемый» вариант под текст, рамки и индикаторы (`--success-strong`):
|
|
82
|
+
* две несовместимые роли одного тона, см. комментарий у переменных ниже.
|
|
83
|
+
*
|
|
84
|
+
* Исторические алиасы `ok`/`warn`/`err`/`tg` объявлены дальше и остаются
|
|
85
|
+
* рабочими, но примитивы пакета ими больше не пользуются.
|
|
86
|
+
*/
|
|
87
|
+
--color-accent-strong: var(--accent-strong);
|
|
88
|
+
|
|
89
|
+
--color-success: var(--success);
|
|
90
|
+
--color-success-soft: var(--success-soft);
|
|
91
|
+
--color-success-strong: var(--success-strong);
|
|
92
|
+
|
|
93
|
+
--color-warning: var(--warning);
|
|
94
|
+
--color-warning-soft: var(--warning-soft);
|
|
95
|
+
--color-warning-strong: var(--warning-strong);
|
|
96
|
+
|
|
97
|
+
/* Звезда `Rating` — компонентный слой: смысл принадлежит одному компоненту,
|
|
98
|
+
а не системе (ADR-0040). Стоит после семантических групп, рядом с
|
|
99
|
+
остальными компонентными токенами, а не внутри `warning`: цвет сегодня тот
|
|
100
|
+
же, но правка предупреждения не должна перекрашивать оценки. */
|
|
101
|
+
--color-rating-star: var(--rating-star);
|
|
102
|
+
|
|
103
|
+
--color-danger: var(--danger);
|
|
104
|
+
--color-danger-soft: var(--danger-soft);
|
|
105
|
+
--color-danger-strong: var(--danger-strong);
|
|
106
|
+
|
|
107
|
+
--color-draft: var(--draft);
|
|
108
|
+
--color-draft-soft: var(--draft-soft);
|
|
109
|
+
--color-draft-strong: var(--draft-strong);
|
|
110
|
+
|
|
111
|
+
--color-bg-0: var(--bg-0);
|
|
112
|
+
--color-bg-1: var(--bg-1);
|
|
113
|
+
--color-bg-2: var(--bg-2);
|
|
114
|
+
--color-bg-3: var(--bg-3);
|
|
115
|
+
--color-bg-4: var(--bg-4);
|
|
116
|
+
|
|
117
|
+
--color-fg-0: var(--fg-0);
|
|
118
|
+
--color-fg-1: var(--fg-1);
|
|
119
|
+
--color-fg-2: var(--fg-2);
|
|
120
|
+
--color-fg-3: var(--fg-3);
|
|
121
|
+
--color-fg-4: var(--fg-4);
|
|
122
|
+
|
|
123
|
+
--color-line: var(--line);
|
|
124
|
+
--color-line-soft: var(--line-soft);
|
|
125
|
+
|
|
126
|
+
/*
|
|
127
|
+
* Исторические алиасы. Держатся ради фронта, где их ещё десятки; примитивы
|
|
128
|
+
* пакета на них не ссылаются, и новый код тоже не должен — только полные
|
|
129
|
+
* имена выше. Удаляются, когда потребитель выйдет на ноль по ним.
|
|
130
|
+
*/
|
|
131
|
+
--color-tg-2: var(--tg-2);
|
|
132
|
+
--color-tg: var(--tg);
|
|
133
|
+
--color-tg-soft: var(--tg-soft);
|
|
134
|
+
|
|
135
|
+
--color-ok: var(--ok);
|
|
136
|
+
--color-ok-soft: var(--ok-soft);
|
|
137
|
+
|
|
138
|
+
--color-warn: var(--warn);
|
|
139
|
+
--color-warn-soft: var(--warn-soft);
|
|
140
|
+
|
|
141
|
+
--color-err: var(--err);
|
|
142
|
+
--color-err-soft: var(--err-soft);
|
|
143
|
+
|
|
144
|
+
/* Метки пользователя: утилиты `bg-label-blue`, `text-label-blue`, `border-label-blue`. */
|
|
145
|
+
--color-label-blue: var(--label-blue);
|
|
146
|
+
--color-label-violet: var(--label-violet);
|
|
147
|
+
--color-label-teal: var(--label-teal);
|
|
148
|
+
--color-label-green: var(--label-green);
|
|
149
|
+
--color-label-amber: var(--label-amber);
|
|
150
|
+
--color-label-red: var(--label-red);
|
|
151
|
+
--color-label-pink: var(--label-pink);
|
|
152
|
+
--color-label-steel: var(--label-steel);
|
|
153
|
+
|
|
154
|
+
--color-purple: var(--purple);
|
|
155
|
+
--color-purple-soft: var(--purple-soft);
|
|
156
|
+
|
|
157
|
+
--radius-xs: var(--r-xs);
|
|
158
|
+
--radius-sm: var(--r-sm);
|
|
159
|
+
--radius-control: var(--r-control);
|
|
160
|
+
--radius-md: var(--r-md);
|
|
161
|
+
--radius-lg: var(--r-lg);
|
|
162
|
+
--radius-xl: var(--r-xl);
|
|
163
|
+
|
|
164
|
+
--shadow-1: var(--shadow-1);
|
|
165
|
+
--shadow-2: var(--shadow-2);
|
|
166
|
+
|
|
167
|
+
/*
|
|
168
|
+
* `--font-inter` ставит потребитель — или не ставит. Без запасного значения
|
|
169
|
+
* ссылка на неё делала недействительным весь токен, и `font-sans` молча
|
|
170
|
+
* наследовал шрифт предка: в шапке блока кода и в знаках `Kbd` это
|
|
171
|
+
* моноширинный.
|
|
172
|
+
*/
|
|
173
|
+
--font-sans: var(--font-inter, Inter), system-ui, sans-serif;
|
|
174
|
+
/*
|
|
175
|
+
* Моноширинный — системный стек: SF Mono на Apple, Consolas на Windows,
|
|
176
|
+
* Liberation/DejaVu Mono на Linux. Кит своих файлов шрифта не грузит.
|
|
177
|
+
* Потребитель подставляет свой шрифт переменной `--font-code` (как
|
|
178
|
+
* `--font-inter` для основного, например из `next/font`).
|
|
179
|
+
*
|
|
180
|
+
* Раньше здесь стояло `var(--font-mono)` — ссылка токена на самого себя.
|
|
181
|
+
* Цикл делает переменную недействительной целиком, и `font-mono` во всём
|
|
182
|
+
* ките (CodeView, Kbd, блок кода Редактора) молча рисовался Inter.
|
|
183
|
+
*/
|
|
184
|
+
--font-mono:
|
|
185
|
+
var(--font-code, ui-monospace), "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono",
|
|
186
|
+
monospace;
|
|
187
|
+
|
|
188
|
+
/*
|
|
189
|
+
* Типографическая шкала.
|
|
190
|
+
*
|
|
191
|
+
* Выведена из фактически используемого, а не изобретена: до неё размеры
|
|
192
|
+
* стояли восемью значениями, три из которых произвольные (`text-[13px]`,
|
|
193
|
+
* `text-[11px]`, `text-[26px]`). Семь ступеней покрывают все восемь.
|
|
194
|
+
*
|
|
195
|
+
* СТРОЧНЫЙ БОКС ЗАДАН У КАЖДОЙ СТУПЕНИ, и это не украшение. Во-первых, без
|
|
196
|
+
* него высота выводится из множителя `1.5` и получается дробной — ровно так
|
|
197
|
+
* триггер `Select` разошёлся с полем на 2.5px. Во-вторых, `--text-sm` здесь
|
|
198
|
+
* ПЕРЕОПРЕДЕЛЯЕТ штатные 14/20 Tailwind на 13/20, и без явного бокса
|
|
199
|
+
* переопределение утащило бы за собой ещё и высоту строки.
|
|
200
|
+
*
|
|
201
|
+
* Числа боксов взяты у Tailwind, чтобы ступени совпадали с привычными:
|
|
202
|
+
* 12/16, 14/20, 16/24, 20/28 — его же пары. Своих два: `caption` 11/16 и
|
|
203
|
+
* `2xl` 26/32.
|
|
204
|
+
*
|
|
205
|
+
* `--text-md` — ступень, которой у Tailwind нет (у него `base`). Заведена,
|
|
206
|
+
* потому что шкала кита начинается ниже: рабочий размер здесь 13px, и
|
|
207
|
+
* называть 14px «базовым» значило бы врать про то, что чаще всего стоит.
|
|
208
|
+
*/
|
|
209
|
+
--text-caption: 11px;
|
|
210
|
+
--text-caption--line-height: 16px;
|
|
211
|
+
--text-xs: 12px;
|
|
212
|
+
--text-xs--line-height: 16px;
|
|
213
|
+
--text-sm: 13px;
|
|
214
|
+
--text-sm--line-height: 20px;
|
|
215
|
+
--text-md: 14px;
|
|
216
|
+
--text-md--line-height: 20px;
|
|
217
|
+
--text-lg: 16px;
|
|
218
|
+
--text-lg--line-height: 24px;
|
|
219
|
+
--text-xl: 20px;
|
|
220
|
+
--text-xl--line-height: 28px;
|
|
221
|
+
--text-2xl: 26px;
|
|
222
|
+
--text-2xl--line-height: 32px;
|
|
223
|
+
|
|
224
|
+
/*
|
|
225
|
+
* ШКАЛА ДВИЖЕНИЯ: ступени длительности и кривые — ADR-0047.
|
|
226
|
+
*
|
|
227
|
+
* Стоит ПЕРЕД токенами анимаций намеренно: они на неё ссылаются, и читатель
|
|
228
|
+
* файла встречает объявление раньше ссылки. Для CSS порядок здесь безразличен,
|
|
229
|
+
* для человека — нет.
|
|
230
|
+
*
|
|
231
|
+
* Обе шкалы ЗАКРЫТЫ: четыре ступени и три кривые, и это сторожит
|
|
232
|
+
* `tests/motion.test.ts`. Пятая ступень — разбор в ADR, а не строка здесь;
|
|
233
|
+
* приём взят у белого списка исключений `reduce`.
|
|
234
|
+
*
|
|
235
|
+
* Имена по роли, а не по значению: `--duration-fast`, не `--duration-100`.
|
|
236
|
+
* Смена значения ступени тогда не требует переименования, и вызов в
|
|
237
|
+
* компоненте продолжает сообщать, ЗАЧЕМ выбрана эта ступень.
|
|
238
|
+
*/
|
|
239
|
+
--duration-fast: 100ms;
|
|
240
|
+
--duration-base: 150ms;
|
|
241
|
+
--duration-moderate: 250ms;
|
|
242
|
+
/*
|
|
243
|
+
* Без потребителя сегодня — и заведена намеренно. Шкала это не только выбор,
|
|
244
|
+
* но и граница: медленнее 400ms кит не двигает ничего. Не будь верхней
|
|
245
|
+
* ступени, первая же шторка во весь экран принесла бы 500ms «как исключение».
|
|
246
|
+
*/
|
|
247
|
+
--duration-slow: 400ms;
|
|
248
|
+
|
|
249
|
+
/*
|
|
250
|
+
* Кривые. `enter` и `exit` численно совпадают со штатными `--ease-out` и
|
|
251
|
+
* `--ease-in` Tailwind, и объявлены всё равно — по тому же доводу, что и
|
|
252
|
+
* `--animate-spin` ниже: имя обязано нести роль, а связь — быть видимой в
|
|
253
|
+
* файле кита, а не держаться на совпадении с дефолтной темой. Утилиты
|
|
254
|
+
* `ease-in` / `ease-out` в компонентах кита после этого не используются:
|
|
255
|
+
* «вход» и «выход» — это про оверлей, а не про направление кривой.
|
|
256
|
+
*/
|
|
257
|
+
--ease-standard: cubic-bezier(0.2, 0, 0, 1);
|
|
258
|
+
--ease-enter: cubic-bezier(0, 0, 0.2, 1);
|
|
259
|
+
--ease-exit: cubic-bezier(0.4, 0, 1, 1);
|
|
260
|
+
|
|
261
|
+
/*
|
|
262
|
+
* Умолчание переходов Tailwind переводится на шкалу — половина смысла всей
|
|
263
|
+
* работы. Без этих двух строк `transition-colors` без явного класса
|
|
264
|
+
* длительности продолжал бы идти зашитые 150ms: число, совпадающее со
|
|
265
|
+
* ступенью случайно, а не по ссылке. Потребитель, переопределивший
|
|
266
|
+
* `--duration-base`, не сдвинул бы ни один такой переход — а их в ките
|
|
267
|
+
* тридцать с лишним.
|
|
268
|
+
*
|
|
269
|
+
* Следствие для компонента: длительность называется ТОЛЬКО там, где она
|
|
270
|
+
* отличается от умолчания. `transition-colors duration-base` — лишнее слово.
|
|
271
|
+
*/
|
|
272
|
+
--default-transition-duration: var(--duration-base);
|
|
273
|
+
--default-transition-timing-function: var(--ease-standard);
|
|
274
|
+
|
|
275
|
+
/*
|
|
276
|
+
* Подложка окна. `standard`, а не `enter`: затемнение не «приходит на место»,
|
|
277
|
+
* оно меняет состояние всего экрана.
|
|
278
|
+
*
|
|
279
|
+
* Было 0.4s — самая медленная анимация кита, и заметно медленная для
|
|
280
|
+
* подложки: фон дотемневал ПОЗЖЕ, чем появлялось само окно (0.3s), то есть
|
|
281
|
+
* порядок читался задом наперёд. Теперь обе на `moderate`, и подложка не
|
|
282
|
+
* отстаёт от окна.
|
|
283
|
+
*/
|
|
284
|
+
--animate-fadein: fadein var(--duration-moderate) var(--ease-standard);
|
|
285
|
+
--animate-sheetin: sheetin var(--duration-moderate) var(--ease-enter);
|
|
286
|
+
--animate-shimmer: shimmer 1.6s linear infinite;
|
|
287
|
+
/* Бегущая треть полосы при неизвестном прогрессе. Едет положение, а не
|
|
288
|
+
ширина: анимация ширины дёргала бы полосу на каждом кадре. */
|
|
289
|
+
--animate-progress-indeterminate: progressIndeterminate 1.2s ease-in-out infinite;
|
|
290
|
+
--animate-imgFadeIn: imgFadeIn var(--duration-moderate) var(--ease-enter);
|
|
291
|
+
/*
|
|
292
|
+
* Кастомная кривая `cubic-bezier(0.32, 0.72, 0, 1)` здесь была, и её не
|
|
293
|
+
* заменили на похожую — её сняли. Четвёртого имени она не заслужила: токен не
|
|
294
|
+
* читает ни один компонент, а «почти `enter`, но своя» — это не роль.
|
|
295
|
+
*/
|
|
296
|
+
--animate-modalExpand: modalExpand var(--duration-moderate) var(--ease-enter);
|
|
297
|
+
--animate-tooltipIn: tooltipIn var(--duration-base) var(--ease-enter);
|
|
298
|
+
|
|
299
|
+
/* Вход якорной панели: `Popover`. Заведён по образцу `tooltipIn`, но
|
|
300
|
+
не равен ему — панель крупнее подсказки, поэтому смещение вдвое больше, а
|
|
301
|
+
сжатие вдвое меньше: сильный `scale` на большой поверхности читается как
|
|
302
|
+
колыхание, а не как появление. Прежде панель входила общим `fadein` (0.4s),
|
|
303
|
+
и для якорной панели это заметно медленно.
|
|
304
|
+
|
|
305
|
+
По ВРЕМЕНИ панель и подсказка теперь равны — обе `base`. Прежние 0.16 против
|
|
306
|
+
0.14 не были решением: разницу в 20 миллисекунд не различает ни глаз, ни
|
|
307
|
+
ревьюер, а объяснения ей не было ни в комментарии, ни в ADR. Панель
|
|
308
|
+
отличается от подсказки формой входа, и этого достаточно. */
|
|
309
|
+
--animate-popoverIn: popoverIn var(--duration-base) var(--ease-enter);
|
|
310
|
+
|
|
311
|
+
/*
|
|
312
|
+
* ВЫХОД ОВЕРЛЕЕВ — зеркала входа, но не покадровые.
|
|
313
|
+
*
|
|
314
|
+
* Каждый короче своего входа на ступень: 250→150 у подложки и окна, 150→100 у
|
|
315
|
+
* подсказки и панели. Правило «выход короче входа» берётся у Carbon и M3, и на
|
|
316
|
+
* шкалу оно легло без новой ступени — довод в пользу её состава, а не
|
|
317
|
+
* совпадение.
|
|
318
|
+
*
|
|
319
|
+
* Кривая у всех `exit`: уход ускоряется прочь, тогда как вход замедлялся к
|
|
320
|
+
* месту. До этой волны `--ease-exit` не читал никто.
|
|
321
|
+
*
|
|
322
|
+
* Смещение при уходе ВДВОЕ МЕНЬШЕ, чем при входе, и в ту же сторону, откуда
|
|
323
|
+
* панель пришла. Полное зеркало читается как отскок: элемент словно
|
|
324
|
+
* отталкивается от места, на котором только что стоял.
|
|
325
|
+
*/
|
|
326
|
+
--animate-fadeout: fadeout var(--duration-base) var(--ease-exit);
|
|
327
|
+
--animate-sheetout: sheetout var(--duration-base) var(--ease-exit);
|
|
328
|
+
--animate-tooltipOut: tooltipOut var(--duration-fast) var(--ease-exit);
|
|
329
|
+
--animate-popoverOut: popoverOut var(--duration-fast) var(--ease-exit);
|
|
330
|
+
|
|
331
|
+
/*
|
|
332
|
+
* УХОД СТРОКИ СПИСКА — тот же уход, но со смыканием соседей.
|
|
333
|
+
*
|
|
334
|
+
* У оверлея место не освобождается: он лежит над содержимым. У строки —
|
|
335
|
+
* наоборот, и в этом вся цена резкого исчезновения: соседние строки смыкаются
|
|
336
|
+
* в один кадр, а вместе с ними подпрыгивает всё, что ниже. Поэтому высота,
|
|
337
|
+
* отступы и линия разделителя схлопываются ТЕМ ЖЕ движением, а не после него.
|
|
338
|
+
*
|
|
339
|
+
* Высота приходит переменной `--row-exit-h`, и иначе быть не может: `height`
|
|
340
|
+
* не интерполируется от `auto`, а высота строки зависит от содержимого
|
|
341
|
+
* потребителя — списку задач с флажком и списку с аватаром она разная.
|
|
342
|
+
* Ставит её компонент, замерив строку в момент пропажи.
|
|
343
|
+
*/
|
|
344
|
+
--animate-rowout: rowout var(--duration-base) var(--ease-exit);
|
|
345
|
+
|
|
346
|
+
@keyframes fadein {
|
|
347
|
+
from {
|
|
348
|
+
opacity: 0;
|
|
349
|
+
transform: translateY(4px);
|
|
350
|
+
}
|
|
351
|
+
to {
|
|
352
|
+
opacity: 1;
|
|
353
|
+
transform: none;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
@keyframes sheetin {
|
|
357
|
+
from {
|
|
358
|
+
opacity: 0;
|
|
359
|
+
transform: translateY(16px);
|
|
360
|
+
}
|
|
361
|
+
to {
|
|
362
|
+
opacity: 1;
|
|
363
|
+
transform: none;
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
@keyframes progressIndeterminate {
|
|
367
|
+
0% {
|
|
368
|
+
transform: translateX(-100%);
|
|
369
|
+
}
|
|
370
|
+
100% {
|
|
371
|
+
transform: translateX(400%);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
@keyframes shimmer {
|
|
375
|
+
0% {
|
|
376
|
+
background-position: -400px 0;
|
|
377
|
+
}
|
|
378
|
+
100% {
|
|
379
|
+
background-position: 400px 0;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
@keyframes imgFadeIn {
|
|
383
|
+
from {
|
|
384
|
+
opacity: 0;
|
|
385
|
+
transform: scale(0.98);
|
|
386
|
+
}
|
|
387
|
+
to {
|
|
388
|
+
opacity: 1;
|
|
389
|
+
transform: none;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
@keyframes modalExpand {
|
|
393
|
+
from {
|
|
394
|
+
transform: translate(var(--mx, 0px), var(--my, 0px)) scale(var(--ms, 0.92));
|
|
395
|
+
opacity: 0;
|
|
396
|
+
}
|
|
397
|
+
to {
|
|
398
|
+
transform: none;
|
|
399
|
+
opacity: 1;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
/*
|
|
403
|
+
* НАМЕРЕННО переопределяет дефолтный `pulse` Tailwind: наш вариант добавляет
|
|
404
|
+
* scale(0.85) к штатному миганию прозрачности. Токен объявлен явно (тайминг —
|
|
405
|
+
* штатный tailwind-овский), чтобы связь `animate-pulse` → эти keyframes была
|
|
406
|
+
* видна здесь, а не держалась на совпадении имён с дефолтной темой.
|
|
407
|
+
*/
|
|
408
|
+
--animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
409
|
+
|
|
410
|
+
/*
|
|
411
|
+
* Объявлен по той же причине, что и `pulse`, но ради другого: `spin` —
|
|
412
|
+
* ИСКЛЮЧЕНИЕ из правила `prefers-reduced-motion` (ADR-0043). Спиннер
|
|
413
|
+
* продолжает вращаться при `reduce`, потому что это единственное, чем кит
|
|
414
|
+
* сообщает «идёт работа»: остановленный кружок выглядит не спокойнее, а
|
|
415
|
+
* сломанным.
|
|
416
|
+
*
|
|
417
|
+
* Исключение, которого нет в файле, проверить нечем — гейт читает `styles.css`
|
|
418
|
+
* и о дефолтной теме Tailwind не знает. Значение и кейфреймы штатные, то есть
|
|
419
|
+
* поведение не меняется ни на кадр; меняется то, что теперь это видно.
|
|
420
|
+
*/
|
|
421
|
+
--animate-spin: spin 1s linear infinite;
|
|
422
|
+
|
|
423
|
+
@keyframes spin {
|
|
424
|
+
to {
|
|
425
|
+
transform: rotate(360deg);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
@keyframes pulse {
|
|
430
|
+
0%,
|
|
431
|
+
100% {
|
|
432
|
+
opacity: 1;
|
|
433
|
+
transform: scale(1);
|
|
434
|
+
}
|
|
435
|
+
50% {
|
|
436
|
+
opacity: 0.5;
|
|
437
|
+
transform: scale(0.85);
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
@keyframes tooltipIn {
|
|
441
|
+
from {
|
|
442
|
+
opacity: 0;
|
|
443
|
+
transform: translateY(2px) scale(0.96);
|
|
444
|
+
}
|
|
445
|
+
to {
|
|
446
|
+
opacity: 1;
|
|
447
|
+
transform: none;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
@keyframes popoverIn {
|
|
451
|
+
from {
|
|
452
|
+
opacity: 0;
|
|
453
|
+
transform: translateY(4px) scale(0.98);
|
|
454
|
+
}
|
|
455
|
+
to {
|
|
456
|
+
opacity: 1;
|
|
457
|
+
transform: none;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
@keyframes fadeout {
|
|
461
|
+
from {
|
|
462
|
+
opacity: 1;
|
|
463
|
+
transform: none;
|
|
464
|
+
}
|
|
465
|
+
to {
|
|
466
|
+
opacity: 0;
|
|
467
|
+
transform: translateY(2px);
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
@keyframes sheetout {
|
|
471
|
+
from {
|
|
472
|
+
opacity: 1;
|
|
473
|
+
transform: none;
|
|
474
|
+
}
|
|
475
|
+
to {
|
|
476
|
+
opacity: 0;
|
|
477
|
+
transform: translateY(8px);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
@keyframes rowout {
|
|
481
|
+
from {
|
|
482
|
+
opacity: 1;
|
|
483
|
+
height: var(--row-exit-h);
|
|
484
|
+
transform: none;
|
|
485
|
+
}
|
|
486
|
+
to {
|
|
487
|
+
opacity: 0;
|
|
488
|
+
height: 0;
|
|
489
|
+
padding-top: 0;
|
|
490
|
+
padding-bottom: 0;
|
|
491
|
+
border-bottom-width: 0;
|
|
492
|
+
transform: translateY(2px);
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
@keyframes tooltipOut {
|
|
496
|
+
from {
|
|
497
|
+
opacity: 1;
|
|
498
|
+
transform: none;
|
|
499
|
+
}
|
|
500
|
+
to {
|
|
501
|
+
opacity: 0;
|
|
502
|
+
transform: translateY(1px) scale(0.98);
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
@keyframes popoverOut {
|
|
506
|
+
from {
|
|
507
|
+
opacity: 1;
|
|
508
|
+
transform: none;
|
|
509
|
+
}
|
|
510
|
+
to {
|
|
511
|
+
opacity: 0;
|
|
512
|
+
transform: translateY(2px) scale(0.99);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
/*
|
|
518
|
+
* Утилиты ступеней длительности — ADR-0047.
|
|
519
|
+
*
|
|
520
|
+
* Объявлены руками, потому что у Tailwind 4 НЕТ пространства имён `--duration-*`:
|
|
521
|
+
* `--ease-*` он читает из темы и заводит `ease-standard` сам, а `duration-*`
|
|
522
|
+
* принимает только числа (`duration-150`) и произвольные значения. Без этих
|
|
523
|
+
* четырёх правил ступень писалась бы как `duration-(--duration-fast)` — длиннее,
|
|
524
|
+
* без подсказок редактора и без единого места, где её можно было бы найти.
|
|
525
|
+
*
|
|
526
|
+
* `@utility` из ИМПОРТИРОВАННОГО файла работает — проверено сборкой, как в своё
|
|
527
|
+
* время `@plugin` и `@theme` (комментарий в начале файла). Потребителю
|
|
528
|
+
* по-прежнему хватает двух строк импорта.
|
|
529
|
+
*
|
|
530
|
+
* `--tw-duration` ставится наравне с `transition-duration` — ровно так устроены
|
|
531
|
+
* штатные `duration-*`. Через эту переменную `transition-*` читает длительность,
|
|
532
|
+
* и без неё ступень зависела бы от того, в каком порядке Tailwind разложил
|
|
533
|
+
* утилиты в собранном файле.
|
|
534
|
+
*/
|
|
535
|
+
@utility duration-fast {
|
|
536
|
+
--tw-duration: var(--duration-fast);
|
|
537
|
+
transition-duration: var(--duration-fast);
|
|
538
|
+
}
|
|
539
|
+
@utility duration-base {
|
|
540
|
+
--tw-duration: var(--duration-base);
|
|
541
|
+
transition-duration: var(--duration-base);
|
|
542
|
+
}
|
|
543
|
+
@utility duration-moderate {
|
|
544
|
+
--tw-duration: var(--duration-moderate);
|
|
545
|
+
transition-duration: var(--duration-moderate);
|
|
546
|
+
}
|
|
547
|
+
@utility duration-slow {
|
|
548
|
+
--tw-duration: var(--duration-slow);
|
|
549
|
+
transition-duration: var(--duration-slow);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
/*
|
|
553
|
+
The default border color has changed to `currentcolor` in Tailwind CSS v4,
|
|
554
|
+
so we've added these compatibility styles to make sure everything still
|
|
555
|
+
looks the same as it did with Tailwind CSS v3.
|
|
556
|
+
|
|
557
|
+
If we ever want to remove these styles, we need to add an explicit border
|
|
558
|
+
color utility to any element that depends on these defaults.
|
|
559
|
+
*/
|
|
560
|
+
@layer base {
|
|
561
|
+
*,
|
|
562
|
+
::after,
|
|
563
|
+
::before,
|
|
564
|
+
::backdrop,
|
|
565
|
+
::file-selector-button {
|
|
566
|
+
border-color: var(--color-gray-200, currentcolor);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
/*
|
|
571
|
+
* ── Слой 1: примитивы ────────────────────────────────────────────────────────
|
|
572
|
+
*
|
|
573
|
+
* Палитра: цвет как значение, без роли и без темы. Здесь НЕТ семантики —
|
|
574
|
+
* `--od-slate-1` не знает, что он фон приложения; это знает слой 2.
|
|
575
|
+
*
|
|
576
|
+
* Устройство ramp'ов. Их три, по одному на тему, и это не дублирование:
|
|
577
|
+
* нейтрали каждой темы подобраны руками под свою подложку (тёмная холодно-серая,
|
|
578
|
+
* светлая с голубой нотой, сумрак сине-стальной), и свести их к одной шкале
|
|
579
|
+
* значило бы перекрасить две темы из трёх. Внутри ramp'а шаг растёт по
|
|
580
|
+
* светлоте: 1 — самый тёмный, 12 — самый светлый. У тонов та же логика, шагов
|
|
581
|
+
* меньше — ровно столько, сколько реально используется.
|
|
582
|
+
*
|
|
583
|
+
* Полупрозрачный примитив называется `--od-<семья>-<шаг базы>-a<альфа>`:
|
|
584
|
+
* `--od-blue-4-a16` — четвёртый шаг синего с альфой 0.16. Альфа не вычисляется
|
|
585
|
+
* из сплошного цвета через `color-mix`, а зашита в значение, и это осознанно:
|
|
586
|
+
* `scripts/contrast.mjs` разбирает `var(--x)` и готовые цвета, но не
|
|
587
|
+
* вычисляемые выражения. Считай кит `*-soft` через `color-mix` — гейт контраста
|
|
588
|
+
* ослеп бы ровно на тех токенах, ради которых написан.
|
|
589
|
+
*
|
|
590
|
+
* Два шага объявлены только как база для полупрозрачных и сплошными не
|
|
591
|
+
* используются — `--od-blue-4` (#1f7ae0) и `--od-red-4` (#e0594b). Они на
|
|
592
|
+
* полтона отличаются от соседних `--od-blue-3` (#1e76da) и `--od-red-2`
|
|
593
|
+
* (#da3c2b), которыми покрашены сами тона. Расхождение историческое: заливка и
|
|
594
|
+
* её полупрозрачная версия калибровались в разные заходы. Здесь оно не
|
|
595
|
+
* чинится — правка сдвинула бы контраст, а волна 16 обещает не менять ни
|
|
596
|
+
* одного вычисляемого значения; см. `tasks/plan.md`, Task 6.
|
|
597
|
+
*
|
|
598
|
+
* Чего в этом слое НЕТ и почему. Радиусы, кегли и анимации остаются там, где
|
|
599
|
+
* лежали: они и так примитивны и от темы не зависят, второе имя для них было бы
|
|
600
|
+
* обрядом. Тени и градиенты — композиции из геометрии и цвета, а не палитра:
|
|
601
|
+
* они остаются литеральными на слое 2.
|
|
602
|
+
*
|
|
603
|
+
* Потребителю переопределять примитивы не нужно и не поддерживается: точка
|
|
604
|
+
* правки — семантика и блок бренда, см. `docs/theming.md`.
|
|
605
|
+
*/
|
|
606
|
+
:root {
|
|
607
|
+
/* Нейтрали тёмной темы */
|
|
608
|
+
--od-slate-1: #26272d;
|
|
609
|
+
--od-slate-1-a72: rgba(38, 39, 45, 0.72);
|
|
610
|
+
--od-slate-2: #2e2f36;
|
|
611
|
+
--od-slate-3: #363740;
|
|
612
|
+
--od-slate-4: #3c3d46;
|
|
613
|
+
--od-slate-5: #41424c;
|
|
614
|
+
--od-slate-6: #494a55;
|
|
615
|
+
--od-slate-7: #4d4e59;
|
|
616
|
+
--od-slate-8: #5a5c66;
|
|
617
|
+
--od-slate-9: #aeb0b9;
|
|
618
|
+
--od-slate-10: #afb0b7;
|
|
619
|
+
--od-slate-11: #dadce4;
|
|
620
|
+
--od-slate-12: #f4f5f8;
|
|
621
|
+
|
|
622
|
+
/* Нейтрали светлой темы */
|
|
623
|
+
--od-cloud-1: #17212b;
|
|
624
|
+
--od-cloud-2: #45515f;
|
|
625
|
+
--od-cloud-3: #545f6e;
|
|
626
|
+
--od-cloud-4: #636e7a;
|
|
627
|
+
--od-cloud-5: #9aa6b2;
|
|
628
|
+
--od-cloud-6: #d9e2ec;
|
|
629
|
+
--od-cloud-7: #e3ebf4;
|
|
630
|
+
--od-cloud-8: #e7edf3;
|
|
631
|
+
--od-cloud-9: #edf2f7;
|
|
632
|
+
--od-cloud-10: #f4f7fa;
|
|
633
|
+
--od-cloud-10-a84: rgba(244, 247, 250, 0.84);
|
|
634
|
+
--od-cloud-11: #f8fafc;
|
|
635
|
+
--od-cloud-12: #ffffff;
|
|
636
|
+
|
|
637
|
+
/* Нейтрали сумрака */
|
|
638
|
+
--od-navy-1: #15202b;
|
|
639
|
+
--od-navy-1-a72: rgba(21, 32, 43, 0.72);
|
|
640
|
+
--od-navy-2: #1e2732;
|
|
641
|
+
--od-navy-3: #253341;
|
|
642
|
+
--od-navy-4: #2d3a44;
|
|
643
|
+
--od-navy-5: #2f3e4f;
|
|
644
|
+
--od-navy-6: #38444d;
|
|
645
|
+
--od-navy-7: #3a4d5f;
|
|
646
|
+
--od-navy-8: #3f5066;
|
|
647
|
+
--od-navy-9: #9faab2;
|
|
648
|
+
--od-navy-10: #9babb8;
|
|
649
|
+
--od-navy-11: #afb8c1;
|
|
650
|
+
--od-navy-12: #f7f9f9;
|
|
651
|
+
|
|
652
|
+
/* Синий — акцент по умолчанию */
|
|
653
|
+
--od-blue-1: #1767c2;
|
|
654
|
+
--od-blue-2: #1c6cc6;
|
|
655
|
+
--od-blue-3: #1e76da;
|
|
656
|
+
--od-blue-4: #1f7ae0;
|
|
657
|
+
--od-blue-4-a16: rgba(31, 122, 224, 0.16);
|
|
658
|
+
--od-blue-4-a18: rgba(31, 122, 224, 0.18);
|
|
659
|
+
--od-blue-4-a20: rgba(31, 122, 224, 0.2);
|
|
660
|
+
--od-blue-4-a35: rgba(31, 122, 224, 0.35);
|
|
661
|
+
--od-blue-5: #3290f4;
|
|
662
|
+
--od-blue-5-a45: rgba(50, 144, 244, 0.45);
|
|
663
|
+
--od-blue-6: #7fc1ff;
|
|
664
|
+
--od-blue-7: #e8f1ff;
|
|
665
|
+
|
|
666
|
+
/* Зелёный — тон success */
|
|
667
|
+
--od-green-1: #17724c;
|
|
668
|
+
--od-green-2: #1f9d68;
|
|
669
|
+
--od-green-2-a12: rgba(31, 157, 104, 0.12);
|
|
670
|
+
--od-green-3: #3fb47f;
|
|
671
|
+
--od-green-3-a12: rgba(63, 180, 127, 0.12);
|
|
672
|
+
--od-green-4: #7ad1a9;
|
|
673
|
+
|
|
674
|
+
/* Янтарный — тон warning */
|
|
675
|
+
--od-amber-1: #895a0d;
|
|
676
|
+
--od-amber-2: #c98512;
|
|
677
|
+
--od-amber-2-a14: rgba(201, 133, 18, 0.14);
|
|
678
|
+
--od-amber-3: #f0b341;
|
|
679
|
+
--od-amber-3-a13: rgba(240, 179, 65, 0.13);
|
|
680
|
+
--od-amber-4: #f2bf5f;
|
|
681
|
+
|
|
682
|
+
/* Красный — тон danger */
|
|
683
|
+
--od-red-1: #b82d2d;
|
|
684
|
+
--od-red-2: #da3c2b;
|
|
685
|
+
--od-red-3: #d14343;
|
|
686
|
+
--od-red-3-a12: rgba(209, 67, 67, 0.12);
|
|
687
|
+
--od-red-4: #e0594b;
|
|
688
|
+
--od-red-4-a12: rgba(224, 89, 75, 0.12);
|
|
689
|
+
--od-red-5: #eea8a0;
|
|
690
|
+
|
|
691
|
+
/* Фиолетовый — второй акцент */
|
|
692
|
+
--od-violet-1: #5947e0;
|
|
693
|
+
--od-violet-2: #5744e9;
|
|
694
|
+
--od-violet-3: #6d5df0;
|
|
695
|
+
--od-violet-3-a14: rgba(109, 93, 240, 0.14);
|
|
696
|
+
--od-violet-3-a20: rgba(109, 93, 240, 0.2);
|
|
697
|
+
--od-violet-3-a32: rgba(109, 93, 240, 0.32);
|
|
698
|
+
--od-violet-4: #b8b2f8;
|
|
699
|
+
--od-violet-4-a30: rgba(184, 178, 248, 0.3);
|
|
700
|
+
|
|
701
|
+
/* Индиго — дополнительный тон (`accent-alt`) */
|
|
702
|
+
--od-indigo-1: #4f7be8;
|
|
703
|
+
--od-indigo-1-a14: rgba(79, 123, 232, 0.14);
|
|
704
|
+
--od-indigo-2: #7d63ef;
|
|
705
|
+
--od-indigo-2-a14: rgba(125, 99, 239, 0.14);
|
|
706
|
+
|
|
707
|
+
/* Лаймовый — тон draft */
|
|
708
|
+
/*
|
|
709
|
+
* Оттенки пользовательских меток.
|
|
710
|
+
*
|
|
711
|
+
* СВОИ СТУПЕНИ, А НЕ ПЕРЕИСПОЛЬЗОВАННЫЕ СТУПЕНИ ТОНОВ, и это решение.
|
|
712
|
+
* Заявка просит зелёный, янтарный и красный — то есть ровно те оттенки,
|
|
713
|
+
* которыми кит обозначает успех, предупреждение и ошибку. Возьми метка
|
|
714
|
+
* значение тона буквально — и кружок рядом с проектом прочитается как
|
|
715
|
+
* статус. Поэтому ступени сдвинуты: метка узнаётся как метка по месту и
|
|
716
|
+
* форме, а по цвету не совпадает со смыслом ни в одной теме.
|
|
717
|
+
*/
|
|
718
|
+
--od-label-blue-d: #4c9aff;
|
|
719
|
+
--od-label-violet-d: #9b8cff;
|
|
720
|
+
--od-label-teal-d: #2dd4bf;
|
|
721
|
+
--od-label-green-d: #34c98a;
|
|
722
|
+
--od-label-amber-d: #e0a63a;
|
|
723
|
+
--od-label-red-d: #f0766a;
|
|
724
|
+
--od-label-pink-d: #f472b6;
|
|
725
|
+
--od-label-steel-d: #8aa6c0;
|
|
726
|
+
|
|
727
|
+
--od-label-blue-l: #1767c2;
|
|
728
|
+
--od-label-violet-l: #5947e0;
|
|
729
|
+
--od-label-teal-l: #0f766e;
|
|
730
|
+
--od-label-green-l: #17724c;
|
|
731
|
+
--od-label-amber-l: #895a0d;
|
|
732
|
+
--od-label-red-l: #b82d2d;
|
|
733
|
+
--od-label-pink-l: #be185d;
|
|
734
|
+
--od-label-steel-l: #4b6b8a;
|
|
735
|
+
|
|
736
|
+
/*
|
|
737
|
+
* Подложки маркера Редактора. Яркие — `yellow`, `green`, `pink`:
|
|
738
|
+
* как у настоящего текстовыделителя, одни и те же во всех темах, HSL со
|
|
739
|
+
* светлотой 75 % и насыщенностью 100 % (оттенки 50°, 100°, 330°), а текст на
|
|
740
|
+
* них всегда тёмный — `--od-marker-text`. Остальные шесть — прежние названия
|
|
741
|
+
* цвета, как в Notion, «читаемые»: Схема и показ их понимают, меню
|
|
742
|
+
* не предлагает, а значения не менялись. Суффикс `-d` — тёмные приглушённые
|
|
743
|
+
* (под `fg-0` светлого текста), `-l` — пастель (под `fg-0` тёмного). Читает их
|
|
744
|
+
* токен `--marker-<имя>` компонентного слоя.
|
|
745
|
+
*/
|
|
746
|
+
--od-marker-yellow: #ffea80;
|
|
747
|
+
--od-marker-green: #aaff80;
|
|
748
|
+
--od-marker-pink: #ff80bf;
|
|
749
|
+
--od-marker-text: #1a1a1a;
|
|
750
|
+
|
|
751
|
+
--od-marker-gray-d: #5a5a5a;
|
|
752
|
+
--od-marker-brown-d: #603b2c;
|
|
753
|
+
--od-marker-orange-d: #854c1d;
|
|
754
|
+
--od-marker-blue-d: #28456c;
|
|
755
|
+
--od-marker-purple-d: #492f64;
|
|
756
|
+
--od-marker-red-d: #6e3630;
|
|
757
|
+
|
|
758
|
+
--od-marker-gray-l: #e3e2e0;
|
|
759
|
+
--od-marker-brown-l: #eee0da;
|
|
760
|
+
--od-marker-orange-l: #fadec9;
|
|
761
|
+
--od-marker-blue-l: #d3e5ef;
|
|
762
|
+
--od-marker-purple-l: #e8deee;
|
|
763
|
+
--od-marker-red-l: #ffe2dd;
|
|
764
|
+
|
|
765
|
+
--od-lime-1: #3f6212;
|
|
766
|
+
--od-lime-2: #4d7c0f;
|
|
767
|
+
--od-lime-2-a10: rgba(77, 124, 15, 0.1);
|
|
768
|
+
--od-lime-3: #a3e635;
|
|
769
|
+
--od-lime-3-a14: rgba(163, 230, 53, 0.14);
|
|
770
|
+
--od-lime-4: #d9f99d;
|
|
771
|
+
|
|
772
|
+
/*
|
|
773
|
+
* Тушь — нейтральная тёмная подложка инверсной поверхности в светлой теме.
|
|
774
|
+
* Своя ступень, а не `cloud-1`: тот синеват и читается как
|
|
775
|
+
* цвет текста, а плашке над выделением нужен чистый тёмно-серый, как у
|
|
776
|
+
* меню выделения Notion и Google Docs.
|
|
777
|
+
*/
|
|
778
|
+
--od-ink-1: #1f1f1f;
|
|
779
|
+
--od-ink-2: #333333;
|
|
780
|
+
--od-ink-3: #4a4a4a;
|
|
781
|
+
|
|
782
|
+
/* Подложка оверлеев */
|
|
783
|
+
--od-scrim-dark: rgba(6, 7, 9, 0.78);
|
|
784
|
+
--od-scrim-light: rgba(236, 242, 248, 0.78);
|
|
785
|
+
|
|
786
|
+
/*
|
|
787
|
+
* ── Слой 2: семантика ──────────────────────────────────────────────────────
|
|
788
|
+
*
|
|
789
|
+
* Роль как значение: что чем красится. Каждый токен — присвоение примитива
|
|
790
|
+
* роли, и только здесь тема имеет смысл. Блоки ниже (`[data-theme]`,
|
|
791
|
+
* `[data-accent]`) переопределяют те же роли другими примитивами.
|
|
792
|
+
*
|
|
793
|
+
* Слои живут в ОДНОМ блоке `:root`, а не в двух, и это не небрежность:
|
|
794
|
+
* `scripts/contrast.mjs` собирает базовые значения по ПЕРВОМУ совпадению
|
|
795
|
+
* селектора `:root`. Раздели слои на два блока — и гейт контраста прочитал
|
|
796
|
+
* бы палитру вместо ролей, упав на первом же токене. Разделение остаётся
|
|
797
|
+
* комментарием, а не селектором.
|
|
798
|
+
*
|
|
799
|
+
* По той же причине в комментариях этого файла не пишется открывающая
|
|
800
|
+
* фигурная скобка: разбор в скрипте считает скобки в тексте, не отличая
|
|
801
|
+
* комментарий от кода, и одна лишняя уводит счётчик в бесконечный цикл.
|
|
802
|
+
* Проверено дорого — на этой самой правке.
|
|
803
|
+
*/
|
|
804
|
+
--surface-app: var(--od-slate-1);
|
|
805
|
+
--surface-panel: var(--od-slate-2);
|
|
806
|
+
--surface-panel-hover: var(--od-slate-3);
|
|
807
|
+
--surface-elevated: var(--od-slate-5);
|
|
808
|
+
--surface-contrast: var(--od-slate-7);
|
|
809
|
+
|
|
810
|
+
/*
|
|
811
|
+
* Инверсная поверхность — плашка, которая обязана отличаться от
|
|
812
|
+
* всего вокруг: меню выделения Редактора над текстом. Светлая в тёмных
|
|
813
|
+
* темах, тёмная в светлой. Четыре роли: подложка, текст и значки на ней,
|
|
814
|
+
* наведение и нажатие; пятая — `--accent-on-inverse` ниже, контур фокуса.
|
|
815
|
+
*
|
|
816
|
+
* СВОЯ ГРУППА, А НЕ `surface-contrast`. Тот — ступень той же шкалы
|
|
817
|
+
* подложек (полоса прокрутки, `bg-4`) и отличается от панели на шаг, а не
|
|
818
|
+
* знаком. Плашка над текстом шагом не обходится: она стоит прямо на
|
|
819
|
+
* Документе, и одна ступень яркости слилась бы с ним.
|
|
820
|
+
*
|
|
821
|
+
* Сумрак не переопределяет: светлая плашка годится обеим тёмным темам.
|
|
822
|
+
* Бренд и акцент меняют только контур фокуса — подложка нейтральна.
|
|
823
|
+
* Пары контраста — `scripts/contrast.mjs`; решение — ADR-0055.
|
|
824
|
+
*/
|
|
825
|
+
--surface-inverse: var(--od-cloud-11);
|
|
826
|
+
--surface-inverse-hover: var(--od-cloud-8);
|
|
827
|
+
--surface-inverse-pressed: var(--od-cloud-6);
|
|
828
|
+
--text-on-inverse: var(--od-cloud-1);
|
|
829
|
+
|
|
830
|
+
/*
|
|
831
|
+
* Шкала подписей держит три ступени контраста в каждой теме: secondary ≥ 7.5,
|
|
832
|
+
* muted ≥ 6.0, muted-2 ≥ 4.5 (по худшей из подложек `--surface-app` /
|
|
833
|
+
* `--surface-panel`). Нижняя ступень — это AA для текста; две верхние взяты
|
|
834
|
+
* с запасом не ради нормы, а чтобы ступени остались различимы. Подтянуть
|
|
835
|
+
* только muted-2 было дешевле, но тогда в `light` и `dim` он сравнялся бы
|
|
836
|
+
* с muted (4.51 против 4.52), и три уровня иерархии превратились бы в два.
|
|
837
|
+
*/
|
|
838
|
+
--text-primary: var(--od-slate-12);
|
|
839
|
+
--text-secondary: var(--od-slate-11);
|
|
840
|
+
--text-muted: var(--od-slate-9);
|
|
841
|
+
--text-muted-2: var(--od-slate-10);
|
|
842
|
+
--text-disabled: var(--od-slate-8);
|
|
843
|
+
--text-on-accent: var(--od-cloud-12);
|
|
844
|
+
|
|
845
|
+
/*
|
|
846
|
+
* Текст на заливках `warning` и `success`. Белый на них недостижим: на жёлтом
|
|
847
|
+
* он даёт 1.87 при требуемых 4.5, и подбором оттенка это не чинится — чтобы
|
|
848
|
+
* дотянуть, жёлтый пришлось бы затемнить до коричневого. Поэтому у этих двух
|
|
849
|
+
* тонов `solid` устроен иначе, чем у остальных: тёмный текст вместо
|
|
850
|
+
* `--text-on-accent`. Отступление осознанное, см. docs/palette.md.
|
|
851
|
+
*
|
|
852
|
+
* Объявлены один раз и не переопределяются по темам: значение проходит 4.5:1
|
|
853
|
+
* против обеих заливок во всех трёх темах (5.31–8.71).
|
|
854
|
+
*/
|
|
855
|
+
--text-on-warning: var(--od-cloud-1);
|
|
856
|
+
--text-on-success: var(--od-cloud-1);
|
|
857
|
+
|
|
858
|
+
--border-default: var(--od-slate-6);
|
|
859
|
+
--border-soft: var(--od-slate-4);
|
|
860
|
+
|
|
861
|
+
/*
|
|
862
|
+
* У каждого тона два токена, потому что у него две несовместимые роли.
|
|
863
|
+
*
|
|
864
|
+
* --tone заливка `solid`: под белым текстом, поэтому ТЕМНЕЕ
|
|
865
|
+
* --tone-strong тот же тон как текст, рамка и индикатор: на подложке,
|
|
866
|
+
* поэтому в тёмных темах СВЕТЛЕЕ, в светлой темнее
|
|
867
|
+
*
|
|
868
|
+
* Одним значением обе роли не закрыть: `#e0594b` даёт 3.68 под белым текстом
|
|
869
|
+
* (нужно темнее) и 3.18 как текст на панели (нужно светлее). Пара `accent` /
|
|
870
|
+
* `accent-strong` жила так с самого начала — остальные тона просто приведены
|
|
871
|
+
* к тому же устройству.
|
|
872
|
+
*/
|
|
873
|
+
--accent: var(--od-blue-3);
|
|
874
|
+
--accent-hover: var(--od-blue-5);
|
|
875
|
+
--accent-soft: var(--od-blue-4-a16);
|
|
876
|
+
--accent-strong: var(--od-blue-6);
|
|
877
|
+
--focus-ring: var(--od-blue-4-a20);
|
|
878
|
+
/*
|
|
879
|
+
* Акцент НА инверсной поверхности — контур фокуса в меню выделения. Это
|
|
880
|
+
* `accent-strong` противоположной темы: плашка в тёмной теме светлая, и
|
|
881
|
+
* ей нужен тёмный синий, как светлой теме. Поэтому у бренда и акцента он
|
|
882
|
+
* переопределяется зеркально к `accent-strong`.
|
|
883
|
+
*/
|
|
884
|
+
--accent-on-inverse: var(--od-blue-2);
|
|
885
|
+
/*
|
|
886
|
+
* Заливка выделенного текста: глобальный `::selection` и роль
|
|
887
|
+
* `--rte-selection` Редактора. Раньше это был `accent-soft`, и выделение
|
|
888
|
+
* терялось во всех темах: 14–16 % альфы давали 1.1–1.3:1 к подложке, а в
|
|
889
|
+
* светлой `#e8f1ff` на `#edf2f7` не отличался от фона вовсе.
|
|
890
|
+
*
|
|
891
|
+
* СВОЙ ТОКЕН, А НЕ ПЛОТНЕЕ `accent-soft`: на том держатся тона, плашки и
|
|
892
|
+
* выбранные пункты, и правка затронула бы их все.
|
|
893
|
+
*
|
|
894
|
+
* 3:1 к подложке здесь НЕ ЦЕЛЬ, и это не уступка. В тёмной теме заливка,
|
|
895
|
+
* отличная от фона на 3:1, уже не держит 4.5:1 светлого текста поверх, а
|
|
896
|
+
* читаемость выделенного текста важнее. Ориентир — системные выделения:
|
|
897
|
+
* VS Code тёмный 1.96:1, macOS и VS Code светлые 1.5:1. Отсюда:
|
|
898
|
+
* в тёмных темах — светлая ступень акцента (1.7–2.0:1, текст ≥ 5.2),
|
|
899
|
+
* в светлой — насыщенная (1.5–1.6:1, текст ≥ 9.3). Текст поверх меряет
|
|
900
|
+
* `npm run contrast`.
|
|
901
|
+
*
|
|
902
|
+
* `--selection-light` — светлый вариант ПРИ ЛЮБОЙ теме приложения: его
|
|
903
|
+
* берёт белый лист Редактора (`surface="paper"`) в тёмном приложении, где
|
|
904
|
+
* `--selection` тёмный. Светлая тема присваивает его `--selection`, поэтому
|
|
905
|
+
* значение у них одно и рассинхрониться не может.
|
|
906
|
+
*
|
|
907
|
+
* `--selection-dark` — зеркально: тёмный вариант ПРИ ЛЮБОЙ теме. Его берёт
|
|
908
|
+
* поле HTML-режима Редактора, тёмное и в светлой теме: светлое
|
|
909
|
+
* выделение с тёмным текстом светлой темы читалось на нём тёмным по
|
|
910
|
+
* тёмно-синему. Тёмные темы присваивают его `--selection`.
|
|
911
|
+
*/
|
|
912
|
+
--selection-dark: var(--od-blue-5-a45);
|
|
913
|
+
--selection: var(--selection-dark);
|
|
914
|
+
--selection-light: var(--od-blue-4-a35);
|
|
915
|
+
|
|
916
|
+
--success: var(--od-green-3);
|
|
917
|
+
--success-soft: var(--od-green-3-a12);
|
|
918
|
+
--success-strong: var(--od-green-4);
|
|
919
|
+
|
|
920
|
+
--warning: var(--od-amber-3);
|
|
921
|
+
--rating-star: var(--od-amber-3);
|
|
922
|
+
--warning-soft: var(--od-amber-3-a13);
|
|
923
|
+
--warning-strong: var(--od-amber-4);
|
|
924
|
+
|
|
925
|
+
--danger: var(--od-red-2);
|
|
926
|
+
--danger-soft: var(--od-red-4-a12);
|
|
927
|
+
--danger-strong: var(--od-red-5);
|
|
928
|
+
|
|
929
|
+
/*
|
|
930
|
+
* Несохранённые правки: «здесь тебя ждут», а не «здесь ошибка».
|
|
931
|
+
*
|
|
932
|
+
* Отдельный тон, а не `accent`, `warning` или `danger`, и каждое «не» —
|
|
933
|
+
* купленное. `accent` — цвет кнопки, которая эту пометку снимает: пометка и
|
|
934
|
+
* действие сливались бы в одно пятно. `warning` — янтарный, и на экране
|
|
935
|
+
* кампаний он уже занят живой валидацией («выберите день недели»); два
|
|
936
|
+
* тёплых тона с разным смыслом рядом не различаются. `danger` обещает, что
|
|
937
|
+
* что-то сломано, а несохранённый черновик — нормальное состояние работы.
|
|
938
|
+
*
|
|
939
|
+
* ПОЧЕМУ ЛАЙМ. Круг оттенков занят почти целиком: красный 6°, янтарь 39°,
|
|
940
|
+
* зелёный 153°, бренд teal 173°, акцент 212°, индиго и ось violet 247–251°.
|
|
941
|
+
* Свободных промежутков два, и лайм (83°) стоит посередине большего: 57° до
|
|
942
|
+
* янтаря, 70° до зелёного, 116° до акцента. Пурпурный промежуток шире по
|
|
943
|
+
* числам, но упирается в ось `data-accent="violet"` — 20° при включённом
|
|
944
|
+
* фиолетовом акценте.
|
|
945
|
+
*
|
|
946
|
+
* Прежде тон держала маджента (#f472b6): 117° до акцента против 116° у лайма,
|
|
947
|
+
* то есть по разносу с акцентом замена равноценна — разменяны 37° до красного
|
|
948
|
+
* на 57° до янтаря. Контраст замена улучшает вдвое: худшая пара тона была 3.76
|
|
949
|
+
* (`draft` как рамка в dark), стала 6.61.
|
|
950
|
+
*
|
|
951
|
+
* Возражение против жёлтого, из-за которого пара «синий + жёлтый» отклонена,
|
|
952
|
+
* лайма не касается: оно было про соседство с живой валидацией на одном
|
|
953
|
+
* экране, а не про тёплые оттенки вообще. От янтаря валидации лайм отделён и
|
|
954
|
+
* оттенком, и насыщенностью.
|
|
955
|
+
*
|
|
956
|
+
* От алой пометки «в избранном» (#fb7185, жила в прикладном слое) отличается
|
|
957
|
+
* теперь настолько, что спутать их нельзя вовсе: сердечки в библиотеке и
|
|
958
|
+
* пометка правок не должны читаться как одно.
|
|
959
|
+
*/
|
|
960
|
+
--draft: var(--od-lime-3);
|
|
961
|
+
--draft-soft: var(--od-lime-3-a14);
|
|
962
|
+
--draft-strong: var(--od-lime-4);
|
|
963
|
+
|
|
964
|
+
/*
|
|
965
|
+
* ── Метки пользователя ─────────────────────────────────────────────────────
|
|
966
|
+
*
|
|
967
|
+
* Закрытый набор оттенков под то, что красит сам человек: проект, ярлык,
|
|
968
|
+
* категорию. Смысловые тоны для этого занимать нельзя — метка цвета
|
|
969
|
+
* `danger` читалась бы как ошибка, а тон перестал бы значить то, что значит.
|
|
970
|
+
*
|
|
971
|
+
* НЕ ЗАВИСЯТ НИ ОТ АКЦЕНТА, НИ ОТ БРЕНДА. Оба оверлея переопределяют только
|
|
972
|
+
* `--accent*`, а метки смотрят прямо в примитивы: переключив акцент с синего
|
|
973
|
+
* на фиолетовый, пользователь не должен обнаружить, что все его проекты
|
|
974
|
+
* сменили цвет. Поэтому здесь `var(--od-label-…)`, а не `var(--accent)` —
|
|
975
|
+
* ссылка на роль внесла бы сюда чужую ось.
|
|
976
|
+
*
|
|
977
|
+
* Имена по оттенку, а не по назначению (`label-1`, `project-a`): имя уезжает
|
|
978
|
+
* в базу потребителя ключом и переживает смену значений, а назначение у
|
|
979
|
+
* каждого потребителя своё.
|
|
980
|
+
*
|
|
981
|
+
* Сумрак их не переопределяет: подложки у него темнее тёмной темы, и
|
|
982
|
+
* оттенки, прошедшие порог на ней, проходят и здесь. Проверяет `npm run contrast`.
|
|
983
|
+
*/
|
|
984
|
+
--label-blue: var(--od-label-blue-d);
|
|
985
|
+
--label-violet: var(--od-label-violet-d);
|
|
986
|
+
--label-teal: var(--od-label-teal-d);
|
|
987
|
+
--label-green: var(--od-label-green-d);
|
|
988
|
+
--label-amber: var(--od-label-amber-d);
|
|
989
|
+
--label-red: var(--od-label-red-d);
|
|
990
|
+
--label-pink: var(--od-label-pink-d);
|
|
991
|
+
--label-steel: var(--od-label-steel-d);
|
|
992
|
+
|
|
993
|
+
--accent-alt: var(--od-indigo-2);
|
|
994
|
+
--accent-alt-soft: var(--od-indigo-2-a14);
|
|
995
|
+
|
|
996
|
+
--shadow-1: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 1px 2px rgba(0, 0, 0, 0.4);
|
|
997
|
+
--shadow-2: 0 12px 40px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.35);
|
|
998
|
+
|
|
999
|
+
/*
|
|
1000
|
+
* ── Слой 3: компонентные токены ────────────────────────────────────────────
|
|
1001
|
+
*
|
|
1002
|
+
* Единственные точки правки вида, специфичные для семьи компонентов, а не
|
|
1003
|
+
* для системы. Список закрытый и намеренно короткий: компонентный токен
|
|
1004
|
+
* заводится тогда, когда у семьи есть НАСТОЯЩАЯ причина отличаться от
|
|
1005
|
+
* семантики, а не «на всякий случай». Токен без читателя не заводится вовсе.
|
|
1006
|
+
*
|
|
1007
|
+
* Кто их читает:
|
|
1008
|
+
* --overlay-scrim Dialog, Drawer, CommandPalette, ModalOverlay (подложка)
|
|
1009
|
+
* --modal-shadow Dialog (тень модальной поверхности)
|
|
1010
|
+
* --topbar-bg SelectionBar в прилипшем состоянии; с волны 17 — TopBar
|
|
1011
|
+
* --sidenav-w SideNav и сетка AppShell (развёрнутая ширина)
|
|
1012
|
+
* --sidenav-w-collapsed они же в иконочном режиме
|
|
1013
|
+
*
|
|
1014
|
+
* `--topbar-bg` назван по роли, а не по единственному сегодняшнему читателю:
|
|
1015
|
+
* это полупрозрачный фон поверхности уровня шапки. Переименовывать его в
|
|
1016
|
+
* `--sticky-bar-bg` под текущего потребителя было бы правдой ровно до волны
|
|
1017
|
+
* 17, где приезжает собственный `TopBar`.
|
|
1018
|
+
*
|
|
1019
|
+
* Что компонентным токеном НЕ является. `--shadow-1` и `--shadow-2` — шкала
|
|
1020
|
+
* высоты уровня системы, их читают восемь семей и мост `@theme`; они лежат
|
|
1021
|
+
* на слое 2. `--topbar-h` вообще не объявляется здесь: её публикует
|
|
1022
|
+
* ПРИЛОЖЕНИЕ, а кит читает (`useStickyOffset`, ADR-0016) — это входящий
|
|
1023
|
+
* контракт, а не токен кита. Радиусы и кегли — общая шкала, см. слой 1.
|
|
1024
|
+
*/
|
|
1025
|
+
--overlay-scrim: var(--od-scrim-dark);
|
|
1026
|
+
--topbar-bg: var(--od-slate-1-a72);
|
|
1027
|
+
--modal-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
|
|
1028
|
+
|
|
1029
|
+
/*
|
|
1030
|
+
* Ширины сайдбара — переменные, а НЕ пропы, и причина та же, по которой
|
|
1031
|
+
* `--topbar-h` не пробрасывается через React (ADR-0016): значение нужно
|
|
1032
|
+
* одновременно сайдбару и сетке `AppShell`, а раскладку мобильного режима
|
|
1033
|
+
* переключает CSS, а не JavaScript (ADR-0018). Число, идущее пропом в два
|
|
1034
|
+
* компонента, — это ререндер ради того, что CSS умеет прочитать сам.
|
|
1035
|
+
*
|
|
1036
|
+
* От темы не зависят и в блоках тем не повторяются: ширина не цвет.
|
|
1037
|
+
* Значения — замер прежней оболочки во фронте, где они стояли инлайном.
|
|
1038
|
+
*/
|
|
1039
|
+
--sidenav-w: 240px;
|
|
1040
|
+
--sidenav-w-collapsed: 72px;
|
|
1041
|
+
|
|
1042
|
+
/*
|
|
1043
|
+
Шкала радиусов покрывает то, что действительно рисуется, а не то, что
|
|
1044
|
+
хотелось бы. Две ступени добавлены задним числом, когда выяснилось, что
|
|
1045
|
+
половина кита живёт мимо шкалы: `rounded-[10px]` встречался 21 раз, а
|
|
1046
|
+
`rounded-[6px]` — семь, и ни того ни другого в ряду 8/12/16/20 не было.
|
|
1047
|
+
|
|
1048
|
+
`--r-control` названа по роли, а не по размеру, и это осознанно: 10px —
|
|
1049
|
+
не «ступень между sm и md», а высота скругления самих контролов. Её носят
|
|
1050
|
+
кнопка, оболочка поля, триггер Select, сегмент и тултип; менять её значит
|
|
1051
|
+
менять вид всего продукта разом, и имя должно об этом говорить.
|
|
1052
|
+
*/
|
|
1053
|
+
--r-xs: 6px;
|
|
1054
|
+
--r-sm: 8px;
|
|
1055
|
+
--r-control: 10px;
|
|
1056
|
+
--r-md: 12px;
|
|
1057
|
+
--r-lg: 16px;
|
|
1058
|
+
--r-xl: 20px;
|
|
1059
|
+
|
|
1060
|
+
/* compatibility tokens for the current Tailwind utility layer */
|
|
1061
|
+
--bg-0: var(--surface-app);
|
|
1062
|
+
--bg-1: var(--surface-panel);
|
|
1063
|
+
--bg-2: var(--surface-panel-hover);
|
|
1064
|
+
--bg-3: var(--surface-elevated);
|
|
1065
|
+
--bg-4: var(--surface-contrast);
|
|
1066
|
+
|
|
1067
|
+
--fg-0: var(--text-primary);
|
|
1068
|
+
--fg-1: var(--text-secondary);
|
|
1069
|
+
--fg-2: var(--text-muted);
|
|
1070
|
+
--fg-3: var(--text-muted-2);
|
|
1071
|
+
--fg-4: var(--text-disabled);
|
|
1072
|
+
|
|
1073
|
+
--line: var(--border-default);
|
|
1074
|
+
--line-soft: var(--border-soft);
|
|
1075
|
+
|
|
1076
|
+
--tg: var(--accent);
|
|
1077
|
+
--tg-2: var(--accent-strong);
|
|
1078
|
+
--tg-soft: var(--accent-soft);
|
|
1079
|
+
|
|
1080
|
+
--ok: var(--success);
|
|
1081
|
+
--ok-soft: var(--success-soft);
|
|
1082
|
+
|
|
1083
|
+
--warn: var(--warning);
|
|
1084
|
+
--warn-soft: var(--warning-soft);
|
|
1085
|
+
|
|
1086
|
+
--err: var(--danger);
|
|
1087
|
+
--err-soft: var(--danger-soft);
|
|
1088
|
+
|
|
1089
|
+
--purple: var(--accent-alt);
|
|
1090
|
+
--purple-soft: var(--accent-alt-soft);
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
:root[data-theme="light"] {
|
|
1094
|
+
--surface-app: var(--od-cloud-10);
|
|
1095
|
+
--surface-panel: var(--od-cloud-12);
|
|
1096
|
+
--surface-panel-hover: var(--od-cloud-9);
|
|
1097
|
+
--surface-elevated: var(--od-cloud-11);
|
|
1098
|
+
--surface-contrast: var(--od-cloud-7);
|
|
1099
|
+
--surface-inverse: var(--od-ink-1);
|
|
1100
|
+
--surface-inverse-hover: var(--od-ink-2);
|
|
1101
|
+
--surface-inverse-pressed: var(--od-ink-3);
|
|
1102
|
+
--text-on-inverse: var(--od-cloud-12);
|
|
1103
|
+
|
|
1104
|
+
--text-primary: var(--od-cloud-1);
|
|
1105
|
+
--text-secondary: var(--od-cloud-2);
|
|
1106
|
+
--text-muted: var(--od-cloud-3);
|
|
1107
|
+
--text-muted-2: var(--od-cloud-4);
|
|
1108
|
+
--text-disabled: var(--od-cloud-5);
|
|
1109
|
+
--text-on-accent: var(--od-cloud-12);
|
|
1110
|
+
|
|
1111
|
+
--border-default: var(--od-cloud-6);
|
|
1112
|
+
--border-soft: var(--od-cloud-8);
|
|
1113
|
+
|
|
1114
|
+
--accent: var(--od-blue-3);
|
|
1115
|
+
--accent-hover: var(--od-blue-1);
|
|
1116
|
+
--accent-soft: var(--od-blue-7);
|
|
1117
|
+
--accent-strong: var(--od-blue-2);
|
|
1118
|
+
--focus-ring: var(--od-blue-4-a18);
|
|
1119
|
+
--accent-on-inverse: var(--od-blue-6);
|
|
1120
|
+
--selection: var(--selection-light);
|
|
1121
|
+
|
|
1122
|
+
--success: var(--od-green-2);
|
|
1123
|
+
--success-soft: var(--od-green-2-a12);
|
|
1124
|
+
--success-strong: var(--od-green-1);
|
|
1125
|
+
|
|
1126
|
+
--warning: var(--od-amber-2);
|
|
1127
|
+
--rating-star: var(--od-amber-2);
|
|
1128
|
+
--warning-soft: var(--od-amber-2-a14);
|
|
1129
|
+
--warning-strong: var(--od-amber-1);
|
|
1130
|
+
|
|
1131
|
+
--danger: var(--od-red-3);
|
|
1132
|
+
--danger-soft: var(--od-red-3-a12);
|
|
1133
|
+
--danger-strong: var(--od-red-1);
|
|
1134
|
+
|
|
1135
|
+
--draft: var(--od-lime-2);
|
|
1136
|
+
--draft-soft: var(--od-lime-2-a10);
|
|
1137
|
+
--draft-strong: var(--od-lime-1);
|
|
1138
|
+
|
|
1139
|
+
/* Метки: на светлых подложках те же оттенки берутся глубокими ступенями. */
|
|
1140
|
+
--label-blue: var(--od-label-blue-l);
|
|
1141
|
+
--label-violet: var(--od-label-violet-l);
|
|
1142
|
+
--label-teal: var(--od-label-teal-l);
|
|
1143
|
+
--label-green: var(--od-label-green-l);
|
|
1144
|
+
--label-amber: var(--od-label-amber-l);
|
|
1145
|
+
--label-red: var(--od-label-red-l);
|
|
1146
|
+
--label-pink: var(--od-label-pink-l);
|
|
1147
|
+
--label-steel: var(--od-label-steel-l);
|
|
1148
|
+
|
|
1149
|
+
--accent-alt: var(--od-indigo-1);
|
|
1150
|
+
--accent-alt-soft: var(--od-indigo-1-a14);
|
|
1151
|
+
|
|
1152
|
+
--shadow-1: 0 1px 0 rgba(255, 255, 255, 0.72) inset, 0 1px 2px rgba(23, 33, 43, 0.06);
|
|
1153
|
+
--shadow-2: 0 18px 44px rgba(23, 33, 43, 0.1), 0 4px 10px rgba(23, 33, 43, 0.06);
|
|
1154
|
+
|
|
1155
|
+
/* Слой 3 — компонентные токены темы */
|
|
1156
|
+
--overlay-scrim: var(--od-scrim-light);
|
|
1157
|
+
--topbar-bg: var(--od-cloud-10-a84);
|
|
1158
|
+
--modal-shadow: 0 24px 60px rgba(23, 33, 43, 0.16);
|
|
1159
|
+
}
|
|
1160
|
+
|
|
1161
|
+
:root[data-theme="dim"] {
|
|
1162
|
+
--surface-app: var(--od-navy-1);
|
|
1163
|
+
--surface-panel: var(--od-navy-2);
|
|
1164
|
+
--surface-panel-hover: var(--od-navy-3);
|
|
1165
|
+
--surface-elevated: var(--od-navy-5);
|
|
1166
|
+
--surface-contrast: var(--od-navy-7);
|
|
1167
|
+
|
|
1168
|
+
--text-primary: var(--od-navy-12);
|
|
1169
|
+
--text-secondary: var(--od-navy-11);
|
|
1170
|
+
--text-muted: var(--od-navy-9);
|
|
1171
|
+
--text-muted-2: var(--od-navy-10);
|
|
1172
|
+
--text-disabled: var(--od-navy-8);
|
|
1173
|
+
--text-on-accent: var(--od-cloud-12);
|
|
1174
|
+
|
|
1175
|
+
--border-default: var(--od-navy-6);
|
|
1176
|
+
--border-soft: var(--od-navy-4);
|
|
1177
|
+
|
|
1178
|
+
--shadow-1: 0 1px 0 rgba(255, 255, 255, 0.03) inset, 0 1px 2px rgba(0, 0, 0, 0.5);
|
|
1179
|
+
--shadow-2: 0 12px 40px rgba(0, 0, 0, 0.65), 0 2px 8px rgba(0, 0, 0, 0.45);
|
|
1180
|
+
|
|
1181
|
+
/*
|
|
1182
|
+
* Слой 3 — компонентные токены темы. `--overlay-scrim` сумрак не
|
|
1183
|
+
* переопределяет: тёмная подложка модалки годится обеим тёмным темам.
|
|
1184
|
+
*/
|
|
1185
|
+
--topbar-bg: var(--od-navy-1-a72);
|
|
1186
|
+
--modal-shadow: 0 30px 80px rgba(0, 0, 0, 0.75);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
/*
|
|
1190
|
+
* Слой 3 — токены маркера Редактора (`--marker-<имя>`).
|
|
1191
|
+
*
|
|
1192
|
+
* ОБЪЯВЛЕНЫ НА `[data-theme]` ЛЮБОГО ЭЛЕМЕНТА, а не на `:root[data-theme]`, как
|
|
1193
|
+
* остальные темы, и это нужно вложенной теме: область документа с
|
|
1194
|
+
* `surface="paper"` оборачивается в `data-theme="light"` внутри тёмного
|
|
1195
|
+
* приложения, и маркер в ней обязан взять светлое значение. Переменная
|
|
1196
|
+
* наследуется от ближайшего предка с темой, поэтому правил под каждую тему
|
|
1197
|
+
* потомком (`[data-theme] mark`) нет — проза читает только `var(--marker-…)`.
|
|
1198
|
+
*
|
|
1199
|
+
* Тёмный блок назван «любая тема, кроме светлой», а не по именам `dark` и
|
|
1200
|
+
* `dim`: так значения возвращаются и тёмной обёртке внутри светлой, а реестр
|
|
1201
|
+
* тем (`tests/themes.test.ts`) по-прежнему видит блок только у тех тем, у
|
|
1202
|
+
* которых он есть, — у тёмной его нет.
|
|
1203
|
+
*
|
|
1204
|
+
* Моста `@theme` (`--color-marker-*`) у них нет намеренно: мост объявлен на
|
|
1205
|
+
* корне, и `var()` в нём подставляется там, то есть вложенная тема его не
|
|
1206
|
+
* меняет. Сумрак маркерам своих значений не даёт: тёмные подложки годятся
|
|
1207
|
+
* обеим тёмным темам, как у `--overlay-scrim`. Порядок значим: светлый блок
|
|
1208
|
+
* стоит ниже и перекрывает тёмный на корне с `data-theme="light"`. Блок ярких
|
|
1209
|
+
* маркеров темы не различает и от порядка не зависит: имён в тёмном и светлом
|
|
1210
|
+
* блоках у него нет.
|
|
1211
|
+
*/
|
|
1212
|
+
:root,
|
|
1213
|
+
[data-theme]:not([data-theme="light"]) {
|
|
1214
|
+
--marker-gray: var(--od-marker-gray-d);
|
|
1215
|
+
--marker-brown: var(--od-marker-brown-d);
|
|
1216
|
+
--marker-orange: var(--od-marker-orange-d);
|
|
1217
|
+
--marker-blue: var(--od-marker-blue-d);
|
|
1218
|
+
--marker-purple: var(--od-marker-purple-d);
|
|
1219
|
+
--marker-red: var(--od-marker-red-d);
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
/*
|
|
1223
|
+
* Яркие маркеры (`yellow`, `green`, `pink`) и тёмный текст на них — ОДНО
|
|
1224
|
+
* значение во всех темах: блок без `:not(light)` и без светлой
|
|
1225
|
+
* пары, а значит, и в обёртке `surface="paper"`, и в тёмной вложенной теме.
|
|
1226
|
+
* Читаются прямой ссылкой `var(--marker-…)`, как остальные.
|
|
1227
|
+
*/
|
|
1228
|
+
:root,
|
|
1229
|
+
[data-theme] {
|
|
1230
|
+
--marker-yellow: var(--od-marker-yellow);
|
|
1231
|
+
--marker-green: var(--od-marker-green);
|
|
1232
|
+
--marker-pink: var(--od-marker-pink);
|
|
1233
|
+
--marker-text: var(--od-marker-text);
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
[data-theme="light"] {
|
|
1237
|
+
--marker-gray: var(--od-marker-gray-l);
|
|
1238
|
+
--marker-brown: var(--od-marker-brown-l);
|
|
1239
|
+
--marker-orange: var(--od-marker-orange-l);
|
|
1240
|
+
--marker-blue: var(--od-marker-blue-l);
|
|
1241
|
+
--marker-purple: var(--od-marker-purple-l);
|
|
1242
|
+
--marker-red: var(--od-marker-red-l);
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
:root[data-accent="violet"] {
|
|
1246
|
+
--accent: var(--od-violet-3);
|
|
1247
|
+
--accent-hover: var(--od-violet-1);
|
|
1248
|
+
--accent-soft: var(--od-violet-3-a14);
|
|
1249
|
+
--accent-strong: var(--od-violet-4);
|
|
1250
|
+
--focus-ring: var(--od-violet-3-a20);
|
|
1251
|
+
--accent-on-inverse: var(--od-violet-2);
|
|
1252
|
+
--selection-dark: var(--od-violet-4-a30);
|
|
1253
|
+
--selection: var(--selection-dark);
|
|
1254
|
+
--selection-light: var(--od-violet-3-a32);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
/*
|
|
1258
|
+
* Единственное место, где тема и акцент не независимы.
|
|
1259
|
+
*
|
|
1260
|
+
* `--accent-strong` читается на подложке, а «читается» значит разное в тёмной
|
|
1261
|
+
* теме и в светлой: тёмной нужен светлый фиолетовый, светлой — тёмный. Одним
|
|
1262
|
+
* значением обе не закрыть, поэтому светлая тема переопределяет его отдельно.
|
|
1263
|
+
* Селектор из двух атрибутов специфичнее блока выше и стоит после него —
|
|
1264
|
+
* порядок здесь значим.
|
|
1265
|
+
*/
|
|
1266
|
+
:root[data-theme="light"][data-accent="violet"] {
|
|
1267
|
+
--accent-strong: var(--od-violet-2);
|
|
1268
|
+
--accent-on-inverse: var(--od-violet-4);
|
|
1269
|
+
/* Блок акцента стоит ниже светлой темы и вернул бы тёмное выделение. */
|
|
1270
|
+
--selection: var(--selection-light);
|
|
1271
|
+
}
|
|
1272
|
+
|
|
1273
|
+
/*
|
|
1274
|
+
* ── Слой 4: бренд ────────────────────────────────────────────────────────────
|
|
1275
|
+
*
|
|
1276
|
+
* Оверлей `[data-brand="…"]` — способ одеть кит в чужие цвета, не трогая ни
|
|
1277
|
+
* одного компонента. Блок ниже показывает механику целиком: он единственный,
|
|
1278
|
+
* что нужно написать, чтобы завести бренд.
|
|
1279
|
+
*
|
|
1280
|
+
* ПОРЯДОК В ФАЙЛЕ ЗНАЧИМ, и это не стиль, а работающее правило каскада.
|
|
1281
|
+
* `:root[data-brand]` и `:root[data-accent]` имеют ОДИНАКОВУЮ специфичность
|
|
1282
|
+
* (0,2,0) — при равной специфичности побеждает тот, кто ниже. Поэтому бренд
|
|
1283
|
+
* стоит после акцента: заданный бренд отменяет ось акцента целиком, а не
|
|
1284
|
+
* смешивается с ней. Для тем, где бренду нужно своё значение, селектор берёт
|
|
1285
|
+
* два атрибута (0,3,0) и стоит после парного блока темы с акцентом — по той же
|
|
1286
|
+
* причине. Сторожит `tests/token-layers.test.ts`.
|
|
1287
|
+
*
|
|
1288
|
+
* КАК ЗАВЕСТИ СВОЙ БРЕНД. Скопируйте два блока ниже, замените имя и значения.
|
|
1289
|
+
* Правило одно: бренд объявляет СВОИ примитивы внутри своего блока и
|
|
1290
|
+
* присваивает их семантике. Не переопределяйте чужие примитивы — `--od-blue-3`
|
|
1291
|
+
* принадлежит палитре кита, и его правка задела бы всё, что на нём стоит.
|
|
1292
|
+
* Полный разбор — `docs/theming.md`.
|
|
1293
|
+
*
|
|
1294
|
+
* `teal` живёт в пакете как доказательство механики и как образец для копии.
|
|
1295
|
+
* Гейт контраста проверяет его наравне с базовым: бренд, не проходящий по
|
|
1296
|
+
* контрасту, — это бренд, которого нет.
|
|
1297
|
+
*/
|
|
1298
|
+
:root[data-brand="teal"] {
|
|
1299
|
+
/* Примитивы бренда: собственные, а не правка палитры кита. */
|
|
1300
|
+
--od-teal-1: #115e59;
|
|
1301
|
+
--od-teal-2: #0f766e;
|
|
1302
|
+
--od-teal-3: #14b8a6;
|
|
1303
|
+
--od-teal-4: #5eead4;
|
|
1304
|
+
--od-teal-3-a16: rgba(20, 184, 166, 0.16);
|
|
1305
|
+
--od-teal-3-a20: rgba(20, 184, 166, 0.2);
|
|
1306
|
+
--od-teal-3-a35: rgba(20, 184, 166, 0.35);
|
|
1307
|
+
--od-teal-2-a30: rgba(15, 118, 110, 0.3);
|
|
1308
|
+
|
|
1309
|
+
/* Семантика: те же роли, другие примитивы. */
|
|
1310
|
+
--accent: var(--od-teal-2);
|
|
1311
|
+
--accent-hover: var(--od-teal-1);
|
|
1312
|
+
--accent-soft: var(--od-teal-3-a16);
|
|
1313
|
+
--accent-strong: var(--od-teal-4);
|
|
1314
|
+
--focus-ring: var(--od-teal-3-a20);
|
|
1315
|
+
/* Контур фокуса на инверсной плашке — зеркально к `accent-strong`. */
|
|
1316
|
+
--accent-on-inverse: var(--od-teal-1);
|
|
1317
|
+
--selection-dark: var(--od-teal-3-a35);
|
|
1318
|
+
--selection: var(--selection-dark);
|
|
1319
|
+
--selection-light: var(--od-teal-2-a30);
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
/*
|
|
1323
|
+
* Светлая тема ломает независимость бренда ровно там же, где ломала её у
|
|
1324
|
+
* фиолетового акцента: `--accent-strong` читается НА подложке, и светлому
|
|
1325
|
+
* фону нужен тёмный бирюзовый вместо светлого.
|
|
1326
|
+
*
|
|
1327
|
+
* Взят самый тёмный шаг, а не второй: на `--accent-soft` поверх
|
|
1328
|
+
* `surface-panel-hover` второй давал 4.26 при требуемых 4.5 — гейт это и
|
|
1329
|
+
* показал. Пример не подогнан задним числом: бренд проходит контраст так же,
|
|
1330
|
+
* как его обязан проходить любой другой.
|
|
1331
|
+
*/
|
|
1332
|
+
:root[data-theme="light"][data-brand="teal"] {
|
|
1333
|
+
--accent-strong: var(--od-teal-1);
|
|
1334
|
+
--accent-on-inverse: var(--od-teal-4);
|
|
1335
|
+
/* Блок бренда стоит ниже светлой темы и вернул бы тёмное выделение. */
|
|
1336
|
+
--selection: var(--selection-light);
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
/*
|
|
1340
|
+
* Тема подсветки блока кода Редактора (ADR-0051): GitHub Dark в
|
|
1341
|
+
* `dark` и `dim`, GitHub Light в `light`. Цвета взяты из `styles/github*.css`
|
|
1342
|
+
* highlight.js (BSD-3-Clause, NOTICE); `--rte-hl-variable` светлой темы —
|
|
1343
|
+
* `#953800` вместо `#e36209`, у которого 3.49:1 на белом.
|
|
1344
|
+
*
|
|
1345
|
+
* ВТОРАЯ СИСТЕМА ЦВЕТА, И ОНА ОТДЕЛЬНО ОТ ТОКЕНОВ. Значения — литералы, а не
|
|
1346
|
+
* примитивы `--od-*`: это чужая готовая тема, и ни один токен кита на неё не
|
|
1347
|
+
* ссылается. Правила `.hljs-*` живут классами на контейнере Документа
|
|
1348
|
+
* (`src/editor/styles/codeTheme.ts`) и читают только эти переменные.
|
|
1349
|
+
*
|
|
1350
|
+
* ПЕРЕМЕННЫЕ — НА ЭЛЕМЕНТЕ С `data-theme`, А НЕ ПРАВИЛА ПОД НИМ. Блок кода
|
|
1351
|
+
* наследует их от БЛИЖАЙШЕГО предка с темой: Документ в светлой «бумаге»
|
|
1352
|
+
* (`data-theme="light"` внутри тёмного приложения) получает GitHub Light, а
|
|
1353
|
+
* тёмный остров внутри светлой страницы — GitHub Dark. Правила вида
|
|
1354
|
+
* «тёмная тема → `.hljs-keyword` под ней» так не умеют: при вложенных темах они
|
|
1355
|
+
* спорят порядком в файле, и светлая бумага показала бы тёмные токены.
|
|
1356
|
+
* Живой каскад сторожит `tests-visual/interactions.spec.ts` («code theme»),
|
|
1357
|
+
* порядок блоков — `tests/rich-text-view.test.tsx`.
|
|
1358
|
+
*
|
|
1359
|
+
* `:where` держит специфичность нулевой: на `<html data-theme="light">`
|
|
1360
|
+
* совпадают оба блока, и светлый побеждает тем, что стоит ниже, — а
|
|
1361
|
+
* потребитель перекрывает любую переменную без борьбы за специфичность.
|
|
1362
|
+
* Тёмный блок назван «любая тема, кроме светлой», а не `dark` и `dim`
|
|
1363
|
+
* поимённо: `dark` — умолчание оси и своего блока не имеет
|
|
1364
|
+
* (`tests/themes.test.ts`), `dim` берёт GitHub Dark, а без атрибута — тёмная
|
|
1365
|
+
* тема, как у токенов кита.
|
|
1366
|
+
*/
|
|
1367
|
+
:where(:root, [data-theme]:not([data-theme="light"])) {
|
|
1368
|
+
--rte-code-block-background: #0d1117;
|
|
1369
|
+
--rte-code-block-foreground: #c9d1d9;
|
|
1370
|
+
--rte-hl-keyword: #ff7b72;
|
|
1371
|
+
--rte-hl-title: #d2a8ff;
|
|
1372
|
+
--rte-hl-constant: #79c0ff;
|
|
1373
|
+
--rte-hl-string: #a5d6ff;
|
|
1374
|
+
--rte-hl-variable: #ffa657;
|
|
1375
|
+
--rte-hl-comment: #8b949e;
|
|
1376
|
+
--rte-hl-tag: #7ee787;
|
|
1377
|
+
--rte-hl-bullet: #f2cc60;
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
:where([data-theme="light"]) {
|
|
1381
|
+
--rte-code-block-background: #ffffff;
|
|
1382
|
+
--rte-code-block-foreground: #24292e;
|
|
1383
|
+
--rte-hl-keyword: #d73a49;
|
|
1384
|
+
--rte-hl-title: #6f42c1;
|
|
1385
|
+
--rte-hl-constant: #005cc5;
|
|
1386
|
+
--rte-hl-string: #032f62;
|
|
1387
|
+
--rte-hl-variable: #953800;
|
|
1388
|
+
--rte-hl-comment: #6a737d;
|
|
1389
|
+
--rte-hl-tag: #22863a;
|
|
1390
|
+
--rte-hl-bullet: #735c0f;
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
/*
|
|
1394
|
+
* Поле HTML-режима Редактора — ВСЕГДА ТЁМНОЕ, ЦВЕТОМ КИТА. Решение
|
|
1395
|
+
* владельца: режим читается как «код», и поле тёмное в любой теме, но не
|
|
1396
|
+
* чужой GitHub-палитрой Блока кода, а своей. В тёмных темах — самая глубокая
|
|
1397
|
+
* подложка текущей темы (`slate` у `dark`, `navy` у `dim`) с её текстом и
|
|
1398
|
+
* рамкой; в светлой теме и на листе `paper` — те же значения тёмной темы кита,
|
|
1399
|
+
* примитивами `slate`, потому что светлая тема своих тёмных подложек не имеет.
|
|
1400
|
+
* Ссылки на семантику вычисляются на элементе с `data-theme`, поэтому `dim`
|
|
1401
|
+
* получает свой `navy`, а вложенная светлая тема — тёмный `slate`. Новых пар
|
|
1402
|
+
* цвета нет: это текст тёмной темы на её подложке, их уже меряет гейт
|
|
1403
|
+
* контраста (`scripts/contrast.mjs`, `surface-app`).
|
|
1404
|
+
*/
|
|
1405
|
+
:where(:root, [data-theme]:not([data-theme="light"])) {
|
|
1406
|
+
--rte-source-background: var(--surface-app);
|
|
1407
|
+
--rte-source-foreground: var(--text-primary);
|
|
1408
|
+
--rte-source-border: var(--border-default);
|
|
1409
|
+
--rte-source-selection: var(--selection);
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
:where([data-theme="light"]) {
|
|
1413
|
+
--rte-source-background: var(--od-slate-1);
|
|
1414
|
+
--rte-source-foreground: var(--od-slate-12);
|
|
1415
|
+
--rte-source-border: var(--od-slate-6);
|
|
1416
|
+
/* Выделение тёмной темы текущего акцента: поле тёмное, светлое выделение на нём тонуло. */
|
|
1417
|
+
--rte-source-selection: var(--selection-dark);
|
|
1418
|
+
}
|
|
1419
|
+
|
|
1420
|
+
@layer base {
|
|
1421
|
+
html {
|
|
1422
|
+
color-scheme: dark;
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
body {
|
|
1426
|
+
background: var(--surface-app);
|
|
1427
|
+
color: var(--text-primary);
|
|
1428
|
+
font-family: var(--font-inter, Inter, system-ui, sans-serif);
|
|
1429
|
+
font-size: 14px;
|
|
1430
|
+
line-height: 1.5;
|
|
1431
|
+
-webkit-font-smoothing: antialiased;
|
|
1432
|
+
min-height: 100vh;
|
|
1433
|
+
overflow-x: hidden;
|
|
1434
|
+
}
|
|
1435
|
+
|
|
1436
|
+
body.scroll-locked {
|
|
1437
|
+
overflow: hidden !important;
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
button {
|
|
1441
|
+
cursor: pointer;
|
|
1442
|
+
background: none;
|
|
1443
|
+
border: none;
|
|
1444
|
+
font: inherit;
|
|
1445
|
+
color: inherit;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
a {
|
|
1449
|
+
color: inherit;
|
|
1450
|
+
text-decoration: none;
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
input,
|
|
1454
|
+
textarea,
|
|
1455
|
+
select {
|
|
1456
|
+
font: inherit;
|
|
1457
|
+
color: inherit;
|
|
1458
|
+
}
|
|
1459
|
+
|
|
1460
|
+
/*
|
|
1461
|
+
Оверлей react-aria принимает указатель и внутри модального слоя Radix.
|
|
1462
|
+
|
|
1463
|
+
Модальный `Dialog`/`Drawer` ставит `<body>` инлайновое `pointer-events: none`
|
|
1464
|
+
и возвращает указатель только своим слоям. Панель `Menu` и список `Combobox`
|
|
1465
|
+
живут в портале react-aria прямо под `<body>`, наследовали `none` и
|
|
1466
|
+
выбирались только с клавиатуры. Селектор — тот же, по которому
|
|
1467
|
+
`src/lib/overlay-layer.ts` узнаёт чужой слой (`ARIA_OVERLAY_SELECTOR`);
|
|
1468
|
+
связку сторожит `tests/overlay-layers.test.tsx`.
|
|
1469
|
+
|
|
1470
|
+
Вне модального слоя правило ничего не меняет: `auto` там и так наследуется.
|
|
1471
|
+
Слой `base` — чтобы утилитарный `pointer-events-none` по-прежнему побеждал.
|
|
1472
|
+
*/
|
|
1473
|
+
[data-rac][data-placement] {
|
|
1474
|
+
pointer-events: auto;
|
|
1475
|
+
}
|
|
1476
|
+
}
|
|
1477
|
+
|
|
1478
|
+
html[data-theme="light"] {
|
|
1479
|
+
color-scheme: light;
|
|
1480
|
+
}
|
|
1481
|
+
|
|
1482
|
+
html[data-theme="dim"] {
|
|
1483
|
+
color-scheme: dark;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
.mono {
|
|
1487
|
+
font-family: var(--font-mono, ui-monospace, monospace);
|
|
1488
|
+
letter-spacing: -0.01em;
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
::-webkit-scrollbar {
|
|
1492
|
+
width: 10px;
|
|
1493
|
+
height: 10px;
|
|
1494
|
+
}
|
|
1495
|
+
::-webkit-scrollbar-track {
|
|
1496
|
+
background: transparent;
|
|
1497
|
+
}
|
|
1498
|
+
::-webkit-scrollbar-thumb {
|
|
1499
|
+
background: var(--surface-elevated);
|
|
1500
|
+
border-radius: 8px;
|
|
1501
|
+
border: 2px solid var(--surface-app);
|
|
1502
|
+
}
|
|
1503
|
+
::-webkit-scrollbar-thumb:hover {
|
|
1504
|
+
background: var(--surface-contrast);
|
|
1505
|
+
}
|
|
1506
|
+
|
|
1507
|
+
/* Выделение — в слое base: вне слоя правило побеждало любую утилиту
|
|
1508
|
+
`selection:` — каскад ставит неслоёное CSS выше слоёв при любой специфичности.
|
|
1509
|
+
Редактор красит выделение своими ролями (`--rte-selection`, плотнее — поверх
|
|
1510
|
+
маркера), и без слоя они молча не применялись: на маркере выделение было не
|
|
1511
|
+
видно, а на светлом листе в тёмном приложении текст выделения шёл светлым. */
|
|
1512
|
+
@layer base {
|
|
1513
|
+
::selection {
|
|
1514
|
+
background: var(--selection);
|
|
1515
|
+
color: var(--text-primary);
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
|
|
1519
|
+
:focus-visible {
|
|
1520
|
+
/* Индикатор фокуса — не-текст под порогом 3:1, поэтому читаемый вариант тона,
|
|
1521
|
+
а не заливка: `--accent` рассчитан на белый текст поверх и на подложке тусклее. */
|
|
1522
|
+
outline: 2px solid var(--accent-strong);
|
|
1523
|
+
outline-offset: 2px;
|
|
1524
|
+
border-radius: 6px;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
[data-disable-focus-ring="true"]:focus-visible {
|
|
1528
|
+
outline: none !important;
|
|
1529
|
+
outline-offset: 0 !important;
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
.skeleton {
|
|
1533
|
+
background: linear-gradient(90deg, var(--bg-2) 0%, var(--bg-3) 50%, var(--bg-2) 100%);
|
|
1534
|
+
background-size: 800px 100%;
|
|
1535
|
+
/* Через токен, а не строкой: иначе блик не подчиняется блоку
|
|
1536
|
+
`prefers-reduced-motion` выше — тот переопределяет `--animate-shimmer`, и
|
|
1537
|
+
правило, не читающее переменную, просто продолжает бежать (ADR-0043).
|
|
1538
|
+
Значение токена совпадает с прежней строкой один в один. */
|
|
1539
|
+
animation: var(--animate-shimmer);
|
|
1540
|
+
border-radius: var(--r-md);
|
|
1541
|
+
}
|
|
1542
|
+
|
|
1543
|
+
/*
|
|
1544
|
+
* ВНИМАНИЕ: блок обязан лежать в конце файла, после `:root` со смысловым слоем.
|
|
1545
|
+
* `tests/token-layers.test.ts` берёт ТЕКСТОМ первый `:root {` в файле; блок,
|
|
1546
|
+
* поставленный выше, подменял бы собой словарь ролей, и проверка слоёв падала
|
|
1547
|
+
* на бренде с сообщением про необъявленный `--accent`. Проверено — падала.
|
|
1548
|
+
*/
|
|
1549
|
+
/*
|
|
1550
|
+
* Движение при `prefers-reduced-motion: reduce` — ADR-0043.
|
|
1551
|
+
*
|
|
1552
|
+
* Переопределяются СОБСТВЕННЫЕ токены кита, а не всё подряд. Глобального сброса
|
|
1553
|
+
* `*, ::before, ::after { animation-duration: 0.01ms !important }` здесь нет и
|
|
1554
|
+
* не будет: кит владеет своими компонентами, а не документом, в который его
|
|
1555
|
+
* поставили, — таким правилом он погасил бы анимации приложения и чужих
|
|
1556
|
+
* библиотек на той же странице, и снять это потребитель не смог бы ничем.
|
|
1557
|
+
*
|
|
1558
|
+
* Движение снимается, появление — нет. `animation: none` у входной анимации дал
|
|
1559
|
+
* бы не покой, а рывок: элемент возникал бы мгновенно там, где секунду назад
|
|
1560
|
+
* ничего не было. Поэтому перемещающие кейфреймы заменяются на `fadeOnly` — та
|
|
1561
|
+
* же длительность, та же кривая, только прозрачность.
|
|
1562
|
+
*
|
|
1563
|
+
* Два токена НЕ гасятся, и это исключение названо в ADR-0043:
|
|
1564
|
+
* `--animate-progress-indeterminate` и `--animate-spin`. Оба сообщают «идёт
|
|
1565
|
+
* работа», и оба остановленными читаются как поломка, а не как тишина. W3C
|
|
1566
|
+
* выводит существенное движение из-под правила — здесь оно существенное.
|
|
1567
|
+
*
|
|
1568
|
+
* Не трогаются и переходы цвета (`transition-colors`, `transition-shadow`,
|
|
1569
|
+
* `transition-opacity`): правило про движение, а смена цвета ничего не
|
|
1570
|
+
* перемещает. Мгновенное переключение наведения — ухудшение, а не улучшение.
|
|
1571
|
+
* Перемещающие переходы гасятся вариантом `motion-reduce:` по месту: за ними
|
|
1572
|
+
* стоят зашитые значения Tailwind, а не переменная кита, и переопределить их
|
|
1573
|
+
* отсюда нечем.
|
|
1574
|
+
*/
|
|
1575
|
+
@keyframes fadeOnly {
|
|
1576
|
+
from {
|
|
1577
|
+
opacity: 0;
|
|
1578
|
+
}
|
|
1579
|
+
to {
|
|
1580
|
+
opacity: 1;
|
|
1581
|
+
}
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
@keyframes fadeOutOnly {
|
|
1585
|
+
from {
|
|
1586
|
+
opacity: 1;
|
|
1587
|
+
}
|
|
1588
|
+
to {
|
|
1589
|
+
opacity: 0;
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
@keyframes pulseOpacity {
|
|
1594
|
+
0%,
|
|
1595
|
+
100% {
|
|
1596
|
+
opacity: 1;
|
|
1597
|
+
}
|
|
1598
|
+
50% {
|
|
1599
|
+
opacity: 0.5;
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1604
|
+
:root {
|
|
1605
|
+
/*
|
|
1606
|
+
* Меняются ТОЛЬКО кейфреймы. Ступень и кривая повторяют объявление в
|
|
1607
|
+
* `@theme` — и теперь это не обещание в комментарии, а ссылка: разойтись
|
|
1608
|
+
* они могут только вместе, и `tests/motion.test.ts` сверяет обе стороны.
|
|
1609
|
+
*
|
|
1610
|
+
* Прежде здесь стояли те же числа, скопированные руками, и сверить их можно
|
|
1611
|
+
* было только глазами по двум концам файла.
|
|
1612
|
+
*/
|
|
1613
|
+
--animate-fadein: fadeOnly var(--duration-moderate) var(--ease-standard);
|
|
1614
|
+
--animate-sheetin: fadeOnly var(--duration-moderate) var(--ease-enter);
|
|
1615
|
+
--animate-tooltipIn: fadeOnly var(--duration-base) var(--ease-enter);
|
|
1616
|
+
--animate-popoverIn: fadeOnly var(--duration-base) var(--ease-enter);
|
|
1617
|
+
--animate-imgFadeIn: fadeOnly var(--duration-moderate) var(--ease-enter);
|
|
1618
|
+
--animate-modalExpand: fadeOnly var(--duration-moderate) var(--ease-enter);
|
|
1619
|
+
|
|
1620
|
+
/*
|
|
1621
|
+
* Выход гасится так же, как вход: снимается перемещение, а не само
|
|
1622
|
+
* событие. `animation: none` убрал бы исчезновение вовсе — панель
|
|
1623
|
+
* пропадала бы в кадр, то есть резче, чем без правила.
|
|
1624
|
+
*
|
|
1625
|
+
* Ступень и кривая повторяют объявление в `@theme` — это сверяет гейт.
|
|
1626
|
+
*/
|
|
1627
|
+
--animate-fadeout: fadeOutOnly var(--duration-base) var(--ease-exit);
|
|
1628
|
+
--animate-sheetout: fadeOutOnly var(--duration-base) var(--ease-exit);
|
|
1629
|
+
--animate-tooltipOut: fadeOutOnly var(--duration-fast) var(--ease-exit);
|
|
1630
|
+
--animate-popoverOut: fadeOutOnly var(--duration-fast) var(--ease-exit);
|
|
1631
|
+
|
|
1632
|
+
/*
|
|
1633
|
+
* У строки списка гасится СМЫКАНИЕ, а не сам уход: остаётся прозрачность,
|
|
1634
|
+
* место освобождается в один кадр, когда строка снимается.
|
|
1635
|
+
*
|
|
1636
|
+
* Смыкание — это движение всего, что ниже строки, то есть ровно то, от чего
|
|
1637
|
+
* настройка и защищает. Прозрачность при этом остаётся по общему доводу
|
|
1638
|
+
* ADR-0043: `animation: none` дал бы не покой, а рывок.
|
|
1639
|
+
*/
|
|
1640
|
+
--animate-rowout: fadeOutOnly var(--duration-base) var(--ease-exit);
|
|
1641
|
+
|
|
1642
|
+
/* Бесконечный блик по скелетону — украшение без сообщения. Гасится совсем:
|
|
1643
|
+
форму держит сам скелетон, а не его блик. */
|
|
1644
|
+
--animate-shimmer: none;
|
|
1645
|
+
|
|
1646
|
+
/* Мигание остаётся, сжатие уходит: «что-то грузится» сообщает прозрачность,
|
|
1647
|
+
а масштаб только добавляет к этому движение. */
|
|
1648
|
+
--animate-pulse: pulseOpacity 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
1649
|
+
}
|
|
1650
|
+
}
|