@pingux/astro 2.235.0-alpha.0 → 2.236.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.
Files changed (82) hide show
  1. package/lib/cjs/components/Tree/Tree.d.ts +9 -0
  2. package/lib/cjs/components/Tree/Tree.js +48 -0
  3. package/lib/cjs/components/Tree/Tree.mdx +58 -0
  4. package/lib/cjs/components/Tree/Tree.stories.js +786 -0
  5. package/lib/cjs/components/Tree/Tree.styles.d.ts +4 -0
  6. package/lib/cjs/components/Tree/Tree.styles.js +332 -0
  7. package/lib/cjs/components/Tree/Tree.test.js +300 -0
  8. package/lib/cjs/components/Tree/TreeItem.d.ts +22 -0
  9. package/lib/cjs/components/Tree/TreeItem.js +82 -0
  10. package/lib/cjs/components/Tree/TreeItemContent.d.ts +11 -0
  11. package/lib/cjs/components/Tree/TreeItemContent.js +102 -0
  12. package/lib/cjs/components/Tree/index.d.ts +5 -0
  13. package/lib/cjs/components/Tree/index.js +52 -0
  14. package/lib/cjs/components/Tree/useTreeDragAndDrop.d.ts +46 -0
  15. package/lib/cjs/components/Tree/useTreeDragAndDrop.js +76 -0
  16. package/lib/cjs/context/TooltipContext/index.js +2 -1
  17. package/lib/cjs/hooks/useCircularLoader/useCircularLoader.d.ts +1 -0
  18. package/lib/cjs/hooks/useCircularLoader/useCircularLoader.js +3 -2
  19. package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +4 -0
  20. package/lib/cjs/hooks/useGridListItem/useGridListItem.d.ts +4 -4
  21. package/lib/cjs/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -1
  22. package/lib/cjs/hooks/usePagination/usePagination.d.ts +8 -8
  23. package/lib/cjs/hooks/useStatusClasses/useStatusClasses.js +2 -8
  24. package/lib/cjs/index.d.ts +1 -0
  25. package/lib/cjs/index.js +43 -0
  26. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.d.ts +1 -0
  27. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.js +7 -1
  28. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +2 -0
  29. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +2 -0
  30. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.d.ts +15 -0
  31. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +15 -0
  32. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/tree.d.ts +15 -0
  33. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/tree.js +160 -0
  34. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +9 -0
  35. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +3 -1
  36. package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +2 -0
  37. package/lib/cjs/styles/themes/astro/customProperties/icons.d.ts +2 -0
  38. package/lib/cjs/styles/themes/astro/customProperties/icons.js +3 -1
  39. package/lib/cjs/styles/themes/astro/customProperties/index.d.ts +2 -0
  40. package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +1 -1
  41. package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +2 -0
  42. package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -1
  43. package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +2 -0
  44. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +27 -0
  45. package/lib/cjs/styles/themes/next-gen/variants/button.d.ts +15 -0
  46. package/lib/cjs/styles/themes/next-gen/variants/button.js +11 -0
  47. package/lib/cjs/styles/themes/next-gen/variants/tree.d.ts +16 -0
  48. package/lib/cjs/styles/themes/next-gen/variants/tree.js +153 -0
  49. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +10 -0
  50. package/lib/cjs/styles/themes/next-gen/variants/variants.js +2 -0
  51. package/lib/cjs/styles/variants/index.js +3 -1
  52. package/lib/cjs/styles/variants/variants.js +2 -0
  53. package/lib/cjs/utils/getStatusClasses.d.ts +13 -0
  54. package/lib/cjs/utils/getStatusClasses.js +29 -0
  55. package/lib/components/Tree/Tree.js +33 -0
  56. package/lib/components/Tree/Tree.mdx +58 -0
  57. package/lib/components/Tree/Tree.stories.js +775 -0
  58. package/lib/components/Tree/Tree.styles.js +325 -0
  59. package/lib/components/Tree/Tree.test.js +297 -0
  60. package/lib/components/Tree/TreeItem.js +70 -0
  61. package/lib/components/Tree/TreeItemContent.js +94 -0
  62. package/lib/components/Tree/index.js +5 -0
  63. package/lib/components/Tree/useTreeDragAndDrop.js +69 -0
  64. package/lib/context/TooltipContext/index.js +2 -1
  65. package/lib/hooks/useCircularLoader/useCircularLoader.js +3 -2
  66. package/lib/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -1
  67. package/lib/hooks/useStatusClasses/useStatusClasses.js +2 -8
  68. package/lib/index.js +1 -0
  69. package/lib/styles/themeOverrides/nextGenDarkMode/colors.js +7 -1
  70. package/lib/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +15 -0
  71. package/lib/styles/themeOverrides/nextGenDarkMode/variants/tree.js +154 -0
  72. package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +3 -1
  73. package/lib/styles/themes/astro/customProperties/icons.js +3 -1
  74. package/lib/styles/themes/next-gen/convertedComponentList.js +1 -1
  75. package/lib/styles/themes/next-gen/customProperties/icons.js +1 -1
  76. package/lib/styles/themes/next-gen/variants/button.js +11 -0
  77. package/lib/styles/themes/next-gen/variants/tree.js +147 -0
  78. package/lib/styles/themes/next-gen/variants/variants.js +2 -0
  79. package/lib/styles/variants/index.js +3 -1
  80. package/lib/styles/variants/variants.js +2 -0
  81. package/lib/utils/getStatusClasses.js +22 -0
  82. package/package.json +9 -6
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
5
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
8
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
9
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
11
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
12
+ _Object$defineProperty(exports, "__esModule", {
13
+ value: true
14
+ });
15
+ exports["default"] = void 0;
16
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
17
+ var _onyxTokens = require("@pingux/onyx-tokens");
18
+ var _Tree = _interopRequireDefault(require("../../../../components/Tree/Tree.styles"));
19
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
21
+ // The base styles file builds its object imperatively (tree.item = {...}), so its
22
+ // inferred type has possibly-undefined members; treat it as a complete object here.
23
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
+ var tree = _Tree["default"];
25
+
26
+ /**
27
+ * Onyx (next-gen) theme overrides for the Tree component, derived from
28
+ * @pingux/onyx-tokens. Deep-merged onto the base Astro tree styles, so only
29
+ * differences from the Astro values are specified here.
30
+ */
31
+ var onyxTree = _objectSpread(_objectSpread({}, tree), {}, {
32
+ item: _objectSpread(_objectSpread({}, tree.item), {}, {
33
+ '&.is-focused, &[data-focused]': {
34
+ boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
35
+ // the base Astro theme draws focus with outline: 2px solid; the Onyx
36
+ // treatment is a single inset shadow (matching ListView/DataTable), so
37
+ // the outline must be reset or both stack and the ring reads ~4px thick
38
+ outline: 'none',
39
+ borderRadius: '4px',
40
+ zIndex: 1
41
+ },
42
+ // the drag handle / chevron carry their own focus treatment, so the
43
+ // row-level focus treatment is suppressed while either is focused
44
+ '&:has(.astro-TreeDragButton:focus), &:has(.astro-TreeDragButton:focus-visible), &:has(.astro-TreeChevronButton:focus), &:has(.astro-TreeChevronButton:focus-visible)': {
45
+ boxShadow: 'none',
46
+ outline: 'none'
47
+ },
48
+ '&.is-focus-visible, &[data-focus-visible]': {
49
+ boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
50
+ outline: 'none',
51
+ borderRadius: '4px'
52
+ },
53
+ '&.is-selected, &[data-selected]': {
54
+ bg: _onyxTokens.astroTokens.color['nav-bar-item'].selected.bg,
55
+ '& *': {
56
+ color: _onyxTokens.astroTokens.color.gray[900]
57
+ }
58
+ },
59
+ '&.is-disabled, &[data-disabled]': {
60
+ opacity: 0.65,
61
+ cursor: 'not-allowed'
62
+ },
63
+ '&.is-dragging, &[data-dragging]': {
64
+ bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
65
+ boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
66
+ borderRadius: '4px',
67
+ '& *': {
68
+ color: _onyxTokens.astroTokens.color['nav-bar-item'].selected.text
69
+ }
70
+ },
71
+ '&.is-drop-target, &[data-drop-target]': {
72
+ boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
73
+ borderRadius: '4px'
74
+ },
75
+ '&:hover': {
76
+ bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
77
+ borderRadius: '4px'
78
+ }
79
+ }),
80
+ itemContent: _objectSpread(_objectSpread({}, tree.itemContent), {}, {
81
+ color: _onyxTokens.astroTokens.color.gray[900],
82
+ '&:hover': {
83
+ bg: 'transparent'
84
+ }
85
+ }),
86
+ dragButton: _objectSpread(_objectSpread({}, tree.dragButton), {}, {
87
+ path: {
88
+ fill: _onyxTokens.astroTokens.color.gray[500]
89
+ },
90
+ '&:hover': {
91
+ bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
92
+ '& svg': {
93
+ fill: _onyxTokens.astroTokens.color['nav-bar-item'].selected.text
94
+ }
95
+ },
96
+ '&:focus, &:focus-visible': {
97
+ boxShadow: "0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
98
+ borderRadius: '4px'
99
+ },
100
+ '&:active, &[data-pressed]': {
101
+ bg: _onyxTokens.astroTokens.color['primary-light'],
102
+ cursor: 'grabbing',
103
+ '& svg': {
104
+ fill: _onyxTokens.astroTokens.color['primary-dark']
105
+ }
106
+ }
107
+ }),
108
+ // the visible checkbox box is drawn by tree.selectionCheckboxBox on the
109
+ // inner RAC CheckboxButton label; Onyx re-colors it from tokens
110
+ selectionCheckbox: _objectSpread(_objectSpread({}, tree.selectionCheckbox), {}, {
111
+ '&:focus-visible, [data-focus-visible]': {
112
+ boxShadow: "0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary)
113
+ }
114
+ }),
115
+ selectionCheckboxBox: _objectSpread(_objectSpread({}, tree.selectionCheckboxBox), {}, {
116
+ borderColor: _onyxTokens.astroTokens.color.gray[500],
117
+ '&[data-selected]': _objectSpread(_objectSpread({}, tree.selectionCheckboxBox['&[data-selected]']), {}, {
118
+ borderColor: _onyxTokens.astroTokens.color.primary,
119
+ bg: _onyxTokens.astroTokens.color.primary
120
+ }),
121
+ '[data-hovered] &, [data-pressed] &': {
122
+ borderColor: _onyxTokens.astroTokens.color.primary
123
+ },
124
+ '&[data-disabled]': _objectSpread(_objectSpread({}, tree.selectionCheckboxBox['&[data-disabled]']), {}, {
125
+ borderColor: _onyxTokens.astroTokens.color.border,
126
+ background: _onyxTokens.astroTokens.color.gray[100]
127
+ })
128
+ }),
129
+ // blue circle with a blue.600 folder glyph for expandable nodes; the file
130
+ // (indigo) variant is applied per-item in TreeItemContent via is-leaf
131
+ iconSlot: _objectSpread(_objectSpread({}, tree.iconSlot), {}, {
132
+ bg: _onyxTokens.astroTokens.color.avatar.blue.bg,
133
+ color: _onyxTokens.astroTokens.color.avatar.blue.text,
134
+ '&.is-leaf': {
135
+ bg: _onyxTokens.astroTokens.color.avatar.indigo.bg,
136
+ color: _onyxTokens.astroTokens.color.avatar.indigo.text
137
+ }
138
+ }),
139
+ lockSlot: _objectSpread(_objectSpread({}, tree.lockSlot), {}, {
140
+ color: '#5F6DA7'
141
+ }),
142
+ container: _objectSpread(_objectSpread({}, tree.container), {}, {
143
+ '& .react-aria-DropIndicator': _objectSpread(_objectSpread({}, tree.container['& .react-aria-DropIndicator']), {}, {
144
+ '&::before': _objectSpread(_objectSpread({}, tree.container['& .react-aria-DropIndicator']['&::before']), {}, {
145
+ bg: 'transparent'
146
+ }),
147
+ '&[data-drop-target]::before': {
148
+ bg: _onyxTokens.astroTokens.color.primary
149
+ }
150
+ })
151
+ })
152
+ });
153
+ var _default = exports["default"] = onyxTree;
@@ -2373,6 +2373,16 @@ declare const _default: {
2373
2373
  };
