@expcat/tigercat-react 0.0.65 → 0.0.67

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.
Files changed (196) hide show
  1. package/dist/styles/index.css +4 -0
  2. package/dist/styles/index.d.mts +2 -0
  3. package/package.json +12 -9
  4. package/dist/chunk-2DOPHSZP.js +0 -32
  5. package/dist/chunk-2TS6X5RA.js +0 -73
  6. package/dist/chunk-2Y327ZU4.js +0 -493
  7. package/dist/chunk-3OF7XPIQ.js +0 -90
  8. package/dist/chunk-3WPKVV4N.js +0 -140
  9. package/dist/chunk-5FRENLDC.js +0 -194
  10. package/dist/chunk-5QKMQRCW.js +0 -89
  11. package/dist/chunk-5ZVSFIZD.js +0 -50
  12. package/dist/chunk-6MGEGOYJ.js +0 -108
  13. package/dist/chunk-6PUSRC6S.js +0 -68
  14. package/dist/chunk-72ZRDBXN.js +0 -25
  15. package/dist/chunk-77D7VQMG.js +0 -43
  16. package/dist/chunk-7P6PHSFM.js +0 -548
  17. package/dist/chunk-AG6GVQ5O.js +0 -271
  18. package/dist/chunk-AQ6DHCP6.js +0 -53
  19. package/dist/chunk-AQQRWISY.js +0 -184
  20. package/dist/chunk-C5EFBJBR.js +0 -540
  21. package/dist/chunk-D3I2SY7X.js +0 -301
  22. package/dist/chunk-DZJUFU55.js +0 -300
  23. package/dist/chunk-EI2GHMQS.js +0 -37
  24. package/dist/chunk-ENR3RIMM.js +0 -205
  25. package/dist/chunk-EQWQXURG.js +0 -18
  26. package/dist/chunk-EUHWE7MN.js +0 -267
  27. package/dist/chunk-FAKTU64M.js +0 -67
  28. package/dist/chunk-FQ6UHRAO.js +0 -499
  29. package/dist/chunk-GX74TC62.js +0 -54
  30. package/dist/chunk-HDDBBZQH.js +0 -321
  31. package/dist/chunk-IFY46RWU.js +0 -25
  32. package/dist/chunk-IQINYCU6.js +0 -99
  33. package/dist/chunk-IY4LEJYF.js +0 -78
  34. package/dist/chunk-JW64IJP2.js +0 -210
  35. package/dist/chunk-KUCFT2OA.js +0 -43
  36. package/dist/chunk-LNKI6HQ3.js +0 -152
  37. package/dist/chunk-LXA2YBAO.js +0 -38
  38. package/dist/chunk-MKWXJZ3T.js +0 -74
  39. package/dist/chunk-NEULKOYJ.js +0 -48
  40. package/dist/chunk-NI2WNZRT.js +0 -38
  41. package/dist/chunk-OFCKGWTS.js +0 -12
  42. package/dist/chunk-OTRGVENC.js +0 -305
  43. package/dist/chunk-P273E6XE.js +0 -219
  44. package/dist/chunk-Q3DPJHNM.js +0 -407
  45. package/dist/chunk-QFVE7GKD.js +0 -109
  46. package/dist/chunk-QL6OBKEN.js +0 -84
  47. package/dist/chunk-QL6UEG3U.js +0 -27
  48. package/dist/chunk-QORSSZX4.js +0 -144
  49. package/dist/chunk-R4JSBXGG.js +0 -12
  50. package/dist/chunk-R5BQHZWB.js +0 -698
  51. package/dist/chunk-R7MS42PL.js +0 -90
  52. package/dist/chunk-TB2UHDOZ.js +0 -19
  53. package/dist/chunk-TBIEWDY5.js +0 -175
  54. package/dist/chunk-TJFS44SH.js +0 -48
  55. package/dist/chunk-TZ26HQAW.js +0 -85
  56. package/dist/chunk-U4ZVEPYD.js +0 -71
  57. package/dist/chunk-UFAXJVMD.js +0 -120
  58. package/dist/chunk-VJJ76I7U.js +0 -19
  59. package/dist/chunk-VO4WDK4K.js +0 -37
  60. package/dist/chunk-VSF4DF7N.js +0 -84
  61. package/dist/chunk-VVO4V4IK.js +0 -56
  62. package/dist/chunk-WK5HN4OH.js +0 -113
  63. package/dist/chunk-XZDJ5FRB.js +0 -333
  64. package/dist/chunk-YE2M2HNM.js +0 -168
  65. package/dist/chunk-YYGTJKP5.js +0 -39
  66. package/dist/chunk-ZREFCRX3.js +0 -52
  67. package/dist/components/Alert.d.ts +0 -24
  68. package/dist/components/Alert.js +0 -10
  69. package/dist/components/Avatar.d.ts +0 -12
  70. package/dist/components/Avatar.js +0 -10
  71. package/dist/components/Badge.d.ts +0 -12
  72. package/dist/components/Badge.js +0 -10
  73. package/dist/components/Breadcrumb.d.ts +0 -13
  74. package/dist/components/Breadcrumb.js +0 -14
  75. package/dist/components/BreadcrumbItem.d.ts +0 -21
  76. package/dist/components/BreadcrumbItem.js +0 -11
  77. package/dist/components/Button.d.ts +0 -8
  78. package/dist/components/Button.js +0 -10
  79. package/dist/components/Card.d.ts +0 -33
  80. package/dist/components/Card.js +0 -10
  81. package/dist/components/Checkbox.d.ts +0 -48
  82. package/dist/components/Checkbox.js +0 -11
  83. package/dist/components/CheckboxGroup.d.ts +0 -39
  84. package/dist/components/CheckboxGroup.js +0 -14
  85. package/dist/components/Code.d.ts +0 -9
  86. package/dist/components/Code.js +0 -16
  87. package/dist/components/Col.d.ts +0 -7
  88. package/dist/components/Col.js +0 -11
  89. package/dist/components/ConfigProvider.d.ts +0 -14
  90. package/dist/components/ConfigProvider.js +0 -14
  91. package/dist/components/Container.d.ts +0 -13
  92. package/dist/components/Container.js +0 -10
  93. package/dist/components/Content.d.ts +0 -9
  94. package/dist/components/Content.js +0 -10
  95. package/dist/components/DatePicker.d.ts +0 -24
  96. package/dist/components/DatePicker.js +0 -10
  97. package/dist/components/Descriptions.d.ts +0 -53
  98. package/dist/components/Descriptions.js +0 -16
  99. package/dist/components/Divider.d.ts +0 -12
  100. package/dist/components/Divider.js +0 -10
  101. package/dist/components/Drawer.d.ts +0 -19
  102. package/dist/components/Drawer.js +0 -11
  103. package/dist/components/Dropdown.d.ts +0 -22
  104. package/dist/components/Dropdown.js +0 -16
  105. package/dist/components/DropdownItem.d.ts +0 -17
  106. package/dist/components/DropdownItem.js +0 -13
  107. package/dist/components/DropdownMenu.d.ts +0 -13
  108. package/dist/components/DropdownMenu.js +0 -10
  109. package/dist/components/Footer.d.ts +0 -9
  110. package/dist/components/Footer.js +0 -10
  111. package/dist/components/Form.d.ts +0 -56
  112. package/dist/components/Form.js +0 -14
  113. package/dist/components/FormItem.d.ts +0 -16
  114. package/dist/components/FormItem.js +0 -11
  115. package/dist/components/Header.d.ts +0 -9
  116. package/dist/components/Header.js +0 -10
  117. package/dist/components/Icon.d.ts +0 -9
  118. package/dist/components/Icon.js +0 -10
  119. package/dist/components/Input.d.ts +0 -28
  120. package/dist/components/Input.js +0 -10
  121. package/dist/components/Layout.d.ts +0 -9
  122. package/dist/components/Layout.js +0 -10
  123. package/dist/components/Link.d.ts +0 -10
  124. package/dist/components/Link.js +0 -10
  125. package/dist/components/List.d.ts +0 -94
  126. package/dist/components/List.js +0 -12
  127. package/dist/components/Loading.d.ts +0 -8
  128. package/dist/components/Loading.js +0 -10
  129. package/dist/components/Menu.d.ts +0 -35
  130. package/dist/components/Menu.js +0 -14
  131. package/dist/components/MenuItem.d.ts +0 -20
  132. package/dist/components/MenuItem.js +0 -11
  133. package/dist/components/MenuItemGroup.d.ts +0 -16
  134. package/dist/components/MenuItemGroup.js +0 -12
  135. package/dist/components/Message.d.ts +0 -44
  136. package/dist/components/Message.js +0 -20
  137. package/dist/components/Modal.d.ts +0 -41
  138. package/dist/components/Modal.js +0 -11
  139. package/dist/components/Notification.d.ts +0 -40
  140. package/dist/components/Notification.js +0 -20
  141. package/dist/components/Pagination.d.ts +0 -11
  142. package/dist/components/Pagination.js +0 -16
  143. package/dist/components/Popconfirm.d.ts +0 -34
  144. package/dist/components/Popconfirm.js +0 -10
  145. package/dist/components/Popover.d.ts +0 -14
  146. package/dist/components/Popover.js +0 -10
  147. package/dist/components/Progress.d.ts +0 -8
  148. package/dist/components/Progress.js +0 -10
  149. package/dist/components/Radio.d.ts +0 -20
  150. package/dist/components/Radio.js +0 -11
  151. package/dist/components/RadioGroup.d.ts +0 -28
  152. package/dist/components/RadioGroup.js +0 -14
  153. package/dist/components/Row.d.ts +0 -11
  154. package/dist/components/Row.js +0 -14
  155. package/dist/components/Select.d.ts +0 -23
  156. package/dist/components/Select.js +0 -10
  157. package/dist/components/Sidebar.d.ts +0 -9
  158. package/dist/components/Sidebar.js +0 -10
  159. package/dist/components/Skeleton.d.ts +0 -7
  160. package/dist/components/Skeleton.js +0 -10
  161. package/dist/components/Slider.d.ts +0 -12
  162. package/dist/components/Slider.js +0 -10
  163. package/dist/components/Space.d.ts +0 -11
  164. package/dist/components/Space.js +0 -10
  165. package/dist/components/Steps.d.ts +0 -31
  166. package/dist/components/Steps.js +0 -14
  167. package/dist/components/StepsItem.d.ts +0 -36
  168. package/dist/components/StepsItem.js +0 -10
  169. package/dist/components/SubMenu.d.ts +0 -20
  170. package/dist/components/SubMenu.js +0 -13
  171. package/dist/components/Switch.d.ts +0 -12
  172. package/dist/components/Switch.js +0 -10
  173. package/dist/components/TabPane.d.ts +0 -42
  174. package/dist/components/TabPane.js +0 -10
  175. package/dist/components/Table.d.ts +0 -46
  176. package/dist/components/Table.js +0 -10
  177. package/dist/components/Tabs.d.ts +0 -43
  178. package/dist/components/Tabs.js +0 -14
  179. package/dist/components/Tag.d.ts +0 -16
  180. package/dist/components/Tag.js +0 -10
  181. package/dist/components/Text.d.ts +0 -9
  182. package/dist/components/Text.js +0 -10
  183. package/dist/components/Textarea.d.ts +0 -13
  184. package/dist/components/Textarea.js +0 -10
  185. package/dist/components/TimePicker.d.ts +0 -28
  186. package/dist/components/TimePicker.js +0 -10
  187. package/dist/components/Timeline.d.ts +0 -47
  188. package/dist/components/Timeline.js +0 -10
  189. package/dist/components/Tooltip.d.ts +0 -15
  190. package/dist/components/Tooltip.js +0 -10
  191. package/dist/components/Tree.d.ts +0 -154
  192. package/dist/components/Tree.js +0 -16
  193. package/dist/components/Upload.d.ts +0 -16
  194. package/dist/components/Upload.js +0 -11
  195. package/dist/index.d.ts +0 -77
  196. package/dist/index.js +0 -364
