@heymantle/litho 0.0.14 → 0.0.15
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 +52 -0
- package/dist/cjs/components/Card.js +1 -1
- package/dist/cjs/components/Disclosure.js +46 -15
- package/dist/cjs/components/DropZone.js +89 -37
- package/dist/cjs/components/Layout.js +4 -2
- package/dist/cjs/components/Modal.js +14 -3
- package/dist/cjs/components/Popover.js +26 -9
- package/dist/cjs/components/Table.js +27 -11
- package/dist/cjs/components/Tabs.js +33 -2
- package/dist/cjs/playwright.config.js +114 -0
- package/dist/cjs/styles/Table.js +2 -7
- package/dist/cjs/tests/visual/stories.spec.js +637 -0
- package/dist/cjs/utilities/dates.js +7 -7
- package/dist/esm/components/Card.js +1 -1
- package/dist/esm/components/Disclosure.js +36 -5
- package/dist/esm/components/DropZone.js +89 -37
- package/dist/esm/components/Layout.js +4 -2
- package/dist/esm/components/Modal.js +14 -3
- package/dist/esm/components/Popover.js +26 -9
- package/dist/esm/components/Table.js +27 -11
- package/dist/esm/components/Tabs.js +33 -2
- package/dist/esm/playwright.config.js +104 -0
- package/dist/esm/styles/Table.js +2 -7
- package/dist/esm/tests/visual/stories.spec.js +633 -0
- package/dist/esm/utilities/dates.js +7 -7
- package/dist/types/components/Disclosure.d.ts.map +1 -1
- package/dist/types/components/DropZone.d.ts +2 -0
- package/dist/types/components/DropZone.d.ts.map +1 -1
- package/dist/types/components/Layout.d.ts.map +1 -1
- package/dist/types/components/Modal.d.ts.map +1 -1
- package/dist/types/components/Popover.d.ts +2 -0
- package/dist/types/components/Popover.d.ts.map +1 -1
- package/dist/types/components/Table.d.ts.map +1 -1
- package/dist/types/components/Tabs.d.ts +45 -1
- package/dist/types/components/Tabs.d.ts.map +1 -1
- package/dist/types/styles/Table.d.ts.map +1 -1
- package/package.json +12 -3
|
@@ -17,6 +17,7 @@ var _ActionList = /*#__PURE__*/ _interop_require_default(require("./ActionList")
|
|
|
17
17
|
var _Icon = /*#__PURE__*/ _interop_require_default(require("./Icon"));
|
|
18
18
|
var _Popover = /*#__PURE__*/ _interop_require_default(require("./Popover"));
|
|
19
19
|
var _polarisicons = /*#__PURE__*/ _interop_require_wildcard(require("@shopify/polaris-icons"));
|
|
20
|
+
var _Badge = /*#__PURE__*/ _interop_require_default(require("./Badge"));
|
|
20
21
|
function _array_like_to_array(arr, len) {
|
|
21
22
|
if (len == null || len > arr.length) len = arr.length;
|
|
22
23
|
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
@@ -195,6 +196,8 @@ var containerStyles = (0, _tailwindvariants.tv)({
|
|
|
195
196
|
* @param {boolean} [props.padded=true] - If true, applies padding to the Tabs container.
|
|
196
197
|
* @param {boolean} [props.borderBottom=true] - If true, applies a bottom border to the Tabs container.
|
|
197
198
|
* @param {boolean} [props.simpleTabs=false] - If true, simplifies the styling for the selected tab.
|
|
199
|
+
* @param {number} [props.badgeCount] - The number of badges to display for the tab.
|
|
200
|
+
* @param {string} [props.badgeStatus="default"] - The status of the badge.
|
|
198
201
|
* @returns {JSX.Element} The Tabs component.
|
|
199
202
|
*/ function Tabs() {
|
|
200
203
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
@@ -308,6 +311,8 @@ var containerStyles = (0, _tailwindvariants.tv)({
|
|
|
308
311
|
fullWidth: fullWidth,
|
|
309
312
|
hidden: tab.hidden,
|
|
310
313
|
simple: simpleTabs,
|
|
314
|
+
badgeCount: tab.badgeCount,
|
|
315
|
+
badgeStatus: tab.badgeStatus,
|
|
311
316
|
children: tab.content
|
|
312
317
|
}, "tab-".concat(tab.originalIndex));
|
|
313
318
|
})
|
|
@@ -400,9 +405,30 @@ var tabStyles = (0, _tailwindvariants.tv)({
|
|
|
400
405
|
}
|
|
401
406
|
]
|
|
402
407
|
});
|
|
403
|
-
|
|
408
|
+
/**
|
|
409
|
+
* Individual tab item component used within the Tabs component.
|
|
410
|
+
*
|
|
411
|
+
* @param {Object} props - Component props.
|
|
412
|
+
* @param {string} [props.id] - Unique identifier for the tab, used to generate the DOM element ID.
|
|
413
|
+
* @param {boolean} [props.active] - Whether the tab's disclosure popover is currently active/open.
|
|
414
|
+
* @param {boolean} [props.selected] - Whether this tab is currently selected.
|
|
415
|
+
* @param {number} [props.index] - The index position of this tab in the tabs array.
|
|
416
|
+
* @param {string|React.ReactNode} [props.icon] - Icon to display. Can be a Polaris icon name string or a custom React node.
|
|
417
|
+
* @param {Function} [props.onSelect] - Callback fired when the tab is selected, receives the tab's index.
|
|
418
|
+
* @param {Function} [props.onClick] - Custom click handler that overrides the default onSelect behavior.
|
|
419
|
+
* @param {React.ReactNode} [props.children] - The content/label to display inside the tab.
|
|
420
|
+
* @param {boolean} [props.fullWidth] - Whether the tab should expand to fill available space.
|
|
421
|
+
* @param {boolean} [props.hidden] - Whether the tab should be visually hidden (used for overflow handling).
|
|
422
|
+
* @param {boolean} [props.simple] - Whether to use simplified styling (no background, column layout).
|
|
423
|
+
* @param {boolean} [props.disclosure=false] - Whether to show a disclosure caret icon when selected.
|
|
424
|
+
* @param {boolean} [props.alwaysShowDisclosureIcon=false] - Whether to always show the disclosure icon regardless of selection state.
|
|
425
|
+
* @param {boolean} [props.disabled=false] - Whether the tab is disabled.
|
|
426
|
+
* @param {string} [props.badgeStatus="default"] - The status variant of the badge (e.g., "default", "success", "warning").
|
|
427
|
+
* @param {number} [props.badgeCount] - If provided (>= 0), displays a badge with this count.
|
|
428
|
+
* @returns {JSX.Element} The Tab component.
|
|
429
|
+
*/ function Tab() {
|
|
404
430
|
var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
|
|
405
|
-
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, simple = props.simple, _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;
|
|
431
|
+
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, simple = props.simple, _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, _props_badgeStatus = props.badgeStatus, badgeStatus = _props_badgeStatus === void 0 ? "default" : _props_badgeStatus, badgeCount = props.badgeCount;
|
|
406
432
|
var polarisIcon = typeof icon === "string" ? _polarisicons[icon] : _polarisicons[icon === null || icon === void 0 ? void 0 : icon.displayName];
|
|
407
433
|
var showDisclosure = disclosure && (selected || alwaysShowDisclosureIcon);
|
|
408
434
|
var tabClasses = tabStyles({
|
|
@@ -443,6 +469,11 @@ function Tab() {
|
|
|
443
469
|
color: selected && simple ? "default" : selected ? "active" : "subdued",
|
|
444
470
|
size: simple ? "lg" : undefined
|
|
445
471
|
})
|
|
472
|
+
}),
|
|
473
|
+
badgeCount >= 0 && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Badge.default, {
|
|
474
|
+
status: badgeStatus,
|
|
475
|
+
className: "ml-1",
|
|
476
|
+
children: badgeCount
|
|
446
477
|
})
|
|
447
478
|
]
|
|
448
479
|
});
|
|
@@ -0,0 +1,114 @@
|
|
|
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 _test = require("@playwright/test");
|
|
12
|
+
function _define_property(obj, key, value) {
|
|
13
|
+
if (key in obj) {
|
|
14
|
+
Object.defineProperty(obj, key, {
|
|
15
|
+
value: value,
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
obj[key] = value;
|
|
22
|
+
}
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
function _object_spread(target) {
|
|
26
|
+
for(var i = 1; i < arguments.length; i++){
|
|
27
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
28
|
+
var ownKeys = Object.keys(source);
|
|
29
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
30
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
31
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
ownKeys.forEach(function(key) {
|
|
35
|
+
_define_property(target, key, source[key]);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return target;
|
|
39
|
+
}
|
|
40
|
+
function ownKeys(object, enumerableOnly) {
|
|
41
|
+
var keys = Object.keys(object);
|
|
42
|
+
if (Object.getOwnPropertySymbols) {
|
|
43
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
44
|
+
if (enumerableOnly) {
|
|
45
|
+
symbols = symbols.filter(function(sym) {
|
|
46
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
keys.push.apply(keys, symbols);
|
|
50
|
+
}
|
|
51
|
+
return keys;
|
|
52
|
+
}
|
|
53
|
+
function _object_spread_props(target, source) {
|
|
54
|
+
source = source != null ? source : {};
|
|
55
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
56
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
57
|
+
} else {
|
|
58
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
59
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return target;
|
|
63
|
+
}
|
|
64
|
+
var _default = (0, _test.defineConfig)({
|
|
65
|
+
testDir: './tests/visual',
|
|
66
|
+
// Run tests in parallel
|
|
67
|
+
fullyParallel: true,
|
|
68
|
+
// Fail the build on CI if you accidentally left test.only in the source code
|
|
69
|
+
forbidOnly: !!process.env.CI,
|
|
70
|
+
// Retry failed tests on CI
|
|
71
|
+
retries: process.env.CI ? 2 : 0,
|
|
72
|
+
// Limit parallel workers on CI
|
|
73
|
+
workers: process.env.CI ? 1 : undefined,
|
|
74
|
+
// Reporter configuration
|
|
75
|
+
reporter: process.env.CI ? 'github' : 'list',
|
|
76
|
+
// Shared settings for all projects
|
|
77
|
+
use: {
|
|
78
|
+
// Base URL for Storybook
|
|
79
|
+
baseURL: 'http://127.0.0.1:6006',
|
|
80
|
+
// Capture trace on failure
|
|
81
|
+
trace: 'on-first-retry'
|
|
82
|
+
},
|
|
83
|
+
// Snapshot naming - remove platform suffix for cross-platform baselines
|
|
84
|
+
snapshotPathTemplate: '{testDir}/{testFileDir}/{testFileName}-snapshots/{arg}{ext}',
|
|
85
|
+
// Visual comparison settings
|
|
86
|
+
expect: {
|
|
87
|
+
toHaveScreenshot: {
|
|
88
|
+
// Allow differences for anti-aliasing and sub-pixel text positioning
|
|
89
|
+
maxDiffPixelRatio: 0.04,
|
|
90
|
+
// Animation settings
|
|
91
|
+
animations: 'disabled'
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
// Configure projects for major browsers
|
|
95
|
+
projects: [
|
|
96
|
+
{
|
|
97
|
+
name: 'chromium',
|
|
98
|
+
use: _object_spread_props(_object_spread({}, _test.devices['Desktop Chrome']), {
|
|
99
|
+
// Consistent viewport
|
|
100
|
+
viewport: {
|
|
101
|
+
width: 1280,
|
|
102
|
+
height: 720
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
}
|
|
106
|
+
],
|
|
107
|
+
// Web server configuration - start Storybook before running tests
|
|
108
|
+
webServer: {
|
|
109
|
+
command: 'npm run storybook -- --ci --quiet',
|
|
110
|
+
url: 'http://127.0.0.1:6006',
|
|
111
|
+
reuseExistingServer: !process.env.CI,
|
|
112
|
+
timeout: 120000
|
|
113
|
+
}
|
|
114
|
+
});
|
package/dist/cjs/styles/Table.js
CHANGED
|
@@ -34,7 +34,7 @@ var headingStyles = (0, _tailwindvariants.tv)({
|
|
|
34
34
|
base: "Litho-Table-Heading py-0 px-2 @md:first:pl-3 whitespace-nowrap font-semibold! text-high text-sm dark:text-normal",
|
|
35
35
|
variants: {
|
|
36
36
|
hidden: {
|
|
37
|
-
true: "hidden opacity-0 pointer-events-none @md:
|
|
37
|
+
true: "hidden opacity-0 pointer-events-none @md:table-cell @md:opacity-100 @md:pointer-events-auto"
|
|
38
38
|
},
|
|
39
39
|
verticalAlign: {
|
|
40
40
|
top: "align-top",
|
|
@@ -474,7 +474,7 @@ var fixedColumnsStyles = (0, _tailwindvariants.tv)({
|
|
|
474
474
|
false: ""
|
|
475
475
|
},
|
|
476
476
|
firstColumns: {
|
|
477
|
-
true: "left-0",
|
|
477
|
+
true: "left-0 hidden @md:block",
|
|
478
478
|
false: "right-0 hidden @md:block"
|
|
479
479
|
},
|
|
480
480
|
selectable: {
|
|
@@ -491,11 +491,6 @@ var fixedColumnsStyles = (0, _tailwindvariants.tv)({
|
|
|
491
491
|
}
|
|
492
492
|
},
|
|
493
493
|
compoundVariants: [
|
|
494
|
-
{
|
|
495
|
-
firstColumns: true,
|
|
496
|
-
selectable: false,
|
|
497
|
-
className: "hidden @md:block"
|
|
498
|
-
},
|
|
499
494
|
{
|
|
500
495
|
firstColumns: true,
|
|
501
496
|
canScrollLeft: true,
|