2374
2374
  };
2375
2375
  };
2376
+ tree: {
2377
+ item: any;
2378
+ itemContent: any;
2379
+ dragButton: any;
2380
+ selectionCheckbox: any;
2381
+ selectionCheckboxBox: any;
2382
+ iconSlot: any;
2383
+ lockSlot: any;
2384
+ container: any;
2385
+ };
2376
2386
  imageUpload: {
2377
2387
  button: {
2378
2388
  border: string;
@@ -52,6 +52,7 @@ var _table = require("./table");
52
52
  var _tableBase = require("./tableBase");
53
53
  var _tabs = require("./tabs");
54
54
  var _tooltip = _interopRequireDefault(require("./tooltip"));
55
+ var _tree = _interopRequireDefault(require("./tree"));
55
56
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
56
57
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
57
58
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -546,5 +547,6 @@ var _default = exports["default"] = {
546
547
  tableBase: _tableBase.tableBase,
547
548
  tabs: _tabs.tabs,
548
549
  tooltip: _tooltip["default"],
550
+ tree: _tree["default"],
549
551
  imageUpload: imageUpload
550
552
  };
@@ -62,6 +62,7 @@ _Object$defineProperty(exports, "variants", {
62
62
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
63
63
  var _Buttons = _interopRequireDefault(require("../../components/Button/Buttons.styles"));
64
64
  var _IconButton = _interopRequireDefault(require("../../components/IconButton/IconButton.styles"));
65
+ var _Tree = require("../../components/Tree/Tree.styles");
65
66
  var _Badge = _interopRequireDefault(require("../../components/Badge/Badge.styles"));
66
67
  var _Card = _interopRequireDefault(require("../../components/Card/Card.styles"));
67
68
  var _Grid = _interopRequireDefault(require("../../components/Grid/Grid.styles"));
@@ -83,5 +84,6 @@ var _variants = _interopRequireDefault(require("./variants"));
83
84
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
84
85
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
85
86
  var buttons = exports.buttons = _objectSpread(_objectSpread({}, _Buttons["default"]), {}, {
86
- iconButtons: _IconButton["default"]
87
+ iconButtons: _IconButton["default"],
88
+ treeChevron: _Tree.treeChevron
87
89
  });
@@ -74,6 +74,7 @@ var tab = _interopRequireWildcard(require("../../components/Tabs/Tabs.style"));
74
74
  var _TimeField = _interopRequireDefault(require("../../components/TimeField/TimeField.styles"));
75
75
  var _TimeZone = _interopRequireDefault(require("../../components/TimeZonePicker/TimeZone.styles"));
76
76
  var _Tooltip = _interopRequireDefault(require("../../components/TooltipTrigger/Tooltip.styles"));
77
+ var _Tree = _interopRequireDefault(require("../../components/Tree/Tree.styles"));
77
78
  var _TreeView = _interopRequireDefault(require("../../components/TreeView/TreeView.styles"));
78
79
  function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
79
80
  function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -134,6 +135,7 @@ var _default = exports["default"] = _objectSpread(_objectSpread({
134
135
  timefield: _TimeField["default"],
135
136
  timeZone: _TimeZone["default"],
136
137
  tooltip: _Tooltip["default"],
138
+ tree: _Tree["default"],
137
139
  treeView: _TreeView["default"]
138
140
  }, tab), {}, {
139
141
  statusIcon: _StatusIcon["default"],
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Converts status information into a class string. Status keys are converted to
3
+ * kebab-case and joined with the default class.
4
+ *
5
+ * This is the shared implementation behind the `useStatusClasses` hook; it exists
6
+ * as a plain function so render-prop components (e.g. React Aria wrappers) can
7
+ * build the same status classes from values that are only available inside a
8
+ * callback, where hooks cannot be called.
9
+ *
10
+ * e.g. getStatusClasses('thing', { isDisabled: true }) => "thing is-disabled"
11
+ */
12
+ declare const getStatusClasses: (defaultClass?: string | undefined | null, statuses?: Record<string, string | boolean | undefined | null>) => string;
13
+ export default getStatusClasses;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
11
+ var _mapKeys = _interopRequireDefault(require("lodash/mapKeys"));
12
+ /**
13
+ * Converts status information into a class string. Status keys are converted to
14
+ * kebab-case and joined with the default class.
15
+ *
16
+ * This is the shared implementation behind the `useStatusClasses` hook; it exists
17
+ * as a plain function so render-prop components (e.g. React Aria wrappers) can
18
+ * build the same status classes from values that are only available inside a
19
+ * callback, where hooks cannot be called.
20
+ *
21
+ * e.g. getStatusClasses('thing', { isDisabled: true }) => "thing is-disabled"
22
+ */
23
+ var getStatusClasses = function getStatusClasses(defaultClass) {
24
+ var statuses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
25
+ return (0, _classnames["default"])(defaultClass, (0, _mapKeys["default"])(statuses, function (_v, k) {
26
+ return (0, _kebabCase["default"])(k);
27
+ }));
28
+ };
29
+ var _default = exports["default"] = getStatusClasses;
@@ -0,0 +1,33 @@
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
+ import _typeof from "@babel/runtime-corejs3/helpers/esm/typeof";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
14
+ import React, { forwardRef } from 'react';
15
+ import { Tree as AriaTree, useDragAndDrop } from 'react-aria-components';
16
+ import Box from '../Box';
17
+ import { jsx as ___EmotionJSX } from "@emotion/react";
18
+ var Tree = /*#__PURE__*/forwardRef(function (props, ref) {
19
+ return ___EmotionJSX(AriaTree, _extends({}, props, {
20
+ ref: ref,
21
+ render: function render(domProps) {
22
+ return ___EmotionJSX(Box, _extends({}, domProps, {
23
+ ref: domProps.ref,
24
+ isRow: false,
25
+ variant: "tree.container",
26
+ sx: _objectSpread({}, _typeof(props.style) === 'object' ? props.style : {})
27
+ }));
28
+ }
29
+ }));
30
+ });
31
+ Tree.displayName = 'Tree';
32
+ export { useDragAndDrop };
33
+ export default Tree;
@@ -0,0 +1,58 @@
1
+ import { Meta } from '@storybook/addon-docs/blocks';
2
+ import * as TreeStories from './Tree.stories';
3
+ import AccessibilityTable from '../../utils/docUtils/AccessibilityTable';
4
+ import { KeyboardRows } from '../../utils/docUtils/accessibilityTableConstants';
5
+
6
+ <Meta of={TreeStories} isTemplate />
7
+
8
+ # Tree
9
+
10
+ The Tree component displays hierarchical data in an expandable, collapsible tree structure. Users can expand and collapse levels, select one or many items, and — optionally — reorder and re-parent items with drag and drop.
11
+
12
+ A Tree should:
13
+ - Be used for data with a clear parent/child relationship, such as environments, regions, folders, or organization structures.
14
+ - Be used when users need to navigate a nested structure that is deeper than a flat list.
15
+
16
+ A Tree shouldn't:
17
+ - Be used for flat data — use a [ListView](./?path=/docs/components-listview--docs) instead.
18
+ - Be used for navigation that fits a menu or breadcrumbs.
19
+ - Expose too many levels of depth; keep nesting shallow enough to stay scannable.
20
+
21
+ ### Required Components
22
+
23
+ This component can be used with `TreeItem`, `TreeItemContent`, and `TreeLoadMoreItem` from this package. A chevron and expand/collapse behavior are provided by default. `TreeItem` children render as row content directly; place them inside `TreeItemContent` only when you need its render props or its built-in folder/file and lock icons.
24
+
25
+ ### Authoring Modes
26
+
27
+ - **Static**: declare `TreeItem` children directly in JSX (see the *Static Nested Tree* story). Best for small, fixed trees.
28
+ - **Dynamic**: pass a nested array via the `items` prop and render nodes with a recursive render function (see the *Dynamic Recursive Tree* story). Best for trees backed by data.
29
+
30
+ ### Accessibility
31
+
32
+ This component should adhere to the [WAI-ARIA Tree View](https://www.w3.org/WAI/ARIA/apg/patterns/treeview/) accessibility guidelines.
33
+
34
+ <AccessibilityTable keyboardRows={[
35
+ { key: 'Space or Enter', description: 'When focused, selects the item (with selectionMode enabled) or toggles expand/collapse.' },
36
+ KeyboardRows.tabFocusesItem,
37
+ KeyboardRows.shiftTabFocusPrevious,
38
+ { key: 'Right Arrow', description: 'Expands a collapsed parent item, or moves focus to its first child when expanded.' },
39
+ { key: 'Left Arrow', description: 'Collapses an expanded parent item, or moves focus to its parent when collapsed.' },
40
+ { key: 'Down / Up Arrow', description: 'Moves focus to the next or previous visible item.' },
41
+ {
42
+ key: 'Home (Fn + Right Arrow Key) Or Control/Command + Home',
43
+ description: 'Shifts the focus to the first item in the tree.',
44
+ },
45
+ {
46
+ key: 'End (Fn + Left Arrow Key) Or Control/Command + End',
47
+ description: 'Shifts the focus to the last item in the tree.',
48
+ },
49
+ ]} screenReaderRows={[
50
+ 'The Tree uses the **`role="tree"`** attribute with each TreeItem using **`role="treeitem"`**.',
51
+ 'Parent items use the **`aria-expanded`** attribute to indicate whether they are expanded or collapsed.',
52
+ 'Selected items use the **`aria-selected`** attribute; disabled items use **`aria-disabled`**.',
53
+ 'The Tree requires an **`aria-label`** to provide an accessible name.',
54
+ ]} />
55
+
56
+ ### Keyboard Drag and Drop
57
+
58
+ When drag and drop is enabled, the drag handle is focusable. Press **Enter** to start a drag session, use the arrow keys to move the drop target, then press **Enter** to drop or **Escape** to cancel.