@pingux/astro 2.154.1 → 2.155.0-alpha.1

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 (80) hide show
  1. package/lib/cjs/components/Button/Buttons.styles.d.ts +859 -0
  2. package/lib/cjs/components/Button/Buttons.styles.js +17 -1
  3. package/lib/cjs/components/Card/Card.mdx +5 -1
  4. package/lib/cjs/components/Card/Card.stories.d.ts +1 -0
  5. package/lib/cjs/components/Card/Card.stories.js +11 -2
  6. package/lib/cjs/components/SearchNav/MoreItemsPopover.d.ts +4 -0
  7. package/lib/cjs/components/SearchNav/MoreItemsPopover.js +74 -0
  8. package/lib/cjs/components/SearchNav/SearchNav.chromatic.stories.d.ts +6 -0
  9. package/lib/cjs/components/SearchNav/SearchNav.chromatic.stories.js +101 -0
  10. package/lib/cjs/components/SearchNav/SearchNav.d.ts +13 -0
  11. package/lib/cjs/components/SearchNav/SearchNav.js +218 -0
  12. package/lib/cjs/components/SearchNav/SearchNav.stories.d.ts +6 -0
  13. package/lib/cjs/components/SearchNav/SearchNav.stories.js +76 -0
  14. package/lib/cjs/components/SearchNav/SearchNav.styles.d.ts +33 -0
  15. package/lib/cjs/components/SearchNav/SearchNav.styles.js +51 -0
  16. package/lib/cjs/components/SearchNav/SearchNav.test.d.ts +1 -0
  17. package/lib/cjs/components/SearchNav/SearchNav.test.js +610 -0
  18. package/lib/cjs/components/SearchNav/SearchNavTab.d.ts +4 -0
  19. package/lib/cjs/components/SearchNav/SearchNavTab.js +69 -0
  20. package/lib/cjs/components/SearchNav/index.d.ts +1 -0
  21. package/lib/cjs/components/SearchNav/index.js +14 -0
  22. package/lib/cjs/components/Text/Text.styles.d.ts +2548 -0
  23. package/lib/cjs/components/Text/Text.styles.js +23 -1
  24. package/lib/cjs/index.d.ts +2 -0
  25. package/lib/cjs/index.js +45 -26
  26. package/lib/cjs/styles/colors.d.ts +6 -0
  27. package/lib/cjs/styles/colors.js +4 -0
  28. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.d.ts +1 -0
  29. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.js +2 -1
  30. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.d.ts +9 -0
  31. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +10 -0
  32. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/cards.d.ts +14 -0
  33. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/cards.js +18 -4
  34. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/text.d.ts +12 -0
  35. package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/text.js +12 -0
  36. package/lib/cjs/styles/themes/next-gen/convertedComponentList.d.ts +1 -0
  37. package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +3 -2
  38. package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +37 -2
  39. package/lib/cjs/styles/themes/next-gen/next-gen.js +3 -0
  40. package/lib/cjs/styles/themes/next-gen/variants/button.d.ts +9 -0
  41. package/lib/cjs/styles/themes/next-gen/variants/button.js +10 -0
  42. package/lib/cjs/styles/themes/next-gen/variants/cards.d.ts +19 -2
  43. package/lib/cjs/styles/themes/next-gen/variants/cards.js +14 -5
  44. package/lib/cjs/styles/themes/next-gen/variants/searchNav.d.ts +6 -0
  45. package/lib/cjs/styles/themes/next-gen/variants/searchNav.js +14 -0
  46. package/lib/cjs/styles/themes/next-gen/variants/text.d.ts +1 -0
  47. package/lib/cjs/styles/themes/next-gen/variants/text.js +2 -1
  48. package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +5 -0
  49. package/lib/cjs/styles/themes/next-gen/variants/variants.js +2 -0
  50. package/lib/cjs/styles/variants/variants.js +2 -0
  51. package/lib/cjs/types/searchNav.d.ts +49 -0
  52. package/lib/cjs/types/searchNav.js +6 -0
  53. package/lib/components/Button/Buttons.styles.js +18 -2
  54. package/lib/components/Card/Card.mdx +5 -1
  55. package/lib/components/Card/Card.stories.js +8 -0
  56. package/lib/components/SearchNav/MoreItemsPopover.js +60 -0
  57. package/lib/components/SearchNav/SearchNav.chromatic.stories.js +86 -0
  58. package/lib/components/SearchNav/SearchNav.js +203 -0
  59. package/lib/components/SearchNav/SearchNav.stories.js +61 -0
  60. package/lib/components/SearchNav/SearchNav.styles.js +43 -0
  61. package/lib/components/SearchNav/SearchNav.test.js +601 -0
  62. package/lib/components/SearchNav/SearchNavTab.js +55 -0
  63. package/lib/components/SearchNav/index.js +1 -0
  64. package/lib/components/Text/Text.styles.js +21 -1
  65. package/lib/index.js +2 -0
  66. package/lib/styles/colors.js +4 -0
  67. package/lib/styles/themeOverrides/nextGenDarkMode/colors.js +2 -1
  68. package/lib/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +10 -0
  69. package/lib/styles/themeOverrides/nextGenDarkMode/variants/cards.js +18 -4
  70. package/lib/styles/themeOverrides/nextGenDarkMode/variants/text.js +12 -0
  71. package/lib/styles/themes/next-gen/convertedComponentList.js +3 -2
  72. package/lib/styles/themes/next-gen/next-gen.js +3 -0
  73. package/lib/styles/themes/next-gen/variants/button.js +10 -0
  74. package/lib/styles/themes/next-gen/variants/cards.js +14 -5
  75. package/lib/styles/themes/next-gen/variants/searchNav.js +6 -0
  76. package/lib/styles/themes/next-gen/variants/text.js +2 -1
  77. package/lib/styles/themes/next-gen/variants/variants.js +2 -0
  78. package/lib/styles/variants/variants.js +2 -0
  79. package/lib/types/searchNav.js +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1,203 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
