@arbor-education/design-system.components 0.25.3 → 0.25.5

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 (110) 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 +16 -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/fileUpload/FileUpload.d.ts +21 -0
  43. package/dist/components/fileUpload/FileUpload.d.ts.map +1 -0
  44. package/dist/components/fileUpload/FileUpload.js +23 -0
  45. package/dist/components/fileUpload/FileUpload.js.map +1 -0
  46. package/dist/components/fileUpload/FileUpload.stories.d.ts +71 -0
  47. package/dist/components/fileUpload/FileUpload.stories.d.ts.map +1 -0
  48. package/dist/components/fileUpload/FileUpload.stories.js +736 -0
  49. package/dist/components/fileUpload/FileUpload.stories.js.map +1 -0
  50. package/dist/components/fileUpload/FileUpload.test.d.ts +2 -0
  51. package/dist/components/fileUpload/FileUpload.test.d.ts.map +1 -0
  52. package/dist/components/fileUpload/FileUpload.test.js +99 -0
  53. package/dist/components/fileUpload/FileUpload.test.js.map +1 -0
  54. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js +1 -1
  55. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.js.map +1 -1
  56. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.d.ts.map +1 -1
  57. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js +14 -15
  58. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.stories.js.map +1 -1
  59. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.test.js +11 -0
  60. package/dist/components/formField/inputs/selectDropdown/SelectDropdown.test.js.map +1 -1
  61. package/dist/components/icon/allowedIcons.d.ts +1 -0
  62. package/dist/components/icon/allowedIcons.d.ts.map +1 -1
  63. package/dist/components/icon/allowedIcons.js +2 -1
  64. package/dist/components/icon/allowedIcons.js.map +1 -1
  65. package/dist/components/skeleton/Skeleton.d.ts +10 -0
  66. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  67. package/dist/components/skeleton/Skeleton.js +9 -0
  68. package/dist/components/skeleton/Skeleton.js.map +1 -0
  69. package/dist/components/skeleton/Skeleton.stories.d.ts +99 -0
  70. package/dist/components/skeleton/Skeleton.stories.d.ts.map +1 -0
  71. package/dist/components/skeleton/Skeleton.stories.js +539 -0
  72. package/dist/components/skeleton/Skeleton.stories.js.map +1 -0
  73. package/dist/components/skeleton/Skeleton.test.d.ts +2 -0
  74. package/dist/components/skeleton/Skeleton.test.d.ts.map +1 -0
  75. package/dist/components/skeleton/Skeleton.test.js +49 -0
  76. package/dist/components/skeleton/Skeleton.test.js.map +1 -0
  77. package/dist/index.css +225 -0
  78. package/dist/index.css.map +1 -1
  79. package/dist/index.d.ts +3 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +3 -0
  82. package/dist/index.js.map +1 -1
  83. package/package.json +2 -1
  84. package/src/components/breadcrumbs/BreadcrumbCopyButton.tsx +27 -0
  85. package/src/components/breadcrumbs/BreadcrumbDropdown.tsx +27 -0
  86. package/src/components/breadcrumbs/BreadcrumbEllipsis.tsx +16 -0
  87. package/src/components/breadcrumbs/BreadcrumbItemSeparator.tsx +3 -0
  88. package/src/components/breadcrumbs/BreadcrumbLink.tsx +29 -0
  89. package/src/components/breadcrumbs/Breadcrumbs.stories.tsx +870 -0
  90. package/src/components/breadcrumbs/Breadcrumbs.test.tsx +185 -0
  91. package/src/components/breadcrumbs/Breadcrumbs.tsx +92 -0
  92. package/src/components/breadcrumbs/breadcrumbs.scss +158 -0
  93. package/src/components/breadcrumbs/types.ts +31 -0
  94. package/src/components/button/button.scss +2 -0
  95. package/src/components/dropdown/dropdown.scss +1 -0
  96. package/src/components/fileUpload/FileUpload.stories.tsx +920 -0
  97. package/src/components/fileUpload/FileUpload.test.tsx +172 -0
  98. package/src/components/fileUpload/FileUpload.tsx +144 -0
  99. package/src/components/fileUpload/fileUpload.scss +74 -0
  100. package/src/components/formField/inputs/selectDropdown/SelectDropdown.stories.tsx +15 -16
  101. package/src/components/formField/inputs/selectDropdown/SelectDropdown.test.tsx +19 -0
  102. package/src/components/formField/inputs/selectDropdown/SelectDropdown.tsx +1 -1
  103. package/src/components/icon/allowedIcons.tsx +2 -0
  104. package/src/components/progress/progress.scss +1 -0
  105. package/src/components/skeleton/Skeleton.stories.tsx +748 -0
  106. package/src/components/skeleton/Skeleton.test.tsx +55 -0
  107. package/src/components/skeleton/Skeleton.tsx +36 -0
  108. package/src/components/skeleton/skeleton.scss +23 -0
  109. package/src/index.scss +3 -0
  110. package/src/index.ts +3 -0
