@arbor-education/design-system.components 0.25.2 → 0.25.4

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 (90) hide show
  1. package/.gather/skills/write-stories/README.md +1 -1
  2. package/.gather/skills/write-stories/SKILL.md +1 -1
  3. package/.gather/skills/write-stories/meta.md +1 -1
  4. package/CHANGELOG.md +14 -0
  5. package/component-library.md +26 -1
  6. package/dist/components/breadcrumbs/BreadcrumbCopyButton.d.ts +3 -0
  7. package/dist/components/breadcrumbs/BreadcrumbCopyButton.d.ts.map +1 -0
  8. package/dist/components/breadcrumbs/BreadcrumbCopyButton.js +13 -0
  9. package/dist/components/breadcrumbs/BreadcrumbCopyButton.js.map +1 -0
  10. package/dist/components/breadcrumbs/BreadcrumbDropdown.d.ts +3 -0
  11. package/dist/components/breadcrumbs/BreadcrumbDropdown.d.ts.map +1 -0
  12. package/dist/components/breadcrumbs/BreadcrumbDropdown.js +8 -0
  13. package/dist/components/breadcrumbs/BreadcrumbDropdown.js.map +1 -0
  14. package/dist/components/breadcrumbs/BreadcrumbEllipsis.d.ts +3 -0
  15. package/dist/components/breadcrumbs/BreadcrumbEllipsis.d.ts.map +1 -0
  16. package/dist/components/breadcrumbs/BreadcrumbEllipsis.js +7 -0
  17. package/dist/components/breadcrumbs/BreadcrumbEllipsis.js.map +1 -0
  18. package/dist/components/breadcrumbs/BreadcrumbItemSeparator.d.ts +2 -0
  19. package/dist/components/breadcrumbs/BreadcrumbItemSeparator.d.ts.map +1 -0
  20. package/dist/components/breadcrumbs/BreadcrumbItemSeparator.js +5 -0
  21. package/dist/components/breadcrumbs/BreadcrumbItemSeparator.js.map +1 -0
  22. package/dist/components/breadcrumbs/BreadcrumbLink.d.ts +6 -0
  23. package/dist/components/breadcrumbs/BreadcrumbLink.d.ts.map +1 -0
  24. package/dist/components/breadcrumbs/BreadcrumbLink.js +9 -0
  25. package/dist/components/breadcrumbs/BreadcrumbLink.js.map +1 -0
  26. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +21 -0
  27. package/dist/components/breadcrumbs/Breadcrumbs.d.ts.map +1 -0
  28. package/dist/components/breadcrumbs/Breadcrumbs.js +51 -0
  29. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -0
  30. package/dist/components/breadcrumbs/Breadcrumbs.stories.d.ts +81 -0
  31. package/dist/components/breadcrumbs/Breadcrumbs.stories.d.ts.map +1 -0
  32. package/dist/components/breadcrumbs/Breadcrumbs.stories.js +681 -0
  33. package/dist/components/breadcrumbs/Breadcrumbs.stories.js.map +1 -0
  34. package/dist/components/breadcrumbs/Breadcrumbs.test.d.ts +2 -0
  35. package/dist/components/breadcrumbs/Breadcrumbs.test.d.ts.map +1 -0
  36. package/dist/components/breadcrumbs/Breadcrumbs.test.js +160 -0
  37. package/dist/components/breadcrumbs/Breadcrumbs.test.js.map +1 -0
  38. package/dist/components/breadcrumbs/types.d.ts +27 -0
  39. package/dist/components/breadcrumbs/types.d.ts.map +1 -0
  40. package/dist/components/breadcrumbs/types.js +2 -0
  41. package/dist/components/breadcrumbs/types.js.map +1 -0
  42. package/dist/components/row/Row.d.ts +1 -0
  43. package/dist/components/row/Row.d.ts.map +1 -1
  44. package/dist/components/row/Row.js +4 -2
  45. package/dist/components/row/Row.js.map +1 -1
  46. package/dist/components/row/Row.stories.d.ts +111 -4
  47. package/dist/components/row/Row.stories.d.ts.map +1 -1
  48. package/dist/components/row/Row.stories.js +362 -64
  49. package/dist/components/row/Row.stories.js.map +1 -1
  50. package/dist/components/row/Row.test.js +19 -0
  51. package/dist/components/row/Row.test.js.map +1 -1
  52. package/dist/components/skeleton/Skeleton.d.ts +10 -0
  53. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  54. package/dist/components/skeleton/Skeleton.js +9 -0
  55. package/dist/components/skeleton/Skeleton.js.map +1 -0
  56. package/dist/components/skeleton/Skeleton.stories.d.ts +99 -0
  57. package/dist/components/skeleton/Skeleton.stories.d.ts.map +1 -0
  58. package/dist/components/skeleton/Skeleton.stories.js +539 -0
  59. package/dist/components/skeleton/Skeleton.stories.js.map +1 -0
  60. package/dist/components/skeleton/Skeleton.test.d.ts +2 -0
  61. package/dist/components/skeleton/Skeleton.test.d.ts.map +1 -0
  62. package/dist/components/skeleton/Skeleton.test.js +49 -0
  63. package/dist/components/skeleton/Skeleton.test.js.map +1 -0
  64. package/dist/index.css +159 -0
  65. package/dist/index.css.map +1 -1
  66. package/dist/index.d.ts +2 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +2 -0
  69. package/dist/index.js.map +1 -1
  70. package/package.json +1 -1
  71. package/src/components/breadcrumbs/BreadcrumbCopyButton.tsx +27 -0
  72. package/src/components/breadcrumbs/BreadcrumbDropdown.tsx +27 -0
  73. package/src/components/breadcrumbs/BreadcrumbEllipsis.tsx +16 -0
  74. package/src/components/breadcrumbs/BreadcrumbItemSeparator.tsx +3 -0
  75. package/src/components/breadcrumbs/BreadcrumbLink.tsx +29 -0
  76. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +870 -0
  77. package/src/components/breadcrumbs/Breadcrumbs.test.tsx +185 -0
  78. package/src/components/breadcrumbs/Breadcrumbs.tsx +92 -0
  79. package/src/components/breadcrumbs/breadcrumbs.scss +158 -0
  80. package/src/components/breadcrumbs/types.ts +31 -0
  81. package/src/components/dropdown/dropdown.scss +1 -0
  82. package/src/components/row/Row.stories.tsx +504 -81
  83. package/src/components/row/Row.test.tsx +25 -0
  84. package/src/components/row/Row.tsx +11 -1
  85. package/src/components/skeleton/Skeleton.stories.tsx +748 -0
  86. package/src/components/skeleton/Skeleton.test.tsx +55 -0
  87. package/src/components/skeleton/Skeleton.tsx +36 -0
  88. package/src/components/skeleton/skeleton.scss +23 -0
  89. package/src/index.scss +2 -0
  90. package/src/index.ts +2 -0
