@latty-ds/react 0.7.0 → 0.8.0

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.
@@ -5,10 +5,26 @@ export type ImageProps = HTMLAttributes<ImageEl> & {
5
5
  alt?: string;
6
6
  rounded?: ImageEl['rounded'];
7
7
  responsive?: boolean;
8
+ loading?: ImageEl['loading'];
9
+ onName?: () => void;
10
+ onLoad?: (detail: {
11
+ src: string;
12
+ }) => void;
13
+ onError?: (detail: {
14
+ src: string;
15
+ }) => void;
8
16
  };
9
17
  export declare const Image: import("react").ForwardRefExoticComponent<HTMLAttributes<ImageEl> & {
10
18
  src?: string;
11
19
  alt?: string;
12
20
  rounded?: ImageEl["rounded"];
13
21
  responsive?: boolean;
22
+ loading?: ImageEl["loading"];
23
+ onName?: () => void;
24
+ onLoad?: (detail: {
25
+ src: string;
26
+ }) => void;
27
+ onError?: (detail: {
28
+ src: string;
29
+ }) => void;
14
30
  } & import("react").RefAttributes<ImageEl>>;
@@ -3,8 +3,18 @@ import type { ListItem as ListItemEl, LattyIconName } from '@latty-ds/web';
3
3
  export type ListItemProps = HTMLAttributes<ListItemEl> & {
4
4
  iconStart?: LattyIconName;
5
5
  iconEnd?: LattyIconName;
6
+ clickable?: boolean;
7
+ href?: string;
8
+ target?: string;
9
+ rel?: string;
10
+ disabled?: boolean;
6
11
  };
7
12
  export declare const ListItem: import("react").ForwardRefExoticComponent<HTMLAttributes<ListItemEl> & {
8
13
  iconStart?: LattyIconName;
9
14
  iconEnd?: LattyIconName;
15
+ clickable?: boolean;
16
+ href?: string;
17
+ target?: string;
18
+ rel?: string;
19
+ disabled?: boolean;
10
20
  } & import("react").RefAttributes<ListItemEl>>;
package/dist/index.cjs CHANGED
@@ -403,9 +403,30 @@ IconButton.displayName = "IconButton";
403
403
  // src/components/Image/Image.tsx
404
404
  var import_react21 = require("react");
405
405
  var import_jsx_runtime21 = require("react/jsx-runtime");
