@streamoid/ui 0.4.4 → 0.4.6

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/dist/index.css CHANGED
@@ -1381,30 +1381,30 @@
1381
1381
  --x-0: 72%;
1382
1382
  --s-start-0: 8%;
1383
1383
  --s-end-0: 32%;
1384
- --c-0: #1030ff;
1384
+ --c-0: #D91536;
1385
1385
  --y-0: 90%;
1386
1386
  --x-1: 33%;
1387
1387
  --s-start-1: 8.392%;
1388
1388
  --s-end-1: 22.109%;
1389
- --c-1: #21bdff;
1389
+ --c-1: #FFA585;
1390
1390
  --y-1: -7%;
1391
1391
  --s-start-2: 8%;
1392
1392
  --s-end-2: 34%;
1393
1393
  --x-2: 93%;
1394
- --c-2: #1030ff;
1394
+ --c-2: #D91536;
1395
1395
  --y-2: 63%;
1396
1396
  --s-start-3: 8%;
1397
1397
  --s-end-3: 64%;
1398
1398
  --x-3: 7%;
1399
- --c-3: #21bdff;
1399
+ --c-3: #FFA585;
1400
1400
  --y-3: -20%;
1401
- --c-4: #21bdff;
1401
+ --c-4: #FFA585;
1402
1402
  --s-start-4: 8.392%;
1403
1403
  --s-end-4: 22.109%;
1404
1404
  --x-4: 33%;
1405
1405
  --y-4: -7%;
1406
1406
  --y-5: -7%;
1407
- --c-5: #21bdff;
1407
+ --c-5: #FFA585;
1408
1408
  --s-start-5: 8.392%;
1409
1409
  --s-end-5: 22.109%;
1410
1410
  --x-5: 33%;
@@ -1413,30 +1413,30 @@
1413
1413
  --x-0: 8%;
1414
1414
  --s-start-0: 12%;
1415
1415
  --s-end-0: 121%;
1416
- --c-0: #1030ff;
1416
+ --c-0: #D91536;
1417
1417
  --y-0: 59%;
1418
1418
  --x-1: 42%;
1419
1419
  --s-start-1: 8.392%;
1420
1420
  --s-end-1: 41.694%;
1421
- --c-1: #21bdff;
1421
+ --c-1: #FFA585;
1422
1422
  --y-1: 10%;
1423
1423
  --s-start-2: 12%;
1424
1424
  --s-end-2: 86%;
1425
1425
  --x-2: 2%;
1426
- --c-2: #1030ff;
1426
+ --c-2: #D91536;
1427
1427
  --y-2: 59%;
1428
1428
  --s-start-3: 8%;
1429
1429
  --s-end-3: 54%;
1430
1430
  --x-3: 55%;
1431
- --c-3: #21bdff;
1431
+ --c-3: #FFA585;
1432
1432
  --y-3: 10%;
1433
- --c-4: #21bdff;
1433
+ --c-4: #FFA585;
1434
1434
  --s-start-4: 8.392%;
1435
1435
  --s-end-4: 41.694%;
1436
1436
  --x-4: 42%;
1437
1437
  --y-4: 10%;
1438
1438
  --y-5: 10%;
1439
- --c-5: #21bdff;
1439
+ --c-5: #FFA585;
1440
1440
  --s-start-5: 8.392%;
1441
1441
  --s-end-5: 41.694%;
1442
1442
  --x-5: 42%;
@@ -1445,30 +1445,30 @@
1445
1445
  --x-0: 40%;
1446
1446
  --s-start-0: 10%;
1447
1447
  --s-end-0: 80%;
1448
- --c-0: #1030ff;
1448
+ --c-0: #D91536;
1449
1449
  --y-0: 75%;
1450
1450
  --x-1: 76%;
1451
1451
  --s-start-1: 8.392%;
1452
1452
  --s-end-1: 59.322%;
1453
- --c-1: #21bdff;
1453
+ --c-1: #FFA585;
1454
1454
  --y-1: -3%;
1455
1455
  --s-start-2: 12%;
1456
1456
  --s-end-2: 86%;
1457
1457
  --x-2: 2%;
1458
- --c-2: #1030ff;
1458
+ --c-2: #D91536;
1459
1459
  --y-2: 59%;
1460
1460
  --s-start-3: 8%;
1461
1461
  --s-end-3: 92%;
1462
1462
  --x-3: 76%;
1463
- --c-3: #21bdff;
1463
+ --c-3: #FFA585;
1464
1464
  --y-3: -3%;
1465
- --c-4: #21bdff;
1465
+ --c-4: #FFA585;
1466
1466
  --s-start-4: 8.392%;
