@heymantle/litho 0.0.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.
Files changed (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -0
  3. package/dist/cjs/components/ActionList.js +267 -0
  4. package/dist/cjs/components/AnnouncementBar.js +73 -0
  5. package/dist/cjs/components/AppProvider.js +245 -0
  6. package/dist/cjs/components/Autocomplete.js +351 -0
  7. package/dist/cjs/components/Badge.js +234 -0
  8. package/dist/cjs/components/Banner.js +264 -0
  9. package/dist/cjs/components/Box.js +247 -0
  10. package/dist/cjs/components/Button.js +1018 -0
  11. package/dist/cjs/components/ButtonGroup.js +196 -0
  12. package/dist/cjs/components/Card.js +593 -0
  13. package/dist/cjs/components/Checkbox.js +175 -0
  14. package/dist/cjs/components/ChoiceList.js +160 -0
  15. package/dist/cjs/components/Collapsible.js +42 -0
  16. package/dist/cjs/components/ColorField.js +159 -0
  17. package/dist/cjs/components/ContextualSaveBar.js +53 -0
  18. package/dist/cjs/components/DatePicker.js +547 -0
  19. package/dist/cjs/components/Divider.js +50 -0
  20. package/dist/cjs/components/DropZone.js +547 -0
  21. package/dist/cjs/components/EmptyState.js +111 -0
  22. package/dist/cjs/components/Filters.js +874 -0
  23. package/dist/cjs/components/FooterHelp.js +48 -0
  24. package/dist/cjs/components/Form.js +44 -0
  25. package/dist/cjs/components/Frame.js +386 -0
  26. package/dist/cjs/components/FrameSaveBar.js +239 -0
  27. package/dist/cjs/components/Grid.js +151 -0
  28. package/dist/cjs/components/HorizontalStack.js +180 -0
  29. package/dist/cjs/components/Icon.js +346 -0
  30. package/dist/cjs/components/Image.js +191 -0
  31. package/dist/cjs/components/InlineError.js +57 -0
  32. package/dist/cjs/components/Label.js +78 -0
  33. package/dist/cjs/components/Layout.js +228 -0
  34. package/dist/cjs/components/LayoutSection.js +133 -0
  35. package/dist/cjs/components/Link.js +128 -0
  36. package/dist/cjs/components/List.js +69 -0
  37. package/dist/cjs/components/Listbox.js +211 -0
  38. package/dist/cjs/components/Loading.js +103 -0
  39. package/dist/cjs/components/Modal.js +449 -0
  40. package/dist/cjs/components/Navigation.js +331 -0
  41. package/dist/cjs/components/Page.js +529 -0
  42. package/dist/cjs/components/Pagination.js +109 -0
  43. package/dist/cjs/components/Pane.js +128 -0
  44. package/dist/cjs/components/Popover.js +365 -0
  45. package/dist/cjs/components/PopoverManager.js +34 -0
  46. package/dist/cjs/components/ProgressBar.js +124 -0
  47. package/dist/cjs/components/RadioButton.js +172 -0
  48. package/dist/cjs/components/RadioButtonCard.js +193 -0
  49. package/dist/cjs/components/RangeSlider.js +235 -0
  50. package/dist/cjs/components/ResourceList.js +105 -0
  51. package/dist/cjs/components/Select.js +300 -0
  52. package/dist/cjs/components/SkeletonText.js +130 -0
  53. package/dist/cjs/components/Spinner.js +72 -0
  54. package/dist/cjs/components/Table.js +1184 -0
  55. package/dist/cjs/components/Tabs.js +421 -0
  56. package/dist/cjs/components/Tag.js +165 -0
  57. package/dist/cjs/components/Text.js +274 -0
  58. package/dist/cjs/components/TextField.js +584 -0
  59. package/dist/cjs/components/Thumbnail.js +73 -0
  60. package/dist/cjs/components/TimePicker.js +23 -0
  61. package/dist/cjs/components/Tip.js +220 -0
  62. package/dist/cjs/components/Tooltip.js +431 -0
  63. package/dist/cjs/components/TopBar.js +210 -0
  64. package/dist/cjs/components/VerticalStack.js +161 -0
  65. package/dist/cjs/index.js +308 -0
  66. package/dist/cjs/styles/Table.js +591 -0
  67. package/dist/cjs/utilities/dates.js +339 -0
  68. package/dist/cjs/utilities/useIndexResourceState.js +175 -0
  69. package/dist/cjs/utilities/useMounted.js +67 -0
  70. package/dist/cjs/utilities/useTableScrollState.js +142 -0
  71. package/dist/esm/components/ActionList.js +216 -0
  72. package/dist/esm/components/AnnouncementBar.js +63 -0
  73. package/dist/esm/components/AppProvider.js +185 -0
  74. package/dist/esm/components/Autocomplete.js +300 -0
  75. package/dist/esm/components/Badge.js +225 -0
  76. package/dist/esm/components/Banner.js +254 -0
  77. package/dist/esm/components/Box.js +238 -0
  78. package/dist/esm/components/Button.js +967 -0
  79. package/dist/esm/components/ButtonGroup.js +137 -0
  80. package/dist/esm/components/Card.js +537 -0
  81. package/dist/esm/components/Checkbox.js +165 -0
  82. package/dist/esm/components/ChoiceList.js +145 -0
  83. package/dist/esm/components/Collapsible.js +32 -0
  84. package/dist/esm/components/ColorField.js +149 -0
  85. package/dist/esm/components/ContextualSaveBar.js +43 -0
  86. package/dist/esm/components/DatePicker.js +532 -0
  87. package/dist/esm/components/Divider.js +41 -0
  88. package/dist/esm/components/DropZone.js +537 -0
  89. package/dist/esm/components/EmptyState.js +101 -0
  90. package/dist/esm/components/Filters.js +823 -0
  91. package/dist/esm/components/FooterHelp.js +38 -0
  92. package/dist/esm/components/Form.js +35 -0
  93. package/dist/esm/components/Frame.js +376 -0
  94. package/dist/esm/components/FrameSaveBar.js +229 -0
  95. package/dist/esm/components/Grid.js +142 -0
  96. package/dist/esm/components/HorizontalStack.js +171 -0
  97. package/dist/esm/components/Icon.js +296 -0
  98. package/dist/esm/components/Image.js +141 -0
  99. package/dist/esm/components/InlineError.js +43 -0
  100. package/dist/esm/components/Label.js +63 -0
  101. package/dist/esm/components/Layout.js +164 -0
  102. package/dist/esm/components/LayoutSection.js +82 -0
  103. package/dist/esm/components/Link.js +119 -0
  104. package/dist/esm/components/List.js +61 -0
  105. package/dist/esm/components/Listbox.js +201 -0
  106. package/dist/esm/components/Loading.js +93 -0
  107. package/dist/esm/components/Modal.js +390 -0
  108. package/dist/esm/components/Navigation.js +321 -0
  109. package/dist/esm/components/Page.js +473 -0
  110. package/dist/esm/components/Pagination.js +99 -0
  111. package/dist/esm/components/Pane.js +118 -0
  112. package/dist/esm/components/Popover.js +350 -0
  113. package/dist/esm/components/PopoverManager.js +24 -0
  114. package/dist/esm/components/ProgressBar.js +114 -0
  115. package/dist/esm/components/RadioButton.js +157 -0
  116. package/dist/esm/components/RadioButtonCard.js +178 -0
  117. package/dist/esm/components/RangeSlider.js +225 -0
  118. package/dist/esm/components/ResourceList.js +95 -0
  119. package/dist/esm/components/Select.js +285 -0
  120. package/dist/esm/components/SkeletonText.js +120 -0
  121. package/dist/esm/components/Spinner.js +63 -0
  122. package/dist/esm/components/Table.js +1129 -0
  123. package/dist/esm/components/Tabs.js +366 -0
  124. package/dist/esm/components/Tag.js +151 -0
  125. package/dist/esm/components/Text.js +265 -0
  126. package/dist/esm/components/TextField.js +533 -0
  127. package/dist/esm/components/Thumbnail.js +63 -0
  128. package/dist/esm/components/TimePicker.js +13 -0
  129. package/dist/esm/components/Tip.js +169 -0
  130. package/dist/esm/components/Tooltip.js +380 -0
  131. package/dist/esm/components/TopBar.js +200 -0
  132. package/dist/esm/components/VerticalStack.js +152 -0
  133. package/dist/esm/index.js +61 -0
  134. package/dist/esm/styles/Table.js +581 -0
  135. package/dist/esm/utilities/dates.js +289 -0
  136. package/dist/esm/utilities/useIndexResourceState.js +158 -0
  137. package/dist/esm/utilities/useMounted.js +57 -0
  138. package/dist/esm/utilities/useTableScrollState.js +132 -0
  139. package/index.css +1137 -0
  140. package/package.json +53 -0
@@ -0,0 +1,421 @@
1
+ "use client";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return _default;
10
+ }
11
+ });
12
+ var _jsxruntime = require("react/jsx-runtime");
13
+ var _react = /*#__PURE__*/ _interop_require_wildcard(require("react"));
14
+ var _usedebounce = require("use-debounce");
15
+ var _tailwindvariants = require("tailwind-variants");
16
+ var _ActionList = /*#__PURE__*/ _interop_require_default(require("./ActionList"));
17
+ var _Icon = /*#__PURE__*/ _interop_require_default(require("./Icon"));
18
+ var _Popover = /*#__PURE__*/ _interop_require_default(require("./Popover"));
19
+ var _polarisicons = /*#__PURE__*/ _interop_require_wildcard(require("@shopify/polaris-icons"));
20
+ function _array_like_to_array(arr, len) {
21
+ if (len == null || len > arr.length) len = arr.length;
22
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
23
+ return arr2;
24
+ }
25
+ function _array_with_holes(arr) {
26
+ if (Array.isArray(arr)) return arr;
27
+ }
28
+ function _define_property(obj, key, value) {
29
+ if (key in obj) {
30
+ Object.defineProperty(obj, key, {
31
+ value: value,
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true
35
+ });
36
+ } else {
37
+ obj[key] = value;
38
+ }
39
+ return obj;
40
+ }
41
+ function _interop_require_default(obj) {
42
+ return obj && obj.__esModule ? obj : {
43
+ default: obj
44
+ };
45
+ }
46
+ function _getRequireWildcardCache(nodeInterop) {
47
+ if (typeof WeakMap !== "function") return null;
48
+ var cacheBabelInterop = new WeakMap();
49
+ var cacheNodeInterop = new WeakMap();
50
+ return (_getRequireWildcardCache = function(nodeInterop) {
51
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
52
+ })(nodeInterop);
53
+ }
54
+ function _interop_require_wildcard(obj, nodeInterop) {
55
+ if (!nodeInterop && obj && obj.__esModule) {
56
+ return obj;
57
+ }
58
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
59
+ return {
60
+ default: obj
61
+ };
62
+ }
63
+ var cache = _getRequireWildcardCache(nodeInterop);
64
+ if (cache && cache.has(obj)) {
65
+ return cache.get(obj);
66
+ }
67
+ var newObj = {
68
+ __proto__: null
69
+ };
70
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
71
+ for(var key in obj){
72
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
73
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
74
+ if (desc && (desc.get || desc.set)) {
75
+ Object.defineProperty(newObj, key, desc);
76
+ } else {
77
+ newObj[key] = obj[key];
78
+ }
79
+ }
80
+ }
81
+ newObj.default = obj;
82
+ if (cache) {
83
+ cache.set(obj, newObj);
84
+ }
85
+ return newObj;
86
+ }
87
+ function _iterable_to_array_limit(arr, i) {
88
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
89
+ if (_i == null) return;
90
+ var _arr = [];
91
+ var _n = true;
92
+ var _d = false;
93
+ var _s, _e;
94
+ try {
95
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
96
+ _arr.push(_s.value);
97
+ if (i && _arr.length === i) break;
98
+ }
99
+ } catch (err) {
100
+ _d = true;
101
+ _e = err;
102
+ } finally{
103
+ try {
104
+ if (!_n && _i["return"] != null) _i["return"]();
105
+ } finally{
106
+ if (_d) throw _e;
107
+ }
108
+ }
109
+ return _arr;
110
+ }
111
+ function _non_iterable_rest() {
112
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
113
+ }
114
+ function _object_spread(target) {
115
+ for(var i = 1; i < arguments.length; i++){
116
+ var source = arguments[i] != null ? arguments[i] : {};
117
+ var ownKeys = Object.keys(source);
118
+ if (typeof Object.getOwnPropertySymbols === "function") {
119
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
120
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
121
+ }));
122
+ }
123
+ ownKeys.forEach(function(key) {
124
+ _define_property(target, key, source[key]);
125
+ });
126
+ }
127
+ return target;
128
+ }
129
+ function ownKeys(object, enumerableOnly) {
130
+ var keys = Object.keys(object);
131
+ if (Object.getOwnPropertySymbols) {
132
+ var symbols = Object.getOwnPropertySymbols(object);
133
+ if (enumerableOnly) {
134
+ symbols = symbols.filter(function(sym) {
135
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
136
+ });
137
+ }
138
+ keys.push.apply(keys, symbols);
139
+ }
140
+ return keys;
141
+ }
142
+ function _object_spread_props(target, source) {
143
+ source = source != null ? source : {};
144
+ if (Object.getOwnPropertyDescriptors) {
145
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
146
+ } else {
147
+ ownKeys(Object(source)).forEach(function(key) {
148
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
149
+ });
150
+ }
151
+ return target;
152
+ }
153
+ function _sliced_to_array(arr, i) {
154
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
155
+ }
156
+ function _unsupported_iterable_to_array(o, minLen) {
157
+ if (!o) return;
158
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
159
+ var n = Object.prototype.toString.call(o).slice(8, -1);
160
+ if (n === "Object" && o.constructor) n = o.constructor.name;
161
+ if (n === "Map" || n === "Set") return Array.from(n);
162
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
163
+ }
164
+ var styles = (0, _tailwindvariants.tv)({
165
+ base: "Litho-Tabs flex overflow-x-hidden whitespace-nowrap",
166
+ variants: {
167
+ borderBottom: {
168
+ true: "border-b",
169
+ false: ""
170
+ },
171
+ padded: {
172
+ true: "p-2",
173
+ false: ""
174
+ }
175
+ }
176
+ });
177
+ var containerStyles = (0, _tailwindvariants.tv)({
178
+ base: "Litho-Tabs__TabContainer flex flex-1 overflow-x-hidden whitespace-nowrap space-x-1"
179
+ });
180
+ /**
181
+ * Tabs component that displays a set of tab items with selectable states.
182
+ *
183
+ * @param {Object} props - Component props.
184
+ * @param {Object[]} props.tabs - List of tabs to display.
185
+ * @param {string} props.tabs[].id - Unique identifier for the tab.
186
+ * @param {string} props.tabs[].content - Content or label to display for the tab.
187
+ * @param {string} [props.tabs[].icon] - Optional icon to display for the tab.
188
+ * @param {boolean} [props.tabs[].disclosure=false] - Whether the tab is part of a "More" disclosure group.
189
+ * @param {number} props.selected - Index of the currently selected tab.
190
+ * @param {Function} props.onSelect - Callback fired when a tab is selected, receives the tab's index.
191
+ * @param {boolean} [props.fullWidth=false] - Whether the tabs should expand to fit the container width.
192
+ * @param {string} [props.disclosureText="More"] - Label for the "More" disclosure tab.
193
+ * @param {boolean} [props.disclosure=false] - Whether the "More" disclosure is enabled.
194
+ * @param {boolean} [props.activeDisclosure=false] - Whether the "More" disclosure is currently active.
195
+ * @param {boolean} [props.padded=true] - If true, applies padding to the Tabs container.
196
+ * @param {boolean} [props.borderBottom=true] - If true, applies a bottom border to the Tabs container.
197
+ * @returns {JSX.Element} The Tabs component.
198
+ */ function Tabs() {
199
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
200
+ var tmp = props.tabs, _tabs = tmp === void 0 ? [] : tmp, _selectedIndex = props.selected, onSelect = props.onSelect, fullWidth = props.fullWidth, _props_disclosureText = props.disclosureText, disclosureText = _props_disclosureText === void 0 ? "More" : _props_disclosureText, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_activeDisclosure = props.activeDisclosure, activeDisclosure = _props_activeDisclosure === void 0 ? false : _props_activeDisclosure, _props_padded = props.padded, padded = _props_padded === void 0 ? true : _props_padded, _props_borderBottom = props.borderBottom, borderBottom = _props_borderBottom === void 0 ? true : _props_borderBottom;
201
+ var selectedIndex = parseInt(_selectedIndex);
202
+ var containerRef = (0, _react.useRef)(null);
203
+ var disclosureRef = (0, _react.useRef)(null);
204
+ var _useState = _sliced_to_array((0, _react.useState)([]), 2), tabs = _useState[0], setTabs = _useState[1];
205
+ var normalizedTabs = JSON.stringify(_tabs.map(function(param) {
206
+ var id = param.id, content = param.content;
207
+ return {
208
+ id: id,
209
+ content: content
210
+ };
211
+ }));
212
+ (0, _react.useEffect)(function() {
213
+ setTabs(_tabs.map(function(tab, index) {
214
+ return _object_spread_props(_object_spread({}, tab), {
215
+ originalIndex: index,
216
+ hidden: false
217
+ });
218
+ }));
219
+ }, [
220
+ normalizedTabs
221
+ ]);
222
+ var _useState1 = _sliced_to_array((0, _react.useState)(false), 2), containerHasOverflow = _useState1[0], setContainerHasOverflow = _useState1[1];
223
+ var _useState2 = _sliced_to_array((0, _react.useState)(false), 2), showMoreTabsPopover = _useState2[0], setShowMoreTabsPopover = _useState2[1];
224
+ var updateTabVisibility = (0, _react.useCallback)(function() {
225
+ var container = containerRef.current;
226
+ if (tabs.length === 0 || !container) return;
227
+ var hasOverflow = container.scrollWidth > container.clientWidth;
228
+ setContainerHasOverflow(hasOverflow);
229
+ if (!hasOverflow) {
230
+ setTabs(tabs.map(function(tab) {
231
+ return _object_spread_props(_object_spread({}, tab), {
232
+ hidden: false
233
+ });
234
+ }));
235
+ return;
236
+ }
237
+ if (selectedIndex > tabs.length - 1) {
238
+ return;
239
+ }
240
+ var containerWidth = container.offsetWidth;
241
+ var selectedTab = selectedIndex ? document.getElementById("tab-".concat(tabs[selectedIndex].id)) : null;
242
+ if (!selectedTab) return;
243
+ var newTabs = [];
244
+ var selectedTabWidth = document.getElementById("tab-".concat(tabs[selectedIndex].id)).offsetWidth;
245
+ var availableSpace = containerWidth - selectedTabWidth - 20;
246
+ tabs.forEach(function(tab) {
247
+ var $el = document.getElementById("tab-".concat(tab.id));
248
+ if ($el) {
249
+ var tabRect = $el.getBoundingClientRect();
250
+ var tabWidth = tabRect.right - tabRect.left;
251
+ var isSelected = tab.originalIndex === selectedIndex;
252
+ var hidden = !isSelected && availableSpace < tabWidth;
253
+ if (!hidden && !isSelected) {
254
+ availableSpace -= tabWidth;
255
+ }
256
+ newTabs.push(_object_spread_props(_object_spread({}, tab), {
257
+ hidden: hidden
258
+ }));
259
+ }
260
+ });
261
+ newTabs.sort(function(a, b) {
262
+ if (a.hidden !== b.hidden) {
263
+ return a.hidden - b.hidden;
264
+ }
265
+ return a.hidden ? 0 : a.originalIndex - b.originalIndex;
266
+ });
267
+ setTabs(newTabs);
268
+ }, [
269
+ tabs.length,
270
+ selectedIndex
271
+ ]);
272
+ var debouncedUpdateTabVisibility = (0, _usedebounce.useDebouncedCallback)(updateTabVisibility, 100);
273
+ (0, _react.useLayoutEffect)(function() {
274
+ window.addEventListener("resize", debouncedUpdateTabVisibility);
275
+ updateTabVisibility();
276
+ return function() {
277
+ window.removeEventListener("resize", debouncedUpdateTabVisibility);
278
+ };
279
+ }, [
280
+ debouncedUpdateTabVisibility,
281
+ updateTabVisibility
282
+ ]);
283
+ var classes = styles({
284
+ borderBottom: borderBottom,
285
+ padded: padded
286
+ });
287
+ var containerClasses = containerStyles({
288
+ containerHasOverflow: containerHasOverflow
289
+ });
290
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
291
+ className: classes,
292
+ children: [
293
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
294
+ ref: containerRef,
295
+ className: containerClasses,
296
+ children: tabs.map(function(tab) {
297
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(Tab, {
298
+ id: tab.id,
299
+ index: tab.originalIndex,
300
+ selected: selectedIndex === tab.originalIndex,
301
+ active: activeDisclosure && selectedIndex === tab.originalIndex,
302
+ onSelect: function() {
303
+ return onSelect(tab.originalIndex);
304
+ },
305
+ disclosure: disclosure && tab.disclosure,
306
+ icon: tab.icon,
307
+ fullWidth: fullWidth,
308
+ hidden: tab.hidden,
309
+ children: tab.content
310
+ }, "tab-".concat(tab.originalIndex));
311
+ })
312
+ }),
313
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
314
+ ref: disclosureRef,
315
+ className: "Litho-Tabs__DisclosureContainer pl-1",
316
+ children: containerHasOverflow && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Popover.default, {
317
+ active: showMoreTabsPopover,
318
+ preferredAlignment: "right",
319
+ preferredPosition: "below",
320
+ onClose: function() {
321
+ return setShowMoreTabsPopover(false);
322
+ },
323
+ activator: /*#__PURE__*/ (0, _jsxruntime.jsx)(Tab, {
324
+ disclosure: true,
325
+ alwaysShowDisclosureIcon: true,
326
+ onClick: function() {
327
+ return setShowMoreTabsPopover(!showMoreTabsPopover);
328
+ },
329
+ children: disclosureText
330
+ }),
331
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_ActionList.default, {
332
+ items: tabs.filter(function(t) {
333
+ return t.hidden;
334
+ }).map(function(tab) {
335
+ return {
336
+ content: tab.content,
337
+ onAction: function() {
338
+ onSelect(tab.originalIndex);
339
+ setShowMoreTabsPopover(false);
340
+ }
341
+ };
342
+ }),
343
+ onActionAnyItem: function() {
344
+ return setShowMoreTabsPopover(false);
345
+ }
346
+ })
347
+ })
348
+ })
349
+ ]
350
+ });
351
+ }
352
+ var tabStyles = (0, _tailwindvariants.tv)({
353
+ base: "Litho-Tabs__Tab text-sm font-semibold rounded-md inline-grid py-1 min-h-8 flex gap-0.5 items-center justify-center",
354
+ variants: {
355
+ disclosure: {
356
+ true: "pl-3 pr-1",
357
+ false: "px-3"
358
+ },
359
+ selected: {
360
+ true: "text-tab-active-fg bg-tab-active-bg hover:bg-tab-active-bg-hover active:bg-tab-active-bg-active",
361
+ false: "text-tab-inactive-fg bg-tab-inactive-bg hover:bg-tab-inactive-bg-hover active:bg-tab-inactive-bg-active"
362
+ },
363
+ disabled: {
364
+ true: "cursor-not-allowed",
365
+ false: "cursor-pointer"
366
+ },
367
+ fullWidth: {
368
+ true: "flex-1",
369
+ false: ""
370
+ },
371
+ hidden: {
372
+ true: "invisible"
373
+ }
374
+ }
375
+ });
376
+ function Tab() {
377
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
378
+ var id = props.id, active = props.active, selected = props.selected, index = props.index, icon = props.icon, onSelect = props.onSelect, onClick = props.onClick, children = props.children, fullWidth = props.fullWidth, hidden = props.hidden, _props_disclosure = props.disclosure, disclosure = _props_disclosure === void 0 ? false : _props_disclosure, _props_alwaysShowDisclosureIcon = props.alwaysShowDisclosureIcon, alwaysShowDisclosureIcon = _props_alwaysShowDisclosureIcon === void 0 ? false : _props_alwaysShowDisclosureIcon, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled;
379
+ var polarisIcon = typeof icon === "string" ? _polarisicons[icon] : _polarisicons[icon === null || icon === void 0 ? void 0 : icon.displayName];
380
+ var showDisclosure = disclosure && (selected || alwaysShowDisclosureIcon);
381
+ var tabClasses = tabStyles({
382
+ selected: selected,
383
+ disclosure: showDisclosure,
384
+ disabled: disabled,
385
+ fullWidth: fullWidth,
386
+ hidden: hidden
387
+ });
388
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
389
+ id: id ? "tab-".concat(id) : undefined,
390
+ className: tabClasses,
391
+ onClick: onClick ? onClick : onSelect ? function() {
392
+ return onSelect(index);
393
+ } : undefined,
394
+ children: [
395
+ icon && !!polarisIcon && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
396
+ className: "Litho-Tabs__Tab-Icon mr-1",
397
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
398
+ source: polarisIcon,
399
+ color: selected ? "active" : "subdued"
400
+ })
401
+ }),
402
+ icon && !!polarisIcon === false && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
403
+ className: "Litho-Tabs__Tab-Icon mr-1",
404
+ children: icon
405
+ }),
406
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
407
+ className: "Litho-Tabs__Tab-Content block min-h-5 leading-5",
408
+ children: children
409
+ }),
410
+ showDisclosure && /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
411
+ className: "Litho-Tabs__Tab-Disclosure",
412
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
413
+ source: active ? _polarisicons.CaretUpMinor : _polarisicons.CaretDownMinor,
414
+ color: selected ? "active" : "subdued"
415
+ })
416
+ })
417
+ ]
418
+ });
419
+ }
420
+ Tabs.Tab = Tab;
421
+ var _default = Tabs;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ var _jsxruntime = require("react/jsx-runtime");
12
+ var _tailwindvariants = require("tailwind-variants");
13
+ var _Icon = /*#__PURE__*/ _interop_require_default(require("./Icon"));
14
+ var _polarisicons = require("@shopify/polaris-icons");
15
+ function _interop_require_default(obj) {
16
+ return obj && obj.__esModule ? obj : {
17
+ default: obj
18
+ };
19
+ }
20
+ var styles = (0, _tailwindvariants.tv)({
21
+ base: "Litho-Tag text-xs rounded-md inline-grid pl-1 whitespace-nowrap",
22
+ variants: {
23
+ disabled: {
24
+ true: "bg-tag-bg-disabled"
25
+ },
26
+ interactive: {
27
+ true: "cursor-pointer focus:outline-hidden focus:ring-2 focus:ring-offset-1 focus:ring-form-focus-active",
28
+ false: "cursor-text"
29
+ }
30
+ },
31
+ compoundVariants: [
32
+ {
33
+ disabled: false,
34
+ interactive: true,
35
+ selected: false,
36
+ class: "bg-tag-bg hover:bg-tag-bg-hover"
37
+ },
38
+ {
39
+ disabled: false,
40
+ interactive: false,
41
+ selected: false,
42
+ class: "bg-tag-bg"
43
+ },
44
+ {
45
+ selected: true,
46
+ interactive: true,
47
+ disabled: false,
48
+ class: "bg-tab-active-bg hover:bg-tab-active-bg-hover"
49
+ },
50
+ {
51
+ selected: true,
52
+ interactive: false,
53
+ disabled: false,
54
+ class: "bg-tab-active-bg text-tab-active-fg"
55
+ }
56
+ ]
57
+ });
58
+ var contentStyles = (0, _tailwindvariants.tv)({
59
+ base: "Litho-Tag__Content py-0.5 px-1",
60
+ variants: {
61
+ hasRemoveAction: {
62
+ false: "pr-2"
63
+ },
64
+ hasIcon: {
65
+ true: "pl-0"
66
+ },
67
+ disabled: {
68
+ true: "text-tag-fg-disabled",
69
+ false: "text-tag-fg"
70
+ }
71
+ },
72
+ compoundVariants: [
73
+ {
74
+ selected: true,
75
+ disabled: false,
76
+ class: "text-tab-active-fg-low"
77
+ }
78
+ ],
79
+ defaultVariants: {
80
+ hasRemoveAction: false,
81
+ disabled: false
82
+ }
83
+ });
84
+ var actionStyles = (0, _tailwindvariants.tv)({
85
+ base: "Litho-Tag__Action block h-full rounded-r-md group",
86
+ variants: {
87
+ disabled: {
88
+ false: "cursor-pointer hover:bg-tag-bg-hover",
89
+ true: "pointer-events-none"
90
+ }
91
+ }
92
+ });
93
+ /**
94
+ * Renders a Tag component with optional interactive and removable features.
95
+ *
96
+ * @function Tag
97
+ * @param {Object} props - The properties for the Tag component.
98
+ * @param {React.ReactNode} props.children - The content to be displayed inside the Tag.
99
+ * @param {boolean} [props.disabled=false] - Whether the tag is disabled.
100
+ * @param {Function} [props.onClick] - The callback function to execute on tag click.
101
+ * @param {Function} [props.onRemove] - The callback function to execute when the remove icon is clicked.
102
+ * @param {string} [props.accessibilityLabel] - The accessibility label for the tag.
103
+ * @param {string} [props.url] - The URL to open when the tag is clicked.
104
+ * @param {string} [props.target="_self"] - Specifies where to open the URL.
105
+ *
106
+ * @returns {JSX.Element} The rendered Tag component.
107
+ */ function Tag() {
108
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
109
+ var children = props.children, _props_disabled = props.disabled, disabled = _props_disabled === void 0 ? false : _props_disabled, icon = props.icon, onClick = props.onClick, onRemove = props.onRemove, accessibilityLabel = props.accessibilityLabel, url = props.url, _props_target = props.target, target = _props_target === void 0 ? "_self" : _props_target, className = props.className, _props_selected = props.selected, selected = _props_selected === void 0 ? false : _props_selected;
110
+ var interactive = !!url || !!onClick;
111
+ var hasRemoveAction = !!onRemove;
112
+ var hasIcon = !!icon || selected;
113
+ var classes = styles({
114
+ interactive: interactive,
115
+ disabled: disabled,
116
+ selected: selected
117
+ });
118
+ var contentClasses = contentStyles({
119
+ disabled: disabled,
120
+ hasRemoveAction: hasRemoveAction,
121
+ hasIcon: hasIcon,
122
+ selected: selected
123
+ });
124
+ var actionClasses = actionStyles({
125
+ disabled: disabled
126
+ });
127
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
128
+ className: "".concat(classes).concat(className ? " ".concat(className) : ""),
129
+ "aria-label": accessibilityLabel,
130
+ role: "button",
131
+ tabIndex: interactive ? "0" : undefined,
132
+ onClick: interactive ? function() {
133
+ if (onClick) {
134
+ onClick();
135
+ }
136
+ if (url) {
137
+ window.open(url, target);
138
+ }
139
+ } : undefined,
140
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("span", {
141
+ className: "flex justify-center items-center",
142
+ children: [
143
+ (selected || icon) && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
144
+ source: icon === true ? _polarisicons.TickSmallMinor : icon,
145
+ color: disabled ? "disabled" : selected ? "active" : "subdued"
146
+ }),
147
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
148
+ className: contentClasses,
149
+ children: children
150
+ }),
151
+ hasRemoveAction && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
152
+ className: actionClasses,
153
+ onClick: onRemove,
154
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_Icon.default, {
155
+ source: _polarisicons.CancelSmallMinor,
156
+ color: disabled ? "disabled" : "default",
157
+ display: "flex",
158
+ className: "h-full opacity-50 group-hover:opacity-100"
159
+ })
160
+ })
161
+ ]
162
+ })
163
+ });
164
+ }
165
+ var _default = Tag;