@@ -1,6 +1,6 @@
1
1
  <!-- gather-import-meta
2
2
  gather_source: .claude/skills/write-stories/README.md
3
- gather_imported_at: 2026-04-24T08:53:14.233978+00:00
3
+ gather_imported_at: 2026-06-24T08:46:27.890924+00:00
4
4
  -->
5
5
 
6
6
  # Write Stories Skill
@@ -118,7 +118,7 @@ Look up designer guidance for this component using the Atlassian MCP tools. Use
118
118
 
119
119
  ### Step 4 — Read the Component Library Manifest
120
120
 
121
- Read `.claude/component-library.md` for a comprehensive overview of the component's role in the design system, use cases, and known relationships to other components.
121
+ Read `/component-library.md` for a comprehensive overview of the component's role in the design system, use cases, and known relationships to other components.
122
122
 
123
123
  If it contains guidance about when to use this component vs. alternatives, note it — it goes into the story description.
124
124
 
@@ -1,4 +1,4 @@
1
1
  <!-- gather-import-meta
2
2
  gather_source: .claude/skills/write-stories/SKILL.md
3
- gather_imported_at: 2026-04-24T08:53:14.244591+00:00
3
+ gather_imported_at: 2026-06-24T08:46:27.891131+00:00
4
4
  -->
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.25.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#204](https://github.com/arbor-education/design-system.components/pull/204) [`f60819c`](https://github.com/arbor-education/design-system.components/commit/f60819c0ede5eb7cbd10b5fc2ab29d8023b23c3c) Thanks [@angusmglfraser](https://github.com/angusmglfraser)! - MIS-70686 ✨ file upload component
8
+
9
+ - [#225](https://github.com/arbor-education/design-system.components/pull/225) [`422167d`](https://github.com/arbor-education/design-system.components/commit/422167d8322f720a01c3c74e8a98f1a5189a0ed6) Thanks [@MarkFrancisArbor](https://github.com/MarkFrancisArbor)! - MIS-72151 display header value in the selectDropdown trigger
10
+
11
+ ## 0.25.4
12
+
13
+ ### Patch Changes
14
+
15
+ - [#218](https://github.com/arbor-education/design-system.components/pull/218) [`c64c66e`](https://github.com/arbor-education/design-system.components/commit/c64c66e26e6071e53c655b811039c7a2260ed227) Thanks [@Alex-DN-SP](https://github.com/Alex-DN-SP)! - MIS-70982 Added base skeleton component
16
+
17
+ - [#202](https://github.com/arbor-education/design-system.components/pull/202) [`1fef4aa`](https://github.com/arbor-education/design-system.components/commit/1fef4aa06f0ce20ff0a8d0dc0353d2749a68473c) Thanks [@Alex-DN-SP](https://github.com/Alex-DN-SP)! - MIS-64732 Breadcrumbs Component
18
+
3
19
  ## 0.25.3
4
20
 
5
21
  ### Patch Changes
@@ -2,7 +2,7 @@
2
2
 
3
3
  > Auto-generated reference for AI agents (Sophia, analyze-design, etc.)
4
4
  > Source: `src/components/` · Public API: `src/index.ts`
5
- > Last updated: 2026-05-05
5
+ > Last updated: 2026-06-24
6
6
 
7
7
  ---
8
8
 
@@ -1247,6 +1247,30 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
1247
1247
 
1248
1248
  ---
1249
1249
 
1250
+ ### 40a. Skeleton
1251
+
1252
+ **File:** `src/components/skeleton/Skeleton.tsx` · **Public export:** Yes
1253
+ **Also exports:** `SkeletonProps`, `Skeleton.Props` types
1254
+
1255
+ **Use case:** Loading placeholder that wraps real content. When `loading={true}`, renders an animated skeleton block sized to the content (or explicit `width`/`height`). When `loading={false}`, renders `children` unchanged — no DOM wrapper.
1256
+
1257
+ | Prop | Type | Required | Default | Description |
1258
+ |---|---|---|---|---|
1259
+ | `loading` | `boolean` | No | `true` | When `true`, renders the skeleton; when `false`, renders children directly |
1260
+ | `width` | `string \| number` | No | — | Explicit skeleton width (CSS value or px number); use when children are unknown at load time |
1261
+ | `height` | `string \| number` | No | — | Explicit skeleton height |
1262
+ | `children` | `ReactNode` | No | — | Real content shown once `loading={false}`; also sizes the skeleton when `loading={true}` |
1263
+ | `className` | `string` | No | — | Additional CSS class on the skeleton `<span>` |
1264
+ | `style` | `CSSProperties` | No | — | Inline styles (merged with width/height) |
1265
+ | `...rest` | `HTMLAttributes<HTMLSpanElement>` | No | — | Any `<span>` attribute |
1266
+
1267
+ **Key features:**
1268
+ - When `loading={true}`: renders `<span aria-hidden="true" class="ds-skeleton">` wrapping children so the skeleton takes the same dimensions as the real content
1269
+ - When `loading={false}`: returns `<>{children}</>` with no wrapping element
1270
+ - CSS: `ds-skeleton` — animated shimmer via CSS
1271
+
1272
+ ---
1273
+
1250
1274
  ## Utility / Infrastructure (publicly exported)
1251
1275
 
1252
1276
  | Export | File | Description |
@@ -1316,3 +1340,4 @@ Component-scoped tokens follow: `--{component}-{state}-{property}` (e.g. `--butt
1316
1340
  | `Toggle` | Yes | on/off switch; controlled or uncontrolled | Radix Switch |
1317
1341
  | `Row` | Yes | clickable or static; label/value/note | — |
1318
1342
  | `SingleUser` | Yes | avatar + name label; size variants | — |
1343
+ | `Skeleton` | Yes | loading/loaded toggle; wraps children for size inference | — |
@@ -0,0 +1,3 @@
1
+ import type { BreadcrumbCopyButtonProps } from './types.js';
2
+ export declare const BreadcrumbCopyButton: (props: BreadcrumbCopyButtonProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=BreadcrumbCopyButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbCopyButton.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbCopyButton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAG5D,eAAO,MAAM,oBAAoB,GAAI,OAAO,yBAAyB,4CAqBpE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from '../button/Button.js';
3
+ import { TooltipWrapper } from '../tooltip/TooltipWrapper.js';
4
+ import classNames from 'classnames';
5
+ export const BreadcrumbCopyButton = (props) => {
6
+ const { isClicked, onClick, ...rest } = props;
7
+ const iconName = isClicked ? 'check' : 'link';
8
+ const screenReaderText = isClicked ? 'Breadcrumb path copied' : 'Copy breadcrumb path';
9
+ return (_jsx(TooltipWrapper, { tooltipContent: screenReaderText, children: _jsx(Button, { ...rest, onClick: onClick, iconLeftName: iconName, "aria-label": screenReaderText, size: "S", className: classNames('ds-breadcrumbs__copy-icon', {
10
+ 'ds-breadcrumbs__copy-icon--clicked': isClicked,
11
+ }) }) }));
12
+ };
13
+ //# sourceMappingURL=BreadcrumbCopyButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbCopyButton.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbCopyButton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAEnE,OAAO,UAAU,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAE,EAAE;IACvE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE9C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAE9C,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IAEvF,OAAO,CACL,KAAC,cAAc,IAAC,cAAc,EAAE,gBAAgB,YAC9C,KAAC,MAAM,OACD,IAAI,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,QAAQ,gBACV,gBAAgB,EAC5B,IAAI,EAAC,GAAG,EACR,SAAS,EAAE,UAAU,CAAC,2BAA2B,EAAE;gBACjD,oCAAoC,EAAE,SAAS;aAChD,CAAC,GACF,GACa,CAClB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BreadcrumbDropdownProps } from './types.js';
2
+ export declare const BreadcrumbDropdown: (props: BreadcrumbDropdownProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=BreadcrumbDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbDropdown.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAG1D,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAsBhE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Dropdown } from '../dropdown/Dropdown.js';
3
+ import { BreadcrumbLink } from './BreadcrumbLink.js';
4
+ export const BreadcrumbDropdown = (props) => {
5
+ const { item } = props;
6
+ return (_jsxs(Dropdown, { children: [_jsx(Dropdown.Trigger, { children: _jsx(BreadcrumbLink, { item: item, isDropdown: true, isActive: false }) }), _jsx(Dropdown.Content, { children: item.dropdownOptions?.map((option, index) => (_jsx(Dropdown.Item, { asChild: true, children: _jsx("a", { href: option.href, onClick: () => option.onClick?.(), children: option.label }) }, `${option.label}-${index}`))) })] }));
7
+ };
8
+ //# sourceMappingURL=BreadcrumbDropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbDropdown.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbDropdown.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IACvB,OAAO,CACL,MAAC,QAAQ,eACP,KAAC,QAAQ,CAAC,OAAO,cACf,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,EAChB,QAAQ,EAAE,KAAK,GACf,GACe,EACnB,KAAC,QAAQ,CAAC,OAAO,cACd,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5C,KAAC,QAAQ,CAAC,IAAI,IAAC,OAAO,kBACpB,YAAG,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,YACpD,MAAM,CAAC,KAAK,GACX,IAHsB,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE,CAItC,CACjB,CAAC,GACe,IACV,CACZ,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BreadcrumbEllipsisProps } from './types.js';
2
+ export declare const BreadcrumbEllipsis: (props: BreadcrumbEllipsisProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=BreadcrumbEllipsis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbEllipsis.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbEllipsis.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,OAAO,uBAAuB,4CAYhE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from '../button/Button.js';
3
+ export const BreadcrumbEllipsis = (props) => {
4
+ const { screenReaderText, ...rest } = props;
5
+ return (_jsx(Button, { ...rest, size: "S", iconLeftName: "ellipsis", "aria-label": screenReaderText, className: "ds-breadcrumbs__ellipsis-button" }));
6
+ };
7
+ //# sourceMappingURL=BreadcrumbEllipsis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbEllipsis.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbEllipsis.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAGlD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA8B,EAAE,EAAE;IACnE,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE5C,OAAO,CACL,KAAC,MAAM,OACD,IAAI,EACR,IAAI,EAAC,GAAG,EACR,YAAY,EAAC,UAAU,gBACX,gBAAgB,EAC5B,SAAS,EAAC,iCAAiC,GAC3C,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const BreadcrumbItemSeparator: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=BreadcrumbItemSeparator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbItemSeparator.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbItemSeparator.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,+CAEnC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ export const BreadcrumbItemSeparator = () => {
3
+ return _jsx("span", { className: "ds-breadcrumbs__separator", "aria-hidden": "true", children: "/" });
4
+ };
5
+ //# sourceMappingURL=BreadcrumbItemSeparator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbItemSeparator.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbItemSeparator.tsx"],"names":[],"mappings":";AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,OAAO,eAAM,SAAS,EAAC,2BAA2B,iBAAa,MAAM,kBAAS,CAAC;AACjF,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const BreadcrumbLink: import("react").ForwardRefExoticComponent<{
2
+ item: import("./types.js").BreadcrumbItem;
3
+ isDropdown?: boolean;
4
+ isActive?: boolean;
5
+ } & import("react").AnchorHTMLAttributes<HTMLAnchorElement> & import("react").RefAttributes<HTMLAnchorElement>>;
6
+ //# sourceMappingURL=BreadcrumbLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbLink.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbLink.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc;;;;+GAsBzB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { Icon } from '../icon/Icon.js';
4
+ export const BreadcrumbLink = forwardRef((props, ref) => {
5
+ const { item, isDropdown, isActive, onClick, ...rest } = props;
6
+ return (_jsxs("a", { ...rest, ref: ref, href: isDropdown || isActive ? undefined : item.href, tabIndex: isDropdown ? 0 : undefined, "aria-current": isActive ? 'page' : undefined, role: isDropdown ? 'button' : undefined, className: "ds-breadcrumbs__link", "aria-haspopup": isDropdown ? 'menu' : undefined, onClick: onClick, children: [_jsx("span", { className: "ds-breadcrumbs__label", children: item.label }), isDropdown && _jsx(Icon, { name: "chevron-down", size: 12 })] }));
7
+ });
8
+ BreadcrumbLink.displayName = 'BreadcrumbLink';
9
+ //# sourceMappingURL=BreadcrumbLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbLink.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/BreadcrumbLink.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAG5C,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAGtC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAE/D,OAAO,CACL,gBACM,IAAI,EACR,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EACpD,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,kBACtB,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC3C,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EACvC,SAAS,EAAC,sBAAsB,mBACjB,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC9C,OAAO,EAAE,OAAO,aAEhB,eAAM,SAAS,EAAC,uBAAuB,YAAE,IAAI,CAAC,KAAK,GAAQ,EAC1D,UAAU,IAAI,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,EAAC,IAAI,EAAE,EAAE,GAAI,IACnD,CACL,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,cAAc,CAAC,WAAW,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { BreadcrumbsProps, BreadcrumbLinkProps, BreadcrumbEllipsisProps, BreadcrumbDropdownProps, BreadcrumbCopyButtonProps, BreadcrumbItem } from './types.js';
2
+ export declare const Breadcrumbs: {
3
+ (props: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
4
+ Link: import("react").ForwardRefExoticComponent<{
5
+ item: BreadcrumbItem;
6
+ isDropdown?: boolean;
7
+ isActive?: boolean;
8
+ } & import("react").AnchorHTMLAttributes<HTMLAnchorElement> & import("react").RefAttributes<HTMLAnchorElement>>;
9
+ Ellipsis: (props: BreadcrumbEllipsisProps) => import("react/jsx-runtime").JSX.Element;
10
+ ItemSeparator: () => import("react/jsx-runtime").JSX.Element;
11
+ Dropdown: (props: BreadcrumbDropdownProps) => import("react/jsx-runtime").JSX.Element;
12
+ CopyButton: (props: BreadcrumbCopyButtonProps) => import("react/jsx-runtime").JSX.Element;
13
+ };
14
+ export declare namespace Breadcrumbs {
15
+ type Props = BreadcrumbsProps;
16
+ type LinkProps = BreadcrumbLinkProps;
17
+ type EllipsisProps = BreadcrumbEllipsisProps;
18
+ type DropdownProps = BreadcrumbDropdownProps;
19
+ type CopyButtonProps = BreadcrumbCopyButtonProps;
20
+ }
21
+ //# sourceMappingURL=Breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EACvB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACf,MAAM,YAAY,CAAC;AAkBpB,eAAO,MAAM,WAAW;YAAW,gBAAgB;;;;;;;;;;CAgDlD,CAAC;AAQF,yBAAiB,WAAW,CAAC;IAC3B,KAAY,KAAK,GAAG,gBAAgB,CAAC;IACrC,KAAY,SAAS,GAAG,mBAAmB,CAAC;IAC5C,KAAY,aAAa,GAAG,uBAAuB,CAAC;IACpD,KAAY,aAAa,GAAG,uBAAuB,CAAC;IACpD,KAAY,eAAe,GAAG,yBAAyB,CAAC;CACzD"}
@@ -0,0 +1,51 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { BreadcrumbLink } from './BreadcrumbLink.js';
3
+ import { BreadcrumbEllipsis } from './BreadcrumbEllipsis.js';
4
+ import { BreadcrumbItemSeparator } from './BreadcrumbItemSeparator.js';
5
+ import { BreadcrumbDropdown } from './BreadcrumbDropdown.js';
6
+ import classNames from 'classnames';
7
+ import { BreadcrumbCopyButton } from './BreadcrumbCopyButton.js';
8
+ import { useEffect, useRef, useState } from 'react';
9
+ const COPY_FEEDBACK_DURATION_MS = 2000;
10
+ const renderLink = (item, isLast) => {
11
+ const hasDropdownOptions = Boolean(item.dropdownOptions?.length);
12
+ if (item.isEllipsis) {
13
+ return _jsx(BreadcrumbEllipsis, { screenReaderText: item.label, onClick: item.onClick });
14
+ }
15
+ if (hasDropdownOptions) {
16
+ return _jsx(BreadcrumbDropdown, { item: item });
17
+ }
18
+ return _jsx(BreadcrumbLink, { item: item, isActive: isLast });
19
+ };
20
+ export const Breadcrumbs = (props) => {
21
+ const { items, breadcrumbLabel = 'Breadcrumbs', className, copyText, ...rest } = props;
22
+ const [copyButtonClicked, setCopyButtonClicked] = useState(false);
23
+ const copyTimerRef = useRef(undefined);
24
+ useEffect(() => () => clearTimeout(copyTimerRef.current), []);
25
+ const handleCopyButtonClick = () => {
26
+ if (!navigator.clipboard) {
27
+ return;
28
+ }
29
+ setCopyButtonClicked(true);
30
+ navigator.clipboard
31
+ .writeText(copyText ?? items.filter(item => !item.isEllipsis).map(item => item.label).join(' > '))
32
+ .catch(() => { })
33
+ .finally(() => {
34
+ copyTimerRef.current = setTimeout(() => {
35
+ setCopyButtonClicked(false);
36
+ }, COPY_FEEDBACK_DURATION_MS);
37
+ });
38
+ };
39
+ return (_jsx("nav", { ...rest, "aria-label": breadcrumbLabel, className: classNames('ds-breadcrumbs__container', className), children: _jsx("ol", { className: "ds-breadcrumbs__list", children: items.map((item, index) => {
40
+ const isLast = index === items.length - 1;
41
+ return (_jsxs("li", { className: "ds-breadcrumbs__item", children: [renderLink(item, isLast), isLast
42
+ ? (!item.isEllipsis && _jsx(BreadcrumbCopyButton, { isClicked: copyButtonClicked, onClick: handleCopyButtonClick }))
43
+ : (_jsx(BreadcrumbItemSeparator, {}))] }, `${item.label}-${index}`));
44
+ }) }) }));
45
+ };
46
+ Breadcrumbs.Link = BreadcrumbLink;
47
+ Breadcrumbs.Ellipsis = BreadcrumbEllipsis;
48
+ Breadcrumbs.ItemSeparator = BreadcrumbItemSeparator;
49
+ Breadcrumbs.Dropdown = BreadcrumbDropdown;
50
+ Breadcrumbs.CopyButton = BreadcrumbCopyButton;
51
+ //# sourceMappingURL=Breadcrumbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumbs.js","sourceRoot":"","sources":["../../../src/components/breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { StoryObj } from '@storybook/react-vite';
2
+ import { Breadcrumbs } from './Breadcrumbs.js';
3
+ import type { BreadcrumbItem } from './types.js';
4
+ declare function BreadcrumbsDocsPage(): import("react/jsx-runtime").JSX.Element;
5
+ declare const meta: {
6
+ title: string;
7
+ component: {
8
+ (props: import("./types.js").BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
9
+ Link: import("react").ForwardRefExoticComponent<{
10
+ item: BreadcrumbItem;
11
+ isDropdown?: boolean;
12
+ isActive?: boolean;
13
+ } & import("react").AnchorHTMLAttributes<HTMLAnchorElement> & import("react").RefAttributes<HTMLAnchorElement>>;
14
+ Ellipsis: (props: import("./types.js").BreadcrumbEllipsisProps) => import("react/jsx-runtime").JSX.Element;
15
+ ItemSeparator: () => import("react/jsx-runtime").JSX.Element;
16
+ Dropdown: (props: import("./types.js").BreadcrumbDropdownProps) => import("react/jsx-runtime").JSX.Element;
17
+ CopyButton: (props: import("./types.js").BreadcrumbCopyButtonProps) => import("react/jsx-runtime").JSX.Element;
18
+ };
19
+ tags: string[];
20
+ parameters: {
21
+ layout: string;
22
+ docs: {
23
+ page: typeof BreadcrumbsDocsPage;
24
+ };
25
+ };
26
+ argTypes: {
27
+ items: {
28
+ control: "object";
29
+ description: string;
30
+ table: {
31
+ type: {
32
+ summary: string;
33
+ };
34
+ };
35
+ };
36
+ breadcrumbLabel: {
37
+ control: "text";
38
+ description: string;
39
+ table: {
40
+ type: {
41
+ summary: string;
42
+ };
43
+ };
44
+ };
45
+ copyText: {
46
+ control: "text";
47
+ description: string;
48
+ table: {
49
+ type: {
50
+ summary: string;
51
+ };
52
+ defaultValue: {
53
+ summary: string;
54
+ };
55
+ };
56
+ };
57
+ className: {
58
+ control: false;
59
+ description: string;
60
+ table: {
61
+ type: {
62
+ summary: string;
63
+ };
64
+ };
65
+ };
66
+ };
67
+ };
68
+ export default meta;
69
+ type Story = StoryObj<typeof Breadcrumbs>;
70
+ export declare const Default: Story;
71
+ export declare const TwoItems: Story;
72
+ export declare const LongTrail: Story;
73
+ export declare const WithDropdown: Story;
74
+ export declare const MultipleDropdowns: Story;
75
+ export declare const WithEllipsis: Story;
76
+ export declare const ExpandableEllipsis: Story;
77
+ export declare const WithDropdownAndEllipsis: Story;
78
+ export declare const EllipsisAsLastItem: Story;
79
+ export declare const WithBreadcrumbLabel: Story;
80
+ export declare const ActiveItemAriaCurrent: Story;
81
+ //# sourceMappingURL=Breadcrumbs.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumbs.stories.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumbs/Breadcrumbs.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAU5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAoGjD,iBAAS,mBAAmB,4CAmB3B;AAMD,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiD0B,CAAC;AAErC,eAAe,IAAI,CAAC;AAGpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA2J1C,eAAO,MAAM,OAAO,EAAE,KAmBrB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAkCtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAkDvB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KA6D1B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAkF/B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KA6C1B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAmDhC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,KA2DrC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAmChC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA+BjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,KAoCnC,CAAC"}