@dreamtree-org/twreact-ui 1.3.0 → 1.3.1
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 +179 -10
- package/ai-skills/dreamtree-ui.md +71 -12
- package/dist/ai-schema.json +452 -17
- package/dist/components/core/Accordion.d.ts.map +1 -1
- package/dist/components/core/Button.d.ts.map +1 -1
- package/dist/components/core/Checkbox.d.ts.map +1 -1
- package/dist/components/core/ColorPicker.d.ts.map +1 -1
- package/dist/components/core/DatePicker.d.ts.map +1 -1
- package/dist/components/core/DateRangePicker.d.ts.map +1 -1
- package/dist/components/core/Form.d.ts.map +1 -1
- package/dist/components/core/Input.d.ts.map +1 -1
- package/dist/components/core/LocationPicker.d.ts.map +1 -1
- package/dist/components/core/Popover.d.ts +4 -0
- package/dist/components/core/Popover.d.ts.map +1 -0
- package/dist/components/core/PriceRangePicker.d.ts.map +1 -1
- package/dist/components/core/ProgressBar.d.ts.map +1 -1
- package/dist/components/core/Radio.d.ts.map +1 -1
- package/dist/components/core/Rate.d.ts.map +1 -1
- package/dist/components/core/Select.d.ts.map +1 -1
- package/dist/components/core/Skeleton.d.ts.map +1 -1
- package/dist/components/core/Slider.d.ts +4 -0
- package/dist/components/core/Slider.d.ts.map +1 -0
- package/dist/components/core/SpeechToText.d.ts.map +1 -1
- package/dist/components/core/Switch.d.ts.map +1 -1
- package/dist/components/core/Table/ActionMenu.d.ts.map +1 -1
- package/dist/components/core/Table/ColumnMenu.d.ts +2 -1
- package/dist/components/core/Table/ColumnMenu.d.ts.map +1 -1
- package/dist/components/core/Table/MobileCard.d.ts +2 -2
- package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
- package/dist/components/core/Table/Table.d.ts.map +1 -1
- package/dist/components/core/Table/TableRow.d.ts +4 -2
- package/dist/components/core/Table/TableRow.d.ts.map +1 -1
- package/dist/components/core/Tabs.d.ts.map +1 -1
- package/dist/components/core/Textarea.d.ts +4 -0
- package/dist/components/core/Textarea.d.ts.map +1 -0
- package/dist/components/core/ThreeDotPopover.d.ts.map +1 -1
- package/dist/components/core/Tooltip.d.ts.map +1 -1
- package/dist/components/feedback/Dialog.d.ts.map +1 -1
- package/dist/components/feedback/Drawer.d.ts +4 -0
- package/dist/components/feedback/Drawer.d.ts.map +1 -0
- package/dist/components/feedback/Toast.d.ts +14 -5
- package/dist/components/feedback/Toast.d.ts.map +1 -1
- package/dist/components/feedback/Tour.d.ts +4 -0
- package/dist/components/feedback/Tour.d.ts.map +1 -0
- package/dist/components/feedback/TourSpotlight.d.ts +9 -0
- package/dist/components/feedback/TourSpotlight.d.ts.map +1 -0
- package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/navigation/FootNav.d.ts.map +1 -1
- package/dist/components/navigation/Navbar.d.ts.map +1 -1
- package/dist/components/navigation/Sidebar.d.ts +8 -2
- package/dist/components/navigation/Sidebar.d.ts.map +1 -1
- package/dist/components/utility/Badge.d.ts.map +1 -1
- package/dist/components/utility/FileUpload.d.ts.map +1 -1
- package/dist/components/utility/Sortable.d.ts +4 -0
- package/dist/components/utility/Sortable.d.ts.map +1 -0
- package/dist/esm/_vendor/object-assign/index.js +99 -0
- package/dist/esm/_vendor/prop-types/_vendor/react-is/cjs/react-is.development.js +190 -0
- package/dist/esm/_vendor/prop-types/_vendor/react-is/cjs/react-is.production.min.js +26 -0
- package/dist/esm/_vendor/prop-types/_vendor/react-is/index.js +19 -0
- package/dist/esm/_vendor/prop-types/checkPropTypes.js +115 -0
- package/dist/esm/_vendor/prop-types/factoryWithThrowingShims.js +74 -0
- package/dist/esm/_vendor/prop-types/factoryWithTypeCheckers.js +625 -0
- package/dist/esm/_vendor/prop-types/index.js +30 -0
- package/dist/esm/_vendor/prop-types/lib/ReactPropTypesSecret.js +21 -0
- package/dist/esm/_vendor/prop-types/lib/has.js +11 -0
- package/dist/esm/_virtual/_commonjsHelpers.js +5 -0
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +329 -0
- package/dist/esm/_virtual/index.js +3 -0
- package/dist/esm/_virtual/index2.js +3 -0
- package/dist/esm/_virtual/react-is.development.js +3 -0
- package/dist/esm/_virtual/react-is.production.min.js +3 -0
- package/dist/esm/components/blocks/AppShell.js +205 -0
- package/dist/esm/components/blocks/ConfirmDialog.js +57 -0
- package/dist/esm/components/blocks/EmptyState.js +44 -0
- package/dist/esm/components/blocks/ErrorState.js +53 -0
- package/dist/esm/components/blocks/LoadingState.js +134 -0
- package/dist/esm/components/blocks/PageHeader.js +51 -0
- package/dist/esm/components/blocks/StatCard.js +79 -0
- package/dist/esm/components/blocks/StatusPill.js +55 -0
- package/dist/esm/components/core/Accordion.js +260 -0
- package/dist/esm/components/core/Button.js +59 -0
- package/dist/esm/components/core/Checkbox.js +188 -0
- package/dist/esm/components/core/ColorPicker.js +348 -0
- package/dist/esm/components/core/DatePicker.js +436 -0
- package/dist/esm/components/core/DateRangePicker.js +494 -0
- package/dist/esm/components/core/Form.js +522 -0
- package/dist/esm/components/core/Input.js +179 -0
- package/dist/esm/components/core/Loader.js +141 -0
- package/dist/esm/components/core/LocationPicker.js +161 -0
- package/dist/esm/components/core/Popover.js +171 -0
- package/dist/esm/components/core/PriceRangePicker.js +376 -0
- package/dist/esm/components/core/ProgressBar.js +152 -0
- package/dist/esm/components/core/Radio.js +156 -0
- package/dist/esm/components/core/Rate.js +197 -0
- package/dist/esm/components/core/RoundedTag.js +118 -0
- package/dist/esm/components/core/Select.js +857 -0
- package/dist/esm/components/core/Skeleton.js +100 -0
- package/dist/esm/components/core/Slider.js +134 -0
- package/dist/esm/components/core/SpeechToText.js +226 -0
- package/dist/esm/components/core/Switch.js +207 -0
- package/dist/esm/components/core/Table/ActionMenu.js +251 -0
- package/dist/esm/components/core/Table/ColumnMenu.js +55 -0
- package/dist/esm/components/core/Table/FieldInput.js +157 -0
- package/dist/esm/components/core/Table/MobileCard.js +187 -0
- package/dist/esm/components/core/Table/MobileFilters.js +72 -0
- package/dist/esm/components/core/Table/Pagination.js +157 -0
- package/dist/esm/components/core/Table/Table.js +1533 -0
- package/dist/esm/components/core/Table/TableRow.js +254 -0
- package/dist/esm/components/core/Table/constants.js +35 -0
- package/dist/esm/components/core/Table/helpers.js +124 -0
- package/dist/esm/components/core/Table/useClickOutside.js +26 -0
- package/dist/esm/components/core/Tabs.js +289 -0
- package/dist/esm/components/core/TextToSpeech.js +52 -0
- package/dist/esm/components/core/Textarea.js +125 -0
- package/dist/esm/components/core/ThreeDotPopover.js +160 -0
- package/dist/esm/components/core/Tooltip.js +372 -0
- package/dist/esm/components/feedback/Alert.js +96 -0
- package/dist/esm/components/feedback/Dialog.js +200 -0
- package/dist/esm/components/feedback/Drawer.js +171 -0
- package/dist/esm/components/feedback/Toast.js +362 -0
- package/dist/esm/components/feedback/Tour.js +214 -0
- package/dist/esm/components/feedback/TourSpotlight.js +71 -0
- package/dist/esm/components/navigation/Breadcrumbs.js +75 -0
- package/dist/esm/components/navigation/Dropdown.js +53 -0
- package/dist/esm/components/navigation/FootNav.js +51 -0
- package/dist/esm/components/navigation/Navbar.js +437 -0
- package/dist/esm/components/navigation/Sidebar.js +567 -0
- package/dist/esm/components/utility/Avatar.js +89 -0
- package/dist/esm/components/utility/Badge.js +47 -0
- package/dist/esm/components/utility/Card.js +85 -0
- package/dist/esm/components/utility/Carousel.js +97 -0
- package/dist/esm/components/utility/Condition.js +9 -0
- package/dist/esm/components/utility/FileUpload.js +177 -0
- package/dist/esm/components/utility/Pagination.js +111 -0
- package/dist/esm/components/utility/Sortable.js +190 -0
- package/dist/esm/components/utility/Stepper.js +101 -0
- package/dist/esm/hooks/useApi.js +169 -0
- package/dist/esm/hooks/useControllableState.js +32 -0
- package/dist/esm/hooks/useFocusTrap.js +85 -0
- package/dist/esm/hooks/useLatestRef.js +20 -0
- package/dist/esm/hooks/useMixins.js +100 -0
- package/dist/esm/hooks/useScrollLock.js +26 -0
- package/dist/esm/hooks/useSliderValues.js +135 -0
- package/dist/esm/hooks/useSortable.js +188 -0
- package/dist/esm/hooks/useTheme.js +53 -0
- package/dist/esm/hooks/useTourTarget.js +92 -0
- package/dist/esm/index.js +65 -0
- package/dist/esm/store/index.js +26 -0
- package/dist/esm/store/store.js +107 -0
- package/dist/esm/store/storeSlice.js +45 -0
- package/dist/esm/utils/cn.js +11 -0
- package/dist/esm/utils/emitter.js +169 -0
- package/dist/esm/utils/helpers.js +161 -0
- package/dist/esm/utils/position.js +134 -0
- package/dist/hooks/useApi.d.ts +2 -1
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useControllableState.d.ts +11 -0
- package/dist/hooks/useControllableState.d.ts.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +15 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/hooks/useLatestRef.d.ts +8 -0
- package/dist/hooks/useLatestRef.d.ts.map +1 -0
- package/dist/hooks/useMixins.d.ts.map +1 -1
- package/dist/hooks/useScrollLock.d.ts +2 -0
- package/dist/hooks/useScrollLock.d.ts.map +1 -0
- package/dist/hooks/useSliderValues.d.ts +43 -0
- package/dist/hooks/useSliderValues.d.ts.map +1 -0
- package/dist/hooks/useSortable.d.ts +32 -0
- package/dist/hooks/useSortable.d.ts.map +1 -0
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/hooks/useTourTarget.d.ts +15 -0
- package/dist/hooks/useTourTarget.d.ts.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +4800 -2212
- package/dist/index.js +4805 -2210
- package/dist/types/index.d.ts +193 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/position.d.ts +30 -0
- package/dist/utils/position.d.ts.map +1 -0
- package/doc/README.md +7 -1
- package/mcp/catalog.snapshot.json +911 -212
- package/package.json +14 -2
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { objectWithoutProperties as _objectWithoutProperties, slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
import { forwardRef, useState } from 'react';
|
|
5
|
+
import { cn } from '../../utils/cn.js';
|
|
6
|
+
|
|
7
|
+
var _excluded = ["count", "value", "defaultValue", "readOnly", "icon", "toggledIcon", "activeColor", "inactiveColor", "size", "onChange", "onClick", "text", "className", "id", "name"];
|
|
8
|
+
function StarFilled(_ref) {
|
|
9
|
+
var _ref$size = _ref.size,
|
|
10
|
+
size = _ref$size === void 0 ? 20 : _ref$size;
|
|
11
|
+
return jsx("svg", {
|
|
12
|
+
width: size,
|
|
13
|
+
height: size,
|
|
14
|
+
viewBox: "0 0 24 24",
|
|
15
|
+
"aria-hidden": "true",
|
|
16
|
+
focusable: "false",
|
|
17
|
+
className: "block",
|
|
18
|
+
children: jsx("path", {
|
|
19
|
+
d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z",
|
|
20
|
+
fill: "currentColor"
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function StarOutline(_ref2) {
|
|
25
|
+
var _ref2$size = _ref2.size,
|
|
26
|
+
size = _ref2$size === void 0 ? 20 : _ref2$size;
|
|
27
|
+
return jsx("svg", {
|
|
28
|
+
width: size,
|
|
29
|
+
height: size,
|
|
30
|
+
viewBox: "0 0 24 24",
|
|
31
|
+
"aria-hidden": "true",
|
|
32
|
+
focusable: "false",
|
|
33
|
+
className: "block",
|
|
34
|
+
children: jsx("path", {
|
|
35
|
+
d: "M22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.64-7.03L22 9.24z",
|
|
36
|
+
fill: "none",
|
|
37
|
+
stroke: "currentColor",
|
|
38
|
+
strokeWidth: "1.2"
|
|
39
|
+
})
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
var Rate = /*#__PURE__*/forwardRef(function Rate(_ref3, ref) {
|
|
43
|
+
var _ref3$count = _ref3.count,
|
|
44
|
+
count = _ref3$count === void 0 ? 5 : _ref3$count,
|
|
45
|
+
value = _ref3.value,
|
|
46
|
+
_ref3$defaultValue = _ref3.defaultValue,
|
|
47
|
+
defaultValue = _ref3$defaultValue === void 0 ? 0 : _ref3$defaultValue,
|
|
48
|
+
_ref3$readOnly = _ref3.readOnly,
|
|
49
|
+
readOnly = _ref3$readOnly === void 0 ? false : _ref3$readOnly,
|
|
50
|
+
icon = _ref3.icon,
|
|
51
|
+
toggledIcon = _ref3.toggledIcon,
|
|
52
|
+
activeColor = _ref3.activeColor,
|
|
53
|
+
inactiveColor = _ref3.inactiveColor,
|
|
54
|
+
_ref3$size = _ref3.size,
|
|
55
|
+
size = _ref3$size === void 0 ? 20 : _ref3$size,
|
|
56
|
+
onChange = _ref3.onChange,
|
|
57
|
+
onClick = _ref3.onClick,
|
|
58
|
+
text = _ref3.text,
|
|
59
|
+
_ref3$className = _ref3.className,
|
|
60
|
+
className = _ref3$className === void 0 ? "" : _ref3$className,
|
|
61
|
+
id = _ref3.id,
|
|
62
|
+
name = _ref3.name,
|
|
63
|
+
rest = _objectWithoutProperties(_ref3, _excluded);
|
|
64
|
+
var _useState = useState(Math.max(0, Math.min(count, Math.floor(defaultValue || 0)))),
|
|
65
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
66
|
+
internalValue = _useState2[0],
|
|
67
|
+
setInternalValue = _useState2[1];
|
|
68
|
+
var _useState3 = useState(null),
|
|
69
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
70
|
+
hoverValue = _useState4[0],
|
|
71
|
+
setHoverValue = _useState4[1];
|
|
72
|
+
var _useState5 = useState(null),
|
|
73
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
74
|
+
focusValue = _useState6[0],
|
|
75
|
+
setFocusValue = _useState6[1];
|
|
76
|
+
var isControlled = value != null;
|
|
77
|
+
var selectedValue = isControlled ? value : internalValue;
|
|
78
|
+
var displayValue = hoverValue != null ? hoverValue : focusValue != null ? focusValue : selectedValue;
|
|
79
|
+
var InactiveIcon = icon !== null && icon !== void 0 ? icon : jsx(StarOutline, {
|
|
80
|
+
size: size
|
|
81
|
+
});
|
|
82
|
+
var ActiveIcon = toggledIcon !== null && toggledIcon !== void 0 ? toggledIcon : jsx(StarFilled, {
|
|
83
|
+
size: size
|
|
84
|
+
});
|
|
85
|
+
var commit = function commit(n) {
|
|
86
|
+
if (readOnly) return;
|
|
87
|
+
if (!isControlled) setInternalValue(n);
|
|
88
|
+
if (typeof onChange === "function") onChange(n);
|
|
89
|
+
if (typeof onClick === "function") onClick(n);
|
|
90
|
+
};
|
|
91
|
+
var handleMouseEnter = function handleMouseEnter(n) {
|
|
92
|
+
if (readOnly) return;
|
|
93
|
+
setHoverValue(n);
|
|
94
|
+
};
|
|
95
|
+
var handleMouseMove = function handleMouseMove(n) {
|
|
96
|
+
if (readOnly) return;
|
|
97
|
+
setHoverValue(n);
|
|
98
|
+
};
|
|
99
|
+
var handleMouseLeave = function handleMouseLeave() {
|
|
100
|
+
if (readOnly) return;
|
|
101
|
+
setHoverValue(null);
|
|
102
|
+
};
|
|
103
|
+
var handleFocus = function handleFocus(n) {
|
|
104
|
+
if (readOnly) return;
|
|
105
|
+
setFocusValue(n);
|
|
106
|
+
};
|
|
107
|
+
var handleBlur = function handleBlur() {
|
|
108
|
+
if (readOnly) return;
|
|
109
|
+
setFocusValue(null);
|
|
110
|
+
};
|
|
111
|
+
var handleKeyDown = function handleKeyDown(e, n) {
|
|
112
|
+
if (readOnly) return;
|
|
113
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
114
|
+
e.preventDefault();
|
|
115
|
+
commit(n);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (e.key === "ArrowLeft") {
|
|
119
|
+
e.preventDefault();
|
|
120
|
+
setFocusValue(function (prev) {
|
|
121
|
+
var base = prev != null ? prev : selectedValue || 0;
|
|
122
|
+
return Math.max(0, base - 1);
|
|
123
|
+
});
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (e.key === "ArrowRight") {
|
|
127
|
+
e.preventDefault();
|
|
128
|
+
setFocusValue(function (prev) {
|
|
129
|
+
var base = prev != null ? prev : selectedValue || 0;
|
|
130
|
+
return Math.min(count, base + 1);
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
return jsxs("div", _objectSpread2(_objectSpread2({
|
|
136
|
+
ref: ref,
|
|
137
|
+
id: id,
|
|
138
|
+
className: cn("inline-flex items-center gap-2", className),
|
|
139
|
+
"aria-live": "polite"
|
|
140
|
+
}, rest), {}, {
|
|
141
|
+
children: [jsx("div", {
|
|
142
|
+
role: "radiogroup",
|
|
143
|
+
"aria-label": name || "Rating",
|
|
144
|
+
className: "inline-flex gap-1",
|
|
145
|
+
onMouseLeave: handleMouseLeave,
|
|
146
|
+
children: Array.from({
|
|
147
|
+
length: count
|
|
148
|
+
}, function (_, i) {
|
|
149
|
+
var starNumber = i + 1;
|
|
150
|
+
var filled = starNumber <= (displayValue || 0);
|
|
151
|
+
var color = filled ? activeColor : inactiveColor;
|
|
152
|
+
// Token classes unless a colour override is passed, so brands and dark mode apply (STUDIO-59).
|
|
153
|
+
var colorClass = color ? "" : filled ? " text-warning-400" : " text-gray-200";
|
|
154
|
+
return jsx("button", {
|
|
155
|
+
type: "button",
|
|
156
|
+
role: "radio",
|
|
157
|
+
"aria-checked": filled,
|
|
158
|
+
"aria-label": "".concat(starNumber, " star").concat(starNumber > 1 ? "s" : ""),
|
|
159
|
+
tabIndex: readOnly ? -1 : 0,
|
|
160
|
+
onClick: function onClick() {
|
|
161
|
+
return commit(starNumber);
|
|
162
|
+
},
|
|
163
|
+
onKeyDown: function onKeyDown(e) {
|
|
164
|
+
return handleKeyDown(e, starNumber);
|
|
165
|
+
},
|
|
166
|
+
onMouseEnter: function onMouseEnter() {
|
|
167
|
+
return handleMouseEnter(starNumber);
|
|
168
|
+
},
|
|
169
|
+
onMouseMove: function onMouseMove() {
|
|
170
|
+
return handleMouseMove(starNumber);
|
|
171
|
+
},
|
|
172
|
+
onFocus: function onFocus() {
|
|
173
|
+
return handleFocus(starNumber);
|
|
174
|
+
},
|
|
175
|
+
onBlur: handleBlur,
|
|
176
|
+
disabled: readOnly,
|
|
177
|
+
title: "".concat(starNumber, " of ").concat(count),
|
|
178
|
+
className: "p-0 m-0 bg-transparent border-0 inline-flex items-center justify-center leading-0 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-slate-300 rounded".concat(colorClass),
|
|
179
|
+
style: color ? {
|
|
180
|
+
color: color
|
|
181
|
+
} : undefined,
|
|
182
|
+
children: filled ? ActiveIcon : InactiveIcon
|
|
183
|
+
}, i);
|
|
184
|
+
})
|
|
185
|
+
}), text ? jsx("div", {
|
|
186
|
+
"aria-hidden": true,
|
|
187
|
+
className: "ml-1 text-sm text-primary-700 select-none",
|
|
188
|
+
style: {
|
|
189
|
+
fontSize: Math.max(12, Math.round(size * 0.9))
|
|
190
|
+
},
|
|
191
|
+
children: text
|
|
192
|
+
}) : null]
|
|
193
|
+
}));
|
|
194
|
+
});
|
|
195
|
+
Rate.displayName = "Rate";
|
|
196
|
+
|
|
197
|
+
export { Rate as default };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { objectWithoutProperties as _objectWithoutProperties, objectSpread2 as _objectSpread2 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
3
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
import { forwardRef } from 'react';
|
|
5
|
+
import { cn } from '../../utils/cn.js';
|
|
6
|
+
|
|
7
|
+
var _excluded = ["label", "avatarSrc", "avatarAlt", "initials", "size", "onRemove", "onClick", "className", "closeClass", "ariaLabel", "avatarPosition", "avatarClassname", "initialClassname"];
|
|
8
|
+
var RoundedTag = /*#__PURE__*/forwardRef(function RoundedTag(_ref, ref) {
|
|
9
|
+
var label = _ref.label,
|
|
10
|
+
_ref$avatarSrc = _ref.avatarSrc,
|
|
11
|
+
avatarSrc = _ref$avatarSrc === void 0 ? null : _ref$avatarSrc,
|
|
12
|
+
_ref$avatarAlt = _ref.avatarAlt,
|
|
13
|
+
avatarAlt = _ref$avatarAlt === void 0 ? "avatar" : _ref$avatarAlt,
|
|
14
|
+
_ref$initials = _ref.initials,
|
|
15
|
+
initials = _ref$initials === void 0 ? "" : _ref$initials,
|
|
16
|
+
_ref$size = _ref.size,
|
|
17
|
+
size = _ref$size === void 0 ? "md" : _ref$size,
|
|
18
|
+
_ref$onRemove = _ref.onRemove,
|
|
19
|
+
onRemove = _ref$onRemove === void 0 ? null : _ref$onRemove,
|
|
20
|
+
_ref$onClick = _ref.onClick,
|
|
21
|
+
_onClick = _ref$onClick === void 0 ? null : _ref$onClick,
|
|
22
|
+
_ref$className = _ref.className,
|
|
23
|
+
className = _ref$className === void 0 ? "" : _ref$className,
|
|
24
|
+
_ref$closeClass = _ref.closeClass,
|
|
25
|
+
closeClass = _ref$closeClass === void 0 ? "" : _ref$closeClass,
|
|
26
|
+
_ref$ariaLabel = _ref.ariaLabel,
|
|
27
|
+
ariaLabel = _ref$ariaLabel === void 0 ? "tag" : _ref$ariaLabel,
|
|
28
|
+
_ref$avatarPosition = _ref.avatarPosition,
|
|
29
|
+
avatarPosition = _ref$avatarPosition === void 0 ? "left" : _ref$avatarPosition,
|
|
30
|
+
_ref$avatarClassname = _ref.avatarClassname,
|
|
31
|
+
avatarClassname = _ref$avatarClassname === void 0 ? "" : _ref$avatarClassname,
|
|
32
|
+
_ref$initialClassname = _ref.initialClassname,
|
|
33
|
+
initialClassname = _ref$initialClassname === void 0 ? "" : _ref$initialClassname,
|
|
34
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
35
|
+
var showAvatar = Boolean(avatarSrc || initials);
|
|
36
|
+
var sizes = {
|
|
37
|
+
sm: {
|
|
38
|
+
avatar: "w-5 h-5 text-xs",
|
|
39
|
+
paddingWithAvatar: "pr-2 pl-1.5 py-1",
|
|
40
|
+
paddingNoAvatar: "px-2 py-1",
|
|
41
|
+
text: "text-xs",
|
|
42
|
+
gapWithAvatar: "gap-1",
|
|
43
|
+
gapNoAvatar: "gap-1"
|
|
44
|
+
},
|
|
45
|
+
md: {
|
|
46
|
+
avatar: "w-6 h-6 text-sm",
|
|
47
|
+
paddingWithAvatar: "pr-2 pl-1.5 py-1",
|
|
48
|
+
paddingNoAvatar: "px-3 py-1",
|
|
49
|
+
text: "text-sm",
|
|
50
|
+
gapWithAvatar: "gap-2",
|
|
51
|
+
gapNoAvatar: "gap-1"
|
|
52
|
+
},
|
|
53
|
+
lg: {
|
|
54
|
+
avatar: "w-8 h-8 text-sm",
|
|
55
|
+
paddingWithAvatar: "pr-2 pl-1.5 py-1",
|
|
56
|
+
paddingNoAvatar: "px-4 py-1.5",
|
|
57
|
+
text: "text-base",
|
|
58
|
+
gapWithAvatar: "gap-2",
|
|
59
|
+
gapNoAvatar: "gap-2"
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
function handleRemove(e) {
|
|
63
|
+
e && e.stopPropagation();
|
|
64
|
+
onRemove && onRemove({});
|
|
65
|
+
}
|
|
66
|
+
var s = sizes[size] || sizes.md;
|
|
67
|
+
var paddingClass = showAvatar ? s.paddingWithAvatar : s.paddingNoAvatar;
|
|
68
|
+
var gapClass = showAvatar ? s.gapWithAvatar : s.gapNoAvatar;
|
|
69
|
+
var AvatarNode = showAvatar && jsx(Fragment, {
|
|
70
|
+
children: avatarSrc ? jsx("div", {
|
|
71
|
+
className: "flex-shrink-0 rounded-full overflow-hidden bg-gray-300 flex items-center justify-center ".concat(s.avatar, " ").concat(avatarClassname),
|
|
72
|
+
"aria-hidden": avatarSrc ? undefined : "true",
|
|
73
|
+
children: jsx("img", {
|
|
74
|
+
src: avatarSrc,
|
|
75
|
+
alt: avatarAlt,
|
|
76
|
+
className: "w-full h-full object-cover"
|
|
77
|
+
})
|
|
78
|
+
}) : jsx("div", {
|
|
79
|
+
className: "flex-shrink-0 rounded-full overflow-hidden bg-gray-300 flex items-center justify-center ".concat(s.avatar, " ").concat(initialClassname),
|
|
80
|
+
"aria-hidden": avatarSrc ? undefined : "true",
|
|
81
|
+
children: initials
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
return jsxs("div", _objectSpread2(_objectSpread2({
|
|
85
|
+
ref: ref,
|
|
86
|
+
className: cn("inline-flex items-center rounded-full bg-gray-100 text-primary-800", paddingClass, gapClass, s.text, className),
|
|
87
|
+
role: "group",
|
|
88
|
+
"aria-label": ariaLabel,
|
|
89
|
+
onClick: function onClick(e) {
|
|
90
|
+
return _onClick && _onClick(e);
|
|
91
|
+
}
|
|
92
|
+
}, rest), {}, {
|
|
93
|
+
children: [avatarPosition === "left" && AvatarNode, jsx("div", {
|
|
94
|
+
className: "truncate max-w-[10rem]",
|
|
95
|
+
children: label
|
|
96
|
+
}), avatarPosition === "right" && AvatarNode, onRemove && jsx("button", {
|
|
97
|
+
type: "button",
|
|
98
|
+
"aria-label": "Remove",
|
|
99
|
+
onClick: handleRemove,
|
|
100
|
+
className: "inline-flex items-center justify-center rounded-full p-1 hover:bg-gray-200 focus:outline-none ".concat(closeClass),
|
|
101
|
+
children: jsx("svg", {
|
|
102
|
+
className: "w-3 h-3",
|
|
103
|
+
viewBox: "0 0 24 24",
|
|
104
|
+
fill: "none",
|
|
105
|
+
stroke: "currentColor",
|
|
106
|
+
strokeWidth: "2",
|
|
107
|
+
children: jsx("path", {
|
|
108
|
+
strokeLinecap: "round",
|
|
109
|
+
strokeLinejoin: "round",
|
|
110
|
+
d: "M6 6l12 12M18 6L6 18"
|
|
111
|
+
})
|
|
112
|
+
})
|
|
113
|
+
})]
|
|
114
|
+
}));
|
|
115
|
+
});
|
|
116
|
+
RoundedTag.displayName = "RoundedTag";
|
|
117
|
+
|
|
118
|
+
export { RoundedTag as default };
|