406
- var Image = (0, import_react21.forwardRef)(function Image2({ children, ...props }, forwardedRef) {
406
+ var Image = (0, import_react21.forwardRef)(function Image2({ onName, onLoad, onError, children, ...props }, forwardedRef) {
407
407
  const innerRef = (0, import_react21.useRef)(null);
408
408
  (0, import_react21.useImperativeHandle)(forwardedRef, () => innerRef.current);
409
+ (0, import_react21.useEffect)(() => {
410
+ const el = innerRef.current;
411
+ if (!el || !onName) return;
412
+ const h = () => onName();
413
+ el.addEventListener("name", h);
414
+ return () => el.removeEventListener("name", h);
415
+ }, [onName]);
416
+ (0, import_react21.useEffect)(() => {
417
+ const el = innerRef.current;
418
+ if (!el || !onLoad) return;
419
+ const h = (ev) => onLoad(ev.detail);
420
+ el.addEventListener("lt-load", h);
421
+ return () => el.removeEventListener("lt-load", h);
422
+ }, [onLoad]);
423
+ (0, import_react21.useEffect)(() => {
424
+ const el = innerRef.current;
425
+ if (!el || !onError) return;
426
+ const h = (ev) => onError(ev.detail);
427
+ el.addEventListener("lt-error", h);
428
+ return () => el.removeEventListener("lt-error", h);
429
+ }, [onError]);
409
430
  return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("lt-image", { ref: innerRef, ...props, children });
410
431
  });
411
432
  Image.displayName = "Image";
package/dist/index.js CHANGED
@@ -333,11 +333,32 @@ var IconButton = forwardRef20(function IconButton2({ children, ...props }, forwa
333
333
  IconButton.displayName = "IconButton";
334
334
 
335
335
  // src/components/Image/Image.tsx
336
- import { useRef as useRef21, useImperativeHandle as useImperativeHandle21, forwardRef as forwardRef21 } from "react";
336
+ import { useRef as useRef21, useEffect as useEffect13, useImperativeHandle as useImperativeHandle21, forwardRef as forwardRef21 } from "react";
337
337
  import { jsx as jsx21 } from "react/jsx-runtime";
338
- var Image = forwardRef21(function Image2({ children, ...props }, forwardedRef) {
338
+ var Image = forwardRef21(function Image2({ onName, onLoad, onError, children, ...props }, forwardedRef) {
339
339
  const innerRef = useRef21(null);
340
340
  useImperativeHandle21(forwardedRef, () => innerRef.current);
341
+ useEffect13(() => {
342
+ const el = innerRef.current;
343
+ if (!el || !onName) return;
344
+ const h = () => onName();
345
+ el.addEventListener("name", h);
346
+ return () => el.removeEventListener("name", h);
347
+ }, [onName]);
348
+ useEffect13(() => {
349
+ const el = innerRef.current;
350
+ if (!el || !onLoad) return;
351
+ const h = (ev) => onLoad(ev.detail);
352
+ el.addEventListener("lt-load", h);
353
+ return () => el.removeEventListener("lt-load", h);
354
+ }, [onLoad]);
355
+ useEffect13(() => {
356
+ const el = innerRef.current;
357
+ if (!el || !onError) return;
358
+ const h = (ev) => onError(ev.detail);
359
+ el.addEventListener("lt-error", h);
360
+ return () => el.removeEventListener("lt-error", h);
361
+ }, [onError]);
341
362
  return /* @__PURE__ */ jsx21("lt-image", { ref: innerRef, ...props, children });
342
363
  });
343
364
  Image.displayName = "Image";
@@ -383,26 +404,26 @@ var Nav = forwardRef25(function Nav2({ children, ...props }, forwardedRef) {
383
404
  Nav.displayName = "Nav";
384
405
 
385
406
  // src/components/NavItem/NavItem.tsx
386
- import { useRef as useRef26, useEffect as useEffect13, useImperativeHandle as useImperativeHandle26, forwardRef as forwardRef26 } from "react";
407
+ import { useRef as useRef26, useEffect as useEffect14, useImperativeHandle as useImperativeHandle26, forwardRef as forwardRef26 } from "react";
387
408
  import { jsx as jsx26 } from "react/jsx-runtime";
388
409
  var NavItem = forwardRef26(function NavItem2({ onNavItemClick, onNavCollapse, iconStart, children, ...props }, forwardedRef) {
389
410
  const innerRef = useRef26(null);
390
411
  useImperativeHandle26(forwardedRef, () => innerRef.current);
391
- useEffect13(() => {
412
+ useEffect14(() => {
392
413
  const el = innerRef.current;
393
414
  if (!el || !onNavItemClick) return;
394
415
  const h = (ev) => onNavItemClick(ev);
395
416
  el.addEventListener("nav-item-click", h);
396
417
  return () => el.removeEventListener("nav-item-click", h);
397
418
  }, [onNavItemClick]);
398
- useEffect13(() => {
419
+ useEffect14(() => {
399
420
  const el = innerRef.current;
400
421
  if (!el || !onNavCollapse) return;
401
422
  const h = (ev) => onNavCollapse(ev);
402
423
  el.addEventListener("nav-collapse", h);
403
424
  return () => el.removeEventListener("nav-collapse", h);
404
425
  }, [onNavCollapse]);
405
- useEffect13(() => {
426
+ useEffect14(() => {
406
427
  const el = innerRef.current;
407
428
  if (!el) return;
408
429
  if (iconStart) el.setAttribute("icon-start", iconStart);
@@ -413,12 +434,12 @@ var NavItem = forwardRef26(function NavItem2({ onNavItemClick, onNavCollapse, ic
413
434
  NavItem.displayName = "NavItem";
414
435
 
415
436
  // src/components/Pagination/Pagination.tsx
416
- import { useRef as useRef27, useEffect as useEffect14, useImperativeHandle as useImperativeHandle27, forwardRef as forwardRef27 } from "react";
437
+ import { useRef as useRef27, useEffect as useEffect15, useImperativeHandle as useImperativeHandle27, forwardRef as forwardRef27 } from "react";
417
438
  import { jsx as jsx27 } from "react/jsx-runtime";
418
439
  var Pagination = forwardRef27(function Pagination2({ onChange, children, ...props }, forwardedRef) {
419
440
  const innerRef = useRef27(null);
420
441
  useImperativeHandle27(forwardedRef, () => innerRef.current);
421
- useEffect14(() => {
442
+ useEffect15(() => {
422
443
  const el = innerRef.current;
423
444
  if (!el || !onChange) return;
424
445
  const h = (ev) => onChange(ev.detail);
@@ -440,12 +461,12 @@ var Progress = forwardRef28(function Progress2({ children, ...props }, forwarded
440
461
  Progress.displayName = "Progress";
441
462
 
442
463
  // src/components/Radio/Radio.tsx
443
- import { useRef as useRef29, useEffect as useEffect15, useImperativeHandle as useImperativeHandle29, forwardRef as forwardRef29 } from "react";
464
+ import { useRef as useRef29, useEffect as useEffect16, useImperativeHandle as useImperativeHandle29, forwardRef as forwardRef29 } from "react";
444
465
  import { jsx as jsx29 } from "react/jsx-runtime";
445
466
  var Radio = forwardRef29(function Radio2({ onChange, children, ...props }, forwardedRef) {
446
467
  const innerRef = useRef29(null);
447
468
  useImperativeHandle29(forwardedRef, () => innerRef.current);
448
- useEffect15(() => {
469
+ useEffect16(() => {
449
470
  const el = innerRef.current;
450
471
  if (!el || !onChange) return;
451
472
  const h = (ev) => onChange(ev.detail);
@@ -457,12 +478,12 @@ var Radio = forwardRef29(function Radio2({ onChange, children, ...props }, forwa
457
478
  Radio.displayName = "Radio";
458
479
 
459
480
  // src/components/RadioGroup/RadioGroup.tsx
460
- import { useRef as useRef30, useEffect as useEffect16, useImperativeHandle as useImperativeHandle30, forwardRef as forwardRef30 } from "react";
481
+ import { useRef as useRef30, useEffect as useEffect17, useImperativeHandle as useImperativeHandle30, forwardRef as forwardRef30 } from "react";
461
482
  import { jsx as jsx30 } from "react/jsx-runtime";
462
483
  var RadioGroup = forwardRef30(function RadioGroup2({ onChange, children, ...props }, forwardedRef) {
463
484
  const innerRef = useRef30(null);
464
485
  useImperativeHandle30(forwardedRef, () => innerRef.current);
465
- useEffect16(() => {
486
+ useEffect17(() => {
466
487
  const el = innerRef.current;
467
488
  if (!el || !onChange) return;
468
489
  const h = (ev) => onChange(ev.detail);
@@ -474,12 +495,12 @@ var RadioGroup = forwardRef30(function RadioGroup2({ onChange, children, ...prop
474
495
  RadioGroup.displayName = "RadioGroup";
475
496
 
476
497
  // src/components/Select/Select.tsx
477
- import { useRef as useRef31, useEffect as useEffect17, useImperativeHandle as useImperativeHandle31, forwardRef as forwardRef31 } from "react";
498
+ import { useRef as useRef31, useEffect as useEffect18, useImperativeHandle as useImperativeHandle31, forwardRef as forwardRef31 } from "react";
478
499
  import { jsx as jsx31 } from "react/jsx-runtime";
479
500
  var Select = forwardRef31(function Select2({ onChange, children, ...props }, forwardedRef) {
480
501
  const innerRef = useRef31(null);
481
502
  useImperativeHandle31(forwardedRef, () => innerRef.current);
482
- useEffect17(() => {
503
+ useEffect18(() => {
483
504
  const el = innerRef.current;
484
505
  if (!el || !onChange) return;
485
506
  const h = (ev) => onChange(ev.detail);
@@ -491,19 +512,19 @@ var Select = forwardRef31(function Select2({ onChange, children, ...props }, for
491
512
  Select.displayName = "Select";
492
513
 
493
514
  // src/components/SidePanel/SidePanel.tsx
494
- import { useRef as useRef32, useEffect as useEffect18, useImperativeHandle as useImperativeHandle32, forwardRef as forwardRef32 } from "react";
515
+ import { useRef as useRef32, useEffect as useEffect19, useImperativeHandle as useImperativeHandle32, forwardRef as forwardRef32 } from "react";
495
516
  import { jsx as jsx32 } from "react/jsx-runtime";
496
517
  var SidePanel = forwardRef32(function SidePanel2({ onClose, noCloseButton, children, ...props }, forwardedRef) {
497
518
  const innerRef = useRef32(null);
498
519
  useImperativeHandle32(forwardedRef, () => innerRef.current);
499
- useEffect18(() => {
520
+ useEffect19(() => {
500
521
  const el = innerRef.current;
501
522
  if (!el || !onClose) return;
502
523
  const h = (ev) => onClose(ev);
503
524
  el.addEventListener("close", h);
504
525
  return () => el.removeEventListener("close", h);
505
526
  }, [onClose]);
506
- useEffect18(() => {
527
+ useEffect19(() => {
507
528
  const el = innerRef.current;
508
529
  if (!el) return;
509
530
  if (noCloseButton) el.setAttribute("no-close-button", "");
@@ -524,19 +545,19 @@ var Skeleton = forwardRef33(function Skeleton2({ children, ...props }, forwarded
524
545
  Skeleton.displayName = "Skeleton";
525
546
 
526
547
  // src/components/Slider/Slider.tsx
527
- import { useRef as useRef34, useEffect as useEffect19, useImperativeHandle as useImperativeHandle34, forwardRef as forwardRef34 } from "react";
548
+ import { useRef as useRef34, useEffect as useEffect20, useImperativeHandle as useImperativeHandle34, forwardRef as forwardRef34 } from "react";
528
549
  import { jsx as jsx34 } from "react/jsx-runtime";
529
550
  var Slider = forwardRef34(function Slider2({ onInput, onChange, children, ...props }, forwardedRef) {
530
551
  const innerRef = useRef34(null);
531
552
  useImperativeHandle34(forwardedRef, () => innerRef.current);
532
- useEffect19(() => {
553
+ useEffect20(() => {
533
554
  const el = innerRef.current;
534
555
  if (!el || !onInput) return;
535
556
  const h = (ev) => onInput(ev.detail);
536
557
  el.addEventListener("input", h);
537
558
  return () => el.removeEventListener("input", h);
538
559
  }, [onInput]);
539
- useEffect19(() => {
560
+ useEffect20(() => {
540
561
  const el = innerRef.current;
541
562
  if (!el || !onChange) return;
542
563
  const h = (ev) => onChange(ev.detail);
@@ -548,26 +569,26 @@ var Slider = forwardRef34(function Slider2({ onInput, onChange, children, ...pro
548
569
  Slider.displayName = "Slider";
549
570
 
550
571
  // src/components/Snackbar/Snackbar.tsx
551
- import { useRef as useRef35, useEffect as useEffect20, useImperativeHandle as useImperativeHandle35, forwardRef as forwardRef35 } from "react";
572
+ import { useRef as useRef35, useEffect as useEffect21, useImperativeHandle as useImperativeHandle35, forwardRef as forwardRef35 } from "react";
552
573
  import { jsx as jsx35 } from "react/jsx-runtime";
553
574
  var Snackbar = forwardRef35(function Snackbar2({ onShow, onHide, onAction, children, ...props }, forwardedRef) {
554
575
  const innerRef = useRef35(null);
555
576
  useImperativeHandle35(forwardedRef, () => innerRef.current);
556
- useEffect20(() => {
577
+ useEffect21(() => {
557
578
  const el = innerRef.current;
558
579
  if (!el || !onShow) return;
559
580
  const h = () => onShow();
560
581
  el.addEventListener("show", h);
561
582
  return () => el.removeEventListener("show", h);
562
583
  }, [onShow]);
563
- useEffect20(() => {
584
+ useEffect21(() => {
564
585
  const el = innerRef.current;
565
586
  if (!el || !onHide) return;
566
587
  const h = () => onHide();
567
588
  el.addEventListener("hide", h);
568
589
  return () => el.removeEventListener("hide", h);
569
590
  }, [onHide]);
570
- useEffect20(() => {
591
+ useEffect21(() => {
571
592
  const el = innerRef.current;
572
593
  if (!el || !onAction) return;
573
594
  const h = () => onAction();
@@ -599,12 +620,12 @@ var Surface = forwardRef37(function Surface2({ children, ...props }, forwardedRe
599
620
  Surface.displayName = "Surface";
600
621
 
601
622
  // src/components/Switch/Switch.tsx
602
- import { useRef as useRef38, useEffect as useEffect21, useImperativeHandle as useImperativeHandle38, forwardRef as forwardRef38 } from "react";
623
+ import { useRef as useRef38, useEffect as useEffect22, useImperativeHandle as useImperativeHandle38, forwardRef as forwardRef38 } from "react";
603
624
  import { jsx as jsx38 } from "react/jsx-runtime";
604
625
  var Switch = forwardRef38(function Switch2({ onChange, children, ...props }, forwardedRef) {
605
626
  const innerRef = useRef38(null);
606
627
  useImperativeHandle38(forwardedRef, () => innerRef.current);
607
- useEffect21(() => {
628
+ useEffect22(() => {
608
629
  const el = innerRef.current;
609
630
  if (!el || !onChange) return;
610
631
  const h = (ev) => onChange(ev.detail);
@@ -616,12 +637,12 @@ var Switch = forwardRef38(function Switch2({ onChange, children, ...props }, for
616
637
  Switch.displayName = "Switch";
617
638
 
618
639
  // src/components/Tab/Tab.tsx
619
- import { useRef as useRef39, useEffect as useEffect22, useImperativeHandle as useImperativeHandle39, forwardRef as forwardRef39 } from "react";
640
+ import { useRef as useRef39, useEffect as useEffect23, useImperativeHandle as useImperativeHandle39, forwardRef as forwardRef39 } from "react";
620
641
  import { jsx as jsx39 } from "react/jsx-runtime";
621
642
  var Tab = forwardRef39(function Tab2({ onTabClick, children, ...props }, forwardedRef) {
622
643
  const innerRef = useRef39(null);
623
644
  useImperativeHandle39(forwardedRef, () => innerRef.current);
624
- useEffect22(() => {
645
+ useEffect23(() => {
625
646
  const el = innerRef.current;
626
647
  if (!el || !onTabClick) return;
627
648
  const h = (ev) => onTabClick(ev);
@@ -633,12 +654,12 @@ var Tab = forwardRef39(function Tab2({ onTabClick, children, ...props }, forward
633
654
  Tab.displayName = "Tab";
634
655
 
635
656
  // src/components/TabGroup/TabGroup.tsx
636
- import { useRef as useRef40, useEffect as useEffect23, useImperativeHandle as useImperativeHandle40, forwardRef as forwardRef40 } from "react";
657
+ import { useRef as useRef40, useEffect as useEffect24, useImperativeHandle as useImperativeHandle40, forwardRef as forwardRef40 } from "react";
637
658
  import { jsx as jsx40 } from "react/jsx-runtime";
638
659
  var TabGroup = forwardRef40(function TabGroup2({ onChange, children, ...props }, forwardedRef) {
639
660
  const innerRef = useRef40(null);
640
661
  useImperativeHandle40(forwardedRef, () => innerRef.current);
641
- useEffect23(() => {
662
+ useEffect24(() => {
642
663
  const el = innerRef.current;
643
664
  if (!el || !onChange) return;
644
665
  const h = (ev) => onChange(ev.detail);
@@ -650,12 +671,12 @@ var TabGroup = forwardRef40(function TabGroup2({ onChange, children, ...props },
650
671
  TabGroup.displayName = "TabGroup";
651
672
 
652
673
  // src/components/Table/Table.tsx
653
- import { useRef as useRef41, useEffect as useEffect24, useImperativeHandle as useImperativeHandle41, forwardRef as forwardRef41 } from "react";
674
+ import { useRef as useRef41, useEffect as useEffect25, useImperativeHandle as useImperativeHandle41, forwardRef as forwardRef41 } from "react";
654
675
  import { jsx as jsx41 } from "react/jsx-runtime";
655
676
  var Table = forwardRef41(function Table2({ onSortChange, children, ...props }, forwardedRef) {
656
677
  const innerRef = useRef41(null);
657
678
  useImperativeHandle41(forwardedRef, () => innerRef.current);
658
- useEffect24(() => {
679
+ useEffect25(() => {
659
680
  const el = innerRef.current;
660
681
  if (!el || !onSortChange) return;
661
682
  const h = () => onSortChange();
@@ -687,19 +708,19 @@ var Text = forwardRef43(function Text2({ children, ...props }, forwardedRef) {
687
708
  Text.displayName = "Text";
688
709
 
689
710
  // src/components/Textfield/Textfield.tsx
690
- import { useRef as useRef44, useEffect as useEffect25, useImperativeHandle as useImperativeHandle44, forwardRef as forwardRef44 } from "react";
711
+ import { useRef as useRef44, useEffect as useEffect26, useImperativeHandle as useImperativeHandle44, forwardRef as forwardRef44 } from "react";
691
712
  import { jsx as jsx44 } from "react/jsx-runtime";
692
713
  var Textfield = forwardRef44(function Textfield2({ onInput, onChange, children, ...props }, forwardedRef) {
693
714
  const innerRef = useRef44(null);
694
715
  useImperativeHandle44(forwardedRef, () => innerRef.current);
695
- useEffect25(() => {
716
+ useEffect26(() => {
696
717
  const el = innerRef.current;
697
718
  if (!el || !onInput) return;
698
719
  const h = (ev) => onInput(ev.detail);
699
720
  el.addEventListener("input", h);
700
721
  return () => el.removeEventListener("input", h);
701
722
  }, [onInput]);
702
- useEffect25(() => {
723
+ useEffect26(() => {
703
724
  const el = innerRef.current;
704
725
  if (!el || !onChange) return;
705
726
  const h = (ev) => onChange(ev.detail);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@latty-ds/react",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "React wrappers for the Latty design system — typed React components backed by @latty-ds/web",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -56,8 +56,8 @@
56
56
  "typescript": "^5.5.4"
57
57
  },
58
58
  "dependencies": {
59
- "@latty-ds/icons": "0.7.0",
60
- "@latty-ds/web": "0.7.0"
59
+ "@latty-ds/icons": "0.8.0",
60
+ "@latty-ds/web": "0.8.0"
61
61
  },
62
- "gitHead": "40d5903d30b50455ed244d5f0fd75fbd84934c46"
62
+ "gitHead": "144dd8d2f7440fd5fd8ecb4f396407c4ce3be9f2"
63
63
  }