@tangible/ui 0.0.2 → 0.0.4
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/README.md +21 -13
- package/components/Accordion/Accordion.d.ts +1 -1
- package/components/Accordion/Accordion.js +3 -3
- package/components/Accordion/types.d.ts +8 -1
- package/components/Avatar/Avatar.js +16 -7
- package/components/Avatar/AvatarGroup.js +7 -5
- package/components/Avatar/types.d.ts +11 -0
- package/components/Button/Button.js +10 -3
- package/components/Button/types.d.ts +9 -1
- package/components/Card/Card.js +26 -13
- package/components/Checkbox/Checkbox.d.ts +1 -1
- package/components/Chip/Chip.d.ts +37 -1
- package/components/Chip/Chip.js +10 -8
- package/components/ChipGroup/ChipGroup.js +5 -4
- package/components/ChipGroup/types.d.ts +3 -0
- package/components/Dropdown/Dropdown.d.ts +19 -1
- package/components/Dropdown/Dropdown.js +84 -28
- package/components/Dropdown/index.d.ts +2 -2
- package/components/Dropdown/index.js +1 -1
- package/components/Dropdown/types.d.ts +15 -0
- package/components/IconButton/IconButton.js +5 -4
- package/components/IconButton/index.d.ts +1 -1
- package/components/IconButton/types.d.ts +24 -4
- package/components/Modal/Modal.d.ts +16 -2
- package/components/Modal/Modal.js +45 -20
- package/components/MoveHandle/MoveHandle.d.ts +2 -0
- package/components/MoveHandle/MoveHandle.js +84 -0
- package/components/MoveHandle/index.d.ts +2 -0
- package/components/MoveHandle/index.js +1 -0
- package/components/MoveHandle/types.d.ts +53 -0
- package/components/MoveHandle/types.js +1 -0
- package/components/Notice/Notice.js +32 -19
- package/components/Select/Select.js +6 -2
- package/components/Sidebar/Sidebar.d.ts +6 -1
- package/components/Sidebar/Sidebar.js +65 -11
- package/components/Sidebar/index.d.ts +1 -1
- package/components/Sidebar/types.d.ts +39 -14
- package/components/Tabs/Tabs.d.ts +1 -1
- package/components/Tabs/Tabs.js +12 -3
- package/components/Tabs/types.d.ts +20 -5
- package/components/TextInput/TextInput.js +10 -2
- package/components/Tooltip/Tooltip.d.ts +2 -2
- package/components/Tooltip/Tooltip.js +61 -40
- package/components/Tooltip/index.d.ts +1 -1
- package/components/Tooltip/types.d.ts +28 -1
- package/components/index.d.ts +4 -2
- package/components/index.js +2 -1
- package/icons/icons.svg +1 -0
- package/icons/manifest.json +8 -0
- package/icons/registry.d.ts +2 -0
- package/icons/registry.js +1 -0
- package/icons/system/index.d.ts +2 -0
- package/icons/system/index.js +11 -0
- package/package.json +1 -1
- package/styles/all.css +1 -1
- package/styles/all.expanded.css +961 -97
- package/styles/all.expanded.unlayered.css +961 -97
- package/styles/all.unlayered.css +1 -1
- package/styles/components/_bundle.scss +2 -0
- package/styles/index.scss +5 -0
- package/styles/system/_control.scss +18 -3
- package/styles/system/_tokens.scss +119 -2
- package/tui-manifest.json +526 -88
- package/utils/focus-trap.js +8 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React, { useCallback, useEffect, useId, useMemo, useRef, useState, cloneElement, isValidElement, } from 'react';
|
|
3
|
-
import { useFloating, offset, flip, shift, autoUpdate, FloatingPortal, } from '@floating-ui/react';
|
|
3
|
+
import { useFloating, offset, flip, shift, arrow, autoUpdate, FloatingPortal, FloatingArrow, } from '@floating-ui/react';
|
|
4
4
|
import { cx } from '../../utils/cx.js';
|
|
5
5
|
import { getPortalRootFor } from '../../utils/portal.js';
|
|
6
6
|
import { TooltipContext, TooltipProviderContext, useTooltipContext, useTooltipProviderContext, } from './TooltipContext.js';
|
|
@@ -8,7 +8,7 @@ import { toPlacement } from './types.js';
|
|
|
8
8
|
// =============================================================================
|
|
9
9
|
// TooltipProvider
|
|
10
10
|
// =============================================================================
|
|
11
|
-
function TooltipProviderComponent({ delayDuration = 400, closeDelayDuration =
|
|
11
|
+
function TooltipProviderComponent({ delayDuration = 400, closeDelayDuration = 150, children, }) {
|
|
12
12
|
const value = useMemo(() => ({ delayDuration, closeDelayDuration }), [delayDuration, closeDelayDuration]);
|
|
13
13
|
return (_jsx(TooltipProviderContext.Provider, { value: value, children: children }));
|
|
14
14
|
}
|
|
@@ -28,46 +28,63 @@ function TooltipRoot({ open: controlledOpen, onOpenChange, defaultOpen = false,
|
|
|
28
28
|
}, [isControlled, onOpenChange]);
|
|
29
29
|
const triggerRef = useRef(null);
|
|
30
30
|
const contentId = useId();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
setOpen,
|
|
34
|
-
triggerRef,
|
|
35
|
-
contentId,
|
|
36
|
-
delayDuration: localDelay ?? providerContext.delayDuration,
|
|
37
|
-
closeDelayDuration: providerContext.closeDelayDuration,
|
|
38
|
-
}), [open, setOpen, contentId, localDelay, providerContext]);
|
|
39
|
-
return (_jsx(TooltipContext.Provider, { value: contextValue, children: children }));
|
|
40
|
-
}
|
|
41
|
-
// =============================================================================
|
|
42
|
-
// TooltipTrigger
|
|
43
|
-
// =============================================================================
|
|
44
|
-
function TooltipTriggerComponent({ asChild = false, children }) {
|
|
45
|
-
const { open, setOpen, triggerRef, contentId, delayDuration, closeDelayDuration } = useTooltipContext();
|
|
31
|
+
// Shared timer refs — lifted here so both Trigger and Content can
|
|
32
|
+
// cancel/schedule close for WCAG 1.4.13 hover persistence.
|
|
46
33
|
const openTimeoutRef = useRef(null);
|
|
47
34
|
const closeTimeoutRef = useRef(null);
|
|
48
|
-
const
|
|
49
|
-
|
|
35
|
+
const resolvedDelay = localDelay ?? providerContext.delayDuration;
|
|
36
|
+
const resolvedCloseDelay = providerContext.closeDelayDuration;
|
|
37
|
+
const clearAllTimeouts = useCallback(() => {
|
|
38
|
+
if (openTimeoutRef.current) {
|
|
50
39
|
clearTimeout(openTimeoutRef.current);
|
|
51
|
-
|
|
40
|
+
openTimeoutRef.current = null;
|
|
41
|
+
}
|
|
42
|
+
if (closeTimeoutRef.current) {
|
|
52
43
|
clearTimeout(closeTimeoutRef.current);
|
|
44
|
+
closeTimeoutRef.current = null;
|
|
45
|
+
}
|
|
46
|
+
}, []);
|
|
47
|
+
const cancelClose = useCallback(() => {
|
|
48
|
+
if (closeTimeoutRef.current) {
|
|
49
|
+
clearTimeout(closeTimeoutRef.current);
|
|
50
|
+
closeTimeoutRef.current = null;
|
|
51
|
+
}
|
|
53
52
|
}, []);
|
|
54
53
|
const handleOpen = useCallback(() => {
|
|
55
|
-
|
|
56
|
-
openTimeoutRef.current = setTimeout(() => setOpen(true),
|
|
57
|
-
}, [
|
|
54
|
+
clearAllTimeouts();
|
|
55
|
+
openTimeoutRef.current = setTimeout(() => setOpen(true), resolvedDelay);
|
|
56
|
+
}, [clearAllTimeouts, resolvedDelay, setOpen]);
|
|
58
57
|
const handleClose = useCallback(() => {
|
|
59
|
-
|
|
60
|
-
if (
|
|
61
|
-
closeTimeoutRef.current = setTimeout(() => setOpen(false),
|
|
58
|
+
clearAllTimeouts();
|
|
59
|
+
if (resolvedCloseDelay > 0) {
|
|
60
|
+
closeTimeoutRef.current = setTimeout(() => setOpen(false), resolvedCloseDelay);
|
|
62
61
|
}
|
|
63
62
|
else {
|
|
64
63
|
setOpen(false);
|
|
65
64
|
}
|
|
66
|
-
}, [
|
|
65
|
+
}, [clearAllTimeouts, resolvedCloseDelay, setOpen]);
|
|
67
66
|
// Cleanup on unmount
|
|
68
67
|
useEffect(() => {
|
|
69
|
-
return () =>
|
|
70
|
-
}, [
|
|
68
|
+
return () => clearAllTimeouts();
|
|
69
|
+
}, [clearAllTimeouts]);
|
|
70
|
+
const contextValue = useMemo(() => ({
|
|
71
|
+
open,
|
|
72
|
+
setOpen,
|
|
73
|
+
triggerRef,
|
|
74
|
+
contentId,
|
|
75
|
+
delayDuration: resolvedDelay,
|
|
76
|
+
closeDelayDuration: resolvedCloseDelay,
|
|
77
|
+
handleOpen,
|
|
78
|
+
handleClose,
|
|
79
|
+
cancelClose,
|
|
80
|
+
}), [open, setOpen, contentId, resolvedDelay, resolvedCloseDelay, handleOpen, handleClose, cancelClose]);
|
|
81
|
+
return (_jsx(TooltipContext.Provider, { value: contextValue, children: children }));
|
|
82
|
+
}
|
|
83
|
+
// =============================================================================
|
|
84
|
+
// TooltipTrigger
|
|
85
|
+
// =============================================================================
|
|
86
|
+
function TooltipTriggerComponent({ asChild = false, 'aria-label': ariaLabel, children, }) {
|
|
87
|
+
const { open, triggerRef, contentId, handleOpen, handleClose } = useTooltipContext();
|
|
71
88
|
// Merge child ref with our triggerRef
|
|
72
89
|
const setRefs = useCallback((node) => {
|
|
73
90
|
triggerRef.current = node;
|
|
@@ -97,20 +114,22 @@ function TooltipTriggerComponent({ asChild = false, children }) {
|
|
|
97
114
|
});
|
|
98
115
|
}
|
|
99
116
|
// Wrapper needs tabIndex to be keyboard-focusable for non-interactive children
|
|
100
|
-
return (_jsx("span", { ref: setRefs, ...triggerProps, tabIndex: 0, style: { display: 'inline-flex' }, children: children }));
|
|
117
|
+
return (_jsx("span", { ref: setRefs, ...triggerProps, tabIndex: 0, "aria-label": ariaLabel, style: { display: 'inline-flex' }, children: children }));
|
|
101
118
|
}
|
|
102
119
|
// =============================================================================
|
|
103
120
|
// TooltipContent
|
|
104
121
|
// =============================================================================
|
|
105
|
-
function TooltipContentComponent({ side = 'top', align = 'center', sideOffset = 8, className, children, }) {
|
|
106
|
-
const { open, setOpen, triggerRef, contentId } = useTooltipContext();
|
|
107
|
-
const
|
|
122
|
+
function TooltipContentComponent({ side = 'top', align = 'center', sideOffset = 8, theme = 'dark', className, children, }) {
|
|
123
|
+
const { open, setOpen, triggerRef, contentId, cancelClose, handleClose } = useTooltipContext();
|
|
124
|
+
const arrowRef = useRef(null);
|
|
125
|
+
const { refs, floatingStyles, context } = useFloating({
|
|
108
126
|
placement: toPlacement(side, align),
|
|
109
127
|
open,
|
|
110
128
|
middleware: [
|
|
111
129
|
offset(sideOffset),
|
|
112
130
|
flip(),
|
|
113
131
|
shift({ padding: 8 }),
|
|
132
|
+
arrow({ element: arrowRef }),
|
|
114
133
|
],
|
|
115
134
|
whileElementsMounted: autoUpdate,
|
|
116
135
|
});
|
|
@@ -121,17 +140,19 @@ function TooltipContentComponent({ side = 'top', align = 'center', sideOffset =
|
|
|
121
140
|
refs.setReference(triggerRef.current);
|
|
122
141
|
}
|
|
123
142
|
}, [triggerRef, refs]);
|
|
124
|
-
// Close on Escape
|
|
143
|
+
// Close on Escape
|
|
144
|
+
// - Focus on trigger: close + stopPropagation (avoid closing parent modal)
|
|
145
|
+
// - Hover-only (focus elsewhere): close without stopPropagation
|
|
125
146
|
useEffect(() => {
|
|
126
147
|
if (!open)
|
|
127
148
|
return;
|
|
128
149
|
const handleKeyDown = (e) => {
|
|
129
150
|
if (e.key === 'Escape') {
|
|
130
|
-
// Only close if focus is on or within the trigger element
|
|
131
151
|
const activeEl = document.activeElement;
|
|
132
152
|
const trigger = triggerRef.current;
|
|
133
|
-
|
|
134
|
-
|
|
153
|
+
const focusIsOnTrigger = trigger && (trigger === activeEl || trigger.contains(activeEl));
|
|
154
|
+
setOpen(false);
|
|
155
|
+
if (focusIsOnTrigger) {
|
|
135
156
|
e.stopPropagation(); // Prevent bubbling to modal's Escape handler
|
|
136
157
|
}
|
|
137
158
|
}
|
|
@@ -151,10 +172,10 @@ function TooltipContentComponent({ side = 'top', align = 'center', sideOffset =
|
|
|
151
172
|
'Tooltips should only contain plain text. Use Popover for interactive content.');
|
|
152
173
|
}
|
|
153
174
|
}
|
|
154
|
-
}, [open, refs.floating
|
|
175
|
+
}, [open, refs.floating]);
|
|
155
176
|
if (!open)
|
|
156
177
|
return null;
|
|
157
|
-
return (_jsx(FloatingPortal, { root: portalRoot, children:
|
|
178
|
+
return (_jsx(FloatingPortal, { root: portalRoot, children: _jsxs("div", { ref: refs.setFloating, id: contentId, role: "tooltip", className: cx('tui-tooltip', theme === 'light' && 'is-theme-light', className), style: floatingStyles, onMouseEnter: cancelClose, onMouseLeave: handleClose, children: [children, _jsx(FloatingArrow, { ref: arrowRef, context: context, className: "tui-tooltip__arrow" })] }) }));
|
|
158
179
|
}
|
|
159
180
|
export const Tooltip = TooltipRoot;
|
|
160
181
|
Tooltip.Provider = TooltipProviderComponent;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Tooltip, TooltipProvider, TooltipTrigger, TooltipContent } from './Tooltip';
|
|
2
|
-
export type { TooltipProviderProps, TooltipProps, TooltipTriggerProps, TooltipContentProps, Side, Align, } from './types';
|
|
2
|
+
export type { TooltipProviderProps, TooltipProps, TooltipTriggerProps, TooltipContentProps, TooltipTheme, Side, Align, } from './types';
|
|
@@ -15,7 +15,9 @@ export type TooltipProviderProps = {
|
|
|
15
15
|
delayDuration?: number;
|
|
16
16
|
/**
|
|
17
17
|
* Delay in ms before tooltip closes after pointer leaves.
|
|
18
|
-
*
|
|
18
|
+
* Provides a brief window for users to move their pointer to the tooltip
|
|
19
|
+
* content (partial WCAG 1.4.13 compliance).
|
|
20
|
+
* @default 150
|
|
19
21
|
*/
|
|
20
22
|
closeDelayDuration?: number;
|
|
21
23
|
children: React.ReactNode;
|
|
@@ -47,8 +49,22 @@ export type TooltipTriggerProps = {
|
|
|
47
49
|
* @default false
|
|
48
50
|
*/
|
|
49
51
|
asChild?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Accessible label for the non-asChild wrapper span. When `asChild` is false,
|
|
54
|
+
* the trigger renders as a `<span>` with no semantic role — this label gives
|
|
55
|
+
* assistive technology a name for the focusable element. Omitting this when
|
|
56
|
+
* the span wraps non-descriptive content (e.g. an icon) means screen readers
|
|
57
|
+
* will announce the element with no accessible name.
|
|
58
|
+
*/
|
|
59
|
+
'aria-label'?: string;
|
|
50
60
|
children: React.ReactNode;
|
|
51
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Visual theme for the tooltip.
|
|
64
|
+
* - `'dark'` (default): inverted background, high contrast against page content.
|
|
65
|
+
* - `'light'`: surface background with border, blends with surrounding UI.
|
|
66
|
+
*/
|
|
67
|
+
export type TooltipTheme = 'dark' | 'light';
|
|
52
68
|
export type TooltipContentProps = {
|
|
53
69
|
/**
|
|
54
70
|
* Preferred side of the trigger to place the tooltip.
|
|
@@ -65,6 +81,11 @@ export type TooltipContentProps = {
|
|
|
65
81
|
* @default 8
|
|
66
82
|
*/
|
|
67
83
|
sideOffset?: number;
|
|
84
|
+
/**
|
|
85
|
+
* Visual theme variant.
|
|
86
|
+
* @default 'dark'
|
|
87
|
+
*/
|
|
88
|
+
theme?: TooltipTheme;
|
|
68
89
|
/**
|
|
69
90
|
* Additional CSS class names.
|
|
70
91
|
*/
|
|
@@ -78,6 +99,12 @@ export type TooltipContextValue = {
|
|
|
78
99
|
contentId: string;
|
|
79
100
|
delayDuration: number;
|
|
80
101
|
closeDelayDuration: number;
|
|
102
|
+
/** Open tooltip after delayDuration. Cancels any pending close. */
|
|
103
|
+
handleOpen: () => void;
|
|
104
|
+
/** Close tooltip after closeDelayDuration. Cancels any pending open. */
|
|
105
|
+
handleClose: () => void;
|
|
106
|
+
/** Cancel any pending close timeout (for WCAG 1.4.13 hover persistence). */
|
|
107
|
+
cancelClose: () => void;
|
|
81
108
|
};
|
|
82
109
|
/**
|
|
83
110
|
* Convert side + align to Floating UI placement.
|
package/components/index.d.ts
CHANGED
|
@@ -11,13 +11,14 @@ export { ChipGroup } from './ChipGroup';
|
|
|
11
11
|
export { Chips } from './Chips';
|
|
12
12
|
export { ContentIndicator } from './ContentIndicator';
|
|
13
13
|
export { Combobox, ComboboxContent, ComboboxOption, ComboboxGroup, ComboboxLabel, useCombobox } from './Combobox';
|
|
14
|
-
export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, useDropdown } from './Dropdown';
|
|
14
|
+
export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownSeparator, DropdownHeader, useDropdown } from './Dropdown';
|
|
15
15
|
export { Field } from './Field';
|
|
16
16
|
export { MultiSelect, MultiSelectTrigger, MultiSelectContent, MultiSelectOption, MultiSelectGroup, MultiSelectLabel, useMultiSelect } from './MultiSelect';
|
|
17
17
|
export { Select, SelectTrigger, SelectContent, SelectOption, SelectGroup, SelectLabel, useSelect } from './Select';
|
|
18
18
|
export { Icon } from './Icon';
|
|
19
19
|
export { IconButton } from './IconButton';
|
|
20
20
|
export { Modal } from './Modal';
|
|
21
|
+
export { MoveHandle } from './MoveHandle';
|
|
21
22
|
export { Notice } from './Notice';
|
|
22
23
|
export { OverlapStack } from './OverlapStack';
|
|
23
24
|
export { Pager } from './Pager';
|
|
@@ -45,7 +46,7 @@ export type { ChipProps } from './Chip';
|
|
|
45
46
|
export type { ChipGroupProps, ChipGroupSingleProps, ChipGroupMultipleProps } from './ChipGroup';
|
|
46
47
|
export type { ChipsProps, ChipOption } from './Chips';
|
|
47
48
|
export type { ContentIndicatorProps } from './ContentIndicator';
|
|
48
|
-
export type { DropdownProps, DropdownTriggerProps, DropdownContentProps, DropdownItemProps, } from './Dropdown';
|
|
49
|
+
export type { DropdownProps, DropdownTriggerProps, DropdownContentProps, DropdownItemProps, DropdownSeparatorProps, DropdownHeaderProps, } from './Dropdown';
|
|
49
50
|
export type { ComboboxProps, ComboboxContentProps, ComboboxOptionProps, ComboboxGroupProps, ComboboxLabelProps, ComboboxRegisteredOption, } from './Combobox';
|
|
50
51
|
export type { FieldProps } from './Field';
|
|
51
52
|
export type { MultiSelectProps, MultiSelectTriggerProps, MultiSelectContentProps, MultiSelectOptionProps, MultiSelectGroupProps, MultiSelectLabelProps, MultiSelectValue, OptionValue as MultiSelectOptionValue, DisplayMode as MultiSelectDisplayMode, MultiSelectRegisteredOption, } from './MultiSelect';
|
|
@@ -53,6 +54,7 @@ export type { SelectProps, SelectTriggerProps, SelectContentProps, SelectOptionP
|
|
|
53
54
|
export type { IconProps } from './Icon';
|
|
54
55
|
export type { IconButtonProps } from './IconButton';
|
|
55
56
|
export type { ModalProps } from './Modal';
|
|
57
|
+
export type { MoveHandleLabels, MoveHandleMode, MoveHandleProps, MoveHandleSize } from './MoveHandle';
|
|
56
58
|
export type { NoticeProps } from './Notice';
|
|
57
59
|
export type { OverlapStackProps, OverlapStackOverflowProps } from './OverlapStack';
|
|
58
60
|
export type { PagerProps, PagerMode } from './Pager';
|
package/components/index.js
CHANGED
|
@@ -9,13 +9,14 @@ export { ChipGroup } from './ChipGroup/index.js';
|
|
|
9
9
|
export { Chips } from './Chips/index.js';
|
|
10
10
|
export { ContentIndicator } from './ContentIndicator/index.js';
|
|
11
11
|
export { Combobox, ComboboxContent, ComboboxOption, ComboboxGroup, ComboboxLabel, useCombobox } from './Combobox/index.js';
|
|
12
|
-
export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, useDropdown } from './Dropdown/index.js';
|
|
12
|
+
export { Dropdown, DropdownTrigger, DropdownContent, DropdownItem, DropdownSeparator, DropdownHeader, useDropdown } from './Dropdown/index.js';
|
|
13
13
|
export { Field } from './Field/index.js';
|
|
14
14
|
export { MultiSelect, MultiSelectTrigger, MultiSelectContent, MultiSelectOption, MultiSelectGroup, MultiSelectLabel, useMultiSelect } from './MultiSelect/index.js';
|
|
15
15
|
export { Select, SelectTrigger, SelectContent, SelectOption, SelectGroup, SelectLabel, useSelect } from './Select/index.js';
|
|
16
16
|
export { Icon } from './Icon/index.js';
|
|
17
17
|
export { IconButton } from './IconButton/index.js';
|
|
18
18
|
export { Modal } from './Modal/index.js';
|
|
19
|
+
export { MoveHandle } from './MoveHandle/index.js';
|
|
19
20
|
export { Notice } from './Notice/index.js';
|
|
20
21
|
export { OverlapStack } from './OverlapStack/index.js';
|
|
21
22
|
export { Pager } from './Pager/index.js';
|
package/icons/icons.svg
CHANGED
|
@@ -109,6 +109,7 @@
|
|
|
109
109
|
<symbol id="tui-system-cog" viewBox="0 0 24 24"><path fill-rule="evenodd" d="M10.29 4.836A1 1 0 0 1 11.275 4h1.306a1 1 0 0 1 .986.836l.244 1.466c.788.26 1.503.679 2.108 1.218l1.393-.522a1 1 0 0 1 1.217.437l.653 1.13a1 1 0 0 1-.23 1.273l-1.148.944a6 6 0 0 1 0 2.435l1.148.946a1 1 0 0 1 .23 1.272l-.652 1.13a1 1 0 0 1-1.217.437l-1.394-.522c-.605.54-1.32.958-2.108 1.218l-.244 1.466a1 1 0 0 1-.986.836h-1.306a1 1 0 0 1-.987-.836l-.244-1.466a6 6 0 0 1-2.108-1.218l-1.394.522a1 1 0 0 1-1.217-.436l-.652-1.131a1 1 0 0 1 .23-1.272l1.148-.946a6 6 0 0 1 0-2.435l-1.147-.944a1 1 0 0 1-.23-1.272l.652-1.131a1 1 0 0 1 1.217-.437l1.393.522a6 6 0 0 1 2.108-1.218zM14.928 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0" clip-rule="evenodd"/></symbol>
|
|
110
110
|
<symbol id="tui-system-copy" viewBox="0 0 24 24"><path d="M17 10.25h-7v1.5h7zm-7 2.5h7v1.5h-7zm7 2.5h-7v1.5h7z"/><path fill-rule="evenodd" d="M17 6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h1v1a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-1zm1 2.5a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H9a.5.5 0 0 1-.5-.5V9a.5.5 0 0 1 .5-.5zm-12 7a.5.5 0 0 1-.5-.5V6a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 .5.5v1H9a2 2 0 0 0-2 2v6.5z" clip-rule="evenodd"/></symbol>
|
|
111
111
|
<symbol id="tui-system-download" viewBox="0 0 24 24"><path d="M5.5 9a.5.5 0 0 1 .5-.5h3V7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.75A1.75 1.75 0 0 0 18.25 7H15v1.5h3.25a.25.25 0 0 1 .25.25V18a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5z"/><path d="M12 17.004 7.002 12.56l.996-1.122 3.252 2.89V4h1.5v10.33l3.252-2.89.996 1.12z"/></symbol>
|
|
112
|
+
<symbol id="tui-system-drag" viewBox="0 0 24 24"><path d="M10 4.99976H8V6.99976H10V4.99976Z"/><path d="M10 10.9998H8V12.9998H10V10.9998Z"/><path d="M8 16.9998H10V18.9998H8V16.9998Z"/><path d="M16 4.99976H14V6.99976H16V4.99976Z"/><path d="M14 10.9998H16V12.9998H14V10.9998Z"/><path d="M16 16.9998H14V18.9998H16V16.9998Z"/></symbol>
|
|
112
113
|
<symbol id="tui-system-duplicate" viewBox="0 0 24 24"><path d="M14.25 12.75H17v1.5h-2.75V17h-1.5v-2.75H10v-1.5h2.75V10h1.5z"/><path fill-rule="evenodd" d="M17 7h1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2v-1H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2zm-2-1.5H6a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h1V9a2 2 0 0 1 2-2h6.5V6a.5.5 0 0 0-.5-.5m-6 3h9a.5.5 0 0 1 .5.5v9a.5.5 0 0 1-.5.5H9a.5.5 0 0 1-.5-.5V9a.5.5 0 0 1 .5-.5" clip-rule="evenodd"/></symbol>
|
|
113
114
|
<symbol id="tui-system-edit" viewBox="0 0 24 24"><path d="M19.864 4.304a2 2 0 0 0-2.733.732l-.635 1.1 3.464 2 .636-1.1a2 2 0 0 0-.732-2.732m-.746 5.292-3.464-2-4.903 8.49.062 3.893 3.402-1.892zM4 5.25h9v1.5H4zm7 4H4v1.5h7zm-7 4h5v1.5H4zm5 4H4v1.5h5z"/></symbol>
|
|
114
115
|
<symbol id="tui-system-ellipsis-h" viewBox="0 0 24 24"><path fill-rule="evenodd" d="M5 11h2v2H5zm6 0h2v2h-2zm6 0h2v2h-2z" clip-rule="evenodd"/></symbol>
|
package/icons/manifest.json
CHANGED
|
@@ -879,6 +879,14 @@
|
|
|
879
879
|
"viewBox": "0 0 24 24",
|
|
880
880
|
"sprite": true
|
|
881
881
|
},
|
|
882
|
+
"system/drag": {
|
|
883
|
+
"id": "tui-system-drag",
|
|
884
|
+
"set": "system",
|
|
885
|
+
"name": "drag",
|
|
886
|
+
"file": "system/drag.svg",
|
|
887
|
+
"viewBox": "0 0 24 24",
|
|
888
|
+
"sprite": true
|
|
889
|
+
},
|
|
882
890
|
"system/duplicate": {
|
|
883
891
|
"id": "tui-system-duplicate",
|
|
884
892
|
"set": "system",
|
package/icons/registry.d.ts
CHANGED
|
@@ -113,6 +113,7 @@ export type IconName =
|
|
|
113
113
|
| 'system/cog'
|
|
114
114
|
| 'system/copy'
|
|
115
115
|
| 'system/download'
|
|
116
|
+
| 'system/drag'
|
|
116
117
|
| 'system/duplicate'
|
|
117
118
|
| 'system/edit'
|
|
118
119
|
| 'system/ellipsis-h'
|
|
@@ -269,6 +270,7 @@ export declare const iconRegistry: {
|
|
|
269
270
|
'system/cog': IconComponent;
|
|
270
271
|
'system/copy': IconComponent;
|
|
271
272
|
'system/download': IconComponent;
|
|
273
|
+
'system/drag': IconComponent;
|
|
272
274
|
'system/duplicate': IconComponent;
|
|
273
275
|
'system/edit': IconComponent;
|
|
274
276
|
'system/ellipsis-h': IconComponent;
|
package/icons/registry.js
CHANGED
|
@@ -115,6 +115,7 @@ export const iconRegistry = {
|
|
|
115
115
|
'system/cog': systemIcons['cog'],
|
|
116
116
|
'system/copy': systemIcons['copy'],
|
|
117
117
|
'system/download': systemIcons['download'],
|
|
118
|
+
'system/drag': systemIcons['drag'],
|
|
118
119
|
'system/duplicate': systemIcons['duplicate'],
|
|
119
120
|
'system/edit': systemIcons['edit'],
|
|
120
121
|
'system/ellipsis-h': systemIcons['ellipsis-h'],
|
package/icons/system/index.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare const Close: IconComponent;
|
|
|
33
33
|
export declare const Cog: IconComponent;
|
|
34
34
|
export declare const Copy: IconComponent;
|
|
35
35
|
export declare const Download: IconComponent;
|
|
36
|
+
export declare const Drag: IconComponent;
|
|
36
37
|
export declare const Duplicate: IconComponent;
|
|
37
38
|
export declare const Edit: IconComponent;
|
|
38
39
|
export declare const EllipsisH: IconComponent;
|
|
@@ -110,6 +111,7 @@ export declare const systemIcons: {
|
|
|
110
111
|
'cog': IconComponent;
|
|
111
112
|
'copy': IconComponent;
|
|
112
113
|
'download': IconComponent;
|
|
114
|
+
'drag': IconComponent;
|
|
113
115
|
'duplicate': IconComponent;
|
|
114
116
|
'edit': IconComponent;
|
|
115
117
|
'ellipsis-h': IconComponent;
|
package/icons/system/index.js
CHANGED
|
@@ -310,6 +310,16 @@ export function Download(props) {
|
|
|
310
310
|
}, props), [_c("path", {d:"M5.5 9a.5.5 0 0 1 .5-.5h3V7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.75A1.75 1.75 0 0 0 18.25 7H15v1.5h3.25a.25.25 0 0 1 .25.25V18a.5.5 0 0 1-.5.5H6a.5.5 0 0 1-.5-.5z"}), _c("path", {d:"M12 17.004 7.002 12.56l.996-1.122 3.252 2.89V4h1.5v10.33l3.252-2.89.996 1.12z"})]);
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
+
export function Drag(props) {
|
|
314
|
+
return _c("svg", Object.assign({
|
|
315
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
316
|
+
viewBox: "0 0 24 24",
|
|
317
|
+
width: "1em",
|
|
318
|
+
height: "1em",
|
|
319
|
+
fill: "currentColor"
|
|
320
|
+
}, props), [_c("path", {d:"M10 4.99976H8V6.99976H10V4.99976Z"}), _c("path", {d:"M10 10.9998H8V12.9998H10V10.9998Z"}), _c("path", {d:"M8 16.9998H10V18.9998H8V16.9998Z"}), _c("path", {d:"M16 4.99976H14V6.99976H16V4.99976Z"}), _c("path", {d:"M14 10.9998H16V12.9998H14V10.9998Z"}), _c("path", {d:"M16 16.9998H14V18.9998H16V16.9998Z"})]);
|
|
321
|
+
}
|
|
322
|
+
|
|
313
323
|
export function Duplicate(props) {
|
|
314
324
|
return _c("svg", Object.assign({
|
|
315
325
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -782,6 +792,7 @@ export const systemIcons = {
|
|
|
782
792
|
'cog': Cog,
|
|
783
793
|
'copy': Copy,
|
|
784
794
|
'download': Download,
|
|
795
|
+
'drag': Drag,
|
|
785
796
|
'duplicate': Duplicate,
|
|
786
797
|
'edit': Edit,
|
|
787
798
|
'ellipsis-h': EllipsisH,
|