vector-prototype-components 0.1.1 → 0.1.3
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/Accordion/Accordion.js +79 -0
- package/Accordion/Accordion.js.map +1 -0
- package/Accordion/Accordion.module.css +1 -0
- package/Accordion/Accordion.module.css.js +36 -0
- package/Accordion/Accordion.module.css.js.map +1 -0
- package/ActionMenu/ActionMenu.js +49 -0
- package/ActionMenu/ActionMenu.js.map +1 -0
- package/ActionMenu/ActionMenu.module.css +1 -0
- package/ActionMenu/ActionMenu.module.css.js +16 -0
- package/ActionMenu/ActionMenu.module.css.js.map +1 -0
- package/Autocomplete/Autocomplete.js +226 -0
- package/Autocomplete/Autocomplete.js.map +1 -0
- package/Autocomplete/Autocomplete.module.css +1 -0
- package/Autocomplete/Autocomplete.module.css.js +46 -0
- package/Autocomplete/Autocomplete.module.css.js.map +1 -0
- package/Avatar/Avatar.js +66 -0
- package/Avatar/Avatar.js.map +1 -0
- package/Avatar/Avatar.module.css +1 -0
- package/Avatar/Avatar.module.css.js +26 -0
- package/Avatar/Avatar.module.css.js.map +1 -0
- package/Badge/Badge.js +40 -0
- package/Badge/Badge.js.map +1 -0
- package/Badge/Badge.module.css +1 -0
- package/Badge/Badge.module.css.js +24 -0
- package/Badge/Badge.module.css.js.map +1 -0
- package/BottomBar/BottomBar.js +19 -0
- package/BottomBar/BottomBar.js.map +1 -0
- package/BottomBar/BottomBar.module.css +1 -0
- package/BottomBar/BottomBar.module.css.js +10 -0
- package/BottomBar/BottomBar.module.css.js.map +1 -0
- package/Breadcrumbs/Breadcrumbs.js +40 -0
- package/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/Breadcrumbs/Breadcrumbs.module.css +1 -0
- package/Breadcrumbs/Breadcrumbs.module.css.js +18 -0
- package/Breadcrumbs/Breadcrumbs.module.css.js.map +1 -0
- package/Button/Button.js +53 -0
- package/Button/Button.js.map +1 -0
- package/Button/Button.module.css +1 -0
- package/Button/Button.module.css.js +24 -0
- package/Button/Button.module.css.js.map +1 -0
- package/Callout/Callout.js +66 -0
- package/Callout/Callout.js.map +1 -0
- package/Callout/Callout.module.css +1 -0
- package/Callout/Callout.module.css.js +28 -0
- package/Callout/Callout.module.css.js.map +1 -0
- package/Card/Card.js +39 -0
- package/Card/Card.js.map +1 -0
- package/Card/Card.module.css +1 -0
- package/Card/Card.module.css.js +18 -0
- package/Card/Card.module.css.js.map +1 -0
- package/Checkbox/Checkbox.js +90 -0
- package/Checkbox/Checkbox.js.map +1 -0
- package/Checkbox/Checkbox.module.css +1 -0
- package/Checkbox/Checkbox.module.css.js +22 -0
- package/Checkbox/Checkbox.module.css.js.map +1 -0
- package/Chip/Chip.js +62 -0
- package/Chip/Chip.js.map +1 -0
- package/Chip/Chip.module.css +1 -0
- package/Chip/Chip.module.css.js +24 -0
- package/Chip/Chip.module.css.js.map +1 -0
- package/DatePicker/DatePicker.js +157 -0
- package/DatePicker/DatePicker.js.map +1 -0
- package/DatePicker/DatePicker.module.css +1 -0
- package/DatePicker/DatePicker.module.css.js +48 -0
- package/DatePicker/DatePicker.module.css.js.map +1 -0
- package/DatePicker/DatePickerCalendar.js +94 -0
- package/DatePicker/DatePickerCalendar.js.map +1 -0
- package/DatePicker/DatePickerCalendar.module.css +1 -0
- package/DatePicker/DatePickerCalendar.module.css.js +32 -0
- package/DatePicker/DatePickerCalendar.module.css.js.map +1 -0
- package/Divider/Divider.js +22 -0
- package/Divider/Divider.js.map +1 -0
- package/Divider/Divider.module.css +1 -0
- package/Divider/Divider.module.css.js +12 -0
- package/Divider/Divider.module.css.js.map +1 -0
- package/Dropdown/Dropdown.js +100 -0
- package/Dropdown/Dropdown.js.map +1 -0
- package/Dropdown/Dropdown.module.css +1 -0
- package/Dropdown/Dropdown.module.css.js +20 -0
- package/Dropdown/Dropdown.module.css.js.map +1 -0
- package/Icon/Icon.js +8 -0
- package/Icon/Icon.js.map +1 -0
- package/IconButton/IconButton.js +42 -0
- package/IconButton/IconButton.js.map +1 -0
- package/IconButton/IconButton.module.css +1 -0
- package/IconButton/IconButton.module.css.js +20 -0
- package/IconButton/IconButton.module.css.js.map +1 -0
- package/InputNumber/InputNumber.js +106 -0
- package/InputNumber/InputNumber.js.map +1 -0
- package/InputNumber/InputNumber.module.css +1 -0
- package/InputNumber/InputNumber.module.css.js +30 -0
- package/InputNumber/InputNumber.module.css.js.map +1 -0
- package/Menu/Menu.js +182 -0
- package/Menu/Menu.js.map +1 -0
- package/Menu/Menu.module.css +1 -0
- package/Menu/Menu.module.css.js +56 -0
- package/Menu/Menu.module.css.js.map +1 -0
- package/Menu/menuData.js +188 -0
- package/Menu/menuData.js.map +1 -0
- package/Message/Message.js +88 -0
- package/Message/Message.js.map +1 -0
- package/Message/Message.module.css +1 -0
- package/Message/Message.module.css.js +32 -0
- package/Message/Message.module.css.js.map +1 -0
- package/Modal/Modal.js +186 -0
- package/Modal/Modal.js.map +1 -0
- package/Modal/Modal.module.css +1 -0
- package/Modal/Modal.module.css.js +44 -0
- package/Modal/Modal.module.css.js.map +1 -0
- package/Multiselect/Multiselect.js +249 -0
- package/Multiselect/Multiselect.js.map +1 -0
- package/Multiselect/Multiselect.module.css +1 -0
- package/Multiselect/Multiselect.module.css.js +64 -0
- package/Multiselect/Multiselect.module.css.js.map +1 -0
- package/Overlay/Overlay.js +18 -0
- package/Overlay/Overlay.js.map +1 -0
- package/Overlay/Overlay.module.css +1 -0
- package/Overlay/Overlay.module.css.js +8 -0
- package/Overlay/Overlay.module.css.js.map +1 -0
- package/Paginator/Paginator.js +118 -0
- package/Paginator/Paginator.js.map +1 -0
- package/Paginator/Paginator.module.css +1 -0
- package/Paginator/Paginator.module.css.js +22 -0
- package/Paginator/Paginator.module.css.js.map +1 -0
- package/Panel/Panel.js +38 -0
- package/Panel/Panel.js.map +1 -0
- package/Panel/Panel.module.css +1 -0
- package/Panel/Panel.module.css.js +16 -0
- package/Panel/Panel.module.css.js.map +1 -0
- package/ProgressSpinner/ProgressSpinner.js +64 -0
- package/ProgressSpinner/ProgressSpinner.js.map +1 -0
- package/ProgressSpinner/ProgressSpinner.module.css +1 -0
- package/ProgressSpinner/ProgressSpinner.module.css.js +16 -0
- package/ProgressSpinner/ProgressSpinner.module.css.js.map +1 -0
- package/Radio/Radio.js +44 -0
- package/Radio/Radio.js.map +1 -0
- package/Radio/Radio.module.css +1 -0
- package/Radio/Radio.module.css.js +18 -0
- package/Radio/Radio.module.css.js.map +1 -0
- package/SegmentControl/SegmentControl.js +74 -0
- package/SegmentControl/SegmentControl.js.map +1 -0
- package/SegmentControl/SegmentControl.module.css +1 -0
- package/SegmentControl/SegmentControl.module.css.js +16 -0
- package/SegmentControl/SegmentControl.module.css.js.map +1 -0
- package/Select/Select.js +153 -0
- package/Select/Select.js.map +1 -0
- package/Select/Select.module.css +1 -0
- package/Select/Select.module.css.js +46 -0
- package/Select/Select.module.css.js.map +1 -0
- package/Skeleton/Skeleton.js +78 -0
- package/Skeleton/Skeleton.js.map +1 -0
- package/Skeleton/Skeleton.module.css +1 -0
- package/Skeleton/Skeleton.module.css.js +18 -0
- package/Skeleton/Skeleton.module.css.js.map +1 -0
- package/Slider/Slider.js +116 -0
- package/Slider/Slider.js.map +1 -0
- package/Slider/Slider.module.css +1 -0
- package/Slider/Slider.module.css.js +24 -0
- package/Slider/Slider.module.css.js.map +1 -0
- package/Slot/Slot.js +25 -0
- package/Slot/Slot.js.map +1 -0
- package/Slot/Slot.module.css +1 -0
- package/Slot/Slot.module.css.js +16 -0
- package/Slot/Slot.module.css.js.map +1 -0
- package/Switch/Switch.js +42 -0
- package/Switch/Switch.js.map +1 -0
- package/Switch/Switch.module.css +1 -0
- package/Switch/Switch.module.css.js +11 -0
- package/Switch/Switch.module.css.js.map +1 -0
- package/Table/Table.js +268 -0
- package/Table/Table.js.map +1 -0
- package/Table/Table.module.css +1 -0
- package/Table/Table.module.css.js +64 -0
- package/Table/Table.module.css.js.map +1 -0
- package/TableTree/TableTree.js +139 -0
- package/TableTree/TableTree.js.map +1 -0
- package/TableTree/TableTree.module.css +1 -0
- package/TableTree/TableTree.module.css.js +62 -0
- package/TableTree/TableTree.module.css.js.map +1 -0
- package/Tabs/Tabs.js +92 -0
- package/Tabs/Tabs.js.map +1 -0
- package/Tabs/Tabs.module.css +1 -0
- package/Tabs/Tabs.module.css.js +18 -0
- package/Tabs/Tabs.module.css.js.map +1 -0
- package/Tag/Tag.js +48 -0
- package/Tag/Tag.js.map +1 -0
- package/Tag/Tag.module.css +1 -0
- package/Tag/Tag.module.css.js +30 -0
- package/Tag/Tag.module.css.js.map +1 -0
- package/TextField/TextField.js +93 -0
- package/TextField/TextField.js.map +1 -0
- package/TextField/TextField.module.css +1 -0
- package/TextField/TextField.module.css.js +36 -0
- package/TextField/TextField.module.css.js.map +1 -0
- package/Textarea/Textarea.js +52 -0
- package/Textarea/Textarea.js.map +1 -0
- package/Textarea/Textarea.module.css +1 -0
- package/Textarea/Textarea.module.css.js +32 -0
- package/Textarea/Textarea.module.css.js.map +1 -0
- package/Toast/Toast.js +82 -0
- package/Toast/Toast.js.map +1 -0
- package/Toast/Toast.module.css +1 -0
- package/Toast/Toast.module.css.js +28 -0
- package/Toast/Toast.module.css.js.map +1 -0
- package/Tooltip/Tooltip.js +61 -0
- package/Tooltip/Tooltip.js.map +1 -0
- package/Tooltip/Tooltip.module.css +1 -0
- package/Tooltip/Tooltip.module.css.js +26 -0
- package/Tooltip/Tooltip.module.css.js.map +1 -0
- package/TopBar/TopBar.js +87 -0
- package/TopBar/TopBar.js.map +1 -0
- package/TopBar/TopBar.module.css +1 -0
- package/TopBar/TopBar.module.css.js +30 -0
- package/TopBar/TopBar.module.css.js.map +1 -0
- package/index.js +90 -4157
- package/index.js.map +1 -1
- package/package.json +3 -4
- package/style.css +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import './Avatar.module.css';const i = "_avatar_155i1_20", s = "_disabled_155i1_43", e = "_sizeXsmall_155i1_50", a = "_sizeSmall_155i1_56", _ = "_sizeMedium_155i1_62", l = "_sizeLarge_155i1_68", t = "_sizeXlarge_155i1_74", n = "_image_155i1_82", o = "_initials_155i1_95", z = "_icon_155i1_103", c = {
|
|
2
|
+
avatar: i,
|
|
3
|
+
disabled: s,
|
|
4
|
+
sizeXsmall: e,
|
|
5
|
+
sizeSmall: a,
|
|
6
|
+
sizeMedium: _,
|
|
7
|
+
sizeLarge: l,
|
|
8
|
+
sizeXlarge: t,
|
|
9
|
+
image: n,
|
|
10
|
+
initials: o,
|
|
11
|
+
icon: z
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
i as avatar,
|
|
15
|
+
c as default,
|
|
16
|
+
s as disabled,
|
|
17
|
+
z as icon,
|
|
18
|
+
n as image,
|
|
19
|
+
o as initials,
|
|
20
|
+
l as sizeLarge,
|
|
21
|
+
_ as sizeMedium,
|
|
22
|
+
a as sizeSmall,
|
|
23
|
+
t as sizeXlarge,
|
|
24
|
+
e as sizeXsmall
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=Avatar.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
|
package/Badge/Badge.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import e from "./Badge.module.css.js";
|
|
3
|
+
const m = {
|
|
4
|
+
small: e.sizeSmall,
|
|
5
|
+
medium: e.sizeMedium,
|
|
6
|
+
large: e.sizeLarge
|
|
7
|
+
}, u = {
|
|
8
|
+
default: e.stateDefault,
|
|
9
|
+
danger: e.stateDanger,
|
|
10
|
+
success: e.stateSuccess,
|
|
11
|
+
warning: e.stateWarning,
|
|
12
|
+
disabled: e.stateDisabled
|
|
13
|
+
};
|
|
14
|
+
function g({
|
|
15
|
+
state: l = "default",
|
|
16
|
+
size: a = "medium",
|
|
17
|
+
label: s,
|
|
18
|
+
className: t,
|
|
19
|
+
"aria-label": n
|
|
20
|
+
}) {
|
|
21
|
+
const r = [
|
|
22
|
+
e.badge,
|
|
23
|
+
m[a],
|
|
24
|
+
u[l],
|
|
25
|
+
t
|
|
26
|
+
].filter(Boolean).join(" "), i = a !== "small" && s != null;
|
|
27
|
+
return /* @__PURE__ */ o(
|
|
28
|
+
"span",
|
|
29
|
+
{
|
|
30
|
+
className: r,
|
|
31
|
+
"aria-label": n,
|
|
32
|
+
role: "status",
|
|
33
|
+
children: i ? s : null
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
g as Badge
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../src/Badge/Badge.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './Badge.module.css';\n\nexport type BadgeSize = 'small' | 'medium' | 'large';\nexport type BadgeState = 'default' | 'danger' | 'success' | 'warning' | 'disabled';\n\nexport interface BadgeProps {\n /** Visual state / semantic color of the badge */\n state?: BadgeState;\n /** Size of the badge. \"small\" renders a dot only (no text). */\n size?: BadgeSize;\n /**\n * Numeric or short text label shown inside medium/large badges.\n * Ignored when size=\"small\".\n */\n label?: string | number;\n /** Additional CSS class names */\n className?: string;\n /** aria-label for accessibility when no surrounding text provides context */\n 'aria-label'?: string;\n}\n\nconst SIZE_CLASS: Record<BadgeSize, string> = {\n small: styles.sizeSmall,\n medium: styles.sizeMedium,\n large: styles.sizeLarge,\n};\n\nconst STATE_CLASS: Record<BadgeState, string> = {\n default: styles.stateDefault,\n danger: styles.stateDanger,\n success: styles.stateSuccess,\n warning: styles.stateWarning,\n disabled: styles.stateDisabled,\n};\n\nexport function Badge({\n state = 'default',\n size = 'medium',\n label,\n className,\n 'aria-label': ariaLabel,\n}: BadgeProps) {\n const cls = [\n styles.badge,\n SIZE_CLASS[size],\n STATE_CLASS[state],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const showLabel = size !== 'small' && label != null;\n\n return (\n <span\n className={cls}\n aria-label={ariaLabel}\n role=\"status\"\n >\n {showLabel ? label : null}\n </span>\n );\n}\n"],"names":["SIZE_CLASS","styles","STATE_CLASS","Badge","state","size","label","className","ariaLabel","cls","showLabel","jsx"],"mappings":";;AAsBA,MAAMA,IAAwC;AAAA,EAC5C,OAAQC,EAAO;AAAA,EACf,QAAQA,EAAO;AAAA,EACf,OAAQA,EAAO;AACjB,GAEMC,IAA0C;AAAA,EAC9C,SAAUD,EAAO;AAAA,EACjB,QAAUA,EAAO;AAAA,EACjB,SAAUA,EAAO;AAAA,EACjB,SAAUA,EAAO;AAAA,EACjB,UAAUA,EAAO;AACnB;AAEO,SAASE,EAAM;AAAA,EACpB,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAcC;AAChB,GAAe;AACb,QAAMC,IAAM;AAAA,IACVR,EAAO;AAAA,IACPD,EAAWK,CAAI;AAAA,IACfH,EAAYE,CAAK;AAAA,IACjBG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELG,IAAYL,MAAS,WAAWC,KAAS;AAE/C,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,MACX,cAAYD;AAAA,MACZ,MAAK;AAAA,MAEJ,cAAYF,IAAQ;AAAA,IAAA;AAAA,EAAA;AAG3B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._badge_6k6ib_17{display:inline-flex;align-items:center;justify-content:center;border-radius:1000px;flex-shrink:0;font-family:var(--font-family-base, system-ui, sans-serif);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-10);white-space:nowrap}._sizeSmall_6k6ib_30{width:8px;height:8px}._sizeMedium_6k6ib_35{width:16px;height:16px;min-width:16px;padding:0 2px;font-size:var(--font-size-10);line-height:var(--font-line-height-10);color:var(--color-text-neutral-inverse)}._sizeLarge_6k6ib_45{width:20px;height:20px;min-width:20px;padding:2px;font-size:var(--font-size-12);line-height:var(--font-line-height-12);color:var(--color-text-neutral-inverse)}._stateDefault_6k6ib_56{background-color:var(--color-fill-feedback-info-default)}._stateDanger_6k6ib_61{background-color:var(--color-fill-feedback-danger-default)}._stateSuccess_6k6ib_66{background-color:var(--color-fill-feedback-success-default)}._stateWarning_6k6ib_71{background-color:var(--color-fill-feedback-warning-default)}._stateDisabled_6k6ib_80{background-color:var(--color-fill-neutral-muted)}._stateDisabled_6k6ib_80._sizeMedium_6k6ib_35,._stateDisabled_6k6ib_80._sizeLarge_6k6ib_45{color:var(--color-text-neutral-mudle)}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import './Badge.module.css';const e = "_badge_6k6ib_17", s = "_sizeSmall_6k6ib_30", t = "_sizeMedium_6k6ib_35", a = "_sizeLarge_6k6ib_45", i = "_stateDefault_6k6ib_56", _ = "_stateDanger_6k6ib_61", n = "_stateSuccess_6k6ib_66", c = "_stateWarning_6k6ib_71", b = "_stateDisabled_6k6ib_80", l = {
|
|
2
|
+
badge: e,
|
|
3
|
+
sizeSmall: s,
|
|
4
|
+
sizeMedium: t,
|
|
5
|
+
sizeLarge: a,
|
|
6
|
+
stateDefault: i,
|
|
7
|
+
stateDanger: _,
|
|
8
|
+
stateSuccess: n,
|
|
9
|
+
stateWarning: c,
|
|
10
|
+
stateDisabled: b
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
e as badge,
|
|
14
|
+
l as default,
|
|
15
|
+
a as sizeLarge,
|
|
16
|
+
t as sizeMedium,
|
|
17
|
+
s as sizeSmall,
|
|
18
|
+
_ as stateDanger,
|
|
19
|
+
i as stateDefault,
|
|
20
|
+
b as stateDisabled,
|
|
21
|
+
n as stateSuccess,
|
|
22
|
+
c as stateWarning
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=Badge.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as i, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import o from "./BottomBar.module.css.js";
|
|
3
|
+
function m({
|
|
4
|
+
primaryAction: t,
|
|
5
|
+
secondaryAction: r,
|
|
6
|
+
children: e,
|
|
7
|
+
className: n
|
|
8
|
+
}) {
|
|
9
|
+
const s = [o.bottomBar, n].filter(Boolean).join(" ");
|
|
10
|
+
return /* @__PURE__ */ i("footer", { className: s, role: "contentinfo", children: /* @__PURE__ */ c("div", { className: o.actions, children: [
|
|
11
|
+
r,
|
|
12
|
+
e,
|
|
13
|
+
t
|
|
14
|
+
] }) });
|
|
15
|
+
}
|
|
16
|
+
export {
|
|
17
|
+
m as BottomBar
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=BottomBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomBar.js","sources":["../../src/BottomBar/BottomBar.tsx"],"sourcesContent":["import React from 'react';\nimport styles from './BottomBar.module.css';\n\nexport interface BottomBarProps {\n /** Slot for the primary action (rightmost button). Typically a primary Button. */\n primaryAction?: React.ReactNode;\n /** Slot for the secondary action (left of primary). Typically a secondary Button. */\n secondaryAction?: React.ReactNode;\n /** Additional children rendered inside the actions group, after secondaryAction. */\n children?: React.ReactNode;\n className?: string;\n}\n\nexport function BottomBar({\n primaryAction,\n secondaryAction,\n children,\n className,\n}: BottomBarProps) {\n const cls = [styles.bottomBar, className].filter(Boolean).join(' ');\n\n return (\n <footer className={cls} role=\"contentinfo\">\n <div className={styles.actions}>\n {secondaryAction}\n {children}\n {primaryAction}\n </div>\n </footer>\n );\n}\n"],"names":["BottomBar","primaryAction","secondaryAction","children","className","cls","styles","jsx","jsxs"],"mappings":";;AAaO,SAASA,EAAU;AAAA,EACxB,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAAmB;AACjB,QAAMC,IAAM,CAACC,EAAO,WAAWF,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAElE,SACE,gBAAAG,EAAC,UAAA,EAAO,WAAWF,GAAK,MAAK,eAC3B,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAWF,EAAO,SACpB,UAAA;AAAA,IAAAJ;AAAA,IACAC;AAAA,IACAF;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._bottomBar_p1aj3_2{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;width:100%;height:72px;padding:8px 36px;background-color:var(--color-canvas-neutral-white);box-shadow:0 -1px 2px #0e0f2312;box-sizing:border-box;flex-shrink:0}._actions_p1aj3_17{display:flex;flex-direction:row;align-items:center;gap:9px;flex-shrink:0}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BottomBar.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsxs as c, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import m from "react";
|
|
3
|
+
import { CaretCircleRight as h } from "@phosphor-icons/react";
|
|
4
|
+
import { Icon as d } from "../Icon/Icon.js";
|
|
5
|
+
import r from "./Breadcrumbs.module.css.js";
|
|
6
|
+
function C({
|
|
7
|
+
items: n,
|
|
8
|
+
title: s,
|
|
9
|
+
className: o,
|
|
10
|
+
ariaLabel: a = "Breadcrumb"
|
|
11
|
+
}) {
|
|
12
|
+
const t = [r.breadcrumbs, o].filter(Boolean).join(" ");
|
|
13
|
+
return /* @__PURE__ */ c("nav", { "aria-label": a, className: t, children: [
|
|
14
|
+
/* @__PURE__ */ e("ol", { className: r.trail, "aria-label": a, children: n.map((l, i) => /* @__PURE__ */ c(m.Fragment, { children: [
|
|
15
|
+
i > 0 && /* @__PURE__ */ e("li", { className: r.separator, "aria-hidden": "true", children: /* @__PURE__ */ e(d, { as: h, size: 16 }) }),
|
|
16
|
+
/* @__PURE__ */ e("li", { children: l.href ? /* @__PURE__ */ e(
|
|
17
|
+
"a",
|
|
18
|
+
{
|
|
19
|
+
href: l.href,
|
|
20
|
+
className: `${r.item} ${r.itemLink}`,
|
|
21
|
+
onClick: l.onClick,
|
|
22
|
+
children: l.label
|
|
23
|
+
}
|
|
24
|
+
) : l.onClick ? /* @__PURE__ */ e(
|
|
25
|
+
"button",
|
|
26
|
+
{
|
|
27
|
+
type: "button",
|
|
28
|
+
className: `${r.item} ${r.itemLink}`,
|
|
29
|
+
onClick: l.onClick,
|
|
30
|
+
children: l.label
|
|
31
|
+
}
|
|
32
|
+
) : /* @__PURE__ */ e("span", { className: r.item, children: l.label }) })
|
|
33
|
+
] }, i)) }),
|
|
34
|
+
/* @__PURE__ */ e("h1", { className: r.title, children: s })
|
|
35
|
+
] });
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
C as Breadcrumbs
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=Breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sources":["../../src/Breadcrumbs/Breadcrumbs.tsx"],"sourcesContent":["import React from 'react';\nimport { CaretCircleRight } from '@phosphor-icons/react';\nimport { Icon } from '../Icon/index.js';\nimport styles from './Breadcrumbs.module.css';\n\nexport interface BreadcrumbItem {\n /** Visible label for this breadcrumb step. */\n label: string;\n /** Optional href — when provided the item renders as an anchor tag. */\n href?: string;\n /** Optional click handler. */\n onClick?: (event: React.MouseEvent) => void;\n}\n\nexport interface BreadcrumbsProps {\n /**\n * The breadcrumb trail items rendered before the page title.\n * Supports 1–4 items (matches Figma variants \"Qtd. diretórios=1..4\").\n */\n items: [BreadcrumbItem, ...BreadcrumbItem[]];\n /** Current page title shown below the trail. */\n title: string;\n /** Additional CSS class name. */\n className?: string;\n /** aria-label for the nav landmark. Defaults to \"Breadcrumb\". */\n ariaLabel?: string;\n}\n\nexport function Breadcrumbs({\n items,\n title,\n className,\n ariaLabel = 'Breadcrumb',\n}: BreadcrumbsProps) {\n const cls = [styles.breadcrumbs, className].filter(Boolean).join(' ');\n\n return (\n <nav aria-label={ariaLabel} className={cls}>\n <ol className={styles.trail} aria-label={ariaLabel}>\n {items.map((item, index) => (\n <React.Fragment key={index}>\n {index > 0 && (\n <li className={styles.separator} aria-hidden=\"true\">\n <Icon as={CaretCircleRight} size={16} />\n </li>\n )}\n <li>\n {item.href ? (\n <a\n href={item.href}\n className={`${styles.item} ${styles.itemLink}`}\n onClick={item.onClick}\n >\n {item.label}\n </a>\n ) : item.onClick ? (\n <button\n type=\"button\"\n className={`${styles.item} ${styles.itemLink}`}\n onClick={item.onClick}\n >\n {item.label}\n </button>\n ) : (\n <span className={styles.item}>{item.label}</span>\n )}\n </li>\n </React.Fragment>\n ))}\n </ol>\n\n <h1 className={styles.title}>{title}</h1>\n </nav>\n );\n}\n"],"names":["Breadcrumbs","items","title","className","ariaLabel","cls","styles","jsxs","jsx","item","index","React","Icon","CaretCircleRight"],"mappings":";;;;;AA4BO,SAASA,EAAY;AAAA,EAC1B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC,IAAY;AACd,GAAqB;AACnB,QAAMC,IAAM,CAACC,EAAO,aAAaH,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAEpE,SACE,gBAAAI,EAAC,OAAA,EAAI,cAAYH,GAAW,WAAWC,GACrC,UAAA;AAAA,IAAA,gBAAAG,EAAC,MAAA,EAAG,WAAWF,EAAO,OAAO,cAAYF,GACtC,UAAAH,EAAM,IAAI,CAACQ,GAAMC,MAChB,gBAAAH,EAACI,EAAM,UAAN,EACE,UAAA;AAAA,MAAAD,IAAQ,KACP,gBAAAF,EAAC,MAAA,EAAG,WAAWF,EAAO,WAAW,eAAY,QAC3C,UAAA,gBAAAE,EAACI,GAAA,EAAK,IAAIC,GAAkB,MAAM,IAAI,GACxC;AAAA,MAEF,gBAAAL,EAAC,MAAA,EACE,UAAAC,EAAK,OACJ,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAMC,EAAK;AAAA,UACX,WAAW,GAAGH,EAAO,IAAI,IAAIA,EAAO,QAAQ;AAAA,UAC5C,SAASG,EAAK;AAAA,UAEb,UAAAA,EAAK;AAAA,QAAA;AAAA,MAAA,IAENA,EAAK,UACP,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,WAAW,GAAGF,EAAO,IAAI,IAAIA,EAAO,QAAQ;AAAA,UAC5C,SAASG,EAAK;AAAA,UAEb,UAAAA,EAAK;AAAA,QAAA;AAAA,MAAA,sBAGP,QAAA,EAAK,WAAWH,EAAO,MAAO,UAAAG,EAAK,OAAM,EAAA,CAE9C;AAAA,IAAA,KA1BmBC,CA2BrB,CACD,GACH;AAAA,IAEA,gBAAAF,EAAC,MAAA,EAAG,WAAWF,EAAO,OAAQ,UAAAJ,EAAA,CAAM;AAAA,EAAA,GACtC;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._breadcrumbs_82ywv_2{display:inline-flex;flex-direction:column;align-items:flex-start;gap:8px}._trail_82ywv_10{display:flex;flex-direction:row;align-items:center;gap:8px;flex-shrink:0;width:100%;list-style:none;margin:0;padding:0}._trail_82ywv_10>li{display:flex;align-items:center;list-style:none}._item_82ywv_31{font-family:var(--font-family-base, system-ui, sans-serif);font-size:var(--font-size-14);font-weight:var(--font-weight-semibold);line-height:var(--font-line-height-14, 20px);color:var(--color-text-neutral-subtle);white-space:nowrap;flex-shrink:0;text-decoration:none;background:none;border:none;padding:0;margin:0;cursor:default}._itemLink_82ywv_48{cursor:pointer}._itemLink_82ywv_48:hover{color:var(--color-text-neutral-mudle);text-decoration:underline}._itemLink_82ywv_48:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:2px}._separator_82ywv_64{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--color-icon-neutral-subtle)}._title_82ywv_73{font-family:var(--font-family-base, system-ui, sans-serif);font-size:var(--font-size-24);font-weight:var(--font-weight-semibold);line-height:var(--font-line-height-24, 32px);color:var(--color-text-brand-default);margin:0;width:100%}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './Breadcrumbs.module.css';const t = "_breadcrumbs_82ywv_2", e = "_trail_82ywv_10", _ = "_item_82ywv_31", r = "_itemLink_82ywv_48", s = "_separator_82ywv_64", i = "_title_82ywv_73", a = {
|
|
2
|
+
breadcrumbs: t,
|
|
3
|
+
trail: e,
|
|
4
|
+
item: _,
|
|
5
|
+
itemLink: r,
|
|
6
|
+
separator: s,
|
|
7
|
+
title: i
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
t as breadcrumbs,
|
|
11
|
+
a as default,
|
|
12
|
+
_ as item,
|
|
13
|
+
r as itemLink,
|
|
14
|
+
s as separator,
|
|
15
|
+
i as title,
|
|
16
|
+
e as trail
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=Breadcrumbs.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
package/Button/Button.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsxs as y, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { Icon as e } from "../Icon/Icon.js";
|
|
3
|
+
import a from "./Button.module.css.js";
|
|
4
|
+
const d = {
|
|
5
|
+
primary: a.variantPrimary,
|
|
6
|
+
secondary: a.variantSecondary,
|
|
7
|
+
tertiary: a.variantTertiary,
|
|
8
|
+
danger: a.variantDanger,
|
|
9
|
+
link: a.variantLink
|
|
10
|
+
}, p = {
|
|
11
|
+
medium: a.sizeMedium,
|
|
12
|
+
small: a.sizeSmall,
|
|
13
|
+
xsmall: a.sizeXsmall
|
|
14
|
+
}, f = {
|
|
15
|
+
medium: 20,
|
|
16
|
+
small: 20,
|
|
17
|
+
xsmall: 16
|
|
18
|
+
};
|
|
19
|
+
function A({
|
|
20
|
+
variant: o = "primary",
|
|
21
|
+
size: r = "medium",
|
|
22
|
+
leadingIcon: i,
|
|
23
|
+
trailingIcon: t,
|
|
24
|
+
className: l,
|
|
25
|
+
children: c,
|
|
26
|
+
disabled: s,
|
|
27
|
+
...u
|
|
28
|
+
}) {
|
|
29
|
+
const S = [
|
|
30
|
+
a.button,
|
|
31
|
+
d[o],
|
|
32
|
+
p[r],
|
|
33
|
+
l
|
|
34
|
+
].filter(Boolean).join(" "), m = f[r];
|
|
35
|
+
return /* @__PURE__ */ y(
|
|
36
|
+
"button",
|
|
37
|
+
{
|
|
38
|
+
className: S,
|
|
39
|
+
disabled: s,
|
|
40
|
+
"aria-disabled": s,
|
|
41
|
+
...u,
|
|
42
|
+
children: [
|
|
43
|
+
i && /* @__PURE__ */ n(e, { as: i, size: m }),
|
|
44
|
+
c,
|
|
45
|
+
t && /* @__PURE__ */ n(e, { as: t, size: m })
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
export {
|
|
51
|
+
A as Button
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../src/Button/Button.tsx"],"sourcesContent":["import React from 'react';\nimport type { Icon as PhosphorIcon } from '@phosphor-icons/react';\nimport { Icon } from '../Icon/index.js';\nimport styles from './Button.module.css';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger' | 'link';\nexport type ButtonSize = 'medium' | 'small' | 'xsmall';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n leadingIcon?: PhosphorIcon;\n trailingIcon?: PhosphorIcon;\n}\n\nconst VARIANT_CLASS: Record<ButtonVariant, string> = {\n primary: styles.variantPrimary,\n secondary: styles.variantSecondary,\n tertiary: styles.variantTertiary,\n danger: styles.variantDanger,\n link: styles.variantLink,\n};\n\nconst SIZE_CLASS: Record<ButtonSize, string> = {\n medium: styles.sizeMedium,\n small: styles.sizeSmall,\n xsmall: styles.sizeXsmall,\n};\n\nconst ICON_SIZE: Record<ButtonSize, number> = {\n medium: 20,\n small: 20,\n xsmall: 16,\n};\n\nexport function Button({\n variant = 'primary',\n size = 'medium',\n leadingIcon,\n trailingIcon,\n className,\n children,\n disabled,\n ...props\n}: ButtonProps) {\n const cls = [\n styles.button,\n VARIANT_CLASS[variant],\n SIZE_CLASS[size],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const iconSize = ICON_SIZE[size];\n\n return (\n <button\n className={cls}\n disabled={disabled}\n aria-disabled={disabled}\n {...props}\n >\n {leadingIcon && <Icon as={leadingIcon} size={iconSize} />}\n {children}\n {trailingIcon && <Icon as={trailingIcon} size={iconSize} />}\n </button>\n );\n}\n"],"names":["VARIANT_CLASS","styles","SIZE_CLASS","ICON_SIZE","Button","variant","size","leadingIcon","trailingIcon","className","children","disabled","props","cls","iconSize","jsxs","jsx","Icon"],"mappings":";;;AAeA,MAAMA,IAA+C;AAAA,EACnD,SAAWC,EAAO;AAAA,EAClB,WAAWA,EAAO;AAAA,EAClB,UAAWA,EAAO;AAAA,EAClB,QAAWA,EAAO;AAAA,EAClB,MAAWA,EAAO;AACpB,GAEMC,IAAyC;AAAA,EAC7C,QAAQD,EAAO;AAAA,EACf,OAAQA,EAAO;AAAA,EACf,QAAQA,EAAO;AACjB,GAEME,IAAwC;AAAA,EAC5C,QAAQ;AAAA,EACR,OAAQ;AAAA,EACR,QAAQ;AACV;AAEO,SAASC,EAAO;AAAA,EACrB,SAAAC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAgB;AACd,QAAMC,IAAM;AAAA,IACVZ,EAAO;AAAA,IACPD,EAAcK,CAAO;AAAA,IACrBH,EAAWI,CAAI;AAAA,IACfG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELK,IAAWX,EAAUG,CAAI;AAE/B,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF;AAAA,MACX,UAAAF;AAAA,MACA,iBAAeA;AAAA,MACd,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAL,KAAgB,gBAAAS,EAACC,GAAA,EAAK,IAAIV,GAAc,MAAMO,GAAU;AAAA,QACxDJ;AAAA,QACAF,KAAgB,gBAAAQ,EAACC,GAAA,EAAK,IAAIT,GAAc,MAAMM,EAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG/D;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._button_lhbg8_2{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;font-family:var(--font-family-base, system-ui, sans-serif);font-size:var(--font-size-14);font-weight:var(--font-weight-medium);line-height:var(--font-line-height-14);cursor:pointer;border:2px solid transparent;text-decoration:none;white-space:nowrap;flex-shrink:0;transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease,opacity .12s ease}._button_lhbg8_2:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._button_lhbg8_2:disabled,._button_lhbg8_2[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}._sizeMedium_lhbg8_38{height:42px;padding:0 16px}._sizeSmall_lhbg8_43{height:36px;padding:0 16px;font-size:var(--font-size-14)}._sizeXsmall_lhbg8_49{height:30px;padding:0 16px;font-size:var(--font-size-12)}._variantPrimary_lhbg8_59{background-color:var(--color-fill-brand-default);color:var(--color-text-neutral-inverse);border-color:transparent}._variantPrimary_lhbg8_59:hover:not(:disabled){background-color:var(--color-fill-interaction-brand-hover)}._variantSecondary_lhbg8_73{background-color:var(--color-canvas-neutral-white);color:var(--color-text-brand-default);border-color:var(--color-stroke-brand-default)}._variantSecondary_lhbg8_73:hover:not(:disabled){color:var(--color-text-brand-strong);border-color:var(--color-stroke-interaction-brand-hover)}._variantTertiary_lhbg8_88{background-color:var(--color-canvas-neutral-white);color:var(--color-text-neutral-mudle);border-color:var(--color-stroke-neutral-default)}._variantTertiary_lhbg8_88:hover:not(:disabled){border-color:var(--color-stroke-interaction-neutral-hover)}._variantDanger_lhbg8_102{background-color:var(--color-canvas-neutral-white);color:var(--color-text-feedback-danger-default);border-color:var(--color-stroke-feedback-danger-default)}._variantDanger_lhbg8_102:hover:not(:disabled){color:var(--color-text-interaction-danger-hover);border-color:var(--color-stroke-interaction-danger-hover)}._variantLink_lhbg8_117{background-color:transparent;color:var(--color-text-brand-default);border-color:transparent}._variantLink_lhbg8_117:hover:not(:disabled){color:var(--color-text-brand-strong);text-decoration:underline}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import './Button.module.css';const a = "_button_lhbg8_2", n = "_sizeMedium_lhbg8_38", t = "_sizeSmall_lhbg8_43", i = "_sizeXsmall_lhbg8_49", r = "_variantPrimary_lhbg8_59", _ = "_variantSecondary_lhbg8_73", s = "_variantTertiary_lhbg8_88", e = "_variantDanger_lhbg8_102", l = "_variantLink_lhbg8_117", o = {
|
|
2
|
+
button: a,
|
|
3
|
+
sizeMedium: n,
|
|
4
|
+
sizeSmall: t,
|
|
5
|
+
sizeXsmall: i,
|
|
6
|
+
variantPrimary: r,
|
|
7
|
+
variantSecondary: _,
|
|
8
|
+
variantTertiary: s,
|
|
9
|
+
variantDanger: e,
|
|
10
|
+
variantLink: l
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
a as button,
|
|
14
|
+
o as default,
|
|
15
|
+
n as sizeMedium,
|
|
16
|
+
t as sizeSmall,
|
|
17
|
+
i as sizeXsmall,
|
|
18
|
+
e as variantDanger,
|
|
19
|
+
l as variantLink,
|
|
20
|
+
r as variantPrimary,
|
|
21
|
+
_ as variantSecondary,
|
|
22
|
+
s as variantTertiary
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=Button.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as o, jsxs as i } from "react/jsx-runtime";
|
|
2
|
+
import { Info as p, Warning as N } from "@phosphor-icons/react";
|
|
3
|
+
import { Icon as g } from "../Icon/Icon.js";
|
|
4
|
+
import { Button as u } from "../Button/Button.js";
|
|
5
|
+
import n from "./Callout.module.css.js";
|
|
6
|
+
const C = {
|
|
7
|
+
warning: n.variantWarning,
|
|
8
|
+
info: n.variantInfo
|
|
9
|
+
}, I = {
|
|
10
|
+
warning: N,
|
|
11
|
+
info: p
|
|
12
|
+
};
|
|
13
|
+
function z({
|
|
14
|
+
type: e = "warning",
|
|
15
|
+
message: t,
|
|
16
|
+
detailLabel: r,
|
|
17
|
+
detailText: s,
|
|
18
|
+
actionLabel: a,
|
|
19
|
+
actionIcon: m,
|
|
20
|
+
onAction: d,
|
|
21
|
+
disabled: c,
|
|
22
|
+
className: f
|
|
23
|
+
}) {
|
|
24
|
+
const v = [
|
|
25
|
+
n.callout,
|
|
26
|
+
C[e],
|
|
27
|
+
c ? n.disabled : void 0,
|
|
28
|
+
f
|
|
29
|
+
].filter(Boolean).join(" "), h = I[e], l = !!(r || s);
|
|
30
|
+
return /* @__PURE__ */ o(
|
|
31
|
+
"div",
|
|
32
|
+
{
|
|
33
|
+
className: v,
|
|
34
|
+
"aria-disabled": c,
|
|
35
|
+
role: "note",
|
|
36
|
+
children: /* @__PURE__ */ i("div", { className: n.container, children: [
|
|
37
|
+
/* @__PURE__ */ i("div", { className: n.iconTextRow, children: [
|
|
38
|
+
/* @__PURE__ */ o("div", { className: n.iconContainer, children: /* @__PURE__ */ o(g, { as: h, size: 20, color: "var(--color-icon-neutral-inverse)" }) }),
|
|
39
|
+
/* @__PURE__ */ o("span", { className: n.message, children: t })
|
|
40
|
+
] }),
|
|
41
|
+
(l || a) && /* @__PURE__ */ i("div", { className: n.messageAndButton, children: [
|
|
42
|
+
l && /* @__PURE__ */ i("span", { className: n.detail, children: [
|
|
43
|
+
r && /* @__PURE__ */ o("span", { className: n.detailLabel, children: r }),
|
|
44
|
+
r && s ? " " : "",
|
|
45
|
+
s
|
|
46
|
+
] }),
|
|
47
|
+
a && /* @__PURE__ */ o(
|
|
48
|
+
u,
|
|
49
|
+
{
|
|
50
|
+
variant: "tertiary",
|
|
51
|
+
size: "medium",
|
|
52
|
+
leadingIcon: m,
|
|
53
|
+
onClick: d,
|
|
54
|
+
disabled: c,
|
|
55
|
+
children: a
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
] })
|
|
59
|
+
] })
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
z as Callout
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=Callout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callout.js","sources":["../../src/Callout/Callout.tsx"],"sourcesContent":["import React from 'react';\nimport type { Icon as PhosphorIcon } from '@phosphor-icons/react';\nimport { Warning, Info } from '@phosphor-icons/react';\nimport { Icon } from '../Icon/index.js';\nimport { Button } from '../Button/index.js';\nimport styles from './Callout.module.css';\n\nexport type CalloutType = 'warning' | 'info';\n\nexport interface CalloutProps {\n /** Visual type (maps to Figma Type=Warning / Type=Info) */\n type?: CalloutType;\n /** Main callout message shown in the icon row */\n message: string;\n /** Optional secondary detail text (rendered with a semibold label prefix) */\n detailLabel?: string;\n /** Optional detail body text following the label */\n detailText?: string;\n /** Optional action button label. When provided a tertiary Button is rendered. */\n actionLabel?: string;\n /** Leading icon for the optional action button */\n actionIcon?: PhosphorIcon;\n /** Callback fired when the action button is clicked */\n onAction?: React.MouseEventHandler<HTMLButtonElement>;\n /** Visually and interactively disables the callout */\n disabled?: boolean;\n /** Additional class names applied to the root element */\n className?: string;\n}\n\nconst TYPE_CLASS: Record<CalloutType, string> = {\n warning: styles.variantWarning,\n info: styles.variantInfo,\n};\n\nconst TYPE_ICON: Record<CalloutType, PhosphorIcon> = {\n warning: Warning,\n info: Info,\n};\n\nexport function Callout({\n type = 'warning',\n message,\n detailLabel,\n detailText,\n actionLabel,\n actionIcon,\n onAction,\n disabled,\n className,\n}: CalloutProps) {\n const rootCls = [\n styles.callout,\n TYPE_CLASS[type],\n disabled ? styles.disabled : undefined,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n const typeIcon = TYPE_ICON[type];\n const hasDetail = Boolean(detailLabel || detailText);\n\n return (\n <div\n className={rootCls}\n aria-disabled={disabled}\n role=\"note\"\n >\n <div className={styles.container}>\n {/* Icon + heading row */}\n <div className={styles.iconTextRow}>\n <div className={styles.iconContainer}>\n <Icon as={typeIcon} size={20} color=\"var(--color-icon-neutral-inverse)\" />\n </div>\n <span className={styles.message}>{message}</span>\n </div>\n\n {/* Detail + optional action button */}\n {(hasDetail || actionLabel) && (\n <div className={styles.messageAndButton}>\n {hasDetail && (\n <span className={styles.detail}>\n {detailLabel && (\n <span className={styles.detailLabel}>{detailLabel}</span>\n )}\n {detailLabel && detailText ? ' ' : ''}\n {detailText}\n </span>\n )}\n {actionLabel && (\n <Button\n variant=\"tertiary\"\n size=\"medium\"\n leadingIcon={actionIcon}\n onClick={onAction}\n disabled={disabled}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n"],"names":["TYPE_CLASS","styles","TYPE_ICON","Warning","Info","Callout","type","message","detailLabel","detailText","actionLabel","actionIcon","onAction","disabled","className","rootCls","typeIcon","hasDetail","jsx","jsxs","Icon","Button"],"mappings":";;;;;AA8BA,MAAMA,IAA0C;AAAA,EAC9C,SAASC,EAAO;AAAA,EAChB,MAASA,EAAO;AAClB,GAEMC,IAA+C;AAAA,EACnD,SAASC;AAAA,EACT,MAASC;AACX;AAEO,SAASC,EAAQ;AAAA,EACtB,MAAAC,IAAO;AAAA,EACP,SAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AACF,GAAiB;AACf,QAAMC,IAAU;AAAA,IACdd,EAAO;AAAA,IACPD,EAAWM,CAAI;AAAA,IACfO,IAAWZ,EAAO,WAAW;AAAA,IAC7Ba;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAELE,IAAWd,EAAUI,CAAI,GACzBW,IAAY,GAAQT,KAAeC;AAEzC,SACE,gBAAAS;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWH;AAAA,MACX,iBAAeF;AAAA,MACf,MAAK;AAAA,MAEL,UAAA,gBAAAM,EAAC,OAAA,EAAI,WAAWlB,EAAO,WAErB,UAAA;AAAA,QAAA,gBAAAkB,EAAC,OAAA,EAAI,WAAWlB,EAAO,aACrB,UAAA;AAAA,UAAA,gBAAAiB,EAAC,OAAA,EAAI,WAAWjB,EAAO,eACrB,UAAA,gBAAAiB,EAACE,GAAA,EAAK,IAAIJ,GAAU,MAAM,IAAI,OAAM,oCAAA,CAAoC,GAC1E;AAAA,UACA,gBAAAE,EAAC,QAAA,EAAK,WAAWjB,EAAO,SAAU,UAAAM,EAAA,CAAQ;AAAA,QAAA,GAC5C;AAAA,SAGEU,KAAaP,MACb,gBAAAS,EAAC,OAAA,EAAI,WAAWlB,EAAO,kBACpB,UAAA;AAAA,UAAAgB,KACC,gBAAAE,EAAC,QAAA,EAAK,WAAWlB,EAAO,QACrB,UAAA;AAAA,YAAAO,KACC,gBAAAU,EAAC,QAAA,EAAK,WAAWjB,EAAO,aAAc,UAAAO,GAAY;AAAA,YAEnDA,KAAeC,IAAa,MAAM;AAAA,YAClCA;AAAA,UAAA,GACH;AAAA,UAEDC,KACC,gBAAAQ;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,SAAQ;AAAA,cACR,MAAK;AAAA,cACL,aAAaV;AAAA,cACb,SAASC;AAAA,cACT,UAAAC;AAAA,cAEC,UAAAH;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,EAAA,CAEJ;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAGN;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._callout_6mymb_2{display:flex;flex-direction:row;align-items:flex-start;padding:16px;border-radius:12px;border-width:1px;border-style:solid;width:100%;box-sizing:border-box;font-family:var(--font-family-base, system-ui, sans-serif)}._variantWarning_6mymb_17{background-color:var(--color-fill-feedback-warning-subtle);border-color:var(--color-stroke-feedback-warning-subtle)}._variantInfo_6mymb_23{background-color:var(--color-fill-feedback-info-subtle);border-color:var(--color-stroke-feedback-info-subtle)}._container_6mymb_29{display:flex;flex-direction:column;gap:8px;align-items:flex-start;flex:1 0 0;min-width:0;overflow:hidden}._iconTextRow_6mymb_40{display:flex;flex-direction:row;align-items:center;gap:8px;width:100%;flex-shrink:0}._iconContainer_6mymb_50{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:999px;flex-shrink:0}._variantWarning_6mymb_17 ._iconContainer_6mymb_50{background-color:var(--color-fill-feedback-warning-default)}._variantInfo_6mymb_23 ._iconContainer_6mymb_50{background-color:var(--color-fill-feedback-info-default)}._message_6mymb_69{flex:1 0 0;min-width:0;font-size:var(--font-size-14);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-14);color:var(--color-text-neutral-mudle)}._messageAndButton_6mymb_79{display:flex;flex-direction:column;gap:8px;align-items:flex-start;width:100%;flex-shrink:0;overflow:hidden}._detail_6mymb_90{font-size:var(--font-size-14);font-weight:var(--font-weight-regular);line-height:var(--font-line-height-14);color:var(--color-text-neutral-mudle);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._detailLabel_6mymb_101{font-weight:var(--font-weight-semibold)}._callout_6mymb_2:where(._disabled_6mymb_106){opacity:.5;cursor:not-allowed;pointer-events:none}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import './Callout.module.css';const n = "_callout_6mymb_2", t = "_variantWarning_6mymb_17", a = "_variantInfo_6mymb_23", o = "_container_6mymb_29", e = "_iconTextRow_6mymb_40", _ = "_iconContainer_6mymb_50", i = "_message_6mymb_69", s = "_messageAndButton_6mymb_79", m = "_detail_6mymb_90", c = "_detailLabel_6mymb_101", l = "_disabled_6mymb_106", b = {
|
|
2
|
+
callout: n,
|
|
3
|
+
variantWarning: t,
|
|
4
|
+
variantInfo: a,
|
|
5
|
+
container: o,
|
|
6
|
+
iconTextRow: e,
|
|
7
|
+
iconContainer: _,
|
|
8
|
+
message: i,
|
|
9
|
+
messageAndButton: s,
|
|
10
|
+
detail: m,
|
|
11
|
+
detailLabel: c,
|
|
12
|
+
disabled: l
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
n as callout,
|
|
16
|
+
o as container,
|
|
17
|
+
b as default,
|
|
18
|
+
m as detail,
|
|
19
|
+
c as detailLabel,
|
|
20
|
+
l as disabled,
|
|
21
|
+
_ as iconContainer,
|
|
22
|
+
e as iconTextRow,
|
|
23
|
+
i as message,
|
|
24
|
+
s as messageAndButton,
|
|
25
|
+
a as variantInfo,
|
|
26
|
+
t as variantWarning
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=Callout.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callout.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
|
package/Card/Card.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import { Slot as d } from "../Slot/Slot.js";
|
|
3
|
+
import e from "./Card.module.css.js";
|
|
4
|
+
const n = {
|
|
5
|
+
small: e.sizeSmall,
|
|
6
|
+
medium: e.sizeMedium,
|
|
7
|
+
large: e.sizeLarge
|
|
8
|
+
}, S = {
|
|
9
|
+
shadow: e.styleShadow,
|
|
10
|
+
line: e.styleLine
|
|
11
|
+
};
|
|
12
|
+
function L({
|
|
13
|
+
size: o = "medium",
|
|
14
|
+
cardStyle: s = "shadow",
|
|
15
|
+
disabled: l = !1,
|
|
16
|
+
className: a,
|
|
17
|
+
children: r,
|
|
18
|
+
...m
|
|
19
|
+
}) {
|
|
20
|
+
const t = [
|
|
21
|
+
e.card,
|
|
22
|
+
n[o],
|
|
23
|
+
S[s],
|
|
24
|
+
a
|
|
25
|
+
].filter(Boolean).join(" ");
|
|
26
|
+
return /* @__PURE__ */ i(
|
|
27
|
+
"div",
|
|
28
|
+
{
|
|
29
|
+
className: t,
|
|
30
|
+
"aria-disabled": l || void 0,
|
|
31
|
+
...m,
|
|
32
|
+
children: /* @__PURE__ */ i(d, { children: r })
|
|
33
|
+
}
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
export {
|
|
37
|
+
L as Card
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=Card.js.map
|
package/Card/Card.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../src/Card/Card.tsx"],"sourcesContent":["import React from 'react';\nimport { Slot } from '../Slot/index.js';\nimport styles from './Card.module.css';\n\nexport type CardSize = 'small' | 'medium' | 'large';\nexport type CardStyle = 'shadow' | 'line';\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: CardSize;\n cardStyle?: CardStyle;\n disabled?: boolean;\n}\n\nconst SIZE_CLASS: Record<CardSize, string> = {\n small: styles.sizeSmall,\n medium: styles.sizeMedium,\n large: styles.sizeLarge,\n};\n\nconst STYLE_CLASS: Record<CardStyle, string> = {\n shadow: styles.styleShadow,\n line: styles.styleLine,\n};\n\nexport function Card({\n size = 'medium',\n cardStyle = 'shadow',\n disabled = false,\n className,\n children,\n ...props\n}: CardProps) {\n const cls = [\n styles.card,\n SIZE_CLASS[size],\n STYLE_CLASS[cardStyle],\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div\n className={cls}\n aria-disabled={disabled || undefined}\n {...props}\n >\n <Slot>{children}</Slot>\n </div>\n );\n}\n"],"names":["SIZE_CLASS","styles","STYLE_CLASS","Card","size","cardStyle","disabled","className","children","props","cls","jsx","Slot"],"mappings":";;;AAaA,MAAMA,IAAuC;AAAA,EAC3C,OAAQC,EAAO;AAAA,EACf,QAAQA,EAAO;AAAA,EACf,OAAQA,EAAO;AACjB,GAEMC,IAAyC;AAAA,EAC7C,QAAQD,EAAO;AAAA,EACf,MAAQA,EAAO;AACjB;AAEO,SAASE,EAAK;AAAA,EACnB,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACL,GAAc;AACZ,QAAMC,IAAM;AAAA,IACVT,EAAO;AAAA,IACPD,EAAWI,CAAI;AAAA,IACfF,EAAYG,CAAS;AAAA,IACrBE;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAI;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWD;AAAA,MACX,iBAAeJ,KAAY;AAAA,MAC1B,GAAGG;AAAA,MAEJ,UAAA,gBAAAE,EAACC,KAAM,UAAAJ,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGtB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._card_achli_2{display:flex;flex-direction:column;align-items:stretch;border-radius:8px;background-color:var(--color-canvas-neutral-white);border:1px solid transparent;box-sizing:border-box;position:relative;transition:box-shadow .12s ease,border-color .12s ease,opacity .12s ease}._card_achli_2:focus-visible{outline:none;box-shadow:var(--shadow-focus)}._sizeSmall_achli_23{padding:16px;gap:10px}._sizeMedium_achli_28{padding:20px;gap:10px}._sizeLarge_achli_33{padding:24px;gap:10px}._styleShadow_achli_40{box-shadow:var(--shadow-layer-xs);border-color:transparent}._styleLine_achli_47{box-shadow:none;border-color:var(--color-stroke-neutral-default)}._card_achli_2[aria-disabled=true],._card_achli_2:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import './Card.module.css';const e = "_card_achli_2", s = "_sizeSmall_achli_23", i = "_sizeMedium_achli_28", a = "_sizeLarge_achli_33", l = "_styleShadow_achli_40", _ = "_styleLine_achli_47", c = {
|
|
2
|
+
card: e,
|
|
3
|
+
sizeSmall: s,
|
|
4
|
+
sizeMedium: i,
|
|
5
|
+
sizeLarge: a,
|
|
6
|
+
styleShadow: l,
|
|
7
|
+
styleLine: _
|
|
8
|
+
};
|
|
9
|
+
export {
|
|
10
|
+
e as card,
|
|
11
|
+
c as default,
|
|
12
|
+
a as sizeLarge,
|
|
13
|
+
i as sizeMedium,
|
|
14
|
+
s as sizeSmall,
|
|
15
|
+
_ as styleLine,
|
|
16
|
+
l as styleShadow
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=Card.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsxs as h, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import u, { useId as v } from "react";
|
|
3
|
+
import e from "./Checkbox.module.css.js";
|
|
4
|
+
function C({
|
|
5
|
+
checked: s,
|
|
6
|
+
defaultChecked: i,
|
|
7
|
+
label: a,
|
|
8
|
+
disabled: c = !1,
|
|
9
|
+
className: m,
|
|
10
|
+
id: p,
|
|
11
|
+
onChange: f,
|
|
12
|
+
...w
|
|
13
|
+
}) {
|
|
14
|
+
const x = v(), d = p ?? x, r = s !== void 0, t = r ? s === "indeterminate" : i === "indeterminate", o = r ? s === !0 : i === !0, k = [
|
|
15
|
+
e.box,
|
|
16
|
+
o ? e.checked : null,
|
|
17
|
+
t ? e.indeterminate : null
|
|
18
|
+
].filter(Boolean).join(" "), g = [
|
|
19
|
+
e.checkbox,
|
|
20
|
+
c ? e.disabled : null,
|
|
21
|
+
m
|
|
22
|
+
].filter(Boolean).join(" "), l = u.useRef(null);
|
|
23
|
+
return u.useEffect(() => {
|
|
24
|
+
l.current && (l.current.indeterminate = t);
|
|
25
|
+
}, [t]), /* @__PURE__ */ h("label", { className: g, htmlFor: d, children: [
|
|
26
|
+
/* @__PURE__ */ n(
|
|
27
|
+
"input",
|
|
28
|
+
{
|
|
29
|
+
ref: l,
|
|
30
|
+
id: d,
|
|
31
|
+
type: "checkbox",
|
|
32
|
+
className: e.input,
|
|
33
|
+
checked: r ? o || t : void 0,
|
|
34
|
+
defaultChecked: r ? void 0 : i === !0 || i === "indeterminate",
|
|
35
|
+
disabled: c,
|
|
36
|
+
"aria-checked": t ? "mixed" : o,
|
|
37
|
+
onChange: f,
|
|
38
|
+
...w
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ h("span", { className: k, "aria-hidden": "true", children: [
|
|
42
|
+
o && /* @__PURE__ */ n("span", { className: e.icon, children: /* @__PURE__ */ n(
|
|
43
|
+
"svg",
|
|
44
|
+
{
|
|
45
|
+
width: "16",
|
|
46
|
+
height: "16",
|
|
47
|
+
viewBox: "0 0 16 16",
|
|
48
|
+
fill: "none",
|
|
49
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
50
|
+
"aria-hidden": "true",
|
|
51
|
+
children: /* @__PURE__ */ n(
|
|
52
|
+
"path",
|
|
53
|
+
{
|
|
54
|
+
d: "M2.5 8L6.5 12L13.5 4",
|
|
55
|
+
stroke: "currentColor",
|
|
56
|
+
strokeWidth: "2",
|
|
57
|
+
strokeLinecap: "round",
|
|
58
|
+
strokeLinejoin: "round"
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
}
|
|
62
|
+
) }),
|
|
63
|
+
t && /* @__PURE__ */ n("span", { className: e.icon, children: /* @__PURE__ */ n(
|
|
64
|
+
"svg",
|
|
65
|
+
{
|
|
66
|
+
width: "16",
|
|
67
|
+
height: "16",
|
|
68
|
+
viewBox: "0 0 16 16",
|
|
69
|
+
fill: "none",
|
|
70
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
71
|
+
"aria-hidden": "true",
|
|
72
|
+
children: /* @__PURE__ */ n(
|
|
73
|
+
"path",
|
|
74
|
+
{
|
|
75
|
+
d: "M3 8H13",
|
|
76
|
+
stroke: "currentColor",
|
|
77
|
+
strokeWidth: "2",
|
|
78
|
+
strokeLinecap: "round"
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
}
|
|
82
|
+
) })
|
|
83
|
+
] }),
|
|
84
|
+
a && /* @__PURE__ */ n("span", { className: e.label, children: a })
|
|
85
|
+
] });
|
|
86
|
+
}
|
|
87
|
+
export {
|
|
88
|
+
C as Checkbox
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sources":["../../src/Checkbox/Checkbox.tsx"],"sourcesContent":["import React, { useId } from 'react';\nimport styles from './Checkbox.module.css';\n\nexport type CheckboxCheckedState = boolean | 'indeterminate';\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'checked' | 'defaultChecked' | 'type'> {\n /** Checked state: true = selected, false = unselected, 'indeterminate' = partial. */\n checked?: CheckboxCheckedState;\n /** Uncontrolled default checked state. */\n defaultChecked?: CheckboxCheckedState;\n /** Label text rendered next to the checkbox. */\n label?: string;\n /** Disables the checkbox. */\n disabled?: boolean;\n /** Additional className for the outer wrapper. */\n className?: string;\n}\n\nexport function Checkbox({\n checked,\n defaultChecked,\n label,\n disabled = false,\n className,\n id: idProp,\n onChange,\n ...props\n}: CheckboxProps) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n\n // Resolve internal checked/indeterminate values\n const isControlled = checked !== undefined;\n const isIndeterminate = isControlled\n ? checked === 'indeterminate'\n : defaultChecked === 'indeterminate';\n const isChecked = isControlled\n ? checked === true\n : defaultChecked === true;\n\n // Build box class names\n const boxCls = [\n styles.box,\n isChecked ? styles.checked : null,\n isIndeterminate ? styles.indeterminate : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n const wrapperCls = [\n styles.checkbox,\n disabled ? styles.disabled : null,\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // Attach indeterminate imperatively via ref (HTML attribute doesn't support it)\n const inputRef = React.useRef<HTMLInputElement>(null);\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n return (\n <label className={wrapperCls} htmlFor={id}>\n <input\n ref={inputRef}\n id={id}\n type=\"checkbox\"\n className={styles.input}\n checked={isControlled ? (isChecked || isIndeterminate) : undefined}\n defaultChecked={\n !isControlled\n ? defaultChecked === true || defaultChecked === 'indeterminate'\n : undefined\n }\n disabled={disabled}\n aria-checked={isIndeterminate ? 'mixed' : isChecked}\n onChange={onChange}\n {...props}\n />\n <span className={boxCls} aria-hidden=\"true\">\n {isChecked && (\n <span className={styles.icon}>\n {/* Check mark SVG — matches Figma \"Check\" icon at 16×16 */}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M2.5 8L6.5 12L13.5 4\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </span>\n )}\n {isIndeterminate && (\n <span className={styles.icon}>\n {/* Minus / indeterminate SVG — matches Figma \"Minus\" icon at 18×18 */}\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M3 8H13\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </span>\n )}\n </span>\n {label && <span className={styles.label}>{label}</span>}\n </label>\n );\n}\n"],"names":["Checkbox","checked","defaultChecked","label","disabled","className","idProp","onChange","props","generatedId","useId","id","isControlled","isIndeterminate","isChecked","boxCls","styles","wrapperCls","inputRef","React","jsxs","jsx"],"mappings":";;;AAmBO,SAASA,EAAS;AAAA,EACvB,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,WAAAC;AAAA,EACA,IAAIC;AAAA,EACJ,UAAAC;AAAA,EACA,GAAGC;AACL,GAAkB;AAChB,QAAMC,IAAcC,EAAA,GACdC,IAAKL,KAAUG,GAGfG,IAAeX,MAAY,QAC3BY,IAAkBD,IACpBX,MAAY,kBACZC,MAAmB,iBACjBY,IAAYF,IACdX,MAAY,KACZC,MAAmB,IAGjBa,IAAS;AAAA,IACbC,EAAO;AAAA,IACPF,IAAYE,EAAO,UAAU;AAAA,IAC7BH,IAAkBG,EAAO,gBAAgB;AAAA,EAAA,EAExC,OAAO,OAAO,EACd,KAAK,GAAG,GAELC,IAAa;AAAA,IACjBD,EAAO;AAAA,IACPZ,IAAWY,EAAO,WAAW;AAAA,IAC7BX;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAGLa,IAAWC,EAAM,OAAyB,IAAI;AACpD,SAAAA,EAAM,UAAU,MAAM;AACpB,IAAID,EAAS,YACXA,EAAS,QAAQ,gBAAgBL;AAAA,EAErC,GAAG,CAACA,CAAe,CAAC,GAGlB,gBAAAO,EAAC,SAAA,EAAM,WAAWH,GAAY,SAASN,GACrC,UAAA;AAAA,IAAA,gBAAAU;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKH;AAAA,QACL,IAAAP;AAAA,QACA,MAAK;AAAA,QACL,WAAWK,EAAO;AAAA,QAClB,SAASJ,IAAgBE,KAAaD,IAAmB;AAAA,QACzD,gBACGD,IAEG,SADAV,MAAmB,MAAQA,MAAmB;AAAA,QAGpD,UAAAE;AAAA,QACA,gBAAcS,IAAkB,UAAUC;AAAA,QAC1C,UAAAP;AAAA,QACC,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEN,gBAAAY,EAAC,QAAA,EAAK,WAAWL,GAAQ,eAAY,QAClC,UAAA;AAAA,MAAAD,KACC,gBAAAO,EAAC,QAAA,EAAK,WAAWL,EAAO,MAEtB,UAAA,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,UACN,eAAY;AAAA,UAEZ,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,cACd,gBAAe;AAAA,YAAA;AAAA,UAAA;AAAA,QACjB;AAAA,MAAA,GAEJ;AAAA,MAEDR,KACC,gBAAAQ,EAAC,QAAA,EAAK,WAAWL,EAAO,MAEtB,UAAA,gBAAAK;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,OAAM;AAAA,UACN,QAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,OAAM;AAAA,UACN,eAAY;AAAA,UAEZ,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,GAAE;AAAA,cACF,QAAO;AAAA,cACP,aAAY;AAAA,cACZ,eAAc;AAAA,YAAA;AAAA,UAAA;AAAA,QAChB;AAAA,MAAA,EACF,CACF;AAAA,IAAA,GAEJ;AAAA,IACClB,KAAS,gBAAAkB,EAAC,QAAA,EAAK,WAAWL,EAAO,OAAQ,UAAAb,EAAA,CAAM;AAAA,EAAA,GAClD;AAEJ;"}
|