@basic-ui/material 1.0.0-alpha.22 → 1.0.0-alpha.24
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/build/cjs/index.js +109 -16
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Alert/Alert.d.ts +1 -1
- package/build/esm/AppBar/AppBarButton.d.ts +1 -1
- package/build/esm/Badge/Badge.d.ts +2 -2
- package/build/esm/Badge/Badge.js +27 -2
- package/build/esm/Badge/Badge.js.map +1 -1
- package/build/esm/BottomSheet/BottomSheet.d.ts +1 -1
- package/build/esm/BottomSheet/BottomSheetSurface.d.ts +1 -1
- package/build/esm/Button/BaseButton.d.ts +1 -1
- package/build/esm/Button/Button.d.ts +1 -1
- package/build/esm/Button/ButtonGroup.d.ts +1 -1
- package/build/esm/Button/FilledButton.d.ts +1 -1
- package/build/esm/Button/OutlinedButton.d.ts +1 -1
- package/build/esm/Button/TransparentButton.d.ts +1 -1
- package/build/esm/CheckBox/CheckBox.d.ts +1 -1
- package/build/esm/Chip/ButtonChip.d.ts +1 -1
- package/build/esm/Chip/ChipBase.d.ts +1 -1
- package/build/esm/Chip/ChoiceChip.d.ts +1 -1
- package/build/esm/Combobox/Combobox.d.ts +7 -7
- package/build/esm/Dialog/Dialog.d.ts +1 -1
- package/build/esm/Dialog/DialogBackdrop.d.ts +1 -1
- package/build/esm/Dialog/DialogSurface.d.ts +1 -1
- package/build/esm/Dialog/Scrim.d.ts +1 -1
- package/build/esm/Divider/Divider.d.ts +1 -1
- package/build/esm/Link/Link.d.ts +1 -1
- package/build/esm/ListItem/ListItem.d.ts +1 -1
- package/build/esm/Menu/Menu.d.ts +5 -5
- package/build/esm/NavRail/NavRailItem.d.ts +1 -1
- package/build/esm/NavRail/NavRailItem.js +0 -1
- package/build/esm/NavRail/NavRailItem.js.map +1 -1
- package/build/esm/NavRail/icons/test-icons.d.ts +4 -0
- package/build/esm/NavRail/icons/test-icons.js +42 -0
- package/build/esm/NavRail/icons/test-icons.js.map +1 -0
- package/build/esm/Paper/Paper.d.ts +1 -1
- package/build/esm/RadioButton/RadioGroup.d.ts +1 -1
- package/build/esm/Select/Select.d.ts +1 -1
- package/build/esm/Select/SelectIcon.d.ts +1 -1
- package/build/esm/SelectItem/SelectItem.d.ts +1 -1
- package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
- package/build/esm/Skeleton/Skeleton.d.ts +1 -1
- package/build/esm/Slider/Slider.d.ts +6 -6
- package/build/esm/Snackbar/Snackbar.d.ts +1 -1
- package/build/esm/Switch/Switch.d.ts +1 -1
- package/build/esm/Tab/Tab.d.ts +1 -1
- package/build/esm/Tab/Tab.js +17 -6
- package/build/esm/Tab/Tab.js.map +1 -1
- package/build/esm/Tab/TabList.d.ts +2 -1
- package/build/esm/Tab/TabList.js +5 -2
- package/build/esm/Tab/TabList.js.map +1 -1
- package/build/esm/Tab/TabPanel.d.ts +1 -1
- package/build/esm/Tab/context.d.ts +1 -0
- package/build/esm/Tab/context.js +2 -1
- package/build/esm/Tab/context.js.map +1 -1
- package/build/esm/TabIndicator/TabIndicator.d.ts +4 -2
- package/build/esm/TabIndicator/TabIndicator.js +75 -9
- package/build/esm/TabIndicator/TabIndicator.js.map +1 -1
- package/build/esm/Table/TableRow.d.ts +1 -1
- package/build/esm/TextField/FilledContainer.d.ts +1 -1
- package/build/esm/TextField/HelperText.d.ts +1 -1
- package/build/esm/TextField/Input.d.ts +1 -1
- package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
- package/build/esm/TextField/TextField.d.ts +1 -1
- package/build/esm/Tooltip/Tooltip.d.ts +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/Badge/Badge.story.tsx +68 -0
- package/src/Badge/Badge.tsx +32 -3
- package/src/NavRail/NavRail.story.tsx +1 -45
- package/src/NavRail/NavRailItem.tsx +0 -1
- package/src/NavRail/icons/test-icons.tsx +46 -0
- package/src/Tab/Tab.story.tsx +170 -14
- package/src/Tab/Tab.tsx +26 -7
- package/src/Tab/TabList.tsx +5 -1
- package/src/Tab/context.ts +2 -0
- package/src/TabIndicator/TabIndicator.tsx +83 -7
package/build/cjs/index.js
CHANGED
|
@@ -1530,10 +1530,34 @@ const Alert = /*#__PURE__*/react$1.forwardRef(function Alert(props, forwardedRef
|
|
|
1530
1530
|
});
|
|
1531
1531
|
|
|
1532
1532
|
const Badge = /*#__PURE__*/react$1.forwardRef(function Badge(props, forwardedRef) {
|
|
1533
|
-
const {
|
|
1533
|
+
const {
|
|
1534
|
+
size = 'large',
|
|
1535
|
+
__css,
|
|
1536
|
+
...otherProps
|
|
1534
1537
|
} = props;
|
|
1535
1538
|
return /*#__PURE__*/jsxRuntime.jsx(Box, {
|
|
1536
1539
|
ref: forwardedRef,
|
|
1540
|
+
__css: {
|
|
1541
|
+
variant: 'text.label-small',
|
|
1542
|
+
bg: 'error',
|
|
1543
|
+
color: 'on.error',
|
|
1544
|
+
borderRadius: 'full',
|
|
1545
|
+
...(size === 'small' ? {
|
|
1546
|
+
maxWidth: "0.375rem",
|
|
1547
|
+
maxHeight: "0.375rem",
|
|
1548
|
+
minWidth: "0.375rem",
|
|
1549
|
+
minHeight: "0.375rem"
|
|
1550
|
+
} : {
|
|
1551
|
+
px: 1,
|
|
1552
|
+
maxHeight: "1rem",
|
|
1553
|
+
minWidth: "1rem",
|
|
1554
|
+
minHeight: "1rem"
|
|
1555
|
+
}),
|
|
1556
|
+
display: 'inline-flex',
|
|
1557
|
+
alignItems: 'center',
|
|
1558
|
+
justifyContent: 'center',
|
|
1559
|
+
...__css
|
|
1560
|
+
},
|
|
1537
1561
|
...otherProps
|
|
1538
1562
|
});
|
|
1539
1563
|
});
|
|
@@ -3853,7 +3877,6 @@ const NavRailItem = /*#__PURE__*/react$1.forwardRef(function NavRailItem(props,
|
|
|
3853
3877
|
backgroundColor: 'transparent',
|
|
3854
3878
|
margin: 0,
|
|
3855
3879
|
padding: 0,
|
|
3856
|
-
px: "0.75rem",
|
|
3857
3880
|
minHeight: "3.75rem",
|
|
3858
3881
|
height: "3.75rem",
|
|
3859
3882
|
cursor: 'pointer',
|
|
@@ -5280,54 +5303,110 @@ const {
|
|
|
5280
5303
|
} = TabIndicatorContext;
|
|
5281
5304
|
const useTabIndicatorContext = () => react$1.useContext(TabIndicatorContext);
|
|
5282
5305
|
|
|
5306
|
+
const WIDTH_PROPERTY_NAME = '--indicator-width';
|
|
5307
|
+
const SCALE_PROPERTY_NAME = '--indicator-scale';
|
|
5283
5308
|
const useEnhancedEffect = typeof window !== 'undefined' ? react$1.useLayoutEffect : react$1.useEffect;
|
|
5284
5309
|
const TabIndicator = /*#__PURE__*/react$1.forwardRef(function TabIndicator(props, forwardedRef) {
|
|
5285
5310
|
const {
|
|
5286
5311
|
as = 'span',
|
|
5287
5312
|
selected,
|
|
5288
5313
|
color = 'primary',
|
|
5314
|
+
variant,
|
|
5315
|
+
labelRef,
|
|
5289
5316
|
...otherProps
|
|
5290
5317
|
} = props;
|
|
5291
5318
|
const ref = react$1.useRef(null);
|
|
5292
5319
|
const {
|
|
5293
5320
|
currentIndicator
|
|
5294
5321
|
} = useTabIndicatorContext();
|
|
5322
|
+
const resizeObserverRef = react$1.useRef();
|
|
5295
5323
|
useEnhancedEffect(() => {
|
|
5296
5324
|
if (selected && ref.current) {
|
|
5297
5325
|
if (currentIndicator.current !== null) {
|
|
5298
5326
|
// We are switching indicator, let's slide!
|
|
5299
5327
|
const previousClientRect = currentIndicator.current.getBoundingClientRect();
|
|
5300
5328
|
const currentClientRect = ref.current.getBoundingClientRect();
|
|
5301
|
-
const widthDelta = previousClientRect.width / currentClientRect.width;
|
|
5302
5329
|
const xPosition = previousClientRect.left - currentClientRect.left;
|
|
5303
5330
|
const prevTransition = ref.current.style.transition;
|
|
5304
5331
|
const prevTransform = ref.current.style.transform;
|
|
5305
5332
|
ref.current.style.transition = 'none';
|
|
5306
|
-
|
|
5333
|
+
|
|
5334
|
+
if (variant === 'primary') {
|
|
5335
|
+
const prevWidth = currentIndicator.current.style.getPropertyValue(WIDTH_PROPERTY_NAME);
|
|
5336
|
+
const currentWidth = ref.current.style.getPropertyValue(WIDTH_PROPERTY_NAME);
|
|
5337
|
+
const widthDelta = String(parseFloat(prevWidth) / parseFloat(currentWidth));
|
|
5338
|
+
ref.current.style.setProperty(SCALE_PROPERTY_NAME, widthDelta);
|
|
5339
|
+
ref.current.style.transform = `translateX(${xPosition}px)`;
|
|
5340
|
+
} else {
|
|
5341
|
+
const widthDelta = previousClientRect.width / currentClientRect.width;
|
|
5342
|
+
ref.current.style.transform = `translateX(${xPosition}px) scaleX(${widthDelta})`;
|
|
5343
|
+
} // Force repaint before updating classes and transform to ensure the transform properly takes effect
|
|
5344
|
+
|
|
5307
5345
|
|
|
5308
5346
|
ref.current.getBoundingClientRect(); // Restore and let transition do it's magic
|
|
5309
5347
|
|
|
5310
5348
|
ref.current.style.transition = prevTransition;
|
|
5311
5349
|
ref.current.style.transform = prevTransform;
|
|
5350
|
+
|
|
5351
|
+
if (variant === 'primary') {
|
|
5352
|
+
ref.current.style.setProperty(SCALE_PROPERTY_NAME, '1');
|
|
5353
|
+
}
|
|
5312
5354
|
}
|
|
5313
5355
|
|
|
5314
5356
|
currentIndicator.current = ref.current;
|
|
5315
5357
|
}
|
|
5316
|
-
}, [selected]);
|
|
5358
|
+
}, [selected, variant]);
|
|
5359
|
+
react$1.useEffect(() => {
|
|
5360
|
+
if (variant === 'secondary') {
|
|
5361
|
+
return;
|
|
5362
|
+
}
|
|
5363
|
+
|
|
5364
|
+
if (labelRef.current && ref.current) {
|
|
5365
|
+
const width = labelRef.current.getBoundingClientRect().width;
|
|
5366
|
+
ref.current.style.setProperty(WIDTH_PROPERTY_NAME, `${width}px`);
|
|
5367
|
+
|
|
5368
|
+
if (typeof ResizeObserver === 'function') {
|
|
5369
|
+
resizeObserverRef.current ??= new ResizeObserver(([entry]) => {
|
|
5370
|
+
if (ref.current) {
|
|
5371
|
+
ref.current.style.setProperty(WIDTH_PROPERTY_NAME, `${entry.contentRect.width}px`);
|
|
5372
|
+
}
|
|
5373
|
+
});
|
|
5374
|
+
resizeObserverRef.current?.observe(labelRef.current);
|
|
5375
|
+
return () => resizeObserverRef.current?.disconnect();
|
|
5376
|
+
}
|
|
5377
|
+
}
|
|
5378
|
+
}, [labelRef, variant]);
|
|
5317
5379
|
return /*#__PURE__*/jsxRuntime.jsx(Box, {
|
|
5318
5380
|
as: as,
|
|
5319
5381
|
ref: core.assignMultipleRefs(ref, forwardedRef),
|
|
5320
|
-
width: "100%",
|
|
5321
|
-
height: "0.125rem",
|
|
5322
5382
|
__css: {
|
|
5323
5383
|
bg: color,
|
|
5324
5384
|
position: 'absolute',
|
|
5325
5385
|
bottom: 0,
|
|
5326
5386
|
transform: `scale(1)`,
|
|
5327
5387
|
opacity: selected ? 1 : 0,
|
|
5328
|
-
transformOrigin: 'left',
|
|
5329
5388
|
transition: `transform .25s ${EASING_STANDARD}`,
|
|
5330
|
-
zIndex: 1
|
|
5389
|
+
zIndex: 1,
|
|
5390
|
+
...(variant === 'secondary' ? {
|
|
5391
|
+
width: '100%',
|
|
5392
|
+
height: "0.125rem"
|
|
5393
|
+
} : {
|
|
5394
|
+
width: '100%',
|
|
5395
|
+
'&::before': {
|
|
5396
|
+
content: '""',
|
|
5397
|
+
width: `var(${WIDTH_PROPERTY_NAME}, 0px)`,
|
|
5398
|
+
height: "0.1875rem",
|
|
5399
|
+
borderTopLeftRadius: "0.1875rem",
|
|
5400
|
+
borderTopRightRadius: "0.1875rem",
|
|
5401
|
+
bg: color,
|
|
5402
|
+
position: 'absolute',
|
|
5403
|
+
transformOrigin: 'center',
|
|
5404
|
+
bottom: 0,
|
|
5405
|
+
left: '50%',
|
|
5406
|
+
transition: `inherit`,
|
|
5407
|
+
transform: `translateX(-50%) scaleX(var(${SCALE_PROPERTY_NAME}, 1))}`
|
|
5408
|
+
}
|
|
5409
|
+
})
|
|
5331
5410
|
},
|
|
5332
5411
|
...otherProps
|
|
5333
5412
|
});
|
|
@@ -5335,7 +5414,8 @@ const TabIndicator = /*#__PURE__*/react$1.forwardRef(function TabIndicator(props
|
|
|
5335
5414
|
|
|
5336
5415
|
const TabListContext = /*#__PURE__*/react$1.createContext({
|
|
5337
5416
|
indicatorColor: 'primary',
|
|
5338
|
-
textColor: 'on.surface'
|
|
5417
|
+
textColor: 'on.surface',
|
|
5418
|
+
variant: 'secondary'
|
|
5339
5419
|
});
|
|
5340
5420
|
const {
|
|
5341
5421
|
Provider: TabListProvider
|
|
@@ -5364,6 +5444,7 @@ const TabList = /*#__PURE__*/react$1.forwardRef(function TabList(props, forwarde
|
|
|
5364
5444
|
indicatorColor = 'primary',
|
|
5365
5445
|
textColor = 'on.surface',
|
|
5366
5446
|
selectedTextColor,
|
|
5447
|
+
variant = 'secondary',
|
|
5367
5448
|
...otherProps
|
|
5368
5449
|
} = props;
|
|
5369
5450
|
const currentIndicator = react$1.useRef(null);
|
|
@@ -5371,7 +5452,8 @@ const TabList = /*#__PURE__*/react$1.forwardRef(function TabList(props, forwarde
|
|
|
5371
5452
|
value: {
|
|
5372
5453
|
indicatorColor,
|
|
5373
5454
|
textColor,
|
|
5374
|
-
selectedTextColor
|
|
5455
|
+
selectedTextColor,
|
|
5456
|
+
variant
|
|
5375
5457
|
},
|
|
5376
5458
|
children: /*#__PURE__*/jsxRuntime.jsx(TabIndicatorProvider, {
|
|
5377
5459
|
value: {
|
|
@@ -5398,13 +5480,16 @@ const TabInner = /*#__PURE__*/react$1.forwardRef(function Tab(props, forwardedRe
|
|
|
5398
5480
|
const {
|
|
5399
5481
|
textColor,
|
|
5400
5482
|
indicatorColor,
|
|
5401
|
-
selectedTextColor
|
|
5483
|
+
selectedTextColor,
|
|
5484
|
+
variant
|
|
5402
5485
|
} = useTabListContext();
|
|
5486
|
+
const labelRef = react$1.useRef(null);
|
|
5403
5487
|
return /*#__PURE__*/jsxRuntime.jsxs(Box, {
|
|
5404
5488
|
position: "relative",
|
|
5405
5489
|
display: "flex",
|
|
5406
5490
|
flex: 1,
|
|
5407
5491
|
flexDirection: "column",
|
|
5492
|
+
height: "100%",
|
|
5408
5493
|
children: [/*#__PURE__*/jsxRuntime.jsx(RippleBox, {
|
|
5409
5494
|
as: innerAs,
|
|
5410
5495
|
ref: forwardedRef,
|
|
@@ -5412,9 +5497,9 @@ const TabInner = /*#__PURE__*/react$1.forwardRef(function Tab(props, forwardedRe
|
|
|
5412
5497
|
disabled: disabled,
|
|
5413
5498
|
__css: {
|
|
5414
5499
|
px: 3,
|
|
5415
|
-
position: 'relative',
|
|
5416
5500
|
color: selected ? selectedTextColor || indicatorColor : alpha(textColor, disabled ? 0.37 : 0.7),
|
|
5417
|
-
|
|
5501
|
+
minHeight: "3rem",
|
|
5502
|
+
height: '100%',
|
|
5418
5503
|
backgroundColor: 'transparent',
|
|
5419
5504
|
border: 'none',
|
|
5420
5505
|
':focus': {
|
|
@@ -5426,15 +5511,23 @@ const TabInner = /*#__PURE__*/react$1.forwardRef(function Tab(props, forwardedRe
|
|
|
5426
5511
|
...otherProps,
|
|
5427
5512
|
children: /*#__PURE__*/jsxRuntime.jsx(Text, {
|
|
5428
5513
|
as: "span",
|
|
5429
|
-
|
|
5514
|
+
display: "inline-flex",
|
|
5515
|
+
justifyContent: "center",
|
|
5516
|
+
alignItems: "center",
|
|
5517
|
+
variant: "title-small",
|
|
5430
5518
|
color: "inherit",
|
|
5431
5519
|
height: "100%",
|
|
5432
5520
|
textAlign: "center",
|
|
5521
|
+
position: "relative",
|
|
5522
|
+
flexDirection: "column",
|
|
5523
|
+
ref: labelRef,
|
|
5433
5524
|
children: children
|
|
5434
5525
|
})
|
|
5435
5526
|
}), /*#__PURE__*/jsxRuntime.jsx(TabIndicator, {
|
|
5436
5527
|
selected: selected,
|
|
5437
|
-
color: indicatorColor
|
|
5528
|
+
color: indicatorColor,
|
|
5529
|
+
variant: variant,
|
|
5530
|
+
labelRef: labelRef
|
|
5438
5531
|
})]
|
|
5439
5532
|
});
|
|
5440
5533
|
});
|