3
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
4
+ var _excluded = ["defaultSelectedKey", "items", "labelProps", "moreButtonText", "onSelectionChange", "onOpenChange", "popoverButtonProps", "popoverMenuProps", "popoverProps", "rowProps", "selectedKey", "setSelectedKey", "tabProps"];
5
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
6
+ import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
7
+ import _findIndexInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find-index";
8
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
9
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
10
+ import React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
11
+ import { useLayoutEffect, useResizeObserver } from '@react-aria/utils';
12
+ import { useLocalOrForwardRef } from '../../hooks';
13
+ import useProgressiveState from '../../hooks/useProgressiveState';
14
+ import { Box, Text } from '../../index';
15
+ import MoreItemsPopover from './MoreItemsPopover';
16
+ import SearchNavTab from './SearchNavTab';
17
+ import { jsx as ___EmotionJSX } from "@emotion/react";
18
+ var TAB_MARGIN_WIDTH = 10; // Example constant value
19
+ var MORE_BUTTON_WIDTH = 60;
20
+
21
+ /**
22
+ * 1. Measures the width of all items based on their refs.
23
+ */
24
+ export var measureItemWidths = function measureItemWidths(items, measurementRefs) {
25
+ var widths = {};
26
+ for (var i = 0; i < items.length; i += 1) {
27
+ var item = items[i];
28
+ var itemRef = measurementRefs.current[item.key];
29
+ if (itemRef) {
30
+ widths[item.key] = itemRef.offsetWidth;
31
+ }
32
+ }
33
+ return widths;
34
+ };
35
+
36
+ /**
37
+ * 2. Calculates the number of visible items based on available container width
38
+ * and item widths.
39
+ */
40
+
41
+ export var calculateVisibleCount = function calculateVisibleCount(containerWidth, moreButtonWidth, orderedItems, itemWidths) {
42
+ var totalItemsWidth = 0;
43
+ var visibleCount = 0;
44
+ for (var i = 0; i < orderedItems.length; i += 1) {
45
+ var item = orderedItems[i];
46
+ var itemWidth = itemWidths[item.key] + TAB_MARGIN_WIDTH;
47
+ if (itemWidth) {
48
+ var itemsRemaining = orderedItems.length - (visibleCount + 1);
49
+ // Only require space for 'more' button if there are items that will be hidden
50
+ var requiredSpaceForMoreButton = itemsRemaining > 0 ? moreButtonWidth : 0;
51
+ var widthNeeded = totalItemsWidth + itemWidth + requiredSpaceForMoreButton;
52
+ if (widthNeeded > containerWidth) {
53
+ break;
54
+ }
55
+ totalItemsWidth += itemWidth;
56
+ visibleCount += 1;
57
+ }
58
+ }
59
+ return visibleCount;
60
+ };
61
+ var SearchNav = /*#__PURE__*/forwardRef(function (props, ref) {
62
+ var defaultSelectedKey = props.defaultSelectedKey,
63
+ items = props.items,
64
+ labelProps = props.labelProps,
65
+ _props$moreButtonText = props.moreButtonText,
66
+ moreButtonText = _props$moreButtonText === void 0 ? 'More' : _props$moreButtonText,
67
+ onSelectionChange = props.onSelectionChange,
68
+ onOpenChange = props.onOpenChange,
69
+ popoverButtonProps = props.popoverButtonProps,
70
+ popoverMenuProps = props.popoverMenuProps,
71
+ popoverProps = props.popoverProps,
72
+ rowProps = props.rowProps,
73
+ selectedKeyProp = props.selectedKey,
74
+ setSelectedKeyProp = props.setSelectedKey,
75
+ tabProps = props.tabProps,
76
+ others = _objectWithoutProperties(props, _excluded);
77
+ var _useProgressiveState = useProgressiveState(selectedKeyProp, defaultSelectedKey),
78
+ _useProgressiveState2 = _slicedToArray(_useProgressiveState, 2),
79
+ selectedKey = _useProgressiveState2[0],
80
+ setSelectedKey = _useProgressiveState2[1];
81
+ var _useState = useState(_Array$from(items)),
82
+ _useState2 = _slicedToArray(_useState, 2),
83
+ orderedItems = _useState2[0],
84
+ setOrderedItems = _useState2[1];
85
+ var buttonRef = useRef(null);
86
+ var measurementRefs = useRef({});
87
+ var tabListRef = useLocalOrForwardRef(ref);
88
+ var _useState3 = useState(items.length),
89
+ _useState4 = _slicedToArray(_useState3, 2),
90
+ numVisibleItems = _useState4[0],
91
+ setNumVisibleItems = _useState4[1];
92
+ useEffect(function () {
93
+ setOrderedItems(items);
94
+ }, [items]);
95
+ var calculateVisibleItems = function calculateVisibleItems() {
96
+ var _buttonRef$current;
97
+ if (!tabListRef.current) return;
98
+
99
+ // Step 1: Measure (updates itemWidths ref in parent scope if needed, or returns new object)
100
+ var currentItemWidths = measureItemWidths(items, measurementRefs);
101
+ var containerWidth = tabListRef.current.offsetWidth;
102
+ var moreButtonWidth = ((_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 ? void 0 : _buttonRef$current.offsetWidth) || MORE_BUTTON_WIDTH;
103
+
104
+ // Step 2: Calculate visible count (pure logic)
105
+ var visibleCount = calculateVisibleCount(containerWidth, moreButtonWidth, orderedItems, currentItemWidths);
106
+
107
+ // Step 3: Update state
108
+ setNumVisibleItems(visibleCount);
109
+ };
110
+ useResizeObserver({
111
+ ref: tabListRef,
112
+ onResize: calculateVisibleItems
113
+ });
114
+ var visibleItems = useMemo(function () {
115
+ return _sliceInstanceProperty(orderedItems).call(orderedItems, 0, numVisibleItems);
116
+ }, [orderedItems, numVisibleItems]);
117
+ var hiddenItems = useMemo(function () {
118
+ return _sliceInstanceProperty(orderedItems).call(orderedItems, numVisibleItems);
119
+ }, [orderedItems, numVisibleItems]);
120
+ useEffect(function () {
121
+ if (onSelectionChange) {
122
+ onSelectionChange(selectedKey);
123
+ }
124
+ }, [selectedKey]);
125
+ useLayoutEffect(function () {
126
+ calculateVisibleItems();
127
+ }, [items]);
128
+ var reorderTabs = function reorderTabs() {
129
+ var selectedIndex = _findIndexInstanceProperty(orderedItems).call(orderedItems, function (item) {
130
+ return item.key === selectedKey;
131
+ });
132
+ var isSelectedHidden = selectedIndex >= numVisibleItems;
133
+ if (isSelectedHidden && selectedIndex !== -1 && numVisibleItems > 0) {
134
+ var _context;
135
+ var newOrderedItems = _concatInstanceProperty(_context = []).call(_context, orderedItems);
136
+ var selectedItem = newOrderedItems[selectedIndex];
137
+ var displacedItem = newOrderedItems[numVisibleItems - 1];
138
+ newOrderedItems[numVisibleItems - 1] = selectedItem;
139
+ newOrderedItems[selectedIndex] = displacedItem;
140
+ setOrderedItems(newOrderedItems);
141
+ }
142
+ };
143
+ useEffect(function () {
144
+ reorderTabs();
145
+ }, [selectedKey, numVisibleItems]);
146
+ var handleSelection = function handleSelection(key) {
147
+ setSelectedKey(key);
148
+ if (setSelectedKeyProp) {
149
+ setSelectedKeyProp(key);
150
+ }
151
+ };
152
+ return ___EmotionJSX(Box, {
153
+ maxWidth: "100%",
154
+ role: "navigation"
155
+ }, ___EmotionJSX(Box, _extends({
156
+ role: "list",
157
+ isRow: true,
158
+ ref: tabListRef,
159
+ alignItems: "center",
160
+ variant: "searchNav.list"
161
+ }, others, rowProps), _mapInstanceProperty(visibleItems).call(visibleItems, function (item) {
162
+ return ___EmotionJSX(SearchNavTab, {
163
+ key: item.key,
164
+ item: item,
165
+ selectedKey: selectedKey,
166
+ setSelectedKey: handleSelection,
167
+ tabProps: tabProps,
168
+ labelProps: labelProps
169
+ });
170
+ }), hiddenItems.length > 0 && ___EmotionJSX(MoreItemsPopover, {
171
+ onOpenChange: onOpenChange,
172
+ items: hiddenItems,
173
+ setSelectedKey: handleSelection,
174
+ buttonRef: buttonRef,
175
+ tabProps: tabProps,
176
+ popoverProps: popoverProps,
177
+ popoverButtonProps: popoverButtonProps,
178
+ popoverMenuProps: popoverMenuProps,
179
+ moreButtonText: moreButtonText
180
+ })), ___EmotionJSX(Box
181
+ // Off-screen positioning to allow measurement without affecting layout
182
+ , {
183
+ sx: {
184
+ position: 'absolute',
185
+ top: 0,
186
+ left: '-9999px',
187
+ overflow: 'hidden'
188
+ }
189
+ }, _mapInstanceProperty(items).call(items, function (item) {
190
+ return ___EmotionJSX(Box, {
191
+ sx: {
192
+ maxWidth: 'fit-content'
193
+ },
194
+ key: "".concat(item.key, "-box")
195
+ }, ___EmotionJSX(Text, {
196
+ key: "hidden-".concat(item.key),
197
+ ref: function ref(el) {
198
+ measurementRefs.current[item.key] = el;
199
+ }
200
+ }, item.text));
201
+ })));
202
+ });
203
+ export default SearchNav;
@@ -0,0 +1,61 @@
1
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
2
+ import _findInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/find";
3
+ import React, { useState } from 'react';
4
+ import { Box, Text } from '../../index';
5
+ import SearchNav from './SearchNav';
6
+ import { jsx as ___EmotionJSX } from "@emotion/react";
7
+ export default {
8
+ title: 'Components/SearchNav'
9
+ };
10
+ var items = [{
11
+ text: 'Overview',
12
+ key: 'Overview',
13
+ children: ___EmotionJSX(Text, null, "Overview")
14
+ }, {
15
+ text: 'Configuration',
16
+ key: 'Configuration',
17
+ children: ___EmotionJSX(Text, null, "Configuration")
18
+ }, {
19
+ text: 'Resources',
20
+ key: 'Resources',
21
+ children: ___EmotionJSX(Text, null, "Resources")
22
+ }, {
23
+ text: 'Policies',
24
+ key: 'Policies',
25
+ children: ___EmotionJSX(Text, null, "Policies")
26
+ }, {
27
+ text: 'Attribute Mappings',
28
+ key: 'Attribute Mappings',
29
+ children: ___EmotionJSX(Text, null, "Attribute body")
30
+ }, {
31
+ text: 'Access',
32
+ key: 'Access',
33
+ children: ___EmotionJSX(Text, null, "Access")
34
+ }, {
35
+ text: 'Integration',
36
+ key: 'Integration',
37
+ children: ___EmotionJSX(Text, null, "Integration")
38
+ }];
39
+ export var Default = function Default() {
40
+ var _items$find;
41
+ var _useState = useState('Policies'),
42
+ _useState2 = _slicedToArray(_useState, 2),
43
+ selectedKey = _useState2[0],
44
+ setSelectedKey = _useState2[1];
45
+ var setSelectedKeyCallback = function setSelectedKeyCallback(e) {
46
+ setSelectedKey(e);
47
+ };
48
+ return ___EmotionJSX(Box, {
49
+ maxWidth: "600px"
50
+ }, ___EmotionJSX(SearchNav, {
51
+ items: items,
52
+ selectedKey: selectedKey,
53
+ setSelectedKey: function setSelectedKey(e) {
54
+ return setSelectedKeyCallback(e);
55
+ }
56
+ }), ___EmotionJSX(Box, {
57
+ p: "sm"
58
+ }, (_items$find = _findInstanceProperty(items).call(items, function (item) {
59
+ return item.key === selectedKey;
60
+ })) === null || _items$find === void 0 ? void 0 : _items$find.children));
61
+ };
@@ -0,0 +1,43 @@
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 _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
12
+ import { defaultFocus } from '../Button/Buttons.styles';
13
+ var tab = {
14
+ pt: 'md',
15
+ cursor: 'pointer',
16
+ alignItems: 'center',
17
+ display: 'inline-flex',
18
+ borderBottom: '2px solid transparent',
19
+ outline: 'none',
20
+ marginBottom: '-1px',
21
+ position: 'relative',
22
+ zIndex: '2',
23
+ '&.is-focused': {
24
+ '& > span': _objectSpread(_objectSpread({}, defaultFocus), {}, {
25
+ borderRadius: '4px'
26
+ })
27
+ },
28
+ '&.is-disabled': {
29
+ cursor: 'default'
30
+ },
31
+ '&.is-selected': {
32
+ borderBottomWidth: '2px',
33
+ borderBottomColor: 'active'
34
+ }
35
+ };
36
+ var list = {
37
+ borderBottom: '1px solid',
38
+ borderBottomColor: 'border.hairline'
39
+ };
40
+ export default {
41
+ tab: tab,
42
+ list: list
43
+ };