1467
1467
  --s-end-4: 59.322%;
1468
1468
  --x-4: 76%;
1469
1469
  --y-4: -3%;
1470
1470
  --y-5: -3%;
1471
- --c-5: #21bdff;
1471
+ --c-5: #FFA585;
1472
1472
  --s-start-5: 8.392%;
1473
1473
  --s-end-5: 59.322%;
1474
1474
  --x-5: 76%;
@@ -1477,30 +1477,30 @@
1477
1477
  --x-0: 55%;
1478
1478
  --s-start-0: 9%;
1479
1479
  --s-end-0: 55%;
1480
- --c-0: #1030ff;
1480
+ --c-0: #D91536;
1481
1481
  --y-0: 82%;
1482
1482
  --x-1: 76%;
1483
1483
  --s-start-1: 8.392%;
1484
1484
  --s-end-1: 59.322%;
1485
- --c-1: #21bdff;
1485
+ --c-1: #FFA585;
1486
1486
  --y-1: -3%;
1487
1487
  --s-start-2: 10%;
1488
1488
  --s-end-2: 60%;
1489
1489
  --x-2: 48%;
1490
- --c-2: #1030ff;
1490
+ --c-2: #D91536;
1491
1491
  --y-2: 61%;
1492
1492
  --s-start-3: 8%;
1493
1493
  --s-end-3: 78%;
1494
1494
  --x-3: 40%;
1495
- --c-3: #21bdff;
1495
+ --c-3: #FFA585;
1496
1496
  --y-3: -10%;
1497
- --c-4: #21bdff;
1497
+ --c-4: #FFA585;
1498
1498
  --s-start-4: 8.392%;
1499
1499
  --s-end-4: 40%;
1500
1500
  --x-4: 55%;
1501
1501
  --y-4: -5%;
1502
1502
  --y-5: -5%;
1503
- --c-5: #21bdff;
1503
+ --c-5: #FFA585;
1504
1504
  --s-start-5: 8.392%;
1505
1505
  --s-end-5: 40%;
1506
1506
  --x-5: 55%;
@@ -1509,36 +1509,36 @@
1509
1509
  .ScButton_scButton.ScButton_state-default.ScButton_variant-primary.ScButton_type-primary,
