@indxsearch/systm 2.1.0 → 2.3.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/CHANGELOG.md +37 -0
- package/README.md +14 -1
- package/dist/components/Button/Button.d.ts +1 -1
- package/dist/components/Chart/Chart.d.ts +15 -0
- package/dist/components/Checkbox/Checkbox.d.ts +1 -1
- package/dist/components/Chip/Chip.d.ts +11 -2
- package/dist/components/DatePicker/DatePicker.d.ts +14 -0
- package/dist/components/InputField/InputField.d.ts +1 -1
- package/dist/components/Modal/Modal.d.ts +14 -0
- package/dist/components/Popover/Popover.d.ts +1 -1
- package/dist/components/RadioButton/RadioButton.d.ts +1 -1
- package/dist/components/SearchField/SearchField.d.ts +1 -1
- package/dist/components/Select/Select.d.ts +4 -1
- package/dist/components/Slider/Slider.d.ts +1 -1
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Table/TableCell.d.ts +1 -1
- package/dist/components/Table/TableHeader.d.ts +1 -1
- package/dist/components/Table/TableIcon.d.ts +1 -1
- package/dist/components/Table/TableRow.d.ts +1 -1
- package/dist/components/Table/TableValue.d.ts +1 -1
- package/dist/components/Textarea/Textarea.d.ts +8 -0
- package/dist/components/ToggleSwitch/ToggleSwitch.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +8 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.es.js +1149 -7938
- package/dist/systm.css +2 -1
- package/package.json +18 -10
- package/dist/index.umd.js +0 -102
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to @indxsearch/systm will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [2.3.0] - 2026-06-18
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- `Select`: `SelectOption` gains an optional `icon` (`React.ReactNode`), rendered
|
|
12
|
+
in both the trigger (selected value) and the menu items. Backward-compatible —
|
|
13
|
+
existing options without an icon are unchanged.
|
|
14
|
+
|
|
15
|
+
### Compatibility
|
|
16
|
+
- React ^19.0.0 · additive, no breaking changes. Keeps parity with the
|
|
17
|
+
`Indx.Systm.Blazor` `SelectField` (per-option `Icon`).
|
|
18
|
+
|
|
19
|
+
## [2.2.0] - 2026-06-17
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- `Chip`: optional leading `icon` and a `size` variant (`default` | `large`) so
|
|
23
|
+
icon chips have room to breathe.
|
|
24
|
+
|
|
25
|
+
### Compatibility
|
|
26
|
+
- React ^19.0.0 · stable release, no breaking changes. Not cloud-bound — usable
|
|
27
|
+
independently of the IndxCloudApi version.
|
|
28
|
+
|
|
29
|
+
## [2.0.0] - 2026-05-12
|
|
30
|
+
|
|
31
|
+
### Changed
|
|
32
|
+
- Version bump to align with the indx-react monorepo v5 release
|
|
33
|
+
- No breaking changes to components or CSS API
|
|
34
|
+
|
|
35
|
+
### Compatibility
|
|
36
|
+
- React ^19.0.0
|
|
37
|
+
- React DOM ^19.0.0
|
package/README.md
CHANGED
|
@@ -32,18 +32,27 @@ function App() {
|
|
|
32
32
|
- **Button** - Customizable button with variants
|
|
33
33
|
- **Checkbox** - Checkbox input component
|
|
34
34
|
- **InputField** - Text input field
|
|
35
|
+
- **Textarea** - Multi-line text input
|
|
35
36
|
- **RadioButton** - Radio button input
|
|
36
37
|
- **SearchField** - Search input with icon
|
|
37
38
|
- **Select** - Radix UI select dropdown
|
|
38
39
|
- **Slider** - Range slider component
|
|
39
40
|
- **ToggleSwitch** - Toggle switch input
|
|
41
|
+
- **DatePicker** - Single-date calendar picker in a popover
|
|
40
42
|
- **Popover** - Radix UI popover component
|
|
43
|
+
- **Modal** - Accessible dialog (Radix) with overlay, title, and close
|
|
44
|
+
- **Table** - Composable table (TableHeader, TableRow, TableCell, TableValue, TableIcon)
|
|
45
|
+
- **Tabs** - Tab list for switching between views
|
|
46
|
+
- **ProgressBar** - Progress indicator with optional label
|
|
47
|
+
- **Chip** - Compact label/tag with custom colors
|
|
48
|
+
- **Tooltip** - Radix UI tooltip with positioning
|
|
49
|
+
- **Chart** - Line and bar chart component
|
|
41
50
|
- **Base** - Base container component
|
|
42
51
|
- **FilterPanelBase** - Filter panel container
|
|
43
52
|
|
|
44
53
|
## Custom Cursors (Optional)
|
|
45
54
|
|
|
46
|
-
Systm includes an optional custom cursor system with
|
|
55
|
+
Systm includes an optional custom cursor system with 12 cursor utilities. Import the cursors stylesheet to enable:
|
|
47
56
|
|
|
48
57
|
```tsx
|
|
49
58
|
import '@indxsearch/systm/styles.css';
|
|
@@ -72,6 +81,7 @@ Systm includes SVG patterns as CSS custom properties, automatically bundled in `
|
|
|
72
81
|
|
|
73
82
|
```tsx
|
|
74
83
|
import '@indxsearch/systm/styles.css'; // Patterns included by default
|
|
84
|
+
import '@indxsearch/systm/patterns.css'; // Or import patterns standalone
|
|
75
85
|
```
|
|
76
86
|
|
|
77
87
|
**Available patterns:**
|
|
@@ -102,7 +112,10 @@ import '@indxsearch/systm/styles.css'; // Patterns included by default
|
|
|
102
112
|
## Dependencies
|
|
103
113
|
|
|
104
114
|
- `@indxsearch/pixl` - Icon library
|
|
115
|
+
- `@radix-ui/react-dialog` - Modal/dialog primitives
|
|
116
|
+
- `@radix-ui/react-popover` - Popover component primitives
|
|
105
117
|
- `@radix-ui/react-select` - Select component primitives
|
|
118
|
+
- `@radix-ui/react-tooltip` - Tooltip component primitives
|
|
106
119
|
- `react-range` - Range slider component
|
|
107
120
|
|
|
108
121
|
## Peer Dependencies
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ChartSeries {
|
|
2
|
+
label: string;
|
|
3
|
+
data: number[];
|
|
4
|
+
color?: string;
|
|
5
|
+
hoverColor?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ChartProps {
|
|
8
|
+
series: ChartSeries[];
|
|
9
|
+
labels?: string[];
|
|
10
|
+
type?: 'line' | 'bar';
|
|
11
|
+
height?: number;
|
|
12
|
+
showLegend?: boolean;
|
|
13
|
+
className?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function Chart({ series, labels, type, height, showLegend, className, }: ChartProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface IconProps {
|
|
3
|
+
size?: string | number;
|
|
4
|
+
color?: string;
|
|
5
|
+
}
|
|
2
6
|
export interface ChipProps {
|
|
3
7
|
children: React.ReactNode;
|
|
4
8
|
color?: string;
|
|
5
9
|
textColor?: string;
|
|
6
10
|
className?: string;
|
|
11
|
+
/** Optional leading icon. Sized and coloured to match the chip text. */
|
|
12
|
+
icon?: React.ReactElement<IconProps>;
|
|
13
|
+
/** `large` is a taller, more-padded badge that suits a leading icon. */
|
|
14
|
+
size?: 'default' | 'large';
|
|
7
15
|
}
|
|
8
|
-
export declare function Chip({ children, color, textColor, className }: ChipProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function Chip({ children, color, textColor, className, icon, size }: ChipProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface DatePickerProps {
|
|
3
|
+
value?: Date | null;
|
|
4
|
+
onChange?: (date: Date) => void;
|
|
5
|
+
label?: string;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
isValid?: boolean;
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Format the selected date shown in the trigger. Default: ISO yyyy-mm-dd. */
|
|
12
|
+
formatDate?: (date: Date) => string;
|
|
13
|
+
}
|
|
14
|
+
export declare const DatePicker: React.FC<DatePickerProps>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ModalProps {
|
|
3
|
+
/** Optional element that opens the modal. Omit when controlling via `open`. */
|
|
4
|
+
trigger?: React.ReactNode;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
open?: boolean;
|
|
7
|
+
onOpenChange?: (open: boolean) => void;
|
|
8
|
+
title?: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
/** Show the top-right close button (default true). */
|
|
12
|
+
showClose?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const Modal: React.FC<ModalProps>;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import { default as React } from 'react';
|
|
2
2
|
export interface SelectOption {
|
|
3
3
|
label: string;
|
|
4
4
|
value: string;
|
|
5
|
+
/** Optional leading icon, rendered in the trigger and the menu item. */
|
|
6
|
+
icon?: React.ReactNode;
|
|
5
7
|
}
|
|
6
8
|
export interface SelectProps {
|
|
7
9
|
value: string;
|
|
@@ -11,6 +13,7 @@ export interface SelectProps {
|
|
|
11
13
|
className?: string;
|
|
12
14
|
disabled?: boolean;
|
|
13
15
|
label?: string;
|
|
16
|
+
size?: 'micro' | 'default' | 'large';
|
|
14
17
|
'aria-label'?: string;
|
|
15
18
|
id?: string;
|
|
16
19
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
|
|
3
|
+
label?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
isValid?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function Textarea({ label, error, className, isValid, id: providedId, rows, ...props }: TextareaProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
+
export type TooltipProps = {
|
|
3
|
+
content: string;
|
|
4
|
+
position?: TooltipPosition;
|
|
5
|
+
children: React.ReactElement;
|
|
6
|
+
className?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function Tooltip({ content, position, children, className }: TooltipProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require("react");c=s(c,1);let l=require("react/jsx-runtime"),u=require("@indxsearch/pixl"),d=require("react-range"),f=require("@radix-ui/react-select");f=s(f,1);let p=require("@radix-ui/react-popover");p=s(p,1);let m=require("@radix-ui/react-tooltip");m=s(m,1);let h=require("@radix-ui/react-dialog");h=s(h,1);var g={button:`_button_1sns4_1`,micro:`_micro_1sns4_22`,default:`_default_1sns4_30`,large:`_large_1sns4_38`,primary:`_primary_1sns4_47`,secondary:`_secondary_1sns4_57`,ghost:`_ghost_1sns4_67`};function _(e){let{size:t=`default`,variant:n=`primary`,iconLeft:r,iconRight:i,className:a,children:o,...s}=e,{href:u}=s,d=`disabled`in s?s.disabled:!1,f=t===`micro`?`14px`:t===`large`?`21px`:`14px`,p=[g.button,g[t],g[n],d?`cursor-not-allowed`:`cursor-pointer`,a].filter(Boolean).join(` `);if(process.env.NODE_ENV!==`production`){let e=(r||i)&&!o,t=s[`aria-label`]||s[`aria-labelledby`];e&&!t&&console.warn(`Button: Icon-only buttons should have an aria-label or aria-labelledby for accessibility.`)}let m=(0,l.jsxs)(l.Fragment,{children:[r&&c.default.cloneElement(r,{size:f,color:`currentColor`}),o,i&&c.default.cloneElement(i,{size:f,color:`currentColor`})]});if(u){let{type:e,disabled:t,...n}=s;return(0,l.jsx)(`a`,{className:p,href:u,...n,"aria-disabled":d?`true`:void 0,onClick:d?e=>e.preventDefault():n.onClick,children:m})}let{type:h=`button`,..._}=s;return(0,l.jsx)(`button`,{className:p,type:h,..._,children:m})}var v={checkboxWrapper:`_checkboxWrapper_1vygn_1`,checkbox:`_checkbox_1vygn_1`,label:`_label_1vygn_44`,score:`_score_1vygn_48`,disabled:`_disabled_1vygn_55`},y=({label:e,score:t,className:n=``,id:r,"aria-label":i,...a})=>{let o=c.default.useId(),s=r||o,u=t?`${s}-score`:void 0,d=a.disabled;return e||t?(0,l.jsxs)(`label`,{htmlFor:s,className:`${v.checkboxWrapper} ${n} ${d?v.disabled:``} ${d?`cursor-not-allowed`:`cursor-pointer`}`,children:[(0,l.jsx)(`input`,{id:s,type:`checkbox`,className:v.checkbox,"aria-describedby":u,"aria-label":i,...a}),e&&(0,l.jsx)(`span`,{className:v.label,children:e}),t&&(0,l.jsx)(`span`,{id:u,className:v.score,children:t})]}):(0,l.jsx)(`input`,{id:s,type:`checkbox`,className:`${v.checkbox} ${n}`,"aria-label":i,disabled:d,...a})},b={container:`_container_dlzj1_1`,default:`_default_dlzj1_5`};function x({children:e,className:t}){return(0,l.jsx)(`div`,{className:`${b.container} ${b.default} ${t||``}`,children:e})}var S={container:`_container_10bfq_1`,header:`_header_10bfq_11`,title:`_title_10bfq_31`,toggleButton:`_toggleButton_10bfq_38`,body:`_body_10bfq_49`};function C({title:e,children:t,className:n=``,collapsible:r=!0,collapsed:i=!1}){let[a,o]=(0,c.useState)(()=>!i),s=c.default.useId();return(0,c.useEffect)(()=>{r&&o(!i)},[i,r]),(0,l.jsxs)(`div`,{className:`${S.container} ${n}`,children:[e&&(r?(0,l.jsxs)(`button`,{type:`button`,className:S.header,onClick:()=>{r&&o(e=>!e)},"aria-label":`${e}: ${a?`Collapse panel`:`Expand panel`}`,"aria-expanded":a,"aria-controls":s,children:[(0,l.jsx)(`div`,{className:S.title,children:e}),(0,l.jsx)(`span`,{"aria-hidden":`true`,children:a?(0,l.jsx)(u.Minus,{color:`var(--lv5)`,size:14}):(0,l.jsx)(u.Plus,{color:`var(--lv5)`,size:14})})]}):(0,l.jsx)(`div`,{className:S.header,children:(0,l.jsx)(`div`,{className:S.title,children:e})})),(!r||a)&&(0,l.jsx)(`div`,{id:s,className:S.body,role:`region`,"aria-label":e||`Filter panel content`,children:t})]})}var w={wrapper:`_wrapper_tf1yl_1`,label:`_label_tf1yl_7`,inputContainer:`_inputContainer_tf1yl_12`,input:`_input_tf1yl_12`,focus:`_focus_tf1yl_35`,searchIcon:`_searchIcon_tf1yl_52`,rightContent:`_rightContent_tf1yl_67`,sizeMicro:`_sizeMicro_tf1yl_78`,sizeDefault:`_sizeDefault_tf1yl_87`,error:`_error_tf1yl_110`,errorText:`_errorText_tf1yl_114`},T={micro:14,default:21};function E({label:e,error:t,className:n=``,showSearchIcon:r=!0,searchIcon:i,searchIconColor:a,inputSize:o=`default`,showFocusBorder:s=!1,children:d,id:f,type:p=`search`,...m}){let h=(0,c.useRef)(null),g=c.default.useId(),_=f||g,v=`${_}-error`,y=T[o],b={};a&&(b[`--search-icon-color`]=a);let x=i??(0,l.jsx)(u.Search,{}),S=o===`micro`?w.sizeMicro:w.sizeDefault;return(0,l.jsxs)(`div`,{className:`${w.wrapper} ${n}`,children:[e&&(0,l.jsx)(`label`,{htmlFor:_,className:w.label,children:e}),(0,l.jsxs)(`div`,{className:`${w.inputContainer} ${S}`,children:[r&&(0,l.jsx)(`span`,{className:w.searchIcon,"aria-hidden":`true`,children:c.default.cloneElement(x,{size:y,color:a??`var(--search-icon-color)`})}),(0,l.jsx)(`input`,{ref:h,id:_,type:p,className:`${w.input} ${s?w.focus:``} ${t?w.error:``}`,style:b,"aria-invalid":t?`true`:`false`,"aria-describedby":t?v:void 0,...m}),d&&(0,l.jsx)(`div`,{className:w.rightContent,children:d})]}),t&&(0,l.jsx)(`span`,{id:v,className:w.errorText,role:`alert`,children:t})]})}var D={wrapper:`_wrapper_su5p5_1`,label:`_label_su5p5_7`,input:`_input_su5p5_12`,error:`_error_su5p5_61`,errorText:`_errorText_su5p5_69`,borderBottom:`_borderBottom_su5p5_75`};function O({label:e,error:t,className:n=``,isValid:r=!0,variant:i=`default`,id:a,...o}){let s=c.default.useId(),u=a||s,d=`${u}-error`,f=t||!r;return(0,l.jsxs)(`div`,{className:`${D.wrapper} ${n}`,children:[e&&(0,l.jsxs)(`label`,{htmlFor:u,className:D.label,children:[e,o.required&&(0,l.jsx)(`span`,{"aria-label":`required`,children:` *`})]}),(0,l.jsx)(`input`,{id:u,className:`${D.input} ${i===`borderBottom`?D.borderBottom:``} ${f?D.error:``}`,"aria-invalid":f?`true`:`false`,"aria-describedby":t?d:void 0,...o}),t&&(0,l.jsx)(`span`,{id:d,className:D.errorText,role:`alert`,children:t})]})}var k={radioWrapper:`_radioWrapper_1faq0_1`,radioInput:`_radioInput_1faq0_9`,customRadio:`_customRadio_1faq0_23`,labelText:`_labelText_1faq0_57`,disabled:`_disabled_1faq0_63`},A=({id:e,name:t,value:n,label:r,checked:i=!1,onChange:a,disabled:o=!1,"aria-label":s})=>(0,l.jsxs)(`label`,{htmlFor:e,className:`${k.radioWrapper} ${o?k.disabled:``} ${o?`cursor-not-allowed`:`cursor-pointer`}`,children:[(0,l.jsx)(`input`,{id:e,type:`radio`,name:t,value:n,checked:i,onChange:a,disabled:o,"aria-label":s,className:k.radioInput}),(0,l.jsx)(`span`,{className:k.customRadio}),(0,l.jsx)(`span`,{className:k.labelText,children:r})]}),j={switch:`_switch_1xsea_1`,slider:`_slider_1xsea_23`,label:`_label_1xsea_28`,disabled:`_disabled_1xsea_43`},M=({id:e,checked:t,onChange:n,disabled:r=!1,label:i,"aria-label":a})=>{let o=c.default.useId(),s=e||o;return(0,l.jsxs)(`label`,{htmlFor:s,className:`${j.switch} ${r?j.disabled:``} ${r?`cursor-not-allowed`:`cursor-pointer`}`,children:[(0,l.jsx)(`input`,{id:s,type:`checkbox`,role:`switch`,"aria-checked":t,"aria-label":a,checked:t,onChange:e=>n(e.target.checked),disabled:r}),(0,l.jsx)(`span`,{className:j.slider,"aria-hidden":`true`}),i&&(0,l.jsx)(`span`,{className:j.label,children:i})]})},N={label:`_label_12as9_1`,basetrack:`_basetrack_12as9_8`,selectedtrack:`_selectedtrack_12as9_36`,livetrack:`_livetrack_12as9_43`,livetrackFaceted:`_livetrackFaceted_12as9_49`,livetrackDefault:`_livetrackDefault_12as9_52`,thumbs:`_thumbs_12as9_55`,disabled:`_disabled_12as9_89`},ee=e=>{let{min:t,max:n,step:r=1,disabled:i=!1,className:a,activeMin:o,activeMax:s,isFaceted:u=!1,highlightFaceted:f=!0,onChange:p,onFinalChange:m,label:h,"aria-label":g,id:_}=e,v=c.default.useId(),y=_||v;if(process.env.NODE_ENV!==`production`&&!h&&!g&&console.warn(`Slider: Component should have either a label or aria-label for accessibility.`),`isRange`in e&&e.isRange){let c=e.value,[f,_]=c;return(0,l.jsxs)(`div`,{className:a,children:[h&&(0,l.jsx)(`label`,{htmlFor:y,className:N.label,children:h}),(0,l.jsx)(d.Range,{step:r,min:t,max:n,values:c,onChange:e=>p(e),onFinalChange:e=>m?.(e),disabled:i,renderTrack:({props:e,children:r})=>{let{key:i,...a}=e,c=n-t,d=(f-t)/c*100,p=(_-f)/c*100,m=0,h=0,g=typeof o==`number`&&typeof s==`number`&&s>o&&(o>t||s<n);return g&&(m=(o-t)/c*100,h=(s-o)/c*100),(0,l.jsxs)(`div`,{...a,className:N.basetrack,style:{...a.style},children:[!g&&(0,l.jsx)(`div`,{className:N.selectedtrack,style:{left:`${d}%`,width:`${p}%`,zIndex:`1`}}),g&&(0,l.jsx)(`div`,{className:`${N.livetrack} ${u?N.livetrackFaceted:N.livetrackDefault}`,style:{left:`${m}%`,width:`${h}%`,zIndex:`2`}}),r]},i)},renderThumb:({props:e,index:r})=>{let{key:a,...o}=e,s=r===0?f:_;return(0,l.jsx)(`div`,{...o,id:r===0?y:void 0,className:`${N.thumbs} ${i?N.disabled:``} ${i?`cursor-not-allowed`:`cursor-resize-col`}`,style:{...o.style,zIndex:`3`},"aria-label":g||(r===0?`Minimum value`:`Maximum value`),"aria-valuemin":t,"aria-valuemax":n,"aria-valuenow":s},a)}})]})}else{let c=e.value;return(0,l.jsxs)(`div`,{className:a,children:[h&&(0,l.jsx)(`label`,{htmlFor:y,className:N.label,children:h}),(0,l.jsx)(d.Range,{step:r,min:t,max:n,values:[c],onChange:e=>p(e[0]),onFinalChange:e=>m?.(e[0]),disabled:i,renderTrack:({props:e,children:r})=>{let{key:i,...a}=e,d=n-t,f=(c-t)/d*100,p=0,m=0,h=typeof o==`number`&&typeof s==`number`&&s>o&&(o>t||s<n);return h&&(p=(o-t)/d*100,m=(s-o)/d*100),(0,l.jsxs)(`div`,{...a,className:N.basetrack,style:{...a.style},children:[!h&&(0,l.jsx)(`div`,{className:N.selectedtrack,style:{left:`0%`,width:`${f}%`,zIndex:`1`}}),h&&(0,l.jsx)(`div`,{className:`${N.livetrack} ${u?N.livetrackFaceted:N.livetrackDefault}`,style:{left:`${p}%`,width:`${m}%`,zIndex:`2`}}),r]},i)},renderThumb:({props:e})=>{let{key:r,...a}=e;return(0,l.jsx)(`div`,{...a,id:y,className:`${N.thumbs} ${i?N.disabled:``} ${i?`cursor-not-allowed`:`cursor-resize-col`}`,style:{...a.style,zIndex:`3`},"aria-label":g,"aria-valuemin":t,"aria-valuemax":n,"aria-valuenow":c},r)}})]})}},P={wrapper:`_wrapper_15fsv_1`,label:`_label_15fsv_7`,trigger:`_trigger_15fsv_12`,micro:`_micro_15fsv_28`,default:`_default_15fsv_34`,large:`_large_15fsv_40`,icon:`_icon_15fsv_60`,content:`_content_15fsv_68`,viewport:`_viewport_15fsv_76`,item:`_item_15fsv_82`,itemIndicator:`_itemIndicator_15fsv_105`},F=({value:e,onValueChange:t,options:n,placeholder:r=`Select...`,className:i=``,disabled:a=!1,label:o,size:s=`default`,"aria-label":d,id:p})=>{let m=c.default.useId(),h=p||m,g=`${h}-label`,_=n.find(t=>t.value===e),v=(0,l.jsxs)(f.Root,{value:e,onValueChange:t,disabled:a,children:[(0,l.jsxs)(f.Trigger,{id:h,className:`${P.trigger} ${P[s]} ${i} cursor-pointer`,...o?{"aria-labelledby":g}:d?{"aria-label":d}:{},children:[(0,l.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[_?.icon,(0,l.jsx)(f.Value,{placeholder:r})]}),(0,l.jsx)(f.Icon,{className:P.icon,"aria-hidden":`true`,children:(0,l.jsx)(u.Chevron_down,{size:s===`large`?21:14,color:`currentColor`})})]}),(0,l.jsx)(f.Portal,{children:(0,l.jsx)(f.Content,{className:P.content,position:`popper`,side:`bottom`,align:`start`,sideOffset:4,children:(0,l.jsx)(f.Viewport,{className:P.viewport,children:n.map(e=>(0,l.jsxs)(f.Item,{value:e.value,className:P.item,children:[(0,l.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`,gap:6},children:[e.icon,(0,l.jsx)(f.ItemText,{children:e.label})]}),(0,l.jsx)(f.ItemIndicator,{className:P.itemIndicator,children:(0,l.jsx)(u.Check,{size:12,color:`currentColor`})})]},e.value))})})})]});return o?(0,l.jsxs)(`div`,{className:P.wrapper,children:[(0,l.jsx)(`label`,{id:g,htmlFor:h,className:P.label,children:o}),v]}):v},I={content:`_content_1qahr_1`},L=({trigger:e,children:t,open:n,onOpenChange:r,align:i=`end`,side:a=`bottom`,sideOffset:o=5,className:s=``,"aria-label":c,"aria-describedby":u})=>(0,l.jsxs)(p.Root,{open:n,onOpenChange:r,children:[(0,l.jsx)(p.Trigger,{asChild:!0,children:e}),(0,l.jsx)(p.Portal,{children:(0,l.jsx)(p.Content,{className:`${I.content} ${s}`,align:i,side:a,sideOffset:o,"aria-label":c,"aria-describedby":u,children:t})})]}),R={table:`_table_1b0iq_1`,caption:`_caption_1b0iq_8`,headerRow:`_headerRow_1b0iq_25`,dataRow:`_dataRow_1b0iq_33`,cellInner:`_cellInner_1b0iq_41`,cellLabel:`_cellLabel_1b0iq_47`,cellContent:`_cellContent_1b0iq_52`,value:`_value_1b0iq_58`,icon:`_icon_1b0iq_64`};function te({children:e,caption:t,"aria-label":n}){return process.env.NODE_ENV!==`production`&&!t&&!n&&console.warn(`Table: Component should have either a caption or aria-label for accessibility.`),(0,l.jsxs)(`table`,{className:R.table,"aria-label":n,children:[t&&(0,l.jsx)(`caption`,{className:R.caption,children:t}),e]})}function ne({children:e}){let t=c.default.Children.map(e,e=>c.default.isValidElement(e)&&e.type===`td`?(0,l.jsx)(`th`,{scope:`col`,...e.props}):e);return(0,l.jsx)(`thead`,{children:(0,l.jsx)(`tr`,{className:R.headerRow,children:t})})}function re({children:e}){return(0,l.jsx)(`tr`,{className:R.dataRow,children:e})}function ie({label:e,children:t,isHeader:n=!1,scope:r}){let i=n?`th`:`td`,a=n&&r?{scope:r}:{};return e||t?(0,l.jsx)(i,{...a,children:(0,l.jsxs)(`div`,{className:R.cellInner,children:[e&&(0,l.jsx)(`span`,{className:R.cellLabel,children:e}),t&&(0,l.jsx)(`div`,{className:R.cellContent,children:t})]})}):(0,l.jsx)(i,{...a,children:t})}function z({children:e}){return(0,l.jsx)(`span`,{className:R.value,children:e})}function B({children:e,"aria-label":t}){let n=!t;return(0,l.jsx)(`span`,{className:R.icon,"aria-hidden":n?`true`:void 0,"aria-label":t,children:c.default.cloneElement(e,{size:`14px`,color:`currentColor`})})}var V={tabs:`_tabs_qrelf_1`,tab:`_tab_qrelf_1`,active:`_active_qrelf_23`,micro:`_micro_qrelf_29`,default:`_default_qrelf_36`,large:`_large_qrelf_43`};function H({items:e,value:t,onValueChange:n,size:r=`default`}){return(0,l.jsx)(`div`,{className:V.tabs,role:`tablist`,children:e.map(e=>(0,l.jsx)(`button`,{role:`tab`,type:`button`,"aria-selected":t===e.value,className:`${V.tab} ${V[r]} ${t===e.value?V.active:``}`,onClick:()=>n(e.value),children:e.label},e.value))})}var U={wrapper:`_wrapper_1a9jo_1`,track:`_track_1a9jo_8`,fill:`_fill_1a9jo_36`,label:`_label_1a9jo_46`};function ae({value:e,showLabel:t=!1,fulfilledColor:n=!1,className:r=``}){let i=Math.min(100,Math.max(0,e)),a=`${Math.round(i)}%`,o=n&&i>=100?`var(--CPureBlue)`:void 0;return(0,l.jsxs)(`div`,{className:`${U.wrapper} ${r}`,role:`progressbar`,"aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":100,children:[(0,l.jsx)(`div`,{className:U.track,children:(0,l.jsx)(`div`,{className:U.fill,style:{width:`${i}%`,backgroundColor:o}})}),t&&(0,l.jsx)(`span`,{className:U.label,"aria-hidden":`true`,children:a})]})}var W={chip:`_chip_iaxe0_1`,large:`_large_iaxe0_14`};function oe({children:e,color:t,textColor:n,className:r,icon:i,size:a=`default`}){let o={};return t&&(o.backgroundColor=t),n&&(o.color=n),(0,l.jsxs)(`span`,{className:[W.chip,a===`large`&&W.large,r].filter(Boolean).join(` `),style:o,children:[i&&c.default.cloneElement(i,{size:14,color:`currentColor`}),e]})}var G={tooltip:`_tooltip_1de7z_1`,arrow:`_arrow_1de7z_13`};function se({content:e,position:t=`top`,children:n,className:r}){return(0,l.jsx)(m.Provider,{delayDuration:80,children:(0,l.jsxs)(m.Root,{children:[(0,l.jsx)(m.Trigger,{asChild:!0,children:n}),(0,l.jsx)(m.Portal,{children:(0,l.jsxs)(m.Content,{side:t,sideOffset:7,className:[G.tooltip,r].filter(Boolean).join(` `),children:[e,(0,l.jsx)(m.Arrow,{className:G.arrow})]})})]})})}var K={wrapper:`_wrapper_1w5vh_1`,chart:`_chart_1w5vh_8`,svg:`_svg_1w5vh_33`,tooltip:`_tooltip_1w5vh_39`,tooltipLabel:`_tooltipLabel_1w5vh_49`,tooltipRow:`_tooltipRow_1w5vh_57`,tooltipDot:`_tooltipDot_1w5vh_64`,tooltipName:`_tooltipName_1w5vh_70`,tooltipValue:`_tooltipValue_1w5vh_76`,legend:`_legend_1w5vh_83`,legendItem:`_legendItem_1w5vh_90`,legendMark:`_legendMark_1w5vh_96`,legendLabel:`_legendLabel_1w5vh_102`},q=`var(--lv4)`,J=12,ce=8,le=8,ue=28,Y=8;function de(e){return Number.isInteger(e)?String(e):e.toLocaleString(void 0,{maximumFractionDigits:2})}function fe({series:e,labels:t,type:n=`line`,height:r=200,showLegend:i=!0,className:a}){let o=(0,c.useRef)(null),[s,u]=(0,c.useState)(0),[d,f]=(0,c.useState)(null);(0,c.useEffect)(()=>{let e=o.current;if(!e)return;let t=new ResizeObserver(([e])=>u(e.contentRect.width));return t.observe(e),u(e.clientWidth),()=>t.disconnect()},[]);let p=t?.length?ue:le,m=Math.max(s-Y-ce,0),h=Math.max(r-J-p,0),g=e.flatMap(e=>e.data.filter(Number.isFinite)),_=g.length?Math.max(...g,0):1,v=n===`bar`?0:Math.min(...g,0),y=_-v||1,b=Math.max(...e.map(e=>e.data.length),0),x=e=>J+(1-(e-v)/y)*h,S=e=>b<=1?Y+m/2:Y+e/(b-1)*m,C=(0,c.useCallback)(e=>{if(b===0)return;let t=e.currentTarget.getBoundingClientRect(),r=e.clientX-t.left,i=e.clientY-t.top;if(n===`line`){let e=Math.round((r-Y)/m*(b-1));f({index:Math.max(0,Math.min(b-1,e)),x:r,y:i})}else{let e=m/b,t=Math.floor((r-Y)/e);f({index:Math.max(0,Math.min(b-1,t)),x:r,y:i})}},[n,b,m]),w=(0,c.useCallback)(()=>f(null),[]),T=(0,l.jsx)(`line`,{x1:Y,y1:J+h*.5,x2:Y+m,y2:J+h*.5,stroke:`var(--chart-midline)`,strokeWidth:`0.5`}),E=(0,l.jsx)(`line`,{x1:Y,y1:J+h,x2:Y+m,y2:J+h,stroke:`var(--chart-baseline)`,strokeWidth:`1`}),D=d&&n===`bar`?(()=>{let e=m/b;return(0,l.jsx)(`rect`,{x:Y+d.index*e,y:J,width:e,height:h,fill:`var(--chart-column-hover)`})})():null,O=()=>e.map((e,t)=>{if(!e.data.length)return null;let n=e.color??q;return(0,l.jsxs)(`g`,{children:[(0,l.jsx)(`polyline`,{points:e.data.map((e,t)=>`${S(t).toFixed(2)},${x(e).toFixed(2)}`).join(` `),fill:`none`,stroke:n,strokeWidth:`1`,strokeLinejoin:`round`,strokeLinecap:`round`}),e.data.map((e,t)=>{let r=d?.index===t?10:5,i=r/2;return(0,l.jsx)(`rect`,{x:S(t)-i,y:x(e)-i,width:r,height:r,fill:n},t)})]},t)}),k=()=>{if(!b)return null;let t=e.length,n=m/b,r=Math.max((n-2*(t+1))/t,2),i=J+h;return e.map((e,t)=>e.data.map((a,o)=>{let s=Y+o*n+2+t*(r+2),c=x(a);return(0,l.jsx)(`rect`,{x:s,y:c,width:r,height:Math.max(i-c,0),fill:e.color??`var(--chart-bar)`},`${t}-${o}`)}))},A=()=>{if(!t?.length)return null;let e=J+h+18;return t.map((t,r)=>(0,l.jsx)(`text`,{x:n===`line`?S(r):Y+(r+.5)*(m/b),y:e,textAnchor:`middle`,fill:`var(--lv4)`,style:{font:`var(--text-2xs)`},children:t},r))},j=d&&n===`line`?(0,l.jsx)(`line`,{x1:S(d.index),y1:J,x2:S(d.index),y2:J+h,stroke:`var(--chart-crosshair)`,strokeWidth:`1`,strokeDasharray:`3 3`}):null,M=d?(()=>{let n=t?.[d.index]??String(d.index+1),r=Math.min(Math.max(d.x,60),s-60);return(0,l.jsxs)(`div`,{className:K.tooltip,style:d.y<80?{left:r,top:d.y+12,transform:`translate(-50%, 0)`}:{left:r,top:d.y-8,transform:`translate(-50%, -100%)`},children:[(0,l.jsx)(`div`,{className:K.tooltipLabel,children:n}),e.map((e,t)=>(0,l.jsxs)(`div`,{className:K.tooltipRow,children:[(0,l.jsx)(`span`,{className:K.tooltipDot,style:{background:e.color??q}}),(0,l.jsx)(`span`,{className:K.tooltipName,children:e.label}),(0,l.jsx)(`span`,{className:K.tooltipValue,children:de(e.data[d.index]??0)})]},t))]})})():null;return(0,l.jsxs)(`div`,{className:[K.wrapper,a].filter(Boolean).join(` `),children:[(0,l.jsxs)(`div`,{ref:o,className:K.chart,style:{height:r},children:[s>0&&(0,l.jsxs)(`svg`,{width:s,height:r,className:K.svg,onMouseMove:C,onMouseLeave:w,children:[T,E,D,j,n===`line`?O():k(),A()]}),M]}),i&&e.length>1&&(0,l.jsx)(`div`,{className:K.legend,children:e.map((e,t)=>(0,l.jsxs)(`div`,{className:K.legendItem,children:[(0,l.jsx)(`div`,{className:K.legendMark,style:{background:e.color??q}}),(0,l.jsx)(`span`,{className:K.legendLabel,children:e.label})]},t))})]})}var X={wrapper:`_wrapper_17ws4_1`,label:`_label_17ws4_7`,textarea:`_textarea_17ws4_12`,error:`_error_17ws4_48`,errorText:`_errorText_17ws4_56`};function pe({label:e,error:t,className:n=``,isValid:r=!0,id:i,rows:a=4,...o}){let s=c.default.useId(),u=i||s,d=`${u}-error`,f=t||!r;return(0,l.jsxs)(`div`,{className:`${X.wrapper} ${n}`,children:[e&&(0,l.jsxs)(`label`,{htmlFor:u,className:X.label,children:[e,o.required&&(0,l.jsx)(`span`,{"aria-label":`required`,children:` *`})]}),(0,l.jsx)(`textarea`,{id:u,rows:a,className:`${X.textarea} ${f?X.error:``}`,"aria-invalid":f?`true`:`false`,"aria-describedby":t?d:void 0,...o}),t&&(0,l.jsx)(`span`,{id:d,className:X.errorText,role:`alert`,children:t})]})}var Z={overlay:`_overlay_xud7c_1`,content:`_content_xud7c_8`,title:`_title_xud7c_26`,description:`_description_xud7c_34`,close:`_close_xud7c_40`,srOnly:`_srOnly_xud7c_62`},me=({trigger:e,children:t,open:n,onOpenChange:r,title:i,description:a,className:o=``,showClose:s=!0})=>(0,l.jsxs)(h.Root,{open:n,onOpenChange:r,children:[e&&(0,l.jsx)(h.Trigger,{asChild:!0,children:e}),(0,l.jsxs)(h.Portal,{children:[(0,l.jsx)(h.Overlay,{className:Z.overlay}),(0,l.jsxs)(h.Content,{className:`${Z.content} ${o}`,children:[(0,l.jsx)(h.Title,{className:i?Z.title:Z.srOnly,children:i||`Dialog`}),a&&(0,l.jsx)(h.Description,{className:Z.description,children:a}),s&&(0,l.jsx)(h.Close,{className:Z.close,"aria-label":`Close`,children:(0,l.jsx)(u.X_or_error,{size:16,color:`currentColor`})}),t]})]})]}),Q={wrapper:`_wrapper_aimna_1`,label:`_label_aimna_7`,trigger:`_trigger_aimna_12`,error:`_error_aimna_43`,placeholder:`_placeholder_aimna_47`,valueText:`_valueText_aimna_51`,calendar:`_calendar_aimna_55`,header:`_header_aimna_65`,monthLabel:`_monthLabel_aimna_71`,navButton:`_navButton_aimna_77`,weekdays:`_weekdays_aimna_95`,grid:`_grid_aimna_96`,weekday:`_weekday_aimna_95`,day:`_day_aimna_109`,outside:`_outside_aimna_127`,today:`_today_aimna_131`,selected:`_selected_aimna_136`,errorText:`_errorText_aimna_142`},he=[`Mo`,`Tu`,`We`,`Th`,`Fr`,`Sa`,`Su`],ge=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`];function _e(e){let t=String(e.getMonth()+1).padStart(2,`0`),n=String(e.getDate()).padStart(2,`0`);return`${e.getFullYear()}-${t}-${n}`}function $(e,t){return!!e&&!!t&&e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function ve(e,t){let n=(new Date(e,t,1).getDay()+6)%7,r=[];for(let i=0;i<42;i++)r.push(new Date(e,t,1-n+i));return r}var ye=({value:e,onChange:t,label:n,placeholder:r=`Select a date`,error:i,isValid:a=!0,disabled:o=!1,className:s=``,formatDate:d=_e})=>{let f=`${c.default.useId()}-error`,m=!!i||!a,[h,g]=(0,c.useState)(!1),_=new Date,v=e??_,[y,b]=(0,c.useState)(v.getFullYear()),[x,S]=(0,c.useState)(v.getMonth());c.default.useEffect(()=>{h&&e&&(b(e.getFullYear()),S(e.getMonth()))},[h]);let C=()=>{x===0?(S(11),b(y-1)):S(x-1)},w=()=>{x===11?(S(0),b(y+1)):S(x+1)},T=e=>{t?.(e),g(!1)},E=ve(y,x);return(0,l.jsxs)(`div`,{className:`${Q.wrapper} ${s}`,children:[n&&(0,l.jsx)(`span`,{className:Q.label,children:n}),(0,l.jsxs)(p.Root,{open:h,onOpenChange:g,children:[(0,l.jsx)(p.Trigger,{asChild:!0,children:(0,l.jsxs)(`button`,{type:`button`,className:`${Q.trigger} ${m?Q.error:``}`,disabled:o,"aria-invalid":m?`true`:`false`,"aria-describedby":i?f:void 0,children:[(0,l.jsx)(`span`,{className:e?Q.valueText:Q.placeholder,children:e?d(e):r}),(0,l.jsx)(u.Chevron_down,{size:14,color:`currentColor`})]})}),(0,l.jsx)(p.Portal,{children:(0,l.jsxs)(p.Content,{className:Q.calendar,align:`start`,sideOffset:5,children:[(0,l.jsxs)(`div`,{className:Q.header,children:[(0,l.jsx)(`button`,{type:`button`,className:Q.navButton,onClick:C,"aria-label":`Previous month`,children:(0,l.jsx)(u.Chevron_left,{size:14,color:`currentColor`})}),(0,l.jsxs)(`span`,{className:Q.monthLabel,children:[ge[x],` `,y]}),(0,l.jsx)(`button`,{type:`button`,className:Q.navButton,onClick:w,"aria-label":`Next month`,children:(0,l.jsx)(u.Chevron_right,{size:14,color:`currentColor`})})]}),(0,l.jsx)(`div`,{className:Q.weekdays,children:he.map(e=>(0,l.jsx)(`span`,{className:Q.weekday,children:e},e))}),(0,l.jsx)(`div`,{className:Q.grid,children:E.map(t=>{let n=t.getMonth()!==x,r=$(t,e),i=$(t,_);return(0,l.jsx)(`button`,{type:`button`,className:[Q.day,n?Q.outside:``,r?Q.selected:``,i&&!r?Q.today:``].filter(Boolean).join(` `),onClick:()=>T(t),children:t.getDate()},t.toISOString())})})]})})]}),i&&(0,l.jsx)(`span`,{id:f,className:Q.errorText,role:`alert`,children:i})]})};exports.Base=x,exports.Button=_,exports.Chart=fe,exports.Checkbox=y,exports.Chip=oe,exports.DatePicker=ye,exports.FilterPanelBase=C,exports.InputField=O,exports.Modal=me,exports.Popover=L,exports.ProgressBar=ae,exports.RadioButton=A,exports.SearchField=E,exports.Select=F,exports.Slider=ee,exports.Table=te,exports.TableCell=ie,exports.TableHeader=ne,exports.TableIcon=B,exports.TableRow=re,exports.TableValue=z,exports.Tabs=H,exports.Textarea=pe,exports.ToggleSwitch=M,exports.Tooltip=se;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import './globals/globals.css';
|
|
2
|
-
import './globals/patterns.css';
|
|
3
1
|
export { Button } from './components/Button/Button';
|
|
4
2
|
export { Checkbox } from './components/Checkbox/Checkbox';
|
|
5
3
|
export { Base, type BaseProps } from './components/Base/Base';
|
|
@@ -16,3 +14,8 @@ export { Table, TableHeader, TableRow, TableCell, TableValue, TableIcon } from '
|
|
|
16
14
|
export { Tabs, type TabItem, type TabsProps } from './components/Tabs/Tabs';
|
|
17
15
|
export { ProgressBar, type ProgressBarProps } from './components/ProgressBar/ProgressBar';
|
|
18
16
|
export { Chip, type ChipProps } from './components/Chip/Chip';
|
|
17
|
+
export { Tooltip, type TooltipProps, type TooltipPosition } from './components/Tooltip/Tooltip';
|
|
18
|
+
export { Chart, type ChartProps, type ChartSeries } from './components/Chart/Chart';
|
|
19
|
+
export { Textarea, type TextareaProps } from './components/Textarea/Textarea';
|
|
20
|
+
export { Modal, type ModalProps } from './components/Modal/Modal';
|
|
21
|
+
export { DatePicker, type DatePickerProps } from './components/DatePicker/DatePicker';
|