@nodeblocks/frontend-search-by-chip-block 0.2.0 → 0.2.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.
- package/dist/context.d.ts +2 -2
- package/dist/context.d.ts.map +1 -1
- package/dist/index.cjs.js +1 -188
- package/dist/index.esm.js +1 -186
- package/dist/lib.d.ts +19 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/search-by-chip.d.ts +15 -56
- package/dist/search-by-chip.d.ts.map +1 -1
- package/package.json +19 -11
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.esm.js.map +0 -1
package/dist/context.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
type SearchByChipContextValue = {
|
|
2
|
+
export type SearchByChipContextValue = {
|
|
3
3
|
searchByChipTitle: ReactNode;
|
|
4
4
|
sectionTitle: ReactNode;
|
|
5
5
|
subtitle: ReactNode;
|
|
@@ -10,9 +10,9 @@ type SearchByChipContextValue = {
|
|
|
10
10
|
icon?: ReactNode;
|
|
11
11
|
}[];
|
|
12
12
|
};
|
|
13
|
+
export declare const keys: readonly ["searchByChipTitle", "sectionTitle", "subtitle", "onClickChip", "chips"];
|
|
13
14
|
export declare const SearchByChipProvider: ({ children, ...value }: SearchByChipContextValue & {
|
|
14
15
|
children: ReactNode;
|
|
15
16
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
16
17
|
export declare const useSearchByChipContext: () => SearchByChipContextValue;
|
|
17
|
-
export {};
|
|
18
18
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAE7D,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,SAAS,EAAc,MAAM,OAAO,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,iBAAiB,EAAE,SAAS,CAAC;IAC7B,YAAY,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,SAAS,CAAC;KAClB,EAAE,CAAC;CACL,CAAC;AAEF,eAAO,MAAM,IAAI,oFAMyB,CAAC;AAW3C,eAAO,MAAM,oBAAoB,GAAI,wBAGlC,wBAAwB,GAAG;IAC5B,QAAQ,EAAE,SAAS,CAAC;CACrB,4CAEA,CAAC;AAEF,eAAO,MAAM,sBAAsB,gCAOlC,CAAC"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,188 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof global === 'undefined') {
|
|
4
|
-
var global = window;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
'use strict';
|
|
8
|
-
|
|
9
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
var material = require('@mui/material');
|
|
11
|
-
var react = require('react');
|
|
12
|
-
|
|
13
|
-
const SearchByChipContext = react.createContext(undefined);
|
|
14
|
-
const SearchByChipProvider = ({ children, ...value }) => {
|
|
15
|
-
return jsxRuntime.jsx(SearchByChipContext.Provider, { value: value, children: children });
|
|
16
|
-
};
|
|
17
|
-
const useSearchByChipContext = () => {
|
|
18
|
-
const context = react.useContext(SearchByChipContext);
|
|
19
|
-
if (!context) {
|
|
20
|
-
throw new Error('useSearchByChipContext must be used within a SearchByChipProvider');
|
|
21
|
-
}
|
|
22
|
-
return context;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Creates a strongly typed `defaultBlocks` object, allowing for types to propagate into block override objects.
|
|
27
|
-
*
|
|
28
|
-
* @param components - A map of default block keys to component functions.
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* const defaultBlocks = createDefaultBlocks({
|
|
32
|
-
* title: Title,
|
|
33
|
-
* description: Description,
|
|
34
|
-
* form: Form,
|
|
35
|
-
* });
|
|
36
|
-
*/
|
|
37
|
-
function createDefaultBlocks(components) {
|
|
38
|
-
return Object.fromEntries(Object.entries(components).map(([key, Component]) => [key, react.createElement(Component, { key })]));
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* A component for rendering {@link BlocksOverride|`BlocksOverride`} results.
|
|
42
|
-
* Exposes the evaluated `blocks` and `blockOrder` as arguments to the `children` function.
|
|
43
|
-
*
|
|
44
|
-
* @param props
|
|
45
|
-
* @param props.blocksOverride - The {@link BlocksOverride|`BlocksOverride`} (i.e. `children` of outer component).
|
|
46
|
-
* @param props.defaultBlocks - The default blocks of outer component.
|
|
47
|
-
* @param props.children - A function returning the JSX to render.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* <BlocksOverrideComponent
|
|
51
|
-
* defaultBlocks={defaultFormBlocks}
|
|
52
|
-
* blocksOverride={children}
|
|
53
|
-
* >
|
|
54
|
-
* {({ blocks, blockOrder }) =>
|
|
55
|
-
* blockOrder.map((key) => (
|
|
56
|
-
* <Fragment key={String(key)}>{blocks[key]}</Fragment>
|
|
57
|
-
* ))
|
|
58
|
-
* }
|
|
59
|
-
* </BlocksOverrideComponent>
|
|
60
|
-
*/
|
|
61
|
-
function BlocksOverrideComponent({ blocksOverride, defaultBlocks, defaultBlockOrder, children, }) {
|
|
62
|
-
if (blocksOverride === undefined) {
|
|
63
|
-
return children({
|
|
64
|
-
// TODO: Remove this assertion
|
|
65
|
-
blocks: defaultBlocks,
|
|
66
|
-
blockOrder: defaultBlockOrder,
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
if (typeof blocksOverride === 'function') {
|
|
70
|
-
const { blocks, blockOrder } = blocksOverride({
|
|
71
|
-
defaultBlocks,
|
|
72
|
-
defaultBlockOrder,
|
|
73
|
-
});
|
|
74
|
-
return children({ blocks, blockOrder });
|
|
75
|
-
}
|
|
76
|
-
return blocksOverride;
|
|
77
|
-
}
|
|
78
|
-
function deepMerge(obj1, obj2) {
|
|
79
|
-
const result = { ...obj1 };
|
|
80
|
-
for (const key in obj2) {
|
|
81
|
-
if (obj2.hasOwnProperty(key)) {
|
|
82
|
-
const val1 = result[key];
|
|
83
|
-
const val2 = obj2[key];
|
|
84
|
-
if (Array.isArray(val1) || Array.isArray(val2)) {
|
|
85
|
-
// If either is an array, replace entirely with obj2's value
|
|
86
|
-
result[key] = val2;
|
|
87
|
-
}
|
|
88
|
-
else if (typeof val1 === 'object' && val1 !== null && typeof val2 === 'object' && val2 !== null) {
|
|
89
|
-
result[key] = deepMerge(val1, val2);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
result[key] = val2;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Utility function to join class names together, ignoring undefined or nil values.
|
|
100
|
-
* @param classes - The class names to join.
|
|
101
|
-
* @returns The joined class names.
|
|
102
|
-
*/
|
|
103
|
-
function classNames(...classes) {
|
|
104
|
-
return classes.flat().filter(Boolean).join(' ');
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const SearchByChip = ({ searchByChipTitle, sectionTitle, subtitle, onClickChip, chips, className, children, ...props }) => {
|
|
108
|
-
const { sx: sxProp, ...restProps } = props;
|
|
109
|
-
return (jsxRuntime.jsx(material.Stack, { className: classNames('nbb-search-by-chip', className), sx: [
|
|
110
|
-
{
|
|
111
|
-
p: 2,
|
|
112
|
-
gap: 0.5,
|
|
113
|
-
bgcolor: 'background.paper',
|
|
114
|
-
textAlign: 'center',
|
|
115
|
-
containerType: 'inline-size',
|
|
116
|
-
},
|
|
117
|
-
...(Array.isArray(sxProp) ? sxProp : [sxProp]),
|
|
118
|
-
], ...restProps, children: jsxRuntime.jsx(SearchByChipProvider, { searchByChipTitle,
|
|
119
|
-
sectionTitle,
|
|
120
|
-
subtitle,
|
|
121
|
-
onClickChip,
|
|
122
|
-
chips, children: jsxRuntime.jsx(BlocksOverrideComponent, { defaultBlocks: defaultBlocks, defaultBlockOrder: Object.keys(defaultBlocks), blocksOverride: children, children: ({ blocks: { chipIcon, chipItem, sectionTitle, ...blocks }, blockOrder }) => blockOrder
|
|
123
|
-
.filter((key) => key in blocks)
|
|
124
|
-
.map((key) => jsxRuntime.jsx(react.Fragment, { children: blocks[key] }, String(key))) }) }) }));
|
|
125
|
-
};
|
|
126
|
-
SearchByChip.Title = (props) => {
|
|
127
|
-
const { searchByChipTitle } = deepMerge(useSearchByChipContext(), props);
|
|
128
|
-
const { component = 'h1', variant = 'h4', children, className, ...restProps } = props;
|
|
129
|
-
return (jsxRuntime.jsx(material.Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-title', className), ...restProps, children: children || searchByChipTitle }));
|
|
130
|
-
};
|
|
131
|
-
SearchByChip.Subtitle = (props) => {
|
|
132
|
-
const { subtitle } = deepMerge(useSearchByChipContext(), props);
|
|
133
|
-
const { component = 'h6', variant = 'h6', sx = [], children, className, ...restProps } = props;
|
|
134
|
-
return (jsxRuntime.jsx(material.Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-subtitle', className), sx: [{ color: 'primary.main' }, ...(Array.isArray(sx) ? sx : [sx])], ...restProps, children: children || subtitle }));
|
|
135
|
-
};
|
|
136
|
-
SearchByChip.SectionTitle = (props) => {
|
|
137
|
-
const { sectionTitle } = deepMerge(useSearchByChipContext(), props);
|
|
138
|
-
const { variant = 'body1', component = 'h6', sx = [], children, className, ...restProps } = props;
|
|
139
|
-
return (jsxRuntime.jsx(material.Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-section-title', className), sx: [
|
|
140
|
-
(theme) => ({
|
|
141
|
-
px: 2,
|
|
142
|
-
py: 1.875,
|
|
143
|
-
fontWeight: theme.typography.h6.fontWeight,
|
|
144
|
-
}),
|
|
145
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
146
|
-
], ...restProps, children: children || sectionTitle }));
|
|
147
|
-
};
|
|
148
|
-
SearchByChip.ChipItem = ({ onClickChip, value, label, className, startIcon = jsxRuntime.jsx(SearchByChip.ChipIcon, {}), sx = [], ...props }) => (jsxRuntime.jsx(material.Button, { variant: "outlined", size: "small", onClick: () => onClickChip(value), className: classNames('nbb-search-by-chip-item', className),
|
|
149
|
-
// NOTE: since the user can pass whatever startIcon, it can handle clicks separately from the button
|
|
150
|
-
startIcon: startIcon, sx: [
|
|
151
|
-
(theme) => ({
|
|
152
|
-
'&&': {
|
|
153
|
-
fontWeight: theme.typography.fontWeightLight,
|
|
154
|
-
py: '7px',
|
|
155
|
-
px: 2,
|
|
156
|
-
borderColor: 'grey.50',
|
|
157
|
-
bgcolor: 'background.paper',
|
|
158
|
-
},
|
|
159
|
-
'&:hover': {
|
|
160
|
-
boxShadow: '0 2px 6px rgba(0, 0, 0, 0.1)',
|
|
161
|
-
},
|
|
162
|
-
}),
|
|
163
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
164
|
-
], ...props, children: label }));
|
|
165
|
-
SearchByChip.ChipIcon = () => (jsxRuntime.jsx(material.SvgIcon, { className: "nbb-search-by-chip-icon", viewBox: "0 0 16 16", sx: { width: 16, height: 16, color: 'primary.main' }, children: jsxRuntime.jsx("path", { d: "M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z", fill: "currentColor" }) }));
|
|
166
|
-
SearchByChip.ChipSection = (props) => {
|
|
167
|
-
const { chips, sectionTitle, onClickChip } = deepMerge(useSearchByChipContext(), props);
|
|
168
|
-
const { children, className, chips: _chips, sectionTitle: _sectionTitle, ...restProps } = props;
|
|
169
|
-
return (jsxRuntime.jsx(material.Stack, { className: classNames('nbb-search-by-chip-chip-section', className), ...restProps, children: children || (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(SearchByChip.SectionTitle, { children: sectionTitle }), jsxRuntime.jsx(material.Box, { className: "nbb-search-by-chip-items", sx: {
|
|
170
|
-
display: 'flex',
|
|
171
|
-
flexWrap: 'wrap',
|
|
172
|
-
gap: 1,
|
|
173
|
-
justifyContent: { '@sm': 'center', '@': 'flex-start' },
|
|
174
|
-
px: 2,
|
|
175
|
-
py: 1.5,
|
|
176
|
-
}, children: chips?.map((item, i) => (jsxRuntime.jsx(SearchByChip.ChipItem, { onClickChip: onClickChip, value: item.value, label: item.label, ...(item.icon && { startIcon: item.icon }) }, i))) })] })) }));
|
|
177
|
-
};
|
|
178
|
-
const defaultBlocks = createDefaultBlocks({
|
|
179
|
-
subtitle: SearchByChip.Subtitle,
|
|
180
|
-
title: SearchByChip.Title,
|
|
181
|
-
sectionTitle: SearchByChip.SectionTitle,
|
|
182
|
-
chipIcon: SearchByChip.ChipIcon,
|
|
183
|
-
chipItem: SearchByChip.ChipItem,
|
|
184
|
-
chipSection: SearchByChip.ChipSection,
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
exports.SearchByChip = SearchByChip;
|
|
188
|
-
//# sourceMappingURL=index.cjs.js.map
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("@mui/material"),r=require("react");const i=["searchByChipTitle","sectionTitle","subtitle","onClickChip","chips"],c=r.createContext(void 0),n=({children:t,...r})=>e.jsx(c.Provider,{value:r,children:t}),o=()=>{const e=r.useContext(c);if(!e)throw new Error("useSearchByChipContext must be used within a SearchByChipProvider");return e};function s({blocksOverride:e,defaultBlocks:t,defaultBlockOrder:r,children:i}){if(void 0===e)return i({blocks:t,blockOrder:r});if("function"==typeof e){const{blocks:c,blockOrder:n}=e({defaultBlocks:t,defaultBlockOrder:r});return i({blocks:c,blockOrder:n})}return e}function a(e,t){const r={...e};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);return r}function l(...e){return e.flat().filter(Boolean).join(" ")}function h(e,...t){const r={...e};for(const e of t)delete r[e];return r}function p(e,...t){const r={};for(const i of t)i in e&&(r[i]=e[i]);return r}const b=({className:c,children:o,sx:a,...b})=>e.jsx(t.Stack,{className:l("nbb-search-by-chip",c),sx:[{p:2,gap:.5,bgcolor:"background.paper",textAlign:"center",containerType:"inline-size"},...Array.isArray(a)?a:[a]],...h(b,...i),children:e.jsx(n,{...p(b,...i),children:e.jsx(s,{defaultBlocks:d,defaultBlockOrder:Object.keys(d),blocksOverride:o,children:({blocks:{chipIcon:t,chipItem:i,sectionTitle:c,...n},blockOrder:o})=>o.filter(e=>e in n).map(t=>e.jsx(r.Fragment,{children:n[t]},String(t)))})})});b.Title=r=>{const c=o(),{searchByChipTitle:n}=a(c,r),{component:s="h1",variant:p="h4",children:b,className:d,...u}=r;return e.jsx(t.Typography,{variant:p,component:s,className:l("nbb-search-by-chip-title",d),...h(u,...i),children:b||n})},b.Subtitle=r=>{const c=o(),{subtitle:n}=a(c,r),{component:s="h6",variant:p="h6",sx:b=[],children:d,className:u,...y}=r;return e.jsx(t.Typography,{variant:p,component:s,className:l("nbb-search-by-chip-subtitle",u),sx:[{color:"primary.main"},...Array.isArray(b)?b:[b]],...h(y,...i),children:d||n})},b.SectionTitle=r=>{const c=o(),{sectionTitle:n}=a(c,r),{variant:s="body1",component:p="h6",sx:b=[],children:d,className:u,...y}=r;return e.jsx(t.Typography,{variant:s,component:p,className:l("nbb-search-by-chip-section-title",u),sx:[e=>({px:2,py:1.875,fontWeight:e.typography.h6.fontWeight}),...Array.isArray(b)?b:[b]],...h(y,...i),children:d||n})},b.ChipItem=({onClickChip:r,value:i,label:c,className:n,startIcon:o=e.jsx(b.ChipIcon,{}),sx:s=[],...a})=>e.jsx(t.Button,{variant:"outlined",size:"small",onClick:()=>r(i),className:l("nbb-search-by-chip-item",n),startIcon:o,sx:[e=>({"&&":{fontWeight:e.typography.fontWeightLight,py:"7px",px:2,borderColor:"grey.50",bgcolor:"background.paper"},"&:hover":{boxShadow:"0 2px 6px rgba(0, 0, 0, 0.1)"}}),...Array.isArray(s)?s:[s]],...a,children:c});const d=(u={subtitle:b.Subtitle,title:b.Title,sectionTitle:b.SectionTitle,chipIcon:b.ChipIcon=()=>e.jsx(t.SvgIcon,{className:"nbb-search-by-chip-icon",viewBox:"0 0 16 16",sx:{width:16,height:16,color:"primary.main"},children:e.jsx("path",{d:"M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z",fill:"currentColor"})}),chipItem:b.ChipItem,chipSection:b.ChipSection=r=>{const c=o(),{chips:n,sectionTitle:s,onClickChip:p}=a(c,r),{children:d,className:u,chips:y,sectionTitle:x,...m}=r;return e.jsx(t.Stack,{className:l("nbb-search-by-chip-chip-section",u),...h(m,...i),children:d||e.jsxs(e.Fragment,{children:[e.jsx(b.SectionTitle,{children:s}),e.jsx(t.Box,{className:"nbb-search-by-chip-items",sx:{display:"flex",flexWrap:"wrap",gap:1,justifyContent:{"@sm":"center","@":"flex-start"},px:2,py:1.5},children:n?.map((t,r)=>e.jsx(b.ChipItem,{onClickChip:p,value:t.value,label:t.label,...t.icon&&{startIcon:t.icon}},r))})]})})}},Object.fromEntries(Object.entries(u).map(([e,t])=>[e,r.createElement(t,{key:e})])));var u;exports.SearchByChip=b;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,186 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (typeof global === 'undefined') {
|
|
4
|
-
var global = window;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
8
|
-
import { Stack, Typography, Button, SvgIcon, Box } from '@mui/material';
|
|
9
|
-
import { createContext, useContext, createElement, Fragment } from 'react';
|
|
10
|
-
|
|
11
|
-
const SearchByChipContext = createContext(undefined);
|
|
12
|
-
const SearchByChipProvider = ({ children, ...value }) => {
|
|
13
|
-
return jsx(SearchByChipContext.Provider, { value: value, children: children });
|
|
14
|
-
};
|
|
15
|
-
const useSearchByChipContext = () => {
|
|
16
|
-
const context = useContext(SearchByChipContext);
|
|
17
|
-
if (!context) {
|
|
18
|
-
throw new Error('useSearchByChipContext must be used within a SearchByChipProvider');
|
|
19
|
-
}
|
|
20
|
-
return context;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Creates a strongly typed `defaultBlocks` object, allowing for types to propagate into block override objects.
|
|
25
|
-
*
|
|
26
|
-
* @param components - A map of default block keys to component functions.
|
|
27
|
-
*
|
|
28
|
-
* @example
|
|
29
|
-
* const defaultBlocks = createDefaultBlocks({
|
|
30
|
-
* title: Title,
|
|
31
|
-
* description: Description,
|
|
32
|
-
* form: Form,
|
|
33
|
-
* });
|
|
34
|
-
*/
|
|
35
|
-
function createDefaultBlocks(components) {
|
|
36
|
-
return Object.fromEntries(Object.entries(components).map(([key, Component]) => [key, createElement(Component, { key })]));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* A component for rendering {@link BlocksOverride|`BlocksOverride`} results.
|
|
40
|
-
* Exposes the evaluated `blocks` and `blockOrder` as arguments to the `children` function.
|
|
41
|
-
*
|
|
42
|
-
* @param props
|
|
43
|
-
* @param props.blocksOverride - The {@link BlocksOverride|`BlocksOverride`} (i.e. `children` of outer component).
|
|
44
|
-
* @param props.defaultBlocks - The default blocks of outer component.
|
|
45
|
-
* @param props.children - A function returning the JSX to render.
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* <BlocksOverrideComponent
|
|
49
|
-
* defaultBlocks={defaultFormBlocks}
|
|
50
|
-
* blocksOverride={children}
|
|
51
|
-
* >
|
|
52
|
-
* {({ blocks, blockOrder }) =>
|
|
53
|
-
* blockOrder.map((key) => (
|
|
54
|
-
* <Fragment key={String(key)}>{blocks[key]}</Fragment>
|
|
55
|
-
* ))
|
|
56
|
-
* }
|
|
57
|
-
* </BlocksOverrideComponent>
|
|
58
|
-
*/
|
|
59
|
-
function BlocksOverrideComponent({ blocksOverride, defaultBlocks, defaultBlockOrder, children, }) {
|
|
60
|
-
if (blocksOverride === undefined) {
|
|
61
|
-
return children({
|
|
62
|
-
// TODO: Remove this assertion
|
|
63
|
-
blocks: defaultBlocks,
|
|
64
|
-
blockOrder: defaultBlockOrder,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
if (typeof blocksOverride === 'function') {
|
|
68
|
-
const { blocks, blockOrder } = blocksOverride({
|
|
69
|
-
defaultBlocks,
|
|
70
|
-
defaultBlockOrder,
|
|
71
|
-
});
|
|
72
|
-
return children({ blocks, blockOrder });
|
|
73
|
-
}
|
|
74
|
-
return blocksOverride;
|
|
75
|
-
}
|
|
76
|
-
function deepMerge(obj1, obj2) {
|
|
77
|
-
const result = { ...obj1 };
|
|
78
|
-
for (const key in obj2) {
|
|
79
|
-
if (obj2.hasOwnProperty(key)) {
|
|
80
|
-
const val1 = result[key];
|
|
81
|
-
const val2 = obj2[key];
|
|
82
|
-
if (Array.isArray(val1) || Array.isArray(val2)) {
|
|
83
|
-
// If either is an array, replace entirely with obj2's value
|
|
84
|
-
result[key] = val2;
|
|
85
|
-
}
|
|
86
|
-
else if (typeof val1 === 'object' && val1 !== null && typeof val2 === 'object' && val2 !== null) {
|
|
87
|
-
result[key] = deepMerge(val1, val2);
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
result[key] = val2;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Utility function to join class names together, ignoring undefined or nil values.
|
|
98
|
-
* @param classes - The class names to join.
|
|
99
|
-
* @returns The joined class names.
|
|
100
|
-
*/
|
|
101
|
-
function classNames(...classes) {
|
|
102
|
-
return classes.flat().filter(Boolean).join(' ');
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const SearchByChip = ({ searchByChipTitle, sectionTitle, subtitle, onClickChip, chips, className, children, ...props }) => {
|
|
106
|
-
const { sx: sxProp, ...restProps } = props;
|
|
107
|
-
return (jsx(Stack, { className: classNames('nbb-search-by-chip', className), sx: [
|
|
108
|
-
{
|
|
109
|
-
p: 2,
|
|
110
|
-
gap: 0.5,
|
|
111
|
-
bgcolor: 'background.paper',
|
|
112
|
-
textAlign: 'center',
|
|
113
|
-
containerType: 'inline-size',
|
|
114
|
-
},
|
|
115
|
-
...(Array.isArray(sxProp) ? sxProp : [sxProp]),
|
|
116
|
-
], ...restProps, children: jsx(SearchByChipProvider, { searchByChipTitle,
|
|
117
|
-
sectionTitle,
|
|
118
|
-
subtitle,
|
|
119
|
-
onClickChip,
|
|
120
|
-
chips, children: jsx(BlocksOverrideComponent, { defaultBlocks: defaultBlocks, defaultBlockOrder: Object.keys(defaultBlocks), blocksOverride: children, children: ({ blocks: { chipIcon, chipItem, sectionTitle, ...blocks }, blockOrder }) => blockOrder
|
|
121
|
-
.filter((key) => key in blocks)
|
|
122
|
-
.map((key) => jsx(Fragment, { children: blocks[key] }, String(key))) }) }) }));
|
|
123
|
-
};
|
|
124
|
-
SearchByChip.Title = (props) => {
|
|
125
|
-
const { searchByChipTitle } = deepMerge(useSearchByChipContext(), props);
|
|
126
|
-
const { component = 'h1', variant = 'h4', children, className, ...restProps } = props;
|
|
127
|
-
return (jsx(Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-title', className), ...restProps, children: children || searchByChipTitle }));
|
|
128
|
-
};
|
|
129
|
-
SearchByChip.Subtitle = (props) => {
|
|
130
|
-
const { subtitle } = deepMerge(useSearchByChipContext(), props);
|
|
131
|
-
const { component = 'h6', variant = 'h6', sx = [], children, className, ...restProps } = props;
|
|
132
|
-
return (jsx(Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-subtitle', className), sx: [{ color: 'primary.main' }, ...(Array.isArray(sx) ? sx : [sx])], ...restProps, children: children || subtitle }));
|
|
133
|
-
};
|
|
134
|
-
SearchByChip.SectionTitle = (props) => {
|
|
135
|
-
const { sectionTitle } = deepMerge(useSearchByChipContext(), props);
|
|
136
|
-
const { variant = 'body1', component = 'h6', sx = [], children, className, ...restProps } = props;
|
|
137
|
-
return (jsx(Typography, { variant: variant, component: component, className: classNames('nbb-search-by-chip-section-title', className), sx: [
|
|
138
|
-
(theme) => ({
|
|
139
|
-
px: 2,
|
|
140
|
-
py: 1.875,
|
|
141
|
-
fontWeight: theme.typography.h6.fontWeight,
|
|
142
|
-
}),
|
|
143
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
144
|
-
], ...restProps, children: children || sectionTitle }));
|
|
145
|
-
};
|
|
146
|
-
SearchByChip.ChipItem = ({ onClickChip, value, label, className, startIcon = jsx(SearchByChip.ChipIcon, {}), sx = [], ...props }) => (jsx(Button, { variant: "outlined", size: "small", onClick: () => onClickChip(value), className: classNames('nbb-search-by-chip-item', className),
|
|
147
|
-
// NOTE: since the user can pass whatever startIcon, it can handle clicks separately from the button
|
|
148
|
-
startIcon: startIcon, sx: [
|
|
149
|
-
(theme) => ({
|
|
150
|
-
'&&': {
|
|
151
|
-
fontWeight: theme.typography.fontWeightLight,
|
|
152
|
-
py: '7px',
|
|
153
|
-
px: 2,
|
|
154
|
-
borderColor: 'grey.50',
|
|
155
|
-
bgcolor: 'background.paper',
|
|
156
|
-
},
|
|
157
|
-
'&:hover': {
|
|
158
|
-
boxShadow: '0 2px 6px rgba(0, 0, 0, 0.1)',
|
|
159
|
-
},
|
|
160
|
-
}),
|
|
161
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
162
|
-
], ...props, children: label }));
|
|
163
|
-
SearchByChip.ChipIcon = () => (jsx(SvgIcon, { className: "nbb-search-by-chip-icon", viewBox: "0 0 16 16", sx: { width: 16, height: 16, color: 'primary.main' }, children: jsx("path", { d: "M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z", fill: "currentColor" }) }));
|
|
164
|
-
SearchByChip.ChipSection = (props) => {
|
|
165
|
-
const { chips, sectionTitle, onClickChip } = deepMerge(useSearchByChipContext(), props);
|
|
166
|
-
const { children, className, chips: _chips, sectionTitle: _sectionTitle, ...restProps } = props;
|
|
167
|
-
return (jsx(Stack, { className: classNames('nbb-search-by-chip-chip-section', className), ...restProps, children: children || (jsxs(Fragment$1, { children: [jsx(SearchByChip.SectionTitle, { children: sectionTitle }), jsx(Box, { className: "nbb-search-by-chip-items", sx: {
|
|
168
|
-
display: 'flex',
|
|
169
|
-
flexWrap: 'wrap',
|
|
170
|
-
gap: 1,
|
|
171
|
-
justifyContent: { '@sm': 'center', '@': 'flex-start' },
|
|
172
|
-
px: 2,
|
|
173
|
-
py: 1.5,
|
|
174
|
-
}, children: chips?.map((item, i) => (jsx(SearchByChip.ChipItem, { onClickChip: onClickChip, value: item.value, label: item.label, ...(item.icon && { startIcon: item.icon }) }, i))) })] })) }));
|
|
175
|
-
};
|
|
176
|
-
const defaultBlocks = createDefaultBlocks({
|
|
177
|
-
subtitle: SearchByChip.Subtitle,
|
|
178
|
-
title: SearchByChip.Title,
|
|
179
|
-
sectionTitle: SearchByChip.SectionTitle,
|
|
180
|
-
chipIcon: SearchByChip.ChipIcon,
|
|
181
|
-
chipItem: SearchByChip.ChipItem,
|
|
182
|
-
chipSection: SearchByChip.ChipSection,
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
export { SearchByChip };
|
|
186
|
-
//# sourceMappingURL=index.esm.js.map
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import{Stack as i,Typography as c,Button as n,SvgIcon as o,Box as l}from"@mui/material";import{createContext as a,useContext as s,createElement as h,Fragment as p}from"react";const b=["searchByChipTitle","sectionTitle","subtitle","onClickChip","chips"],d=a(void 0),m=({children:t,...r})=>e(d.Provider,{value:r,children:t}),u=()=>{const e=s(d);if(!e)throw new Error("useSearchByChipContext must be used within a SearchByChipProvider");return e};function y({blocksOverride:e,defaultBlocks:t,defaultBlockOrder:r,children:i}){if(void 0===e)return i({blocks:t,blockOrder:r});if("function"==typeof e){const{blocks:c,blockOrder:n}=e({defaultBlocks:t,defaultBlockOrder:r});return i({blocks:c,blockOrder:n})}return e}function f(e,t){const r={...e};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);return r}function k(...e){return e.flat().filter(Boolean).join(" ")}function x(e,...t){const r={...e};for(const e of t)delete r[e];return r}function C(e,...t){const r={};for(const i of t)i in e&&(r[i]=e[i]);return r}const v=({className:t,children:r,sx:c,...n})=>e(i,{className:k("nbb-search-by-chip",t),sx:[{p:2,gap:.5,bgcolor:"background.paper",textAlign:"center",containerType:"inline-size"},...Array.isArray(c)?c:[c]],...x(n,...b),children:e(m,{...C(n,...b),children:e(y,{defaultBlocks:g,defaultBlockOrder:Object.keys(g),blocksOverride:r,children:({blocks:{chipIcon:t,chipItem:r,sectionTitle:i,...c},blockOrder:n})=>n.filter(e=>e in c).map(t=>e(p,{children:c[t]},String(t)))})})});v.Title=t=>{const r=u(),{searchByChipTitle:i}=f(r,t),{component:n="h1",variant:o="h4",children:l,className:a,...s}=t;return e(c,{variant:o,component:n,className:k("nbb-search-by-chip-title",a),...x(s,...b),children:l||i})},v.Subtitle=t=>{const r=u(),{subtitle:i}=f(r,t),{component:n="h6",variant:o="h6",sx:l=[],children:a,className:s,...h}=t;return e(c,{variant:o,component:n,className:k("nbb-search-by-chip-subtitle",s),sx:[{color:"primary.main"},...Array.isArray(l)?l:[l]],...x(h,...b),children:a||i})},v.SectionTitle=t=>{const r=u(),{sectionTitle:i}=f(r,t),{variant:n="body1",component:o="h6",sx:l=[],children:a,className:s,...h}=t;return e(c,{variant:n,component:o,className:k("nbb-search-by-chip-section-title",s),sx:[e=>({px:2,py:1.875,fontWeight:e.typography.h6.fontWeight}),...Array.isArray(l)?l:[l]],...x(h,...b),children:a||i})},v.ChipItem=({onClickChip:t,value:r,label:i,className:c,startIcon:o=e(v.ChipIcon,{}),sx:l=[],...a})=>e(n,{variant:"outlined",size:"small",onClick:()=>t(r),className:k("nbb-search-by-chip-item",c),startIcon:o,sx:[e=>({"&&":{fontWeight:e.typography.fontWeightLight,py:"7px",px:2,borderColor:"grey.50",bgcolor:"background.paper"},"&:hover":{boxShadow:"0 2px 6px rgba(0, 0, 0, 0.1)"}}),...Array.isArray(l)?l:[l]],...a,children:i});const g=(N={subtitle:v.Subtitle,title:v.Title,sectionTitle:v.SectionTitle,chipIcon:v.ChipIcon=()=>e(o,{className:"nbb-search-by-chip-icon",viewBox:"0 0 16 16",sx:{width:16,height:16,color:"primary.main"},children:e("path",{d:"M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z",fill:"currentColor"})}),chipItem:v.ChipItem,chipSection:v.ChipSection=c=>{const n=u(),{chips:o,sectionTitle:a,onClickChip:s}=f(n,c),{children:h,className:p,chips:d,sectionTitle:m,...y}=c;return e(i,{className:k("nbb-search-by-chip-chip-section",p),...x(y,...b),children:h||t(r,{children:[e(v.SectionTitle,{children:a}),e(l,{className:"nbb-search-by-chip-items",sx:{display:"flex",flexWrap:"wrap",gap:1,justifyContent:{"@sm":"center","@":"flex-start"},px:2,py:1.5},children:o?.map((t,r)=>e(v.ChipItem,{onClickChip:s,value:t.value,label:t.label,...t.icon&&{startIcon:t.icon}},r))})]})})}},Object.fromEntries(Object.entries(N).map(([e,t])=>[e,h(t,{key:e})])));var N;export{v as SearchByChip};
|
package/dist/lib.d.ts
CHANGED
|
@@ -72,10 +72,12 @@ export declare function BlocksOverrideComponent<DefaultBlocks extends Record<str
|
|
|
72
72
|
blockOrder: readonly (keyof DefaultBlocks | keyof CustomBlocks)[];
|
|
73
73
|
}) => ReactNode;
|
|
74
74
|
}): ReactNode;
|
|
75
|
-
type
|
|
76
|
-
[K in keyof
|
|
75
|
+
type MergeKeepingRequired<A, B> = Omit<A, keyof B> & {
|
|
76
|
+
[K in keyof A & keyof B]-?: undefined extends B[K] ? A[K] : B[K];
|
|
77
|
+
} & {
|
|
78
|
+
[K in Exclude<keyof B, keyof A>]: B[K];
|
|
77
79
|
};
|
|
78
|
-
export declare function
|
|
80
|
+
export declare function merge<A extends Record<PropertyKey, any>, B extends Record<PropertyKey, any>>(a: A, b: B): MergeKeepingRequired<A, B>;
|
|
79
81
|
type ClassName = string | ClassName[] | undefined | null;
|
|
80
82
|
/**
|
|
81
83
|
* Utility function to join class names together, ignoring undefined or nil values.
|
|
@@ -83,5 +85,19 @@ type ClassName = string | ClassName[] | undefined | null;
|
|
|
83
85
|
* @returns The joined class names.
|
|
84
86
|
*/
|
|
85
87
|
export declare function classNames(...classes: ClassName[]): string;
|
|
88
|
+
/**
|
|
89
|
+
* Omits the given string keys from `source`.
|
|
90
|
+
*
|
|
91
|
+
* Usage:
|
|
92
|
+
* omit(obj, "a", "b")
|
|
93
|
+
*/
|
|
94
|
+
export declare function omit<T extends object, const Keys extends readonly string[]>(source: T, ...keys: Keys): Omit<T, Extract<Keys[number], keyof T>>;
|
|
95
|
+
/**
|
|
96
|
+
* Picks the given keys out of `source` into a new object.
|
|
97
|
+
*
|
|
98
|
+
* Usage:
|
|
99
|
+
* pick(obj, "a", "b")
|
|
100
|
+
*/
|
|
101
|
+
export declare function pick<T extends object, K extends PropertyKey>(source: T, ...keys: K[]): Pick<T, Extract<K, keyof T>>;
|
|
86
102
|
export {};
|
|
87
103
|
//# sourceMappingURL=lib.d.ts.map
|
package/dist/lib.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,cAAc,CAAC,aAAa,EAAE,YAAY,IAClD,CAAC,CAAC,EACA,aAAa,EACb,iBAAiB,GAClB,EAAE;IACD,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;CACrD,KAAK;IACJ,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,YAAY,CAAC;IAE9C,UAAU,EAAE,SAAS,CAAC,MAAM,aAAa,CAAC,EAAE,GAAG,SAAS,CAAC,MAAM,YAAY,CAAC,EAAE,CAAC;CAChF,CAAC,GACF,SAAS,CAAC;AAEd;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAClF,UAAU,EAAE,CAAC,GACZ;KACA,CAAC,IAAI,MAAM,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACzD,CAMA;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC/C,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC9C,EACA,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,QAAQ,GACT,EAAE;IACD,cAAc,EAAE,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC5D,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,EAAE,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;IAC3C,QAAQ,EAAE,CAAC,EACT,MAAM,EACN,UAAU,GACX,EAAE;QAED,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QACvD,UAAU,EAAE,SAAS,CAAC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC;KACnE,KAAK,SAAS,CAAC;CACjB,aAmBA;AAED,KAAK,
|
|
1
|
+
{"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"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"}
|
package/dist/search-by-chip.d.ts
CHANGED
|
@@ -1,61 +1,34 @@
|
|
|
1
|
-
import { Button, Stack,
|
|
1
|
+
import { Button, Stack, TypographyProps } from '@mui/material';
|
|
2
2
|
import React, { ComponentProps, ReactNode } from 'react';
|
|
3
|
+
import { SearchByChipContextValue } from './context';
|
|
3
4
|
import { BlocksOverride } from './lib';
|
|
4
5
|
declare const SearchByChip: {
|
|
5
|
-
<CustomBlocks extends Record<string, ReactNode> = {}>({
|
|
6
|
-
searchByChipTitle: ReactNode;
|
|
7
|
-
sectionTitle: ReactNode;
|
|
8
|
-
subtitle: ReactNode;
|
|
9
|
-
onClickChip: (value: string) => void;
|
|
10
|
-
chips: {
|
|
11
|
-
value: string;
|
|
12
|
-
label: string;
|
|
13
|
-
icon?: ReactNode;
|
|
14
|
-
}[];
|
|
6
|
+
<CustomBlocks extends Record<string, ReactNode> = {}>({ className, children, sx, ...props }: Omit<ComponentProps<typeof Stack>, "children"> & Required<Pick<SearchByChipContextValue, "searchByChipTitle" | "sectionTitle" | "subtitle" | "onClickChip" | "chips">> & {
|
|
15
7
|
children?: BlocksOverride<typeof defaultBlocks, CustomBlocks>;
|
|
16
8
|
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
Title(props: Partial<
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Subtitle(props: Partial<ComponentProps<typeof Typography>> & {
|
|
21
|
-
component?: React.ElementType;
|
|
22
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
-
SectionTitle(props: Partial<ComponentProps<typeof Typography>> & {
|
|
24
|
-
component?: React.ElementType;
|
|
25
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
Title(props: Partial<TypographyProps & Pick<SearchByChipContextValue, "searchByChipTitle">>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
Subtitle(props: Partial<TypographyProps & Pick<SearchByChipContextValue, "subtitle">>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
SectionTitle(props: Partial<TypographyProps & Pick<SearchByChipContextValue, "sectionTitle">>): import("react/jsx-runtime").JSX.Element;
|
|
26
12
|
ChipItem({ onClickChip, value, label, className, startIcon, sx, ...props }: Omit<ComponentProps<typeof Button>, "children"> & {
|
|
27
13
|
onClickChip: (value: string) => void;
|
|
28
14
|
value: string;
|
|
29
15
|
label: ReactNode;
|
|
30
16
|
}): import("react/jsx-runtime").JSX.Element;
|
|
31
17
|
ChipIcon(): import("react/jsx-runtime").JSX.Element;
|
|
32
|
-
ChipSection(props: Partial<ComponentProps<typeof Stack> &
|
|
33
|
-
chips: {
|
|
34
|
-
value: string;
|
|
35
|
-
label: string;
|
|
36
|
-
icon?: ReactNode;
|
|
37
|
-
}[];
|
|
38
|
-
sectionTitle: ReactNode;
|
|
39
|
-
}>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
ChipSection(props: Partial<ComponentProps<typeof Stack> & Pick<SearchByChipContextValue, "chips" | "sectionTitle" | "onClickChip">>): import("react/jsx-runtime").JSX.Element;
|
|
40
19
|
};
|
|
41
20
|
declare const defaultBlocks: {
|
|
42
|
-
subtitle: React.ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "children" | "p" | "style" | "color" | "left" | "right" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping"
|
|
21
|
+
subtitle: React.ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "children" | "p" | "style" | "color" | "left" | "right" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping"> & {
|
|
43
22
|
component?: React.ElementType;
|
|
44
|
-
}, (props: Partial<
|
|
23
|
+
} & Pick<SearchByChipContextValue, "subtitle">>, (props: Partial<TypographyProps & Pick<SearchByChipContextValue, "subtitle">>) => import("react/jsx-runtime").JSX.Element>;
|
|
24
|
+
title: React.ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "children" | "p" | "style" | "color" | "left" | "right" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping"> & {
|
|
45
25
|
component?: React.ElementType;
|
|
46
|
-
}) => import("react/jsx-runtime").JSX.Element>;
|
|
47
|
-
|
|
48
|
-
component?: React.ElementType;
|
|
49
|
-
}, (props: Partial<ComponentProps<typeof Typography>> & {
|
|
50
|
-
component?: React.ElementType;
|
|
51
|
-
}) => import("react/jsx-runtime").JSX.Element>;
|
|
52
|
-
sectionTitle: React.ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "children" | "p" | "style" | "color" | "left" | "right" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping">> & {
|
|
53
|
-
component?: React.ElementType;
|
|
54
|
-
}, (props: Partial<ComponentProps<typeof Typography>> & {
|
|
26
|
+
} & Pick<SearchByChipContextValue, "searchByChipTitle">>, (props: Partial<TypographyProps & Pick<SearchByChipContextValue, "searchByChipTitle">>) => import("react/jsx-runtime").JSX.Element>;
|
|
27
|
+
sectionTitle: React.ReactElement<Partial<import("@mui/material").TypographyOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "children" | "p" | "style" | "color" | "left" | "right" | "className" | "classes" | "border" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "borderColor" | "borderRadius" | "display" | "displayPrint" | "overflow" | "textOverflow" | "visibility" | "whiteSpace" | "flexBasis" | "flexDirection" | "flexWrap" | "justifyContent" | "alignItems" | "alignContent" | "order" | "flex" | "flexGrow" | "flexShrink" | "alignSelf" | "justifyItems" | "justifySelf" | "gap" | "columnGap" | "rowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "bgcolor" | "zIndex" | "position" | "top" | "bottom" | "boxShadow" | "width" | "maxWidth" | "minWidth" | "height" | "maxHeight" | "minHeight" | "boxSizing" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "my" | "pt" | "pr" | "pb" | "pl" | "px" | "py" | "margin" | "marginTop" | "marginRight" | "marginBottom" | "marginLeft" | "marginX" | "marginY" | "marginInline" | "marginInlineStart" | "marginInlineEnd" | "marginBlock" | "marginBlockStart" | "marginBlockEnd" | "padding" | "paddingTop" | "paddingRight" | "paddingBottom" | "paddingLeft" | "paddingX" | "paddingY" | "paddingInline" | "paddingInlineStart" | "paddingInlineEnd" | "paddingBlock" | "paddingBlockStart" | "paddingBlockEnd" | "typography" | "fontFamily" | "fontSize" | "fontStyle" | "fontWeight" | "letterSpacing" | "lineHeight" | "textAlign" | "textTransform" | "sx" | "align" | "gutterBottom" | "noWrap" | "paragraph" | "variant" | "variantMapping"> & {
|
|
55
28
|
component?: React.ElementType;
|
|
56
|
-
}) => import("react/jsx-runtime").JSX.Element>;
|
|
29
|
+
} & Pick<SearchByChipContextValue, "sectionTitle">>, (props: Partial<TypographyProps & Pick<SearchByChipContextValue, "sectionTitle">>) => import("react/jsx-runtime").JSX.Element>;
|
|
57
30
|
chipIcon: React.ReactElement<unknown, () => import("react/jsx-runtime").JSX.Element>;
|
|
58
|
-
chipItem: React.ReactElement<Omit<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "style" | "color" | "className" | "classes" | "sx" | "tabIndex" | "variant" | "
|
|
31
|
+
chipItem: React.ReactElement<Omit<import("@mui/material").ButtonOwnProps & Omit<import("@mui/material").ButtonBaseOwnProps, "classes"> & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "children" | "style" | "color" | "className" | "classes" | "sx" | "tabIndex" | "variant" | "action" | "centerRipple" | "disabled" | "disableRipple" | "disableTouchRipple" | "focusRipple" | "focusVisibleClassName" | "LinkComponent" | "onFocusVisible" | "TouchRippleProps" | "touchRippleRef" | "href" | "disableElevation" | "disableFocusRipple" | "endIcon" | "fullWidth" | "loading" | "loadingIndicator" | "loadingPosition" | "size" | "startIcon">, "children"> & {
|
|
59
32
|
onClickChip: (value: string) => void;
|
|
60
33
|
value: string;
|
|
61
34
|
label: ReactNode;
|
|
@@ -64,21 +37,7 @@ declare const defaultBlocks: {
|
|
|
64
37
|
value: string;
|
|
65
38
|
label: ReactNode;
|
|
66
39
|
}) => import("react/jsx-runtime").JSX.Element>;
|
|
67
|
-
chipSection: React.ReactElement<Partial<import("@mui/material").StackOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/material/OverridableComponent").CommonProps | keyof import("@mui/material").StackOwnProps> &
|
|
68
|
-
chips: {
|
|
69
|
-
value: string;
|
|
70
|
-
label: string;
|
|
71
|
-
icon?: ReactNode;
|
|
72
|
-
}[];
|
|
73
|
-
sectionTitle: ReactNode;
|
|
74
|
-
}>, (props: Partial<ComponentProps<typeof Stack> & {
|
|
75
|
-
chips: {
|
|
76
|
-
value: string;
|
|
77
|
-
label: string;
|
|
78
|
-
icon?: ReactNode;
|
|
79
|
-
}[];
|
|
80
|
-
sectionTitle: ReactNode;
|
|
81
|
-
}>) => import("react/jsx-runtime").JSX.Element>;
|
|
40
|
+
chipSection: React.ReactElement<Partial<import("@mui/material").StackOwnProps & import("@mui/material/OverridableComponent").CommonProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof import("@mui/material/OverridableComponent").CommonProps | keyof import("@mui/material").StackOwnProps> & Pick<SearchByChipContextValue, "sectionTitle" | "onClickChip" | "chips">>, (props: Partial<ComponentProps<typeof Stack> & Pick<SearchByChipContextValue, "chips" | "sectionTitle" | "onClickChip">>) => import("react/jsx-runtime").JSX.Element>;
|
|
82
41
|
};
|
|
83
42
|
export default SearchByChip;
|
|
84
43
|
//# sourceMappingURL=search-by-chip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-by-chip.d.ts","sourceRoot":"","sources":["../src/search-by-chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"search-by-chip.d.ts","sourceRoot":"","sources":["../src/search-by-chip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,MAAM,EAAE,KAAK,EAAuB,eAAe,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,EAAE,cAAc,EAAY,SAAS,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAqE,MAAM,WAAW,CAAC;AAExH,OAAO,EAAE,cAAc,EAAmE,MAAM,OAAO,CAAC;AAExG,QAAA,MAAM,YAAY;KAAI,YAAY,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,8CAKjE,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,CAAC,EAAE,UAAU,CAAC,GAC/C,QAAQ,CACN,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,GAAG,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC,CAC5G,GAAG;QACF,QAAQ,CAAC,EAAE,cAAc,CAAC,OAAO,aAAa,EAAE,YAAY,CAAC,CAAC;KAC/D;iBAiC0B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;oBAiB3E,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;wBAkBjE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;gFAiC1G,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;QACnD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,CAAC;KAClB;;uBA2CQ,OAAO,CACZ,cAAc,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,CAAC,CACxG;CAvHF,CAAC;AA8JF,QAAA,MAAM,aAAa;;;6DA3Ia,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;;;sEAjBxE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;;;iEAmCvE,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,wBAAwB,EAAE,cAAc,CAAC,CAAC;;;qBAkC9F,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;eAC7B,MAAM;eACN,SAAS;2EAHf,IAAI,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG;QACnD,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACrC,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,SAAS,CAAC;KAClB;saA2CQ,OAAO,CACZ,cAAc,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,wBAAwB,EAAE,OAAO,GAAG,cAAc,GAAG,aAAa,CAAC,CACxG;CA8CD,CAAC;AAEH,eAAe,YAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nodeblocks/frontend-search-by-chip-block",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"main": "dist/index.cjs.js",
|
|
5
|
-
"module": "dist/index.esm.js",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"main": "./dist/index.cjs.js",
|
|
5
|
+
"module": "./dist/index.esm.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"development": "./src/index.ts",
|
|
11
|
+
"import": "./dist/index.esm.js",
|
|
12
|
+
"require": "./dist/index.cjs.js",
|
|
13
|
+
"default": "./dist/index.esm.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
8
16
|
"files": [
|
|
9
|
-
"dist/"
|
|
10
|
-
"dist/index.css"
|
|
17
|
+
"dist/"
|
|
11
18
|
],
|
|
12
19
|
"scripts": {
|
|
13
|
-
"build": "rollup -c",
|
|
14
|
-
"watch": "rm -rf dist && cross-env NODE_ENV=development rollup -c --watch"
|
|
20
|
+
"build": "npm run typecheck && rollup -c",
|
|
21
|
+
"watch": "rm -rf dist && cross-env NODE_ENV=development rollup -c --watch",
|
|
22
|
+
"typecheck": "tsc --noEmit"
|
|
15
23
|
},
|
|
16
24
|
"peerDependencies": {
|
|
17
25
|
"@emotion/react": "^11.14.0",
|
|
@@ -24,12 +32,12 @@
|
|
|
24
32
|
"@rollup/plugin-commonjs": "^28.0.6",
|
|
25
33
|
"@rollup/plugin-json": "^6.1.0",
|
|
26
34
|
"@rollup/plugin-node-resolve": "^15.3.0",
|
|
35
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
27
36
|
"@rollup/plugin-typescript": "^12.1.1",
|
|
28
37
|
"@types/react": "19.2.7",
|
|
29
38
|
"@types/react-dom": "19.2.3",
|
|
30
|
-
"rollup": "^4.
|
|
39
|
+
"rollup": "^4.55.1",
|
|
31
40
|
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
32
|
-
"rollup-plugin-polyfill-node": "^0.13.0",
|
|
33
41
|
"rollup-plugin-postcss": "^4.0.2",
|
|
34
42
|
"rollup-plugin-serve": "^1.1.1",
|
|
35
43
|
"tslib": "^2.8.1",
|
package/dist/index.cjs.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/context.tsx","../src/lib.ts","../src/search-by-chip.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from 'react';\n\ntype SearchByChipContextValue = {\n searchByChipTitle: ReactNode;\n sectionTitle: ReactNode;\n subtitle: ReactNode;\n onClickChip: (value: string) => void;\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n};\n\nconst SearchByChipContext = createContext<SearchByChipContextValue | undefined>(undefined);\n\nexport const SearchByChipProvider = ({\n children,\n ...value\n}: SearchByChipContextValue & {\n children: ReactNode;\n}) => {\n return <SearchByChipContext.Provider value={value}>{children}</SearchByChipContext.Provider>;\n};\n\nexport const useSearchByChipContext = () => {\n const context = useContext<SearchByChipContextValue | undefined>(SearchByChipContext);\n\n if (!context) {\n throw new Error('useSearchByChipContext must be used within a SearchByChipProvider');\n }\n return context;\n};\n","import { ComponentProps, createElement, FunctionComponent, ReactElement, ReactNode } from 'react';\n\n/**\n * The function to be passed into a block component as `children` to selectively override default blocks, or just a `ReactNode`.\n *\n * @example\n * <Block>\n * {({ defaultBlocks: { header, ...defaultBlocks }, defaultBlockOrder }) => ({\n * blocks: {\n * ...defaultBlocks,\n * header: {\n * ...header,\n * props: {\n * ...header.props,\n * label: \"Custom Label\"\n * }\n * },\n * subheader: <CustomComponent />\n * },\n * blockOrder: [\"header\", \"subheader\", \"body\", \"footer\"]\n * })}\n * </Block>\n */\nexport type BlocksOverride<DefaultBlocks, CustomBlocks> =\n | (({\n defaultBlocks,\n defaultBlockOrder,\n }: {\n defaultBlocks: DefaultBlocks;\n defaultBlockOrder: readonly (keyof DefaultBlocks)[];\n }) => {\n blocks: Partial<DefaultBlocks> & CustomBlocks;\n // NOTE: This specific combination allows proper autocomplete.\n blockOrder: readonly (keyof DefaultBlocks)[] | readonly (keyof CustomBlocks)[];\n })\n | ReactNode;\n\n/**\n * Creates a strongly typed `defaultBlocks` object, allowing for types to propagate into block override objects.\n *\n * @param components - A map of default block keys to component functions.\n *\n * @example\n * const defaultBlocks = createDefaultBlocks({\n * title: Title,\n * description: Description,\n * form: Form,\n * });\n */\nexport function createDefaultBlocks<T extends Record<string, FunctionComponent<any>>>(\n components: T\n): {\n [K in keyof T]: ReactElement<ComponentProps<T[K]>, T[K]>;\n} {\n return Object.fromEntries(\n Object.entries(components).map(([key, Component]) => [key, createElement(Component, { key })])\n ) as {\n [K in keyof T]: ReactElement<ComponentProps<T[K]>, T[K]>;\n };\n}\n\n/**\n * A component for rendering {@link BlocksOverride|`BlocksOverride`} results.\n * Exposes the evaluated `blocks` and `blockOrder` as arguments to the `children` function.\n *\n * @param props\n * @param props.blocksOverride - The {@link BlocksOverride|`BlocksOverride`} (i.e. `children` of outer component).\n * @param props.defaultBlocks - The default blocks of outer component.\n * @param props.children - A function returning the JSX to render.\n *\n * @example\n * <BlocksOverrideComponent\n * defaultBlocks={defaultFormBlocks}\n * blocksOverride={children}\n * >\n * {({ blocks, blockOrder }) =>\n * blockOrder.map((key) => (\n * <Fragment key={String(key)}>{blocks[key]}</Fragment>\n * ))\n * }\n * </BlocksOverrideComponent>\n */\nexport function BlocksOverrideComponent<\n DefaultBlocks extends Record<string, ReactNode>,\n CustomBlocks extends Record<string, ReactNode>,\n>({\n blocksOverride,\n defaultBlocks,\n defaultBlockOrder,\n children,\n}: {\n blocksOverride: BlocksOverride<DefaultBlocks, CustomBlocks>;\n defaultBlocks: DefaultBlocks;\n defaultBlockOrder: (keyof DefaultBlocks)[];\n children: ({\n blocks,\n blockOrder,\n }: {\n // TODO: Possibly find an alternative to Partial<CustomBlocks>\n blocks: Partial<DefaultBlocks> & Partial<CustomBlocks>;\n blockOrder: readonly (keyof DefaultBlocks | keyof CustomBlocks)[];\n }) => ReactNode;\n}) {\n if (blocksOverride === undefined) {\n return children({\n // TODO: Remove this assertion\n blocks: defaultBlocks as DefaultBlocks & Partial<CustomBlocks>,\n blockOrder: defaultBlockOrder,\n });\n }\n\n if (typeof blocksOverride === 'function') {\n const { blocks, blockOrder } = blocksOverride({\n defaultBlocks,\n defaultBlockOrder,\n });\n\n return children({ blocks, blockOrder });\n }\n\n return blocksOverride;\n}\n\ntype MergeTypes<Object1, Object2> = {\n [K in keyof Object1 | keyof Object2]: K extends keyof Object1\n ? Object1[K]\n : K extends keyof Object2\n ? Object2[K]\n : never;\n};\n\nexport function deepMerge<A extends Record<string, any>, B extends Record<string, any>>(obj1: A, obj2: B) {\n const result: Record<string, any> = { ...obj1 };\n\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n const val1 = result[key];\n const val2 = obj2[key];\n\n if (Array.isArray(val1) || Array.isArray(val2)) {\n // If either is an array, replace entirely with obj2's value\n result[key] = val2;\n } else if (typeof val1 === 'object' && val1 !== null && typeof val2 === 'object' && val2 !== null) {\n result[key] = deepMerge(val1, val2);\n } else {\n result[key] = val2;\n }\n }\n }\n\n return result as MergeTypes<B, A>;\n}\n\ntype ClassName = string | ClassName[] | undefined | null;\n\n/**\n * Utility function to join class names together, ignoring undefined or nil values.\n * @param classes - The class names to join.\n * @returns The joined class names.\n */\nexport function classNames(...classes: ClassName[]): string {\n return classes.flat().filter(Boolean).join(' ');\n}\n","import { Box, Button, Stack, SvgIcon, Typography } from '@mui/material';\nimport React, { ComponentProps, Fragment, ReactNode } from 'react';\nimport { SearchByChipProvider, useSearchByChipContext } from './context';\nimport { BlocksOverride, BlocksOverrideComponent, classNames, createDefaultBlocks, deepMerge } from './lib';\n\nconst SearchByChip = <CustomBlocks extends Record<string, ReactNode> = {}>({\n searchByChipTitle,\n sectionTitle,\n subtitle,\n onClickChip,\n chips,\n className,\n children,\n ...props\n}: Omit<ComponentProps<typeof Stack>, 'children'> & {\n searchByChipTitle: ReactNode;\n sectionTitle: ReactNode;\n subtitle: ReactNode;\n onClickChip: (value: string) => void;\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n children?: BlocksOverride<typeof defaultBlocks, CustomBlocks>;\n}) => {\n const { sx: sxProp, ...restProps } = props;\n\n return (\n <Stack\n className={classNames('nbb-search-by-chip', className)}\n sx={[\n {\n p: 2,\n gap: 0.5,\n bgcolor: 'background.paper',\n textAlign: 'center',\n containerType: 'inline-size',\n },\n ...(Array.isArray(sxProp) ? sxProp : [sxProp]),\n ]}\n {...restProps}\n >\n <SearchByChipProvider\n {...{\n searchByChipTitle,\n sectionTitle,\n subtitle,\n onClickChip,\n chips,\n }}\n >\n <BlocksOverrideComponent\n defaultBlocks={defaultBlocks}\n defaultBlockOrder={Object.keys(defaultBlocks) as (keyof typeof defaultBlocks)[]}\n blocksOverride={children}\n >\n {({ blocks: { chipIcon, chipItem, sectionTitle, ...blocks }, blockOrder }) =>\n blockOrder\n .filter((key) => key in blocks)\n .map<ReactNode>((key) => <Fragment key={String(key)}>{blocks[key]}</Fragment>)\n }\n </BlocksOverrideComponent>\n </SearchByChipProvider>\n </Stack>\n );\n};\n\nSearchByChip.Title = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { searchByChipTitle } = deepMerge(useSearchByChipContext(), props);\n const { component = 'h1', variant = 'h4', children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-title', className)}\n {...restProps}\n >\n {children || searchByChipTitle}\n </Typography>\n );\n};\n\nSearchByChip.Subtitle = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { subtitle } = deepMerge(useSearchByChipContext(), props);\n const { component = 'h6', variant = 'h6', sx = [], children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-subtitle', className)}\n sx={[{ color: 'primary.main' }, ...(Array.isArray(sx) ? sx : [sx])]}\n {...restProps}\n >\n {children || subtitle}\n </Typography>\n );\n};\n\nSearchByChip.SectionTitle = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { sectionTitle } = deepMerge(useSearchByChipContext(), props);\n const { variant = 'body1', component = 'h6', sx = [], children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-section-title', className)}\n sx={[\n (theme) => ({\n px: 2,\n py: 1.875,\n fontWeight: theme.typography.h6.fontWeight,\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...restProps}\n >\n {children || sectionTitle}\n </Typography>\n );\n};\n\nSearchByChip.ChipItem = ({\n onClickChip,\n value,\n label,\n className,\n startIcon = <SearchByChip.ChipIcon />,\n sx = [],\n ...props\n}: Omit<ComponentProps<typeof Button>, 'children'> & {\n onClickChip: (value: string) => void;\n value: string;\n label: ReactNode;\n}) => (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => onClickChip(value)}\n className={classNames('nbb-search-by-chip-item', className)}\n // NOTE: since the user can pass whatever startIcon, it can handle clicks separately from the button\n startIcon={startIcon}\n sx={[\n (theme) => ({\n '&&': {\n fontWeight: theme.typography.fontWeightLight,\n py: '7px',\n px: 2,\n borderColor: 'grey.50',\n bgcolor: 'background.paper',\n },\n '&:hover': {\n boxShadow: '0 2px 6px rgba(0, 0, 0, 0.1)',\n },\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...props}\n >\n {label}\n </Button>\n);\n\nSearchByChip.ChipIcon = () => (\n <SvgIcon\n className=\"nbb-search-by-chip-icon\"\n viewBox=\"0 0 16 16\"\n sx={{ width: 16, height: 16, color: 'primary.main' }}\n >\n <path\n d=\"M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n);\n\nSearchByChip.ChipSection = (\n props: Partial<\n ComponentProps<typeof Stack> & {\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n sectionTitle: ReactNode;\n }\n >\n) => {\n const { chips, sectionTitle, onClickChip } = deepMerge(useSearchByChipContext(), props);\n\n const { children, className, chips: _chips, sectionTitle: _sectionTitle, ...restProps } = props;\n\n return (\n <Stack className={classNames('nbb-search-by-chip-chip-section', className)} {...restProps}>\n {children || (\n <>\n <SearchByChip.SectionTitle>{sectionTitle}</SearchByChip.SectionTitle>\n <Box\n className=\"nbb-search-by-chip-items\"\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 1,\n justifyContent: { '@sm': 'center', '@': 'flex-start' },\n px: 2,\n py: 1.5,\n }}\n >\n {chips?.map((item, i) => (\n <SearchByChip.ChipItem\n key={i}\n onClickChip={onClickChip}\n value={item.value}\n label={item.label}\n {...(item.icon && { startIcon: item.icon })}\n />\n ))}\n </Box>\n </>\n )}\n </Stack>\n );\n};\n\nconst defaultBlocks = createDefaultBlocks({\n subtitle: SearchByChip.Subtitle,\n title: SearchByChip.Title,\n sectionTitle: SearchByChip.SectionTitle,\n chipIcon: SearchByChip.ChipIcon,\n chipItem: SearchByChip.ChipItem,\n chipSection: SearchByChip.ChipSection,\n});\n\nexport default SearchByChip;\n"],"names":["createContext","_jsx","useContext","createElement","Stack","Fragment","Typography","Button","SvgIcon","_jsxs","_Fragment","Box"],"mappings":"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"}
|
package/dist/index.esm.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/context.tsx","../src/lib.ts","../src/search-by-chip.tsx"],"sourcesContent":["import { createContext, ReactNode, useContext } from 'react';\n\ntype SearchByChipContextValue = {\n searchByChipTitle: ReactNode;\n sectionTitle: ReactNode;\n subtitle: ReactNode;\n onClickChip: (value: string) => void;\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n};\n\nconst SearchByChipContext = createContext<SearchByChipContextValue | undefined>(undefined);\n\nexport const SearchByChipProvider = ({\n children,\n ...value\n}: SearchByChipContextValue & {\n children: ReactNode;\n}) => {\n return <SearchByChipContext.Provider value={value}>{children}</SearchByChipContext.Provider>;\n};\n\nexport const useSearchByChipContext = () => {\n const context = useContext<SearchByChipContextValue | undefined>(SearchByChipContext);\n\n if (!context) {\n throw new Error('useSearchByChipContext must be used within a SearchByChipProvider');\n }\n return context;\n};\n","import { ComponentProps, createElement, FunctionComponent, ReactElement, ReactNode } from 'react';\n\n/**\n * The function to be passed into a block component as `children` to selectively override default blocks, or just a `ReactNode`.\n *\n * @example\n * <Block>\n * {({ defaultBlocks: { header, ...defaultBlocks }, defaultBlockOrder }) => ({\n * blocks: {\n * ...defaultBlocks,\n * header: {\n * ...header,\n * props: {\n * ...header.props,\n * label: \"Custom Label\"\n * }\n * },\n * subheader: <CustomComponent />\n * },\n * blockOrder: [\"header\", \"subheader\", \"body\", \"footer\"]\n * })}\n * </Block>\n */\nexport type BlocksOverride<DefaultBlocks, CustomBlocks> =\n | (({\n defaultBlocks,\n defaultBlockOrder,\n }: {\n defaultBlocks: DefaultBlocks;\n defaultBlockOrder: readonly (keyof DefaultBlocks)[];\n }) => {\n blocks: Partial<DefaultBlocks> & CustomBlocks;\n // NOTE: This specific combination allows proper autocomplete.\n blockOrder: readonly (keyof DefaultBlocks)[] | readonly (keyof CustomBlocks)[];\n })\n | ReactNode;\n\n/**\n * Creates a strongly typed `defaultBlocks` object, allowing for types to propagate into block override objects.\n *\n * @param components - A map of default block keys to component functions.\n *\n * @example\n * const defaultBlocks = createDefaultBlocks({\n * title: Title,\n * description: Description,\n * form: Form,\n * });\n */\nexport function createDefaultBlocks<T extends Record<string, FunctionComponent<any>>>(\n components: T\n): {\n [K in keyof T]: ReactElement<ComponentProps<T[K]>, T[K]>;\n} {\n return Object.fromEntries(\n Object.entries(components).map(([key, Component]) => [key, createElement(Component, { key })])\n ) as {\n [K in keyof T]: ReactElement<ComponentProps<T[K]>, T[K]>;\n };\n}\n\n/**\n * A component for rendering {@link BlocksOverride|`BlocksOverride`} results.\n * Exposes the evaluated `blocks` and `blockOrder` as arguments to the `children` function.\n *\n * @param props\n * @param props.blocksOverride - The {@link BlocksOverride|`BlocksOverride`} (i.e. `children` of outer component).\n * @param props.defaultBlocks - The default blocks of outer component.\n * @param props.children - A function returning the JSX to render.\n *\n * @example\n * <BlocksOverrideComponent\n * defaultBlocks={defaultFormBlocks}\n * blocksOverride={children}\n * >\n * {({ blocks, blockOrder }) =>\n * blockOrder.map((key) => (\n * <Fragment key={String(key)}>{blocks[key]}</Fragment>\n * ))\n * }\n * </BlocksOverrideComponent>\n */\nexport function BlocksOverrideComponent<\n DefaultBlocks extends Record<string, ReactNode>,\n CustomBlocks extends Record<string, ReactNode>,\n>({\n blocksOverride,\n defaultBlocks,\n defaultBlockOrder,\n children,\n}: {\n blocksOverride: BlocksOverride<DefaultBlocks, CustomBlocks>;\n defaultBlocks: DefaultBlocks;\n defaultBlockOrder: (keyof DefaultBlocks)[];\n children: ({\n blocks,\n blockOrder,\n }: {\n // TODO: Possibly find an alternative to Partial<CustomBlocks>\n blocks: Partial<DefaultBlocks> & Partial<CustomBlocks>;\n blockOrder: readonly (keyof DefaultBlocks | keyof CustomBlocks)[];\n }) => ReactNode;\n}) {\n if (blocksOverride === undefined) {\n return children({\n // TODO: Remove this assertion\n blocks: defaultBlocks as DefaultBlocks & Partial<CustomBlocks>,\n blockOrder: defaultBlockOrder,\n });\n }\n\n if (typeof blocksOverride === 'function') {\n const { blocks, blockOrder } = blocksOverride({\n defaultBlocks,\n defaultBlockOrder,\n });\n\n return children({ blocks, blockOrder });\n }\n\n return blocksOverride;\n}\n\ntype MergeTypes<Object1, Object2> = {\n [K in keyof Object1 | keyof Object2]: K extends keyof Object1\n ? Object1[K]\n : K extends keyof Object2\n ? Object2[K]\n : never;\n};\n\nexport function deepMerge<A extends Record<string, any>, B extends Record<string, any>>(obj1: A, obj2: B) {\n const result: Record<string, any> = { ...obj1 };\n\n for (const key in obj2) {\n if (obj2.hasOwnProperty(key)) {\n const val1 = result[key];\n const val2 = obj2[key];\n\n if (Array.isArray(val1) || Array.isArray(val2)) {\n // If either is an array, replace entirely with obj2's value\n result[key] = val2;\n } else if (typeof val1 === 'object' && val1 !== null && typeof val2 === 'object' && val2 !== null) {\n result[key] = deepMerge(val1, val2);\n } else {\n result[key] = val2;\n }\n }\n }\n\n return result as MergeTypes<B, A>;\n}\n\ntype ClassName = string | ClassName[] | undefined | null;\n\n/**\n * Utility function to join class names together, ignoring undefined or nil values.\n * @param classes - The class names to join.\n * @returns The joined class names.\n */\nexport function classNames(...classes: ClassName[]): string {\n return classes.flat().filter(Boolean).join(' ');\n}\n","import { Box, Button, Stack, SvgIcon, Typography } from '@mui/material';\nimport React, { ComponentProps, Fragment, ReactNode } from 'react';\nimport { SearchByChipProvider, useSearchByChipContext } from './context';\nimport { BlocksOverride, BlocksOverrideComponent, classNames, createDefaultBlocks, deepMerge } from './lib';\n\nconst SearchByChip = <CustomBlocks extends Record<string, ReactNode> = {}>({\n searchByChipTitle,\n sectionTitle,\n subtitle,\n onClickChip,\n chips,\n className,\n children,\n ...props\n}: Omit<ComponentProps<typeof Stack>, 'children'> & {\n searchByChipTitle: ReactNode;\n sectionTitle: ReactNode;\n subtitle: ReactNode;\n onClickChip: (value: string) => void;\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n children?: BlocksOverride<typeof defaultBlocks, CustomBlocks>;\n}) => {\n const { sx: sxProp, ...restProps } = props;\n\n return (\n <Stack\n className={classNames('nbb-search-by-chip', className)}\n sx={[\n {\n p: 2,\n gap: 0.5,\n bgcolor: 'background.paper',\n textAlign: 'center',\n containerType: 'inline-size',\n },\n ...(Array.isArray(sxProp) ? sxProp : [sxProp]),\n ]}\n {...restProps}\n >\n <SearchByChipProvider\n {...{\n searchByChipTitle,\n sectionTitle,\n subtitle,\n onClickChip,\n chips,\n }}\n >\n <BlocksOverrideComponent\n defaultBlocks={defaultBlocks}\n defaultBlockOrder={Object.keys(defaultBlocks) as (keyof typeof defaultBlocks)[]}\n blocksOverride={children}\n >\n {({ blocks: { chipIcon, chipItem, sectionTitle, ...blocks }, blockOrder }) =>\n blockOrder\n .filter((key) => key in blocks)\n .map<ReactNode>((key) => <Fragment key={String(key)}>{blocks[key]}</Fragment>)\n }\n </BlocksOverrideComponent>\n </SearchByChipProvider>\n </Stack>\n );\n};\n\nSearchByChip.Title = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { searchByChipTitle } = deepMerge(useSearchByChipContext(), props);\n const { component = 'h1', variant = 'h4', children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-title', className)}\n {...restProps}\n >\n {children || searchByChipTitle}\n </Typography>\n );\n};\n\nSearchByChip.Subtitle = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { subtitle } = deepMerge(useSearchByChipContext(), props);\n const { component = 'h6', variant = 'h6', sx = [], children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-subtitle', className)}\n sx={[{ color: 'primary.main' }, ...(Array.isArray(sx) ? sx : [sx])]}\n {...restProps}\n >\n {children || subtitle}\n </Typography>\n );\n};\n\nSearchByChip.SectionTitle = (props: Partial<ComponentProps<typeof Typography>> & { component?: React.ElementType }) => {\n const { sectionTitle } = deepMerge(useSearchByChipContext(), props);\n const { variant = 'body1', component = 'h6', sx = [], children, className, ...restProps } = props;\n\n return (\n <Typography\n variant={variant}\n component={component}\n className={classNames('nbb-search-by-chip-section-title', className)}\n sx={[\n (theme) => ({\n px: 2,\n py: 1.875,\n fontWeight: theme.typography.h6.fontWeight,\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...restProps}\n >\n {children || sectionTitle}\n </Typography>\n );\n};\n\nSearchByChip.ChipItem = ({\n onClickChip,\n value,\n label,\n className,\n startIcon = <SearchByChip.ChipIcon />,\n sx = [],\n ...props\n}: Omit<ComponentProps<typeof Button>, 'children'> & {\n onClickChip: (value: string) => void;\n value: string;\n label: ReactNode;\n}) => (\n <Button\n variant=\"outlined\"\n size=\"small\"\n onClick={() => onClickChip(value)}\n className={classNames('nbb-search-by-chip-item', className)}\n // NOTE: since the user can pass whatever startIcon, it can handle clicks separately from the button\n startIcon={startIcon}\n sx={[\n (theme) => ({\n '&&': {\n fontWeight: theme.typography.fontWeightLight,\n py: '7px',\n px: 2,\n borderColor: 'grey.50',\n bgcolor: 'background.paper',\n },\n '&:hover': {\n boxShadow: '0 2px 6px rgba(0, 0, 0, 0.1)',\n },\n }),\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...props}\n >\n {label}\n </Button>\n);\n\nSearchByChip.ChipIcon = () => (\n <SvgIcon\n className=\"nbb-search-by-chip-icon\"\n viewBox=\"0 0 16 16\"\n sx={{ width: 16, height: 16, color: 'primary.main' }}\n >\n <path\n d=\"M5.86339 10.5831L3.08339 7.80312L2.13672 8.74312L5.86339 12.4698L13.8634 4.46979L12.9234 3.52979L5.86339 10.5831Z\"\n fill=\"currentColor\"\n />\n </SvgIcon>\n);\n\nSearchByChip.ChipSection = (\n props: Partial<\n ComponentProps<typeof Stack> & {\n chips: {\n value: string;\n label: string;\n icon?: ReactNode;\n }[];\n sectionTitle: ReactNode;\n }\n >\n) => {\n const { chips, sectionTitle, onClickChip } = deepMerge(useSearchByChipContext(), props);\n\n const { children, className, chips: _chips, sectionTitle: _sectionTitle, ...restProps } = props;\n\n return (\n <Stack className={classNames('nbb-search-by-chip-chip-section', className)} {...restProps}>\n {children || (\n <>\n <SearchByChip.SectionTitle>{sectionTitle}</SearchByChip.SectionTitle>\n <Box\n className=\"nbb-search-by-chip-items\"\n sx={{\n display: 'flex',\n flexWrap: 'wrap',\n gap: 1,\n justifyContent: { '@sm': 'center', '@': 'flex-start' },\n px: 2,\n py: 1.5,\n }}\n >\n {chips?.map((item, i) => (\n <SearchByChip.ChipItem\n key={i}\n onClickChip={onClickChip}\n value={item.value}\n label={item.label}\n {...(item.icon && { startIcon: item.icon })}\n />\n ))}\n </Box>\n </>\n )}\n </Stack>\n );\n};\n\nconst defaultBlocks = createDefaultBlocks({\n subtitle: SearchByChip.Subtitle,\n title: SearchByChip.Title,\n sectionTitle: SearchByChip.SectionTitle,\n chipIcon: SearchByChip.ChipIcon,\n chipItem: SearchByChip.ChipItem,\n chipSection: SearchByChip.ChipSection,\n});\n\nexport default SearchByChip;\n"],"names":["_jsx","_jsxs","_Fragment"],"mappings":"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"}
|