1510
1510
  .ScButton_scButton.ScButton_state-disabled.ScButton_variant-primary.ScButton_type-primary {
1511
1511
  --x-0: 72%;
1512
- --c-0: #1030ff;
1512
+ --c-0: #D91536;
1513
1513
  --y-0: 90%;
1514
1514
  --s-start-0: 8%;
1515
1515
  --s-end-0: 32%;
1516
1516
  --x-1: 33%;
1517
- --c-1: #21bdff;
1517
+ --c-1: #FFA585;
1518
1518
  --y-1: -7%;
1519
1519
  --s-start-1: 8.392%;
1520
1520
  --s-end-1: 22.109%;
1521
1521
  --x-2: 93%;
1522
- --c-2: #1030ff;
1522
+ --c-2: #D91536;
1523
1523
  --y-2: 63%;
1524
1524
  --s-start-2: 8%;
1525
1525
  --s-end-2: 34%;
1526
1526
  --x-3: 7%;
1527
- --c-3: #21bdff;
1527
+ --c-3: #FFA585;
1528
1528
  --y-3: -20%;
1529
1529
  --s-start-3: 8%;
1530
1530
  --s-end-3: 64%;
1531
- --c-4: #21bdff;
1531
+ --c-4: #FFA585;
1532
1532
  --x-4: 33%;
1533
1533
  --y-4: -7%;
1534
1534
  --s-start-4: 8.392%;
1535
1535
  --s-end-4: 22.109%;
1536
- --c-5: #21bdff;
1536
+ --c-5: #FFA585;
1537
1537
  --x-5: 33%;
1538
1538
  --y-5: -7%;
1539
1539
  --s-start-5: 8.392%;
1540
1540
  --s-end-5: 22.109%;
1541
- background-color: #1661FF;
1541
+ background-color: #E33A38;
1542
1542
  background-image:
1543
1543
  radial-gradient(
1544
1544
  circle at var(--x-0) var(--y-0),
@@ -4069,51 +4069,46 @@
4069
4069
  .ScSideBarLogoUnit_row {
4070
4070
  display: flex;
4071
4071
  align-items: center;
4072
- width: 100%;
4073
- }
4074
- .ScSideBarLogoUnit_chip {
4075
- flex: 1 0 0;
4076
- display: flex;
4077
- align-items: center;
4078
- min-width: 0;
4079
- background-color: var(--alias-surface-canvas, #0b0b0b);
4080
- border-radius: var(--radius-xl, 0.75rem);
4072
+ justify-content: space-between;
4073
+ height: 4rem;
4081
4074
  padding: var(--spacing-3xl, 1rem) var(--spacing-xl, 0.75rem) var(--spacing-3xl, 1rem) var(--spacing-3xl, 1rem);
4082
- margin-right: -0.875rem;
4075
+ border-radius: var(--radius-xl, 0.75rem);
4076
+ width: 100%;
4077
+ background: transparent;
4083
4078
  border: none;
4084
4079
  cursor: pointer;
4085
4080
  text-align: left;
4086
4081
  font: inherit;
4087
4082
  color: inherit;
4083
+ transition: background-color 120ms ease-out;
4088
4084
  }
4089
- .ScSideBarLogoUnit_chip:disabled,
4090
- .ScSideBarLogoUnit_chip.ScSideBarLogoUnit_nonInteractive {
4085
+ .ScSideBarLogoUnit_row:disabled,
4086
+ .ScSideBarLogoUnit_row.ScSideBarLogoUnit_nonInteractive {
4091
4087
  cursor: default;
4092
4088
  }
4093
- .ScSideBarLogoUnit_chip > * {
4089
+ .ScSideBarLogoUnit_row:hover,
4090
+ .ScSideBarLogoUnit_row.ScSideBarLogoUnit_forceHover {
4091
+ background-color: var(--alias-surface-subtle, #1a1a1a);
4092
+ }
4093
+ .ScSideBarLogoUnit_wordmarkSlot {
4094
4094
  display: inline-flex;
4095
4095
  align-items: center;
4096
- flex-shrink: 0;
4097
4096
  height: 2rem;
4097
+ flex-shrink: 0;
4098
4098
  }
4099
4099
  .ScSideBarLogoUnit_switch {
4100
4100
  display: inline-flex;
4101
4101
  align-items: center;
4102
4102
  justify-content: center;
4103
- background-color: var(--alias-fill-neutral-neutral, #1a1a1a);
4104
- border-radius: var(--radius-md, 0.5rem);
4105
4103
  padding: var(--spacing-sm, 0.375rem);
4106
- border: none;
4107
- cursor: pointer;
4104
+ border-radius: var(--radius-md, 0.5rem);
4108
4105
  flex-shrink: 0;
4109
- position: relative;
4110
- }
4111
- .ScSideBarLogoUnit_switch:hover {
4112
- background-color: var(--alias-fill-neutral-neutraltohover, #1f1f1f);
4106
+ background-color: var(--alias-fill-neutral-neutral, #1a1a1a);
4107
+ transition: background-color 120ms ease-out;
4113
4108
  }
4114
- .ScSideBarLogoUnit_switch:disabled {
4115
- cursor: default;
4116
- opacity: 0.5;
4109
+ .ScSideBarLogoUnit_row:hover .ScSideBarLogoUnit_switch,
4110
+ .ScSideBarLogoUnit_row.ScSideBarLogoUnit_forceHover .ScSideBarLogoUnit_switch {
4111
+ background-color: var(--alias-fill-neutral-neutralplus, #151515);
4117
4112
  }
4118
4113
  .ScSideBarLogoUnit_switchIcon {
4119
4114
  display: inline-flex;
package/dist/index.d.mts CHANGED
@@ -390,6 +390,9 @@ interface IScGuideProps {
390
390
  skipLabel?: ReactNode;
391
391
  /** Label for the right-hand primary action. Defaults to "Next". */
392
392
  nextLabel?: ReactNode;
393
+ /** Icon rendered after the Next label. Defaults to a right-chevron.
394
+ * Use for terminal steps where the action is "Done" + checkmark, etc. */
395
+ nextIcon?: ReactNode;
393
396
  /** Click handler for the Skip action. */
394
397
  onSkip?: () => void;
395
398
  /** Click handler for the Next action. */
@@ -403,31 +406,39 @@ interface IScGuideProps {
403
406
  className?: string;
404
407
  style?: CSSProperties;
405
408
  }
406
- declare const ScGuide: ({ title, description, skipLabel, nextLabel, onSkip, onNext, hideSkip, hideNext, disabled, className, style, }: IScGuideProps) => JSX.Element;
409
+ declare const ScGuide: ({ title, description, skipLabel, nextLabel, nextIcon, onSkip, onNext, hideSkip, hideNext, disabled, className, style, }: IScGuideProps) => JSX.Element;
407
410
 
408
411
  interface IScSideBarLogoUnitProps {
409
- /** "expanded" renders the wordmark chip + switcher. "collapsed" renders a
410
- * bare clickable product icon (no chip, no switcher). */
412
+ /** "expanded" renders the merged wordmark + switcher row.
413
+ * "collapsed" renders a bare clickable product icon. */
411
414
  state?: "expanded" | "collapsed";
412
415
  /** In expanded state: the stacked "Product / Streamoid" wordmark `<img>`.
413
416
  * In collapsed state: the square product icon `<img>`. */
414
417
  wordmark?: ReactNode;
415
- /** Click handler for the wordmark chip / collapsed icon (e.g. navigate home). */
418
+ /** Click handler for the whole row (wordmark + switcher are one click
419
+ * target now — matches the design intent). */
416
420
  onClick?: () => void;
417
- /** Click handler for the double-arrow product / workspace switcher.
418
- * Ignored when state="collapsed". */
421
+ /** Back-compat: fires alongside `onClick` if both are set. Either prop
422
+ * alone is enough. */
419
423
  onSwitchClick?: () => void;
420
- /** Accessible label for the switch button. Defaults to "Switch product". */
424
+ /** Accessible label for the row when it acts as the product switcher.
425
+ * Defaults to "Switch product". */
421
426
  switchAriaLabel?: string;
422
- /** Hide the switch button (useful when there's nothing to switch to).
423
- * Only applies in expanded state — collapsed has no switch button. */
427
+ /** Hide the switch icon (rare; the design always shows it). */
424
428
  hideSwitch?: boolean;
429
+ /**
430
+ * Force the hover styling on or off, regardless of the mouse position.
431
+ * - `true`: row + switch pill render with their hover backgrounds.
432
+ * - `false`: hover backgrounds are suppressed even on mouse hover.
433
+ * - `undefined` (default): CSS `:hover` drives the visual state.
434
+ */
435
+ hover?: boolean;
425
436
  /** Disable interactions. */
426
437
  disabled?: boolean;
427
438
  className?: string;
428
439
  style?: CSSProperties;
429
440
  }
430
- declare const ScSideBarLogoUnit: ({ state, wordmark, onClick, onSwitchClick, switchAriaLabel, hideSwitch, disabled, className, style, }: IScSideBarLogoUnitProps) => JSX.Element;
441
+ declare const ScSideBarLogoUnit: ({ state, wordmark, onClick, onSwitchClick, switchAriaLabel, hideSwitch, hover, disabled, className, style, }: IScSideBarLogoUnitProps) => JSX.Element;
431
442
 
432
443
  interface IScSidebarMenuProps extends React.HTMLAttributes<HTMLDivElement> {
433
444
  icon?: JSX.Element;
package/dist/index.d.ts CHANGED
@@ -390,6 +390,9 @@ interface IScGuideProps {
390
390
  skipLabel?: ReactNode;
391
391
  /** Label for the right-hand primary action. Defaults to "Next". */
392
392
  nextLabel?: ReactNode;
393
+ /** Icon rendered after the Next label. Defaults to a right-chevron.
394
+ * Use for terminal steps where the action is "Done" + checkmark, etc. */
395
+ nextIcon?: ReactNode;
393
396
  /** Click handler for the Skip action. */
394
397
  onSkip?: () => void;
395
398
  /** Click handler for the Next action. */
@@ -403,31 +406,39 @@ interface IScGuideProps {
403
406
  className?: string;
404
407
  style?: CSSProperties;
405
408
  }
406
- declare const ScGuide: ({ title, description, skipLabel, nextLabel, onSkip, onNext, hideSkip, hideNext, disabled, className, style, }: IScGuideProps) => JSX.Element;
409
+ declare const ScGuide: ({ title, description, skipLabel, nextLabel, nextIcon, onSkip, onNext, hideSkip, hideNext, disabled, className, style, }: IScGuideProps) => JSX.Element;
407
410
 
408
411
  interface IScSideBarLogoUnitProps {
409
- /** "expanded" renders the wordmark chip + switcher. "collapsed" renders a
410
- * bare clickable product icon (no chip, no switcher). */
412
+ /** "expanded" renders the merged wordmark + switcher row.
413
+ * "collapsed" renders a bare clickable product icon. */
411
414
  state?: "expanded" | "collapsed";
412
415
  /** In expanded state: the stacked "Product / Streamoid" wordmark `<img>`.
413
416
  * In collapsed state: the square product icon `<img>`. */
414
417
  wordmark?: ReactNode;
415
- /** Click handler for the wordmark chip / collapsed icon (e.g. navigate home). */
418
+ /** Click handler for the whole row (wordmark + switcher are one click
419
+ * target now — matches the design intent). */
416
420
  onClick?: () => void;
417
- /** Click handler for the double-arrow product / workspace switcher.
418
- * Ignored when state="collapsed". */
421
+ /** Back-compat: fires alongside `onClick` if both are set. Either prop
422
+ * alone is enough. */
419
423
  onSwitchClick?: () => void;
420
- /** Accessible label for the switch button. Defaults to "Switch product". */
424
+ /** Accessible label for the row when it acts as the product switcher.
425
+ * Defaults to "Switch product". */
421
426
  switchAriaLabel?: string;
422
- /** Hide the switch button (useful when there's nothing to switch to).
423
- * Only applies in expanded state — collapsed has no switch button. */
427
+ /** Hide the switch icon (rare; the design always shows it). */
424
428
  hideSwitch?: boolean;
429
+ /**
430
+ * Force the hover styling on or off, regardless of the mouse position.
431
+ * - `true`: row + switch pill render with their hover backgrounds.
432
+ * - `false`: hover backgrounds are suppressed even on mouse hover.
433
+ * - `undefined` (default): CSS `:hover` drives the visual state.
434
+ */
435
+ hover?: boolean;
425
436
  /** Disable interactions. */
426
437
  disabled?: boolean;
427
438
  className?: string;
428
439
  style?: CSSProperties;
429
440
  }
430
- declare const ScSideBarLogoUnit: ({ state, wordmark, onClick, onSwitchClick, switchAriaLabel, hideSwitch, disabled, className, style, }: IScSideBarLogoUnitProps) => JSX.Element;
441
+ declare const ScSideBarLogoUnit: ({ state, wordmark, onClick, onSwitchClick, switchAriaLabel, hideSwitch, hover, disabled, className, style, }: IScSideBarLogoUnitProps) => JSX.Element;
431
442
 
432
443
  interface IScSidebarMenuProps extends React.HTMLAttributes<HTMLDivElement> {
433
444
  icon?: JSX.Element;
package/dist/index.js CHANGED
@@ -3026,11 +3026,12 @@ function StreamoidSidebar({
3026
3026
  ) : null
3027
3027
  ] }),
3028
3028
  !!(topItems?.length || config.topItem) && /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
3029
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(HDivider, {}),
3029
3030
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3030
3031
  "div",
3031
3032
  {
3032
3033
  className: "flex flex-col items-stretch shrink-0 w-full",
3033
- style: { gap: "var(--spacing-md)", paddingBottom: "var(--spacing-md)" },
3034
+ style: { gap: "var(--spacing-md)", paddingTop: "var(--spacing-md)", paddingBottom: "var(--spacing-md)" },
3034
3035
  children: (topItems ?? (config.topItem ? [config.topItem] : [])).map(
3035
3036
  (item) => renderMenuItem({
3036
3037
  item,
@@ -3208,11 +3209,12 @@ function StreamoidSidebar({
3208
3209
  children: [
3209
3210
  collapsedLogo,
3210
3211
  !!(topItems?.length || config.topItem) ? /* @__PURE__ */ (0, import_jsx_runtime41.jsxs)(import_jsx_runtime41.Fragment, { children: [
3212
+ /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(HDivider, {}),
3211
3213
  /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(
3212
3214
  "div",
3213
3215
  {
3214
3216
  className: "flex flex-col items-center shrink-0",
3215
- style: { gap: "var(--spacing-xxs)", paddingBottom: "var(--spacing-xxs)" },
3217
+ style: { gap: "var(--spacing-xxs)", paddingTop: "var(--spacing-xxs)", paddingBottom: "var(--spacing-xxs)" },
3216
3218
  children: (topItems ?? (config.topItem ? [config.topItem] : [])).map(
3217
3219
  (item) => renderMenuItem({
3218
3220
  item,
@@ -3671,6 +3673,7 @@ var ScGuide = ({
3671
3673
  description = "Description",
3672
3674
  skipLabel = "Skip",
3673
3675
  nextLabel = "Next",
3676
+ nextIcon,
3674
3677
  onSkip,
3675
3678
  onNext,
3676
3679
  hideSkip = false,
@@ -3710,7 +3713,7 @@ var ScGuide = ({
3710
3713
  disabled,
3711
3714
  children: [
3712
3715
  /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: ScGuide_default.nextLabel, children: nextLabel }),
3713
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: ScGuide_default.nextIcon, children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_icons36.SiconRight, { size: 16, strokeWidth: 1.5 }) })
3716
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("span", { className: ScGuide_default.nextIcon, children: nextIcon ?? /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(import_icons36.SiconRight, { size: 16, strokeWidth: 1.5 }) })
3714
3717
  ]
3715
3718
  }
3716
3719
  )
@@ -3724,8 +3727,9 @@ var ScGuide = ({
3724
3727
  var ScSideBarLogoUnit_default = {
3725
3728
  scSideBarLogoUnit: "ScSideBarLogoUnit_scSideBarLogoUnit",
3726
3729
  row: "ScSideBarLogoUnit_row",
3727
- chip: "ScSideBarLogoUnit_chip",
3728
3730
  nonInteractive: "ScSideBarLogoUnit_nonInteractive",
3731
+ forceHover: "ScSideBarLogoUnit_forceHover",
3732
+ wordmarkSlot: "ScSideBarLogoUnit_wordmarkSlot",
3729
3733
  switch: "ScSideBarLogoUnit_switch",
3730
3734
  switchIcon: "ScSideBarLogoUnit_switchIcon",
3731
3735
  collapsed: "ScSideBarLogoUnit_collapsed",
@@ -3742,11 +3746,17 @@ var ScSideBarLogoUnit = ({
3742
3746
  onSwitchClick,
3743
3747
  switchAriaLabel = "Switch product",
3744
3748
  hideSwitch = false,
3749
+ hover,
3745
3750
  disabled = false,
3746
3751
  className,
3747
3752
  style
3748
3753
  }) => {
3749
- const interactive = !!onClick && !disabled;
3754
+ const interactive = !disabled && (!!onClick || !!onSwitchClick);
3755
+ const handleClick = () => {
3756
+ if (!interactive) return;
3757
+ onClick?.();
3758
+ onSwitchClick?.();
3759
+ };
3750
3760
  if (state === "collapsed") {
3751
3761
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3752
3762
  "div",
@@ -3758,8 +3768,9 @@ var ScSideBarLogoUnit = ({
3758
3768
  {
3759
3769
  type: "button",
3760
3770
  className: ScSideBarLogoUnit_default.collapsedTrigger + (interactive ? "" : " " + ScSideBarLogoUnit_default.nonInteractive),
3761
- onClick: interactive ? onClick : void 0,
3771
+ onClick: interactive ? handleClick : void 0,
3762
3772
  disabled,
3773
+ "aria-label": interactive ? switchAriaLabel : void 0,
3763
3774
  "aria-disabled": !interactive || disabled,
3764
3775
  children: wordmark
3765
3776
  }
@@ -3767,35 +3778,38 @@ var ScSideBarLogoUnit = ({
3767
3778
  }
3768
3779
  );
3769
3780
  }
3781
+ const rowClasses = [
3782
+ ScSideBarLogoUnit_default.row,
3783
+ interactive ? "" : ScSideBarLogoUnit_default.nonInteractive,
3784
+ hover === true ? ScSideBarLogoUnit_default.forceHover : ""
3785
+ ].filter(Boolean).join(" ");
3770
3786
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3771
3787
  "div",
3772
3788
  {
3773
3789
  className: ScSideBarLogoUnit_default.scSideBarLogoUnit + (className ? " " + className : ""),
3774
- style,
3775
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)("div", { className: ScSideBarLogoUnit_default.row, children: [
3776
- /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3777
- "button",
3778
- {
3779
- type: "button",
3780
- className: ScSideBarLogoUnit_default.chip + (interactive ? "" : " " + ScSideBarLogoUnit_default.nonInteractive),
3781
- onClick: interactive ? onClick : void 0,
3782
- disabled,
3783
- "aria-disabled": !interactive || disabled,
3784
- children: wordmark
3785
- }
3786
- ),
3787
- hideSwitch ? null : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3788
- "button",
3789
- {
3790
- type: "button",
3791
- className: ScSideBarLogoUnit_default.switch,
3792
- onClick: onSwitchClick,
3793
- disabled: disabled || !onSwitchClick,
3794
- "aria-label": switchAriaLabel,
3795
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: ScSideBarLogoUnit_default.switchIcon, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_icons37.SiconDoubleArrow, { size: 16, strokeWidth: 1.5 }) })
3796
- }
3797
- )
3798
- ] })
3790
+ style: {
3791
+ ...style,
3792
+ // Suppressing hover when `hover === false` — overrides CSS :hover.
3793
+ ...hover === false ? { pointerEvents: "auto" } : null
3794
+ },
3795
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsxs)(
3796
+ "button",
3797
+ {
3798
+ type: "button",
3799
+ className: rowClasses,
3800
+ onClick: interactive ? handleClick : void 0,
3801
+ disabled,
3802
+ "aria-label": interactive ? switchAriaLabel : void 0,
3803
+ "aria-disabled": !interactive || disabled,
3804
+ style: hover === false ? {
3805
+ backgroundColor: "transparent"
3806
+ } : void 0,
3807
+ children: [
3808
+ /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: ScSideBarLogoUnit_default.wordmarkSlot, children: wordmark }),
3809
+ hideSwitch ? null : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: ScSideBarLogoUnit_default.switch, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)("span", { className: ScSideBarLogoUnit_default.switchIcon, children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_icons37.SiconDoubleArrow, { size: 16, strokeWidth: 1.5 }) }) })
3810
+ ]
3811
+ }
3812
+ )
3799
3813
  }
3800
3814
  );
3801
3815
  };
package/dist/index.mjs CHANGED
@@ -2917,11 +2917,12 @@ function StreamoidSidebar({
2917
2917
  ) : null
2918
2918
  ] }),
2919
2919
  !!(topItems?.length || config.topItem) && /* @__PURE__ */ jsxs32(Fragment14, { children: [
2920
+ /* @__PURE__ */ jsx40(HDivider, {}),
2920
2921
  /* @__PURE__ */ jsx40(
2921
2922
  "div",
2922
2923
  {
2923
2924
  className: "flex flex-col items-stretch shrink-0 w-full",
2924
- style: { gap: "var(--spacing-md)", paddingBottom: "var(--spacing-md)" },
2925
+ style: { gap: "var(--spacing-md)", paddingTop: "var(--spacing-md)", paddingBottom: "var(--spacing-md)" },
2925
2926
  children: (topItems ?? (config.topItem ? [config.topItem] : [])).map(
2926
2927
  (item) => renderMenuItem({
2927
2928
  item,
@@ -3099,11 +3100,12 @@ function StreamoidSidebar({
3099
3100
  children: [
3100
3101
  collapsedLogo,
3101
3102
  !!(topItems?.length || config.topItem) ? /* @__PURE__ */ jsxs32(Fragment14, { children: [
3103
+ /* @__PURE__ */ jsx40(HDivider, {}),
3102
3104
  /* @__PURE__ */ jsx40(
3103
3105
  "div",
3104
3106
  {
3105
3107
  className: "flex flex-col items-center shrink-0",
3106
- style: { gap: "var(--spacing-xxs)", paddingBottom: "var(--spacing-xxs)" },
3108
+ style: { gap: "var(--spacing-xxs)", paddingTop: "var(--spacing-xxs)", paddingBottom: "var(--spacing-xxs)" },
3107
3109
  children: (topItems ?? (config.topItem ? [config.topItem] : [])).map(
3108
3110
  (item) => renderMenuItem({
3109
3111
  item,
@@ -3570,6 +3572,7 @@ var ScGuide = ({
3570
3572
  description = "Description",
3571
3573
  skipLabel = "Skip",
3572
3574
  nextLabel = "Next",
3575
+ nextIcon,
3573
3576
  onSkip,
3574
3577
  onNext,
3575
3578
  hideSkip = false,
@@ -3609,7 +3612,7 @@ var ScGuide = ({
3609
3612
  disabled,
3610
3613
  children: [
3611
3614
  /* @__PURE__ */ jsx42("span", { className: ScGuide_default.nextLabel, children: nextLabel }),
3612
- /* @__PURE__ */ jsx42("span", { className: ScGuide_default.nextIcon, children: /* @__PURE__ */ jsx42(SiconRight2, { size: 16, strokeWidth: 1.5 }) })
3615
+ /* @__PURE__ */ jsx42("span", { className: ScGuide_default.nextIcon, children: nextIcon ?? /* @__PURE__ */ jsx42(SiconRight2, { size: 16, strokeWidth: 1.5 }) })
3613
3616
  ]
3614
3617
  }
3615
3618
  )
@@ -3623,8 +3626,9 @@ var ScGuide = ({
3623
3626
  var ScSideBarLogoUnit_default = {
3624
3627
  scSideBarLogoUnit: "ScSideBarLogoUnit_scSideBarLogoUnit",
3625
3628
  row: "ScSideBarLogoUnit_row",
3626
- chip: "ScSideBarLogoUnit_chip",
3627
3629
  nonInteractive: "ScSideBarLogoUnit_nonInteractive",
3630
+ forceHover: "ScSideBarLogoUnit_forceHover",
3631
+ wordmarkSlot: "ScSideBarLogoUnit_wordmarkSlot",
3628
3632
  switch: "ScSideBarLogoUnit_switch",
3629
3633
  switchIcon: "ScSideBarLogoUnit_switchIcon",
3630
3634
  collapsed: "ScSideBarLogoUnit_collapsed",
@@ -3641,11 +3645,17 @@ var ScSideBarLogoUnit = ({
3641
3645
  onSwitchClick,
3642
3646
  switchAriaLabel = "Switch product",
3643
3647
  hideSwitch = false,
3648
+ hover,
3644
3649
  disabled = false,
3645
3650
  className,
3646
3651
  style
3647
3652
  }) => {
3648
- const interactive = !!onClick && !disabled;
3653
+ const interactive = !disabled && (!!onClick || !!onSwitchClick);
3654
+ const handleClick = () => {
3655
+ if (!interactive) return;
3656
+ onClick?.();
3657
+ onSwitchClick?.();
3658
+ };
3649
3659
  if (state === "collapsed") {
3650
3660
  return /* @__PURE__ */ jsx43(
3651
3661
  "div",
@@ -3657,8 +3667,9 @@ var ScSideBarLogoUnit = ({
3657
3667
  {
3658
3668
  type: "button",
3659
3669
  className: ScSideBarLogoUnit_default.collapsedTrigger + (interactive ? "" : " " + ScSideBarLogoUnit_default.nonInteractive),
3660
- onClick: interactive ? onClick : void 0,
3670
+ onClick: interactive ? handleClick : void 0,
3661
3671
  disabled,
3672
+ "aria-label": interactive ? switchAriaLabel : void 0,
3662
3673
  "aria-disabled": !interactive || disabled,
3663
3674
  children: wordmark
3664
3675
  }
@@ -3666,35 +3677,38 @@ var ScSideBarLogoUnit = ({
3666
3677
  }
3667
3678
  );
3668
3679
  }
3680
+ const rowClasses = [
3681
+ ScSideBarLogoUnit_default.row,
3682
+ interactive ? "" : ScSideBarLogoUnit_default.nonInteractive,
3683
+ hover === true ? ScSideBarLogoUnit_default.forceHover : ""
3684
+ ].filter(Boolean).join(" ");
3669
3685
  return /* @__PURE__ */ jsx43(
3670
3686
  "div",
3671
3687
  {
3672
3688
  className: ScSideBarLogoUnit_default.scSideBarLogoUnit + (className ? " " + className : ""),
3673
- style,
3674
- children: /* @__PURE__ */ jsxs35("div", { className: ScSideBarLogoUnit_default.row, children: [
3675
- /* @__PURE__ */ jsx43(
3676
- "button",
3677
- {
3678
- type: "button",
3679
- className: ScSideBarLogoUnit_default.chip + (interactive ? "" : " " + ScSideBarLogoUnit_default.nonInteractive),
3680
- onClick: interactive ? onClick : void 0,
3681
- disabled,
3682
- "aria-disabled": !interactive || disabled,
3683
- children: wordmark
3684
- }
3685
- ),
3686
- hideSwitch ? null : /* @__PURE__ */ jsx43(
3687
- "button",
3688
- {
3689
- type: "button",
3690
- className: ScSideBarLogoUnit_default.switch,
3691
- onClick: onSwitchClick,
3692
- disabled: disabled || !onSwitchClick,
3693
- "aria-label": switchAriaLabel,
3694
- children: /* @__PURE__ */ jsx43("span", { className: ScSideBarLogoUnit_default.switchIcon, children: /* @__PURE__ */ jsx43(SiconDoubleArrow, { size: 16, strokeWidth: 1.5 }) })
3695
- }
3696
- )
3697
- ] })
3689
+ style: {
3690
+ ...style,
3691
+ // Suppressing hover when `hover === false` — overrides CSS :hover.
3692
+ ...hover === false ? { pointerEvents: "auto" } : null
3693
+ },
3694
+ children: /* @__PURE__ */ jsxs35(
3695
+ "button",
3696
+ {
3697
+ type: "button",
3698
+ className: rowClasses,
3699
+ onClick: interactive ? handleClick : void 0,
3700
+ disabled,
3701
+ "aria-label": interactive ? switchAriaLabel : void 0,
3702
+ "aria-disabled": !interactive || disabled,
3703
+ style: hover === false ? {
3704
+ backgroundColor: "transparent"
3705
+ } : void 0,
3706
+ children: [
3707
+ /* @__PURE__ */ jsx43("span", { className: ScSideBarLogoUnit_default.wordmarkSlot, children: wordmark }),
3708
+ hideSwitch ? null : /* @__PURE__ */ jsx43("span", { className: ScSideBarLogoUnit_default.switch, children: /* @__PURE__ */ jsx43("span", { className: ScSideBarLogoUnit_default.switchIcon, children: /* @__PURE__ */ jsx43(SiconDoubleArrow, { size: 16, strokeWidth: 1.5 }) }) })
3709
+ ]
3710
+ }
3711
+ )
3698
3712
  }
3699
3713
  );
3700
3714
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamoid/ui",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",