@@ -1,90 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var tigercatCore = require('@expcat/tigercat-core');
5
- var jsxRuntime = require('react/jsx-runtime');
6
-
7
- // src/components/Alert.tsx
8
- var Icon = ({ path, className }) => /* @__PURE__ */ jsxRuntime.jsx(
9
- "svg",
10
- {
11
- className,
12
- xmlns: "http://www.w3.org/2000/svg",
13
- fill: "none",
14
- viewBox: tigercatCore.icon24ViewBox,
15
- stroke: "currentColor",
16
- strokeWidth: tigercatCore.icon24StrokeWidth,
17
- children: /* @__PURE__ */ jsxRuntime.jsx(
18
- "path",
19
- {
20
- strokeLinecap: tigercatCore.icon24PathStrokeLinecap,
21
- strokeLinejoin: tigercatCore.icon24PathStrokeLinejoin,
22
- d: path
23
- }
24
- )
25
- }
26
- );
27
- var Alert = ({
28
- type = "info",
29
- size = "md",
30
- title,
31
- description,
32
- showIcon = true,
33
- closable = false,
34
- closeAriaLabel = "Close alert",
35
- className,
36
- children,
37
- titleSlot,
38
- descriptionSlot,
39
- onClose,
40
- ...props
41
- }) => {
42
- const [visible, setVisible] = react.useState(true);
43
- const colorScheme = tigercatCore.getAlertTypeClasses(type, tigercatCore.defaultAlertThemeColors);
44
- const alertClasses = tigercatCore.classNames(
45
- tigercatCore.alertBaseClasses,
46
- tigercatCore.alertSizeClasses[size],
47
- colorScheme.bg,
48
- colorScheme.border,
49
- className
50
- );
51
- const iconClasses = tigercatCore.classNames(tigercatCore.alertIconSizeClasses[size], colorScheme.icon);
52
- const titleClasses = tigercatCore.classNames(tigercatCore.alertTitleSizeClasses[size], colorScheme.title);
53
- const descriptionClasses = tigercatCore.classNames(tigercatCore.alertDescriptionSizeClasses[size], colorScheme.description);
54
- const closeButtonClasses = tigercatCore.classNames(
55
- tigercatCore.alertCloseButtonBaseClasses,
56
- colorScheme.closeButton,
57
- colorScheme.closeButtonHover,
58
- colorScheme.focus
59
- );
60
- const handleClose = (event) => {
61
- onClose?.(event);
62
- if (!event.defaultPrevented) {
63
- setVisible(false);
64
- }
65
- };
66
- if (!visible) {
67
- return null;
68
- }
69
- const iconPath = tigercatCore.getAlertIconPath(type);
70
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...props, className: alertClasses, role: "alert", children: [
71
- showIcon && /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.alertIconContainerClasses, children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { path: iconPath, className: iconClasses }) }),
72
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: tigercatCore.alertContentClasses, children: [
73
- (title || titleSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClasses, children: titleSlot || title }),
74
- (description || descriptionSlot) && /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClasses, children: descriptionSlot || description }),
75
- !title && !description && !titleSlot && !descriptionSlot && children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClasses, children })
76
- ] }),
77
- closable && /* @__PURE__ */ jsxRuntime.jsx(
78
- "button",
79
- {
80
- className: closeButtonClasses,
81
- onClick: handleClose,
82
- "aria-label": closeAriaLabel,
83
- type: "button",
84
- children: /* @__PURE__ */ jsxRuntime.jsx(Icon, { path: tigercatCore.alertCloseIconPath, className: "h-4 w-4" })
85
- }
86
- )
87
- ] });
88
- };
89
-
90
- exports.Alert = Alert;
@@ -1,140 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkQFVE7GKD_js = require('./chunk-QFVE7GKD.js');
4
- var react = require('react');
5
- var tigercatCore = require('@expcat/tigercat-core');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- function getMenuButtonsWithin(menuEl) {
9
- return Array.from(
10
- menuEl.querySelectorAll('button[data-tiger-menuitem="true"]')
11
- ).filter((el) => !el.disabled);
12
- }
13
- function roveFocus(current, next) {
14
- const menuEl = current.closest('ul[role="menu"]');
15
- if (!menuEl) {
16
- next.focus();
17
- return;
18
- }
19
- const items = getMenuButtonsWithin(menuEl);
20
- items.forEach((el) => {
21
- el.tabIndex = el === next ? 0 : -1;
22
- });
23
- next.focus();
24
- }
25
- function moveFocus(current, delta) {
26
- const menuEl = current.closest('ul[role="menu"]');
27
- if (!menuEl) return;
28
- const items = getMenuButtonsWithin(menuEl);
29
- const currentIndex = items.indexOf(current);
30
- if (currentIndex < 0) return;
31
- const nextIndex = (currentIndex + delta + items.length) % items.length;
32
- roveFocus(current, items[nextIndex]);
33
- }
34
- function focusEdge(current, edge) {
35
- const menuEl = current.closest('ul[role="menu"]');
36
- if (!menuEl) return;
37
- const items = getMenuButtonsWithin(menuEl);
38
- if (items.length === 0) return;
39
- roveFocus(current, edge === "start" ? items[0] : items[items.length - 1]);
40
- }
41
- var MenuItem = ({
42
- itemKey,
43
- disabled = false,
44
- icon,
45
- className,
46
- children,
47
- level = 0,
48
- collapsed: collapsedOverride
49
- }) => {
50
- const menuContext = chunkQFVE7GKD_js.useMenuContext();
51
- if (!menuContext) {
52
- console.warn("MenuItem must be used within Menu component");
53
- }
54
- const isSelected = !!menuContext && tigercatCore.isKeySelected(itemKey, menuContext.selectedKeys);
55
- const effectiveCollapsed = collapsedOverride ?? (menuContext ? menuContext.collapsed : false);
56
- const itemClasses = tigercatCore.classNames(
57
- menuContext ? tigercatCore.getMenuItemClasses(isSelected, disabled, menuContext.theme, effectiveCollapsed) : "flex items-center px-4 py-2 cursor-pointer transition-colors duration-200",
58
- className
59
- );
60
- const indentStyle = menuContext && menuContext.mode === "inline" && level > 0 ? tigercatCore.getMenuItemIndent(level, menuContext.inlineIndent) : {};
61
- const handleClick = react.useCallback(() => {
62
- if (!disabled && menuContext) {
63
- menuContext.handleSelect(itemKey);
64
- }
65
- }, [disabled, menuContext, itemKey]);
66
- const handleKeyDown = react.useCallback(
67
- (event) => {
68
- if (!menuContext) return;
69
- const current = event.currentTarget;
70
- const rootMenu = current.closest('ul[role="menu"]');
71
- const isRoot = rootMenu?.dataset.tigerMenuRoot === "true";
72
- const isHorizontalRoot = isRoot && menuContext.mode === "horizontal";
73
- const nextKey = isHorizontalRoot ? "ArrowRight" : "ArrowDown";
74
- const prevKey = isHorizontalRoot ? "ArrowLeft" : "ArrowUp";
75
- if (event.key === nextKey) {
76
- event.preventDefault();
77
- moveFocus(current, 1);
78
- return;
79
- }
80
- if (event.key === prevKey) {
81
- event.preventDefault();
82
- moveFocus(current, -1);
83
- return;
84
- }
85
- if (event.key === "Home") {
86
- event.preventDefault();
87
- focusEdge(current, "start");
88
- return;
89
- }
90
- if (event.key === "End") {
91
- event.preventDefault();
92
- focusEdge(current, "end");
93
- return;
94
- }
95
- if (event.key === "Enter" || event.key === " ") {
96
- event.preventDefault();
97
- handleClick();
98
- }
99
- },
100
- [menuContext, handleClick]
101
- );
102
- const renderIcon = () => {
103
- if (!icon) return null;
104
- if (typeof icon === "string") {
105
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: tigercatCore.menuItemIconClasses, dangerouslySetInnerHTML: { __html: icon } });
106
- }
107
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: tigercatCore.menuItemIconClasses, children: icon });
108
- };
109
- const renderLabel = () => {
110
- if (!effectiveCollapsed) return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1", children });
111
- if (!icon) {
112
- const text = String(children || "");
113
- return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 text-center", children: text.charAt(0).toUpperCase() });
114
- }
115
- return null;
116
- };
117
- return /* @__PURE__ */ jsxRuntime.jsx("li", { role: "none", children: /* @__PURE__ */ jsxRuntime.jsxs(
118
- "button",
119
- {
120
- type: "button",
121
- className: itemClasses,
122
- style: indentStyle,
123
- role: "menuitem",
124
- "data-tiger-menuitem": "true",
125
- "data-tiger-selected": isSelected ? "true" : "false",
126
- "aria-current": isSelected ? "page" : void 0,
127
- "aria-disabled": disabled ? "true" : void 0,
128
- disabled,
129
- tabIndex: -1,
130
- onClick: handleClick,
131
- onKeyDown: handleKeyDown,
132
- children: [
133
- renderIcon(),
134
- renderLabel()
135
- ]
136
- }
137
- ) });
138
- };
139
-
140
- exports.MenuItem = MenuItem;
@@ -1,194 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkNEULKOYJ_js = require('./chunk-NEULKOYJ.js');
4
- var React = require('react');
5
- var reactDom = require('react-dom');
6
- var tigercatCore = require('@expcat/tigercat-core');
7
- var jsxRuntime = require('react/jsx-runtime');
8
-
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- var React__default = /*#__PURE__*/_interopDefault(React);
12
-
13
- var CloseIcon = () => /* @__PURE__ */ jsxRuntime.jsx(
14
- "svg",
15
- {
16
- className: "w-5 h-5",
17
- fill: "none",
18
- stroke: "currentColor",
19
- viewBox: tigercatCore.closeIconViewBox,
20
- xmlns: "http://www.w3.org/2000/svg",
21
- children: /* @__PURE__ */ jsxRuntime.jsx(
22
- "path",
23
- {
24
- strokeLinecap: tigercatCore.closeIconPathStrokeLinecap,
25
- strokeLinejoin: tigercatCore.closeIconPathStrokeLinejoin,
26
- strokeWidth: tigercatCore.closeIconPathStrokeWidth,
27
- d: tigercatCore.closeIconPathD
28
- }
29
- )
30
- }
31
- );
32
- var Drawer = ({
33
- visible = false,
34
- placement = "right",
35
- size = "md",
36
- title,
37
- header,
38
- closable = true,
39
- mask = true,
40
- maskClosable = true,
41
- zIndex = 1e3,
42
- className,
43
- bodyClassName,
44
- destroyOnClose = false,
45
- onClose,
46
- onAfterEnter,
47
- onAfterLeave,
48
- closeAriaLabel,
49
- locale,
50
- children,
51
- footer,
52
- style,
53
- ...rest
54
- }) => {
55
- const [hasBeenOpened, setHasBeenOpened] = React__default.default.useState(visible);
56
- React.useEffect(() => {
57
- if (visible) setHasBeenOpened(true);
58
- }, [visible]);
59
- const shouldRender = destroyOnClose ? visible : hasBeenOpened;
60
- const handleClose = React.useCallback(() => {
61
- onClose?.();
62
- }, [onClose]);
63
- const handleMaskClick = React.useCallback(
64
- (event) => {
65
- if (!maskClosable) return;
66
- if (event.target === event.currentTarget) {
67
- handleClose();
68
- }
69
- },
70
- [maskClosable, handleClose]
71
- );
72
- chunkNEULKOYJ_js.useEscapeKey({ enabled: visible, onEscape: handleClose });
73
- const previousVisible = React.useRef(false);
74
- React.useEffect(() => {
75
- if (visible === previousVisible.current) return;
76
- previousVisible.current = visible;
77
- const timer = window.setTimeout(() => {
78
- if (visible) {
79
- onAfterEnter?.();
80
- } else {
81
- onAfterLeave?.();
82
- }
83
- }, 300);
84
- return () => window.clearTimeout(timer);
85
- }, [visible, onAfterEnter, onAfterLeave]);
86
- const reactId = React.useId();
87
- const drawerId = React.useMemo(() => `tiger-drawer-${reactId}`, [reactId]);
88
- const titleId = `${drawerId}-title`;
89
- const {
90
- ["aria-labelledby"]: _ariaLabelledby,
91
- role: _role,
92
- tabIndex: _tabIndex,
93
- ...dialogDivProps
94
- } = rest;
95
- const ariaLabelledby = rest["aria-labelledby"] ?? (title || header ? titleId : void 0);
96
- const dialogRef = React.useRef(null);
97
- const closeButtonRef = React.useRef(null);
98
- const previousActiveElementRef = React.useRef(null);
99
- const resolvedCloseAriaLabel = tigercatCore.resolveLocaleText(
100
- "Close drawer",
101
- closeAriaLabel,
102
- locale?.drawer?.closeAriaLabel,
103
- locale?.common?.closeText
104
- );
105
- React.useEffect(() => {
106
- if (!visible) return;
107
- previousActiveElementRef.current = tigercatCore.captureActiveElement();
108
- const timer = window.setTimeout(() => {
109
- tigercatCore.focusFirst([closeButtonRef.current, dialogRef.current]);
110
- }, 0);
111
- return () => window.clearTimeout(timer);
112
- }, [visible]);
113
- React.useEffect(() => {
114
- if (visible) return;
115
- tigercatCore.restoreFocus(previousActiveElementRef.current);
116
- }, [visible]);
117
- const containerClasses = tigercatCore.classNames(
118
- tigercatCore.getDrawerContainerClasses(zIndex),
119
- !visible && "pointer-events-none"
120
- );
121
- const maskClasses = tigercatCore.getDrawerMaskClasses(visible);
122
- const panelClasses = tigercatCore.classNames(
123
- tigercatCore.getDrawerPanelClasses(placement, visible, size),
124
- "flex flex-col",
125
- className
126
- );
127
- const headerClasses = tigercatCore.getDrawerHeaderClasses();
128
- const bodyClasses = tigercatCore.getDrawerBodyClasses(bodyClassName);
129
- const footerClasses = tigercatCore.getDrawerFooterClasses();
130
- const closeButtonClasses = tigercatCore.getDrawerCloseButtonClasses();
131
- const titleClasses = tigercatCore.getDrawerTitleClasses();
132
- if (!shouldRender) {
133
- return null;
134
- }
135
- const drawerContent = /* @__PURE__ */ jsxRuntime.jsxs(
136
- "div",
137
- {
138
- className: containerClasses,
139
- style: { zIndex },
140
- hidden: !visible,
141
- "aria-hidden": !visible ? "true" : void 0,
142
- "data-tiger-drawer-root": "",
143
- children: [
144
- mask && /* @__PURE__ */ jsxRuntime.jsx(
145
- "div",
146
- {
147
- className: maskClasses,
148
- onClick: handleMaskClick,
149
- "aria-hidden": "true",
150
- "data-tiger-drawer-mask": ""
151
- }
152
- ),
153
- /* @__PURE__ */ jsxRuntime.jsxs(
154
- "div",
155
- {
156
- className: panelClasses,
157
- style,
158
- ...dialogDivProps,
159
- role: "dialog",
160
- "aria-modal": "true",
161
- "aria-labelledby": ariaLabelledby,
162
- tabIndex: -1,
163
- ref: dialogRef,
164
- "data-tiger-drawer": "",
165
- children: [
166
- (title || header || closable) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: headerClasses, children: [
167
- (title || header) && /* @__PURE__ */ jsxRuntime.jsx("h3", { className: titleClasses, id: titleId, children: header || title }),
168
- closable && /* @__PURE__ */ jsxRuntime.jsx(
169
- "button",
170
- {
171
- type: "button",
172
- className: closeButtonClasses,
173
- onClick: handleClose,
174
- "aria-label": resolvedCloseAriaLabel,
175
- ref: closeButtonRef,
176
- children: /* @__PURE__ */ jsxRuntime.jsx(CloseIcon, {})
177
- }
178
- )
179
- ] }),
180
- children && /* @__PURE__ */ jsxRuntime.jsx("div", { className: bodyClasses, children }),
181
- footer && /* @__PURE__ */ jsxRuntime.jsx("div", { className: footerClasses, children: footer })
182
- ]
183
- }
184
- )
185
- ]
186
- }
187
- );
188
- if (typeof document === "undefined") {
189
- return null;
190
- }
191
- return reactDom.createPortal(drawerContent, document.body);
192
- };
193
-
194
- exports.Drawer = Drawer;
@@ -1,89 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkVSF4DF7N_js = require('./chunk-VSF4DF7N.js');
4
- var react = require('react');
5
- var tigercatCore = require('@expcat/tigercat-core');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- var Radio = ({
9
- value,
10
- size,
11
- disabled,
12
- name,
13
- checked,
14
- defaultChecked = false,
15
- onChange,
16
- children,
17
- className,
18
- style,
19
- ...props
20
- }) => {
21
- const groupContext = react.useContext(chunkVSF4DF7N_js.RadioGroupContext);
22
- const [internalChecked, setInternalChecked] = react.useState(defaultChecked);
23
- const isCheckedControlled = checked !== void 0;
24
- const isInGroup = !!groupContext;
25
- const actualSize = size || groupContext?.size || "md";
26
- const actualDisabled = disabled !== void 0 ? disabled : groupContext?.disabled || false;
27
- const actualName = name || groupContext?.name || "";
28
- const isChecked = checked !== void 0 ? checked : groupContext?.value !== void 0 ? groupContext.value === value : internalChecked;
29
- const colors = tigercatCore.getRadioColorClasses();
30
- const radioClasses = tigercatCore.getRadioVisualClasses({
31
- size: actualSize,
32
- checked: isChecked,
33
- disabled: actualDisabled,
34
- colors
35
- });
36
- const dotClasses = tigercatCore.getRadioDotClasses({
37
- size: actualSize,
38
- checked: isChecked,
39
- colors
40
- });
41
- const labelClasses = tigercatCore.getRadioLabelClasses({
42
- size: actualSize,
43
- disabled: actualDisabled,
44
- colors
45
- });
46
- const handleChange = (event) => {
47
- if (actualDisabled) {
48
- event.preventDefault();
49
- return;
50
- }
51
- const newChecked = event.target.checked;
52
- if (!newChecked) return;
53
- if (!isCheckedControlled && !isInGroup) {
54
- setInternalChecked(true);
55
- }
56
- onChange?.(value);
57
- groupContext?.onChange?.(value);
58
- };
59
- const handleKeyDown = (event) => {
60
- props.onKeyDown?.(event);
61
- if (event.defaultPrevented) return;
62
- if (actualDisabled) return;
63
- if (event.key === "Enter") {
64
- event.preventDefault();
65
- const input = event.currentTarget;
66
- if (!input.checked) input.click();
67
- }
68
- };
69
- return /* @__PURE__ */ jsxRuntime.jsxs("label", { className: tigercatCore.classNames("inline-flex items-center", className), style, children: [
70
- /* @__PURE__ */ jsxRuntime.jsx(
71
- "input",
72
- {
73
- type: "radio",
74
- className: "sr-only peer",
75
- ...props,
76
- name: actualName,
77
- value,
78
- checked: isChecked,
79
- disabled: actualDisabled,
80
- onChange: handleChange,
81
- onKeyDown: handleKeyDown
82
- }
83
- ),
84
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: radioClasses, "aria-hidden": "true", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: dotClasses }) }),
85
- children && /* @__PURE__ */ jsxRuntime.jsx("span", { className: labelClasses, children })
86
- ] });
87
- };
88
-
89
- exports.Radio = Radio;
@@ -1,50 +0,0 @@
1
- 'use strict';
2
-
3
- var tigercatCore = require('@expcat/tigercat-core');
4
- var jsxRuntime = require('react/jsx-runtime');
5
-
6
- // src/components/Badge.tsx
7
- var Badge = ({
8
- variant = "danger",
9
- size = "md",
10
- type = "number",
11
- content,
12
- max = 99,
13
- showZero = false,
14
- position = "top-right",
15
- standalone = true,
16
- className,
17
- children,
18
- ["aria-label"]: ariaLabelProp,
19
- ...props
20
- }) => {
21
- const isDot = type === "dot";
22
- const isHidden = tigercatCore.shouldHideBadge(content, type, showZero);
23
- const displayContent = tigercatCore.formatBadgeContent(content, max, showZero);
24
- const sizeClass = isDot ? tigercatCore.dotSizeClasses[size] : tigercatCore.badgeSizeClasses[size];
25
- const badgeClasses = tigercatCore.classNames(
26
- tigercatCore.badgeBaseClasses,
27
- tigercatCore.getBadgeVariantClasses(variant),
28
- sizeClass,
29
- tigercatCore.badgeTypeClasses[type],
30
- !standalone && tigercatCore.badgePositionClasses[position],
31
- className
32
- );
33
- const computedAriaLabel = ariaLabelProp ?? (isDot ? "notification" : type === "number" ? `${displayContent} notifications` : `${displayContent ?? ""}`);
34
- if (isHidden) {
35
- if (standalone) {
36
- return null;
37
- }
38
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
39
- }
40
- const badgeElement = /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: badgeClasses, role: "status", "aria-label": computedAriaLabel, children: !isDot && displayContent });
41
- if (standalone) {
42
- return badgeElement;
43
- }
44
- return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: tigercatCore.badgeWrapperClasses, children: [
45
- children,
46
- badgeElement
47
- ] });
48
- };
49
-
50
- exports.Badge = Badge;
@@ -1,108 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var tigercatCore = require('@expcat/tigercat-core');
5
- var jsxRuntime = require('react/jsx-runtime');
6
-
7
- // src/components/Loading.tsx
8
- var Loading = ({
9
- variant = "spinner",
10
- size = "md",
11
- color = "primary",
12
- text,
13
- fullscreen = false,
14
- delay = 0,
15
- background = "rgba(255, 255, 255, 0.9)",
16
- customColor,
17
- className = "",
18
- style,
19
- ...props
20
- }) => {
21
- react.useEffect(() => {
22
- tigercatCore.injectLoadingAnimationStyles();
23
- }, []);
24
- const [visible, setVisible] = react.useState(delay === 0);
25
- react.useEffect(() => {
26
- if (delay > 0) {
27
- const timer = setTimeout(() => {
28
- setVisible(true);
29
- }, delay);
30
- return () => clearTimeout(timer);
31
- }
32
- }, [delay]);
33
- const spinnerClasses = tigercatCore.getLoadingClasses(variant, size, color, customColor);
34
- const textClasses = tigercatCore.getLoadingTextClasses(size, color, customColor);
35
- const containerClasses = tigercatCore.classNames(
36
- fullscreen ? tigercatCore.loadingFullscreenBaseClasses : tigercatCore.loadingContainerBaseClasses,
37
- className
38
- );
39
- const mergedStyle = {
40
- ...customColor ? { color: customColor } : null,
41
- ...fullscreen ? { backgroundColor: background } : null,
42
- ...style
43
- };
44
- const renderSpinner = () => {
45
- const svg = tigercatCore.getSpinnerSVG(variant);
46
- return /* @__PURE__ */ jsxRuntime.jsx(
47
- "svg",
48
- {
49
- className: spinnerClasses,
50
- xmlns: "http://www.w3.org/2000/svg",
51
- fill: "none",
52
- viewBox: svg.viewBox,
53
- children: svg.elements.map((el, index) => {
54
- if (el.type === "circle") {
55
- return /* @__PURE__ */ jsxRuntime.jsx("circle", { ...el.attrs }, index);
56
- } else if (el.type === "path") {
57
- return /* @__PURE__ */ jsxRuntime.jsx("path", { ...el.attrs }, index);
58
- }
59
- return null;
60
- })
61
- }
62
- );
63
- };
64
- const renderDots = () => {
65
- const colorClass = customColor ? "" : tigercatCore.loadingColorClasses[color];
66
- const steps = [0, 1, 2];
67
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.getLoadingDotsWrapperClasses(size), children: steps.map((i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.getLoadingDotClasses(size, i, colorClass) }, i)) });
68
- };
69
- const renderBars = () => {
70
- const colorClass = customColor ? "" : tigercatCore.loadingColorClasses[color];
71
- const steps = [0, 1, 2];
72
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.getLoadingBarsWrapperClasses(size), children: steps.map((i) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: tigercatCore.getLoadingBarClasses(size, i, colorClass) }, i)) });
73
- };
74
- const renderIndicator = () => {
75
- switch (variant) {
76
- case "dots":
77
- return renderDots();
78
- case "bars":
79
- return renderBars();
80
- case "spinner":
81
- case "ring":
82
- case "pulse":
83
- default:
84
- return renderSpinner();
85
- }
86
- };
87
- if (!visible) {
88
- return null;
89
- }
90
- return /* @__PURE__ */ jsxRuntime.jsxs(
91
- "div",
92
- {
93
- className: containerClasses,
94
- style: mergedStyle,
95
- role: "status",
96
- "aria-label": text || "Loading",
97
- "aria-live": "polite",
98
- "aria-busy": true,
99
- ...props,
100
- children: [
101
- renderIndicator(),
102
- text && /* @__PURE__ */ jsxRuntime.jsx("div", { className: textClasses, children: text })
103
- ]
104
- }
105
- );
106
- };
107
-
108
- exports.Loading = Loading;