thread-ui 0.5.0 → 0.6.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.
- package/README.md +10 -2
- package/dist/components/data-display/filter-controls/filter-controls.d.ts +10 -0
- package/dist/components/data-display/filter-controls/filter-controls.js +39 -0
- package/dist/components/data-display/filter-controls/filter-controls.js.map +1 -0
- package/dist/components/data-display/filter-controls/filter-controls.types.d.ts +75 -0
- package/dist/components/data-display/filter-controls/filter-controls.types.js +2 -0
- package/dist/components/data-display/filter-controls/filter-controls.types.js.map +1 -0
- package/dist/components/data-display/filter-controls/index.d.ts +2 -0
- package/dist/components/data-display/filter-controls/index.js +2 -0
- package/dist/components/data-display/filter-controls/index.js.map +1 -0
- package/dist/components/data-display/filter-controls/use-filter-controls.d.ts +23 -0
- package/dist/components/data-display/filter-controls/use-filter-controls.js +89 -0
- package/dist/components/data-display/filter-controls/use-filter-controls.js.map +1 -0
- package/dist/components/data-display/index.d.ts +2 -0
- package/dist/components/data-display/index.js +3 -0
- package/dist/components/data-display/index.js.map +1 -0
- package/dist/components/data-display/sort-controls/index.d.ts +3 -0
- package/dist/components/data-display/sort-controls/index.js +3 -0
- package/dist/components/data-display/sort-controls/index.js.map +1 -0
- package/dist/components/data-display/sort-controls/sort-controls.d.ts +11 -0
- package/dist/components/data-display/sort-controls/sort-controls.js +51 -0
- package/dist/components/data-display/sort-controls/sort-controls.js.map +1 -0
- package/dist/components/data-display/sort-controls/sort-controls.types.d.ts +62 -0
- package/dist/components/data-display/sort-controls/sort-controls.types.js +2 -0
- package/dist/components/data-display/sort-controls/sort-controls.types.js.map +1 -0
- package/dist/components/data-display/sort-controls/use-sort-controls.d.ts +23 -0
- package/dist/components/data-display/sort-controls/use-sort-controls.js +94 -0
- package/dist/components/data-display/sort-controls/use-sort-controls.js.map +1 -0
- package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.d.ts +1 -1
- package/dist/components/form-elements/dropdowns/dropdown/dropdown.js +41 -0
- package/dist/components/form-elements/dropdowns/dropdown/dropdown.js.map +1 -0
- package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.d.ts +4 -9
- package/dist/components/form-elements/dropdowns/dropdown/dropdown.types.js.map +1 -0
- package/dist/components/form-elements/dropdowns/dropdown/index.js.map +1 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.d.ts +8 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js +46 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.js.map +1 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.d.ts +25 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js +2 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.js.map +1 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/index.d.ts +2 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/index.js +2 -0
- package/dist/components/form-elements/dropdowns/dropdown-base/index.js.map +1 -0
- package/dist/components/form-elements/dropdowns/index.d.ts +2 -0
- package/dist/components/form-elements/dropdowns/index.js +3 -0
- package/dist/components/form-elements/dropdowns/index.js.map +1 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/index.d.ts +2 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/index.js +2 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/index.js.map +1 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.d.ts +15 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js +55 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.js.map +1 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.d.ts +25 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js +2 -0
- package/dist/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.js.map +1 -0
- package/dist/components/form-elements/form-label/form-label.d.ts +1 -1
- package/dist/components/form-elements/form-label/form-label.js +34 -8
- package/dist/components/form-elements/form-label/form-label.js.map +1 -1
- package/dist/components/form-elements/form-label/form-label.types.d.ts +3 -0
- package/dist/components/form-elements/index.d.ts +2 -2
- package/dist/components/form-elements/index.js +2 -2
- package/dist/components/form-elements/index.js.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +1 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/layouts/column-layout/column-layout.d.ts +1 -1
- package/dist/components/layouts/column-layout/column-layout.js +5 -4
- package/dist/components/layouts/column-layout/column-layout.js.map +1 -1
- package/dist/components/layouts/column-layout/column-layout.types.d.ts +4 -1
- package/dist/components/layouts/container/container.d.ts +11 -0
- package/dist/components/layouts/container/container.js +28 -0
- package/dist/components/layouts/container/container.js.map +1 -0
- package/dist/components/layouts/container/container.types.d.ts +11 -0
- package/dist/components/layouts/container/container.types.js +2 -0
- package/dist/components/layouts/container/container.types.js.map +1 -0
- package/dist/components/layouts/container/index.d.ts +2 -0
- package/dist/components/layouts/container/index.js +2 -0
- package/dist/components/layouts/container/index.js.map +1 -0
- package/dist/components/layouts/index.d.ts +1 -0
- package/dist/components/layouts/index.js +1 -0
- package/dist/components/layouts/index.js.map +1 -1
- package/dist/components/layouts/layout-component.types.d.ts +9 -0
- package/dist/components/layouts/layout-component.types.js +2 -0
- package/dist/components/layouts/layout-component.types.js.map +1 -0
- package/dist/components/layouts/layout-wrapper.d.ts +7 -0
- package/dist/components/layouts/layout-wrapper.js +9 -0
- package/dist/components/layouts/layout-wrapper.js.map +1 -0
- package/dist/components/layouts/masonry-layout/masonry-layout.d.ts +1 -1
- package/dist/components/layouts/masonry-layout/masonry-layout.js +5 -5
- package/dist/components/layouts/masonry-layout/masonry-layout.js.map +1 -1
- package/dist/components/layouts/masonry-layout/masonry-layout.types.d.ts +3 -2
- package/dist/components/media/info-card/info-card.js +3 -4
- package/dist/components/media/info-card/info-card.js.map +1 -1
- package/dist/components/navigation/nav-menu/items/base-item/base-item.d.ts +1 -1
- package/dist/components/navigation/nav-menu/items/base-item/base-item.js +1 -1
- package/dist/components/navigation/nav-menu/items/base-item/base-item.js.map +1 -1
- package/dist/components/navigation/side-nav/side-nav-item/side-nav-item.js +1 -1
- package/dist/components/typography/typography.d.ts +10 -8
- package/dist/components/typography/typography.js +42 -8
- package/dist/components/typography/typography.js.map +1 -1
- package/dist/components/ui/button/button-recipe.js +90 -6
- package/dist/components/ui/button/button-recipe.js.map +1 -1
- package/dist/components/ui/button/button.d.ts +1 -1
- package/dist/components/ui/button/button.js +2 -1
- package/dist/components/ui/button/button.js.map +1 -1
- package/dist/components/ui/button/button.types.d.ts +3 -1
- package/dist/components/ui/icon/icon.d.ts +1 -1
- package/dist/components/ui/icon/icon.js +1 -1
- package/dist/components/ui/icon-button/icon-button.d.ts +1 -1
- package/dist/components/ui/icon-button/icon-button.js +4 -7
- package/dist/components/ui/icon-button/icon-button.js.map +1 -1
- package/dist/components/ui/modal/components/modal-content.js +3 -3
- package/dist/components/ui/modal/components/modal-content.js.map +1 -1
- package/dist/components/ui/modal/modal.js +8 -2
- package/dist/components/ui/modal/modal.js.map +1 -1
- package/dist/components/ui/modal/modal.types.d.ts +2 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-click-outside/index.d.ts +1 -0
- package/dist/hooks/use-click-outside/index.js +2 -0
- package/dist/hooks/use-click-outside/index.js.map +1 -0
- package/dist/hooks/use-click-outside/use-click-outside.d.ts +10 -0
- package/dist/hooks/use-click-outside/use-click-outside.js +26 -0
- package/dist/hooks/use-click-outside/use-click-outside.js.map +1 -0
- package/dist/hooks/use-dismiss/index.d.ts +1 -0
- package/dist/hooks/use-dismiss/index.js +2 -0
- package/dist/hooks/use-dismiss/index.js.map +1 -0
- package/dist/hooks/use-dismiss/use-dismiss.d.ts +13 -0
- package/dist/hooks/use-dismiss/use-dismiss.js +42 -0
- package/dist/hooks/use-dismiss/use-dismiss.js.map +1 -0
- package/dist/hooks/use-pathname/index.js.map +1 -0
- package/dist/hooks/use-pathname/use-pathname.d.ts +8 -0
- package/dist/{utils/hooks → hooks}/use-pathname/use-pathname.js +7 -0
- package/dist/hooks/use-pathname/use-pathname.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.d.ts +2 -0
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.js +12 -0
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.js.map +1 -0
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.d.ts +9 -0
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js +2 -0
- package/dist/internal-components/conditional-wrapper/conditional-wrapper.types.js.map +1 -0
- package/dist/internal-components/conditional-wrapper/index.d.ts +2 -0
- package/dist/internal-components/conditional-wrapper/index.js +2 -0
- package/dist/internal-components/conditional-wrapper/index.js.map +1 -0
- package/dist/internal-components/image/render-image.js.map +1 -1
- package/dist/internal-components/index.d.ts +3 -1
- package/dist/internal-components/index.js +3 -1
- package/dist/internal-components/index.js.map +1 -1
- package/dist/internal-components/optional-icon-button/index.d.ts +2 -0
- package/dist/internal-components/optional-icon-button/index.js +2 -0
- package/dist/internal-components/optional-icon-button/index.js.map +1 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.d.ts +2 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.js +9 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.js.map +1 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.types.d.ts +4 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.types.js +2 -0
- package/dist/internal-components/optional-icon-button/optional-icon-button.types.js.map +1 -0
- package/dist/styled-system/recipes/button.d.ts +2 -1
- package/dist/styled-system/recipes/button.mjs +114 -1
- package/dist/styled-system/styles.css +1 -1
- package/dist/styles/panda.css +1 -1
- package/dist/types/colors/utility-color-options.types.d.ts +2 -0
- package/dist/types/image/image.types.d.ts +2 -0
- package/dist/types/theme/theme.types.d.ts +24 -10
- package/dist/types/utility/deep-partial.types.d.ts +1 -0
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js +4 -4
- package/dist/utils/theme-utilities/get-utility-icon-size/get-utility-icon-size.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/form-elements/dropdown/dropdown.js +0 -83
- package/dist/components/form-elements/dropdown/dropdown.js.map +0 -1
- package/dist/components/form-elements/dropdown/dropdown.types.js.map +0 -1
- package/dist/components/form-elements/dropdown/index.js.map +0 -1
- package/dist/utils/hooks/index.d.ts +0 -2
- package/dist/utils/hooks/index.js +0 -3
- package/dist/utils/hooks/index.js.map +0 -1
- package/dist/utils/hooks/use-outside-close-click/index.d.ts +0 -1
- package/dist/utils/hooks/use-outside-close-click/index.js +0 -2
- package/dist/utils/hooks/use-outside-close-click/index.js.map +0 -1
- package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.d.ts +0 -2
- package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js +0 -16
- package/dist/utils/hooks/use-outside-close-click/use-outside-close-click.js.map +0 -1
- package/dist/utils/hooks/use-pathname/index.js.map +0 -1
- package/dist/utils/hooks/use-pathname/use-pathname.d.ts +0 -1
- package/dist/utils/hooks/use-pathname/use-pathname.js.map +0 -1
- /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/dropdown.types.js +0 -0
- /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.d.ts +0 -0
- /package/dist/components/form-elements/{dropdown → dropdowns/dropdown}/index.js +0 -0
- /package/dist/{utils/hooks → hooks}/use-pathname/index.d.ts +0 -0
- /package/dist/{utils/hooks → hooks}/use-pathname/index.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/dropdown.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE9D,MAAM,UAAU,GAAG,GAAG,CAAC;IACtB,IAAI,EAAE;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,GAAG;QACb,QAAQ,EAAE,GAAG;QACb,MAAM,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;KACtC;IACD,QAAQ,EAAE;QACT,UAAU,EAAE;YACX,IAAI,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;SACrC;KACD;CACD,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACxB,EAAE,EACF,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,WAAW,GAAG,qBAAqB,EACnC,IAAI,GACW,EAAE,EAAE;IACnB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;QAC/C,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,SAAS,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACN,KAAC,YAAY,IACZ,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAC1C,OAAO,EAAE,GAAG,EAAE;YACb,SAAS,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,EACD,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,EACrD,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,aAEC,SAAS,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,KAAK,EAAE,CAAC,EACvE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,YAElC,MAAM,CAAC,KAAK,IAJR,KAAK,CAKN,CACL,EACD,IAAI,EAAE,IAAI,GACT,CACF,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { UtilitySizeOptions } from '../../../../types';
|
|
2
|
+
import { DropdownOption } from '../dropdown-base/dropdown-base.types';
|
|
1
3
|
export type DropdownProps = {
|
|
2
4
|
/** Dropdown ID */
|
|
3
5
|
id?: string;
|
|
@@ -11,13 +13,6 @@ export type DropdownProps = {
|
|
|
11
13
|
onSelect: (value: string | number) => void;
|
|
12
14
|
/** Placeholder text shown when no value is selected @default 'Select an option...' */
|
|
13
15
|
placeholder?: string;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
* A single option in the Dropdown list.
|
|
17
|
-
*/
|
|
18
|
-
export type DropdownOption = {
|
|
19
|
-
/** Display text shown in the list */
|
|
20
|
-
label: string;
|
|
21
|
-
/** Value passed to `onSelect` when this option is chosen */
|
|
22
|
-
value: string | number;
|
|
16
|
+
/** Size of Form Label @default `'md'`` */
|
|
17
|
+
size?: UtilitySizeOptions;
|
|
23
18
|
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/dropdown.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DropdownBaseProps } from './dropdown-base.types';
|
|
2
|
+
export declare const styles: {
|
|
3
|
+
container: string;
|
|
4
|
+
interior: string;
|
|
5
|
+
surfaceButton: string;
|
|
6
|
+
list: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const DropdownBase: ({ id, title, isOpen, onClose, onToggle, triggerLabel, renderItem, options, listHeader, size, icon, }: DropdownBaseProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
import { InputWrapper } from '../../input-wrapper';
|
|
5
|
+
import { FormLabel } from '../../form-label';
|
|
6
|
+
import { Icon } from '../../../../components/ui';
|
|
7
|
+
import { css } from '../../../../styled-system/css';
|
|
8
|
+
import { useClickOutside } from '../../../../hooks';
|
|
9
|
+
import { getUtilityIconSize } from '../../../../utils';
|
|
10
|
+
import { ConditionalWrapper, OptionalIconButton } from '../../../../internal-components';
|
|
11
|
+
export const styles = {
|
|
12
|
+
container: css({
|
|
13
|
+
width: '100%',
|
|
14
|
+
color: 'text.standard',
|
|
15
|
+
}),
|
|
16
|
+
interior: css({
|
|
17
|
+
width: '100%',
|
|
18
|
+
position: 'relative',
|
|
19
|
+
}),
|
|
20
|
+
surfaceButton: css({
|
|
21
|
+
width: '100%',
|
|
22
|
+
display: 'flex',
|
|
23
|
+
justifyContent: 'space-between',
|
|
24
|
+
alignItems: 'center',
|
|
25
|
+
}),
|
|
26
|
+
list: css({
|
|
27
|
+
backgroundColor: 'background',
|
|
28
|
+
position: 'absolute',
|
|
29
|
+
width: 'fit-content',
|
|
30
|
+
minWidth: '75%',
|
|
31
|
+
borderWidth: 'md',
|
|
32
|
+
borderColor: 'structure',
|
|
33
|
+
borderRadius: 'md',
|
|
34
|
+
marginTop: '3',
|
|
35
|
+
boxShadow: 'lg',
|
|
36
|
+
zIndex: '10',
|
|
37
|
+
maxHeight: '60',
|
|
38
|
+
overflow: 'auto',
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
export const DropdownBase = ({ id, title, isOpen, onClose, onToggle, triggerLabel, renderItem, options, listHeader, size = 'md', icon, }) => {
|
|
42
|
+
const listRef = useRef(null);
|
|
43
|
+
useClickOutside(listRef, isOpen, onClose, false);
|
|
44
|
+
return (_jsx("div", { id: id, className: styles.container, children: _jsxs(ConditionalWrapper, { wrapper: title ? InputWrapper : 'fragment', children: [title && _jsx(FormLabel, { size: size, name: title, title: title }), _jsxs("div", { className: styles.interior, children: [_jsxs(OptionalIconButton, { size: size, color: "neutral", onClick: onToggle, type: "button", name: icon, children: [triggerLabel, _jsx(Icon, { name: isOpen ? 'CaretUp' : 'CaretDown', size: getUtilityIconSize(size) })] }), isOpen && (_jsxs("ul", { className: styles.list, ref: listRef, children: [listHeader && _jsx("li", { children: listHeader }), options.map((option, index) => renderItem(option, index))] }))] })] }) }));
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=dropdown-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-base.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/dropdown-base.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { IconNames } from '../../../../components/ui';
|
|
2
|
+
import { UtilitySizeOptions } from '../../../../types';
|
|
3
|
+
/**
|
|
4
|
+
* A single option in the Dropdown list.
|
|
5
|
+
*/
|
|
6
|
+
export type DropdownOption = {
|
|
7
|
+
/** Display text shown in the list */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Value passed to `onSelect` when this option is chosen */
|
|
10
|
+
value: string | number;
|
|
11
|
+
};
|
|
12
|
+
export type DropdownBaseProps = {
|
|
13
|
+
id?: string;
|
|
14
|
+
title?: string;
|
|
15
|
+
placeholder?: string;
|
|
16
|
+
options: DropdownOption[];
|
|
17
|
+
isOpen: boolean;
|
|
18
|
+
onClose: () => void;
|
|
19
|
+
onToggle: () => void;
|
|
20
|
+
triggerLabel: string;
|
|
21
|
+
renderItem: (option: DropdownOption, index: number) => React.ReactNode;
|
|
22
|
+
listHeader?: React.ReactNode;
|
|
23
|
+
size?: UtilitySizeOptions;
|
|
24
|
+
icon?: IconNames;
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dropdown-base.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/dropdown-base.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/dropdown-base/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/form-elements/dropdowns/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MultiDropdownProps } from './multi-dropdown.types';
|
|
2
|
+
/**
|
|
3
|
+
* Multi-select dropdown — stays open on selection, renders a count badge
|
|
4
|
+
* when values are active, and exposes a per-field clear.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <MultiDropdown
|
|
8
|
+
* title="Course"
|
|
9
|
+
* options={[{ label: 'Main', value: 'main' }, { label: 'Dessert', value: 'dessert' }]}
|
|
10
|
+
* values={selected}
|
|
11
|
+
* onToggle={(val) => toggle(val)}
|
|
12
|
+
* onClear={() => clear()}
|
|
13
|
+
* />
|
|
14
|
+
*/
|
|
15
|
+
export declare const MultiDropdown: ({ id, title, options, values, onToggle, onClear, size, icon, showLabel, }: MultiDropdownProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { cva, css } from '../../../../styled-system/css';
|
|
5
|
+
import { DropdownBase } from '../dropdown-base/dropdown-base';
|
|
6
|
+
import { Icon, IconButton } from '../../../../components/ui';
|
|
7
|
+
const styles = {
|
|
8
|
+
itemStyles: cva({
|
|
9
|
+
base: {
|
|
10
|
+
cursor: 'pointer',
|
|
11
|
+
paddingX: '4',
|
|
12
|
+
paddingY: '2',
|
|
13
|
+
display: 'flex',
|
|
14
|
+
alignItems: 'center',
|
|
15
|
+
gap: '2',
|
|
16
|
+
_hover: { backgroundColor: 'surface' },
|
|
17
|
+
},
|
|
18
|
+
variants: {
|
|
19
|
+
isSelected: {
|
|
20
|
+
true: { backgroundColor: 'elevated' },
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
}),
|
|
24
|
+
headerStyles: css({
|
|
25
|
+
height: '5',
|
|
26
|
+
paddingX: 3,
|
|
27
|
+
display: 'flex',
|
|
28
|
+
flexDirection: 'row',
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Multi-select dropdown — stays open on selection, renders a count badge
|
|
33
|
+
* when values are active, and exposes a per-field clear.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* <MultiDropdown
|
|
37
|
+
* title="Course"
|
|
38
|
+
* options={[{ label: 'Main', value: 'main' }, { label: 'Dessert', value: 'dessert' }]}
|
|
39
|
+
* values={selected}
|
|
40
|
+
* onToggle={(val) => toggle(val)}
|
|
41
|
+
* onClear={() => clear()}
|
|
42
|
+
* />
|
|
43
|
+
*/
|
|
44
|
+
export const MultiDropdown = ({ id, title, options, values, onToggle, onClear, size, icon, showLabel = true, }) => {
|
|
45
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
46
|
+
const placeholder = !showLabel && title ? title : 'Select...';
|
|
47
|
+
const triggerLabel = values.length === 0 ? placeholder : `${title ?? 'Selected'} (${values.length})`;
|
|
48
|
+
return (_jsx(DropdownBase, { id: id, title: showLabel ? title : undefined, options: options, isOpen: isOpen, onToggle: () => setIsOpen((prev) => !prev), onClose: () => {
|
|
49
|
+
setIsOpen(false);
|
|
50
|
+
}, listHeader: _jsx("div", { className: styles.headerStyles, children: values.length > 0 && (_jsx(IconButton, { onClick: onClear, color: "text", name: "X", text: true, size: "sm", children: "Clear" })) }), triggerLabel: triggerLabel, renderItem: (option, index) => {
|
|
51
|
+
const isSelected = values.includes(option.value);
|
|
52
|
+
return (_jsxs("li", { className: styles.itemStyles({ isSelected }), onClick: () => onToggle(option.value), children: [_jsx(Icon, { name: isSelected ? 'CheckSquare' : 'Square', size: 12 }), option.label] }, index));
|
|
53
|
+
}, size: size, icon: icon }));
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=multi-dropdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-dropdown.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DropdownOption } from '../dropdown-base/dropdown-base.types';
|
|
2
|
+
import { UtilityColorOptions, UtilitySizeOptions } from '../../../../types';
|
|
3
|
+
import { IconNames } from '../../../../components/ui';
|
|
4
|
+
export type MultiDropdownProps = {
|
|
5
|
+
/** Defaults to `title` if not provided */
|
|
6
|
+
id?: string;
|
|
7
|
+
/** Label displayed on the dropdown trigger button */
|
|
8
|
+
title?: string;
|
|
9
|
+
/** List of selectable options */
|
|
10
|
+
options: DropdownOption[];
|
|
11
|
+
/** Currently selected values */
|
|
12
|
+
values: (string | number)[];
|
|
13
|
+
/** Called when an option is toggled on or off */
|
|
14
|
+
onToggle: (value: string | number) => void;
|
|
15
|
+
/** Called when all selected values are cleared */
|
|
16
|
+
onClear: () => void;
|
|
17
|
+
/** Icon displayed in the dropdown trigger button */
|
|
18
|
+
icon?: IconNames;
|
|
19
|
+
/** Color variant for the trigger button */
|
|
20
|
+
color?: UtilityColorOptions;
|
|
21
|
+
/** Size variant for the trigger button @default `'md'` */
|
|
22
|
+
size?: UtilitySizeOptions;
|
|
23
|
+
/** Shows the title label above the dropdown @default `true` */
|
|
24
|
+
showLabel?: boolean;
|
|
25
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-dropdown.types.js","sourceRoot":"","sources":["../../../../../src/components/form-elements/dropdowns/multi-dropdown/multi-dropdown.types.ts"],"names":[],"mappings":""}
|
|
@@ -5,4 +5,4 @@ import { FormLabelProps } from './form-label.types';
|
|
|
5
5
|
* @example
|
|
6
6
|
* <FormLabel name="email" title="Email Address" />
|
|
7
7
|
*/
|
|
8
|
-
export declare const FormLabel: ({ name, id, title }: FormLabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export declare const FormLabel: ({ name, id, title, size }: FormLabelProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,18 +1,44 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { cva } from '../../../styled-system/css';
|
|
3
|
+
import { Text } from '../../../components/typography';
|
|
4
4
|
/**
|
|
5
5
|
* Form label linked to a control by `name`. Renders as an `H3` typographic style.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
8
8
|
* <FormLabel name="email" title="Email Address" />
|
|
9
9
|
*/
|
|
10
|
-
export const FormLabel = ({ name, id = name, title }) => {
|
|
11
|
-
const styles =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
export const FormLabel = ({ name, id = name, title, size = 'md' }) => {
|
|
11
|
+
const styles = cva({
|
|
12
|
+
base: {
|
|
13
|
+
display: 'block',
|
|
14
|
+
alignSelf: 'flex-start',
|
|
15
|
+
},
|
|
16
|
+
variants: {
|
|
17
|
+
size: {
|
|
18
|
+
sm: {
|
|
19
|
+
marginBottom: '1',
|
|
20
|
+
},
|
|
21
|
+
md: {
|
|
22
|
+
marginBottom: '1.5',
|
|
23
|
+
},
|
|
24
|
+
lg: {
|
|
25
|
+
marginBottom: '2',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
15
29
|
});
|
|
16
|
-
|
|
30
|
+
const textSizeFromSizeProp = (() => {
|
|
31
|
+
switch (size) {
|
|
32
|
+
case 'sm':
|
|
33
|
+
return 'md';
|
|
34
|
+
case 'md':
|
|
35
|
+
return 'lg';
|
|
36
|
+
case 'lg':
|
|
37
|
+
return 'xl';
|
|
38
|
+
default:
|
|
39
|
+
return 'lg';
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
42
|
+
return (_jsx("label", { id: id, htmlFor: name, className: styles({ size }), children: _jsx(Text, { bold: true, size: textSizeFromSizeProp, children: title }) }));
|
|
17
43
|
};
|
|
18
44
|
//# sourceMappingURL=form-label.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-label.js","sourceRoot":"","sources":["../../../../src/components/form-elements/form-label/form-label.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"form-label.js","sourceRoot":"","sources":["../../../../src/components/form-elements/form-label/form-label.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAO,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAM,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAGnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,EAAkB,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE;YACL,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,YAAY;SACvB;QACD,QAAQ,EAAE;YACT,IAAI,EAAE;gBACL,EAAE,EAAE;oBACH,YAAY,EAAE,GAAG;iBACjB;gBACD,EAAE,EAAE;oBACH,YAAY,EAAE,KAAK;iBACnB;gBACD,EAAE,EAAE;oBACH,YAAY,EAAE,GAAG;iBACjB;aACD;SACD;KACD,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE;QAClC,QAAQ,IAAI,EAAE,CAAC;YACd,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb,KAAK,IAAI;gBACR,OAAO,IAAI,CAAC;YACb;gBACC,OAAO,IAAI,CAAC;QACd,CAAC;IACF,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,CACN,gBAAO,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,YACxD,KAAC,IAAI,IAAC,IAAI,QAAC,IAAI,EAAE,oBAAoB,YACnC,KAAK,GACA,GACA,CACR,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UtilitySizeOptions } from '../../../types';
|
|
1
2
|
export type FormLabelProps = {
|
|
2
3
|
/** Defaults to `name` if not provided */
|
|
3
4
|
id?: string;
|
|
@@ -5,4 +6,6 @@ export type FormLabelProps = {
|
|
|
5
6
|
name: string;
|
|
6
7
|
/** Text displayed in the label */
|
|
7
8
|
title?: string;
|
|
9
|
+
/** Label Size @default `'md'`` */
|
|
10
|
+
size?: UtilitySizeOptions;
|
|
8
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form-elements/index.ts"],"names":[],"mappings":"AAAA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form-elements/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,MAAM,CAAC"}
|
|
@@ -11,4 +11,4 @@ import { ColumnLayoutProps } from './column-layout.types';
|
|
|
11
11
|
* items={[{ content: { src: '/img.jpg', alt: 'Example' }, title: 'Item' }]}
|
|
12
12
|
* />
|
|
13
13
|
*/
|
|
14
|
-
export declare const ColumnLayout: ({ title, caption, mdcol, lgcol, items, }: ColumnLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const ColumnLayout: ({ title, caption, mdcol, lgcol, items, container, }: ColumnLayoutProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -3,6 +3,7 @@ import { renderImage } from '../../../internal-components';
|
|
|
3
3
|
import { ColumnSkeleton } from './column-skeleton';
|
|
4
4
|
import { H2, H3, Text } from '../../../components';
|
|
5
5
|
import { css } from '../../../styled-system/css';
|
|
6
|
+
import { LayoutWrapper } from '../layout-wrapper';
|
|
6
7
|
/**
|
|
7
8
|
* Responsive image grid with an optional title and caption.
|
|
8
9
|
* Column count is controlled separately for medium and large viewports.
|
|
@@ -15,7 +16,7 @@ import { css } from '../../../styled-system/css';
|
|
|
15
16
|
* items={[{ content: { src: '/img.jpg', alt: 'Example' }, title: 'Item' }]}
|
|
16
17
|
* />
|
|
17
18
|
*/
|
|
18
|
-
export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, }) => {
|
|
19
|
+
export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, container = true, }) => {
|
|
19
20
|
const sectionStyles = css({
|
|
20
21
|
width: '100%',
|
|
21
22
|
marginRight: 'auto',
|
|
@@ -46,8 +47,8 @@ export const ColumnLayout = ({ title, caption, mdcol, lgcol = mdcol, items, }) =
|
|
|
46
47
|
height: 'auto',
|
|
47
48
|
borderRadius: '0.25rem',
|
|
48
49
|
});
|
|
49
|
-
return (_jsxs("section", { className: sectionStyles, style: {
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
return (_jsx(LayoutWrapper, { container: container, children: _jsxs("section", { className: sectionStyles, style: {
|
|
51
|
+
'--max-width': mdcol < 2 ? '800px' : 'none',
|
|
52
|
+
}, children: [(title || caption) && (_jsx("div", { children: title && (_jsx(_Fragment, { children: _jsxs(H2, { children: [title, caption && _jsx(Text, { children: caption })] }) })) })), _jsx(ColumnSkeleton, { mdcol: mdcol, lgcol: lgcol, children: items.map((item, index) => (_jsxs("div", { children: [_jsx("div", { className: gridItemStyles, children: renderImage(item.content, undefined, gridPhotoStyles) }), (item.title || item.description) && (_jsxs(_Fragment, { children: [item.title && _jsx(H3, { children: item.title }), item.description && _jsx(Text, { children: item.description })] }))] }, item.key ?? index))) })] }) }));
|
|
52
53
|
};
|
|
53
54
|
//# sourceMappingURL=column-layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"column-layout.js","sourceRoot":"","sources":["../../../../src/components/layouts/column-layout/column-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"column-layout.js","sourceRoot":"","sources":["../../../../src/components/layouts/column-layout/column-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC5B,KAAK,EACL,OAAO,EACP,KAAK,EACL,KAAK,GAAG,KAAK,EACb,KAAK,EACL,SAAS,GAAG,IAAI,GACG,EAAE,EAAE;IACvB,MAAM,aAAa,GAAG,GAAG,CAAC;QACzB,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,MAAM;SACV;QACD,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,MAAM;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QACxD,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;QAC3D,OAAO,EAAE,MAAM;QACf,aAAa,EAAE,QAAQ;QACvB,cAAc,EAAE,QAAQ;QACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE;KACpC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,GAAG,CAAC;QAC1B,YAAY,EAAE,SAAS;QACvB,YAAY,EAAE,QAAQ;QACtB,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,QAAQ;KAClB,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,GAAG,CAAC;QAC3B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,OAAO,CACN,KAAC,aAAa,IAAC,SAAS,EAAE,SAAS,YAClC,mBACC,SAAS,EAAE,aAAa,EACxB,KAAK,EACJ;gBACC,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aACpB,aAGxB,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CACtB,wBACE,KAAK,IAAI,CACT,4BACC,MAAC,EAAE,eACD,KAAK,EACL,OAAO,IAAI,KAAC,IAAI,cAAE,OAAO,GAAQ,IAC9B,GACH,CACH,GACI,CACN,EACD,KAAC,cAAc,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YACxC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC3B,0BACC,cAAK,SAAS,EAAE,cAAc,YAC5B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,GACjD,EACL,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CACpC,8BACE,IAAI,CAAC,KAAK,IAAI,KAAC,EAAE,cAAE,IAAI,CAAC,KAAK,GAAM,EACnC,IAAI,CAAC,WAAW,IAAI,KAAC,IAAI,cAAE,IAAI,CAAC,WAAW,GAAQ,IAClD,CACH,KATQ,IAAI,CAAC,GAAG,IAAI,KAAK,CAUrB,CACN,CAAC,GACc,IACR,GACK,CAChB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ImageProps } from '../../../types';
|
|
2
|
-
|
|
2
|
+
import { LayoutComponentProps } from '../layout-component.types';
|
|
3
|
+
export type ColumnLayoutProps = LayoutComponentProps & {
|
|
3
4
|
/** Optional title displayed at the top of the layout */
|
|
4
5
|
title?: string;
|
|
5
6
|
/** Optional caption rendered alongside the title */
|
|
@@ -18,4 +19,6 @@ export type ColumnItem = {
|
|
|
18
19
|
description?: string;
|
|
19
20
|
/** Image to display in the column */
|
|
20
21
|
content: ImageProps;
|
|
22
|
+
/** Optional key prop to ensure items render correctly */
|
|
23
|
+
key?: string;
|
|
21
24
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ContainerProps } from './container.types';
|
|
2
|
+
/**
|
|
3
|
+
* Layout container with a max-width, horizontal padding, and optional background color.
|
|
4
|
+
* Renders as `div` by default but can be swapped for `section`.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* <Container as="section" bgColor="surface">
|
|
8
|
+
* <PageHeader title="About" />
|
|
9
|
+
* </Container>
|
|
10
|
+
*/
|
|
11
|
+
export declare const Container: ({ as: Tag, bgColor, children, }: ContainerProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cva, cx } from '../../../styled-system/css';
|
|
3
|
+
import { container } from '../../../styled-system/patterns';
|
|
4
|
+
const styles = cva({
|
|
5
|
+
variants: {
|
|
6
|
+
bgColor: {
|
|
7
|
+
background: { backgroundColor: 'background' },
|
|
8
|
+
surface: { backgroundColor: 'surface' },
|
|
9
|
+
elevated: { backgroundColor: 'elevated' },
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
bgColor: 'background',
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Layout container with a max-width, horizontal padding, and optional background color.
|
|
18
|
+
* Renders as `div` by default but can be swapped for `section`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* <Container as="section" bgColor="surface">
|
|
22
|
+
* <PageHeader title="About" />
|
|
23
|
+
* </Container>
|
|
24
|
+
*/
|
|
25
|
+
export const Container = ({ as: Tag = 'div', bgColor = 'background', children, }) => {
|
|
26
|
+
return _jsx(Tag, { className: cx(styles({ bgColor }), container()), children: children });
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/container.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAGrD,MAAM,MAAM,GAAG,GAAG,CAAC;IAClB,QAAQ,EAAE;QACT,OAAO,EAAE;YACR,UAAU,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE;YAC7C,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,EAAE;YACvC,QAAQ,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;SACzC;KACD;IACD,eAAe,EAAE;QAChB,OAAO,EAAE,YAAY;KACrB;CACD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EACzB,EAAE,EAAE,GAAG,GAAG,KAAK,EACf,OAAO,GAAG,YAAY,EACtB,QAAQ,GACQ,EAAE,EAAE;IACpB,OAAO,KAAC,GAAG,IAAC,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,YAAG,QAAQ,GAAO,CAAC;AAC/E,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SurfaceColorOptions } from '../../../types';
|
|
2
|
+
import { JSX, ReactNode } from 'react';
|
|
3
|
+
type BlockElements = Pick<JSX.IntrinsicElements, 'div' | 'section'>;
|
|
4
|
+
export type ContainerProps = {
|
|
5
|
+
/** HTML element to render as @default `'div'` */
|
|
6
|
+
as?: keyof BlockElements;
|
|
7
|
+
/** Background color token @default `'background'` */
|
|
8
|
+
bgColor?: SurfaceColorOptions;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
};
|
|
11
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"container.types.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/container.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/layouts/container/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/layouts/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BreakpointToken as PandaBreakpointToken } from '../../styled-system/tokens';
|
|
2
|
+
import { ContainerProps } from './container';
|
|
3
|
+
type BreakpointToken = PandaBreakpointToken | 'base';
|
|
4
|
+
export type ResponsiveValue<T> = T | Partial<Record<BreakpointToken, T>>;
|
|
5
|
+
export type LayoutComponentProps = {
|
|
6
|
+
/** Wraps the layout in a container */
|
|
7
|
+
container?: boolean | Omit<ContainerProps, 'children'>;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-component.types.js","sourceRoot":"","sources":["../../../src/components/layouts/layout-component.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { LayoutComponentProps } from './layout-component.types';
|
|
3
|
+
type LayoutWrapperProps = LayoutComponentProps & {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
};
|
|
6
|
+
export declare const LayoutWrapper: ({ container, children }: LayoutWrapperProps) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|