@@ -43,6 +43,31 @@ describe('Row component', () => {
43
43
  expect(row).toHaveClass('ds-row', 'custom-row');
44
44
  });
45
45
 
46
+ describe('href behaviour', () => {
47
+ test('wraps value in an anchor when href is provided', () => {
48
+ render(<Row label="Profile" value="View profile" href="/students/123" />);
49
+
50
+ const link = screen.getByRole('link', { name: 'View profile' });
51
+ expect(link).toBeInTheDocument();
52
+ expect(link).toHaveAttribute('href', '/students/123');
53
+ });
54
+
55
+ test('uses href as link text when no value is provided', () => {
56
+ render(<Row label="Document" href="/documents/report.pdf" />);
57
+
58
+ const link = screen.getByRole('link', { name: '/documents/report.pdf' });
59
+ expect(link).toBeInTheDocument();
60
+ expect(link).toHaveAttribute('href', '/documents/report.pdf');
61
+ });
62
+
63
+ test('renders value as plain text when href is not provided', () => {
64
+ render(<Row label="Profile" value="View profile" />);
65
+
66
+ expect(screen.getByText('View profile')).toBeInTheDocument();
67
+ expect(screen.queryByRole('link')).not.toBeInTheDocument();
68
+ });
69
+ });
70
+
46
71
  describe('click behaviour', () => {
47
72
  test('calls onClick handler when clicked', () => {
48
73
  const handleClick = vi.fn();
@@ -8,6 +8,7 @@ export type RowProps = {
8
8
  style?: CSSProperties;
9
9
  label?: ReactNode;
10
10
  value?: ReactNode;
11
+ href?: string;
11
12
  note?: ReactNode;
12
13
  onClick?: MouseEventHandler<HTMLDivElement>;
13
14
  };
@@ -18,6 +19,7 @@ export const Row = (props: RowProps) => {
18
19
  style,
19
20
  label,
20
21
  value,
22
+ href,
21
23
  note,
22
24
  onClick,
23
25
  } = props;
@@ -44,7 +46,15 @@ export const Row = (props: RowProps) => {
44
46
  tabIndex={isClickable ? 0 : -1}
45
47
  >
46
48
  <span className="ds-row__label">{label}</span>
47
- <span className="ds-row__value">{value}</span>
49
+ <span className="ds-row__value">
50
+ {href
51
+ ? (
52
+ <a href={href}>
53
+ {value || href}
54
+ </a>
55
+ )
56
+ : value}
57
+ </span>
48
58
  <span className="ds-row__note">{note}</span>
49
59
  {isClickable && (
50
60
  <>