@brijbyte/agentic-ui 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -35
- package/dist/accordion/accordion.d.ts +15 -1
- package/dist/accordion/accordion.d.ts.map +1 -1
- package/dist/accordion/accordion.js +6 -1
- package/dist/accordion/accordion.js.map +1 -1
- package/dist/accordion/parts.d.ts +1 -1
- package/dist/accordion/parts.js +2 -2
- package/dist/alert-dialog/alert-dialog.d.ts +12 -1
- package/dist/alert-dialog/alert-dialog.d.ts.map +1 -1
- package/dist/alert-dialog/alert-dialog.js +6 -1
- package/dist/alert-dialog/alert-dialog.js.map +1 -1
- package/dist/alert-dialog/parts.d.ts +1 -1
- package/dist/alert-dialog/parts.js +2 -2
- package/dist/badge/badge.d.ts +7 -1
- package/dist/badge/badge.d.ts.map +1 -1
- package/dist/badge/badge.js +4 -0
- package/dist/badge/badge.js.map +1 -1
- package/dist/button/button.css +22 -8
- package/dist/button/button.d.ts +19 -8
- package/dist/button/button.d.ts.map +1 -1
- package/dist/button/button.js +6 -1
- package/dist/button/button.js.map +1 -1
- package/dist/button/button.module.js.map +1 -1
- package/dist/card/card.d.ts +11 -1
- package/dist/card/card.d.ts.map +1 -1
- package/dist/card/card.js +7 -0
- package/dist/card/card.js.map +1 -1
- package/dist/checkbox/checkbox.d.ts +14 -1
- package/dist/checkbox/checkbox.d.ts.map +1 -1
- package/dist/checkbox/checkbox.js +5 -1
- package/dist/checkbox/checkbox.js.map +1 -1
- package/dist/checkbox/parts.js +1 -1
- package/dist/collapsible/collapsible.d.ts +12 -1
- package/dist/collapsible/collapsible.d.ts.map +1 -1
- package/dist/collapsible/collapsible.js +5 -0
- package/dist/collapsible/collapsible.js.map +1 -1
- package/dist/collapsible/parts.js +1 -1
- package/dist/context-menu/context-menu.d.ts +6 -1
- package/dist/context-menu/context-menu.d.ts.map +1 -1
- package/dist/context-menu/context-menu.js +4 -0
- package/dist/context-menu/context-menu.js.map +1 -1
- package/dist/context-menu/parts.js +1 -1
- package/dist/dialog/dialog.d.ts +14 -2
- package/dist/dialog/dialog.d.ts.map +1 -1
- package/dist/dialog/dialog.js +6 -0
- package/dist/dialog/dialog.js.map +1 -1
- package/dist/dialog/parts.js +1 -1
- package/dist/drawer/drawer.d.ts +12 -1
- package/dist/drawer/drawer.d.ts.map +1 -1
- package/dist/drawer/drawer.js +5 -0
- package/dist/drawer/drawer.js.map +1 -1
- package/dist/drawer/parts.d.ts +1 -1
- package/dist/drawer/parts.js +1 -1
- package/dist/index.css +1773 -1316
- package/dist/index.d.ts +29 -20
- package/dist/index.js +50 -37
- package/dist/input/input.d.ts +8 -0
- package/dist/input/input.d.ts.map +1 -1
- package/dist/input/input.js +6 -1
- package/dist/input/input.js.map +1 -1
- package/dist/menu/menu.css +3 -8
- package/dist/menu/menu.d.ts +12 -5
- package/dist/menu/menu.d.ts.map +1 -1
- package/dist/menu/menu.js +10 -24
- package/dist/menu/menu.js.map +1 -1
- package/dist/menu/menu.module.js +1 -1
- package/dist/menu/menu.module.js.map +1 -1
- package/dist/menu/menuitemshortcut.js +1 -1
- package/dist/menu/parts.js +1 -1
- package/dist/meter/circular-meter.d.ts +48 -0
- package/dist/meter/circular-meter.d.ts.map +1 -0
- package/dist/meter/circular-meter.js +86 -0
- package/dist/meter/circular-meter.js.map +1 -0
- package/dist/meter/index.d.ts +4 -0
- package/dist/meter/index.js +5 -0
- package/dist/meter/meter.css +152 -0
- package/dist/meter/meter.d.ts +58 -0
- package/dist/meter/meter.d.ts.map +1 -0
- package/dist/meter/meter.js +50 -0
- package/dist/meter/meter.js.map +1 -0
- package/dist/meter/meter.module.css.d.ts +2 -0
- package/dist/meter/meter.module.js +27 -0
- package/dist/meter/meter.module.js.map +1 -0
- package/dist/meter/meterState.js +18 -0
- package/dist/meter/meterState.js.map +1 -0
- package/dist/meter/parts.d.ts +31 -0
- package/dist/meter/parts.d.ts.map +1 -0
- package/dist/meter/parts.js +56 -0
- package/dist/meter/parts.js.map +1 -0
- package/dist/number-field/number-field.d.ts +17 -1
- package/dist/number-field/number-field.d.ts.map +1 -1
- package/dist/number-field/number-field.js +5 -1
- package/dist/number-field/number-field.js.map +1 -1
- package/dist/number-field/parts.js +1 -1
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +4 -0
- package/dist/popover/parts.d.ts +43 -0
- package/dist/popover/parts.d.ts.map +1 -0
- package/dist/popover/parts.js +96 -0
- package/dist/popover/parts.js.map +1 -0
- package/dist/popover/popover.css +173 -0
- package/dist/popover/popover.d.ts +49 -0
- package/dist/popover/popover.d.ts.map +1 -0
- package/dist/popover/popover.js +68 -0
- package/dist/popover/popover.js.map +1 -0
- package/dist/popover/popover.module.css.d.ts +2 -0
- package/dist/popover/popover.module.js +16 -0
- package/dist/popover/popover.module.js.map +1 -0
- package/dist/progress/parts.js +1 -1
- package/dist/progress/progress.d.ts +11 -0
- package/dist/progress/progress.d.ts.map +1 -1
- package/dist/progress/progress.js +5 -0
- package/dist/progress/progress.js.map +1 -1
- package/dist/radio/index.d.ts +3 -0
- package/dist/radio/index.js +4 -0
- package/dist/radio/parts.d.ts +18 -0
- package/dist/radio/parts.d.ts.map +1 -0
- package/dist/radio/parts.js +42 -0
- package/dist/radio/parts.js.map +1 -0
- package/dist/radio/radio.css +84 -0
- package/dist/radio/radio.d.ts +31 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +33 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/radio/radio.module.css.d.ts +2 -0
- package/dist/radio/radio.module.js +11 -0
- package/dist/radio/radio.module.js.map +1 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +4 -0
- package/dist/radio-group/parts.d.ts +13 -0
- package/dist/radio-group/parts.d.ts.map +1 -0
- package/dist/radio-group/parts.js +31 -0
- package/dist/radio-group/parts.js.map +1 -0
- package/dist/radio-group/radio-group.css +17 -0
- package/dist/radio-group/radio-group.d.ts +37 -0
- package/dist/radio-group/radio-group.d.ts.map +1 -0
- package/dist/radio-group/radio-group.js +28 -0
- package/dist/radio-group/radio-group.js.map +1 -0
- package/dist/radio-group/radio-group.module.css.d.ts +2 -0
- package/dist/radio-group/radio-group.module.js +9 -0
- package/dist/radio-group/radio-group.module.js.map +1 -0
- package/dist/select/parts.js +1 -1
- package/dist/select/select.d.ts +15 -2
- package/dist/select/select.d.ts.map +1 -1
- package/dist/select/select.js +5 -1
- package/dist/select/select.js.map +1 -1
- package/dist/separator/separator.d.ts +4 -0
- package/dist/separator/separator.d.ts.map +1 -1
- package/dist/separator/separator.js +5 -1
- package/dist/separator/separator.js.map +1 -1
- package/dist/shared/PopupArrow.js +22 -0
- package/dist/shared/PopupArrow.js.map +1 -0
- package/dist/slider/parts.js +1 -1
- package/dist/slider/slider.d.ts +19 -1
- package/dist/slider/slider.d.ts.map +1 -1
- package/dist/slider/slider.js +6 -0
- package/dist/slider/slider.js.map +1 -1
- package/dist/styles/tokens.css +21 -8
- package/dist/switch/parts.js +1 -1
- package/dist/switch/switch.css +11 -2
- package/dist/switch/switch.d.ts +13 -1
- package/dist/switch/switch.d.ts.map +1 -1
- package/dist/switch/switch.js +5 -1
- package/dist/switch/switch.js.map +1 -1
- package/dist/switch/switch.module.js.map +1 -1
- package/dist/tabs/parts.js +1 -1
- package/dist/tabs/tabs.d.ts +9 -2
- package/dist/tabs/tabs.d.ts.map +1 -1
- package/dist/tabs/tabs.js +4 -0
- package/dist/tabs/tabs.js.map +1 -1
- package/dist/toast/parts.js +1 -1
- package/dist/toast/toast.d.ts +12 -1
- package/dist/toast/toast.d.ts.map +1 -1
- package/dist/toast/toast.js +8 -0
- package/dist/toast/toast.js.map +1 -1
- package/dist/tokens.css +23 -11
- package/dist/tooltip/parts.js +1 -1
- package/dist/tooltip/tooltip.d.ts +10 -1
- package/dist/tooltip/tooltip.d.ts.map +1 -1
- package/dist/tooltip/tooltip.js +4 -0
- package/dist/tooltip/tooltip.js.map +1 -1
- package/package.json +23 -2
- package/src/accordion/accordion.tsx +14 -0
- package/src/alert-dialog/alert-dialog.tsx +11 -0
- package/src/badge/badge.tsx +6 -0
- package/src/button/button.module.css +29 -13
- package/src/button/button.tsx +19 -8
- package/src/card/card.tsx +10 -0
- package/src/checkbox/checkbox.tsx +13 -0
- package/src/collapsible/collapsible.tsx +11 -0
- package/src/context-menu/context-menu.tsx +5 -0
- package/src/dialog/dialog.tsx +13 -1
- package/src/drawer/drawer.tsx +11 -0
- package/src/index.ts +25 -233
- package/src/input/input.tsx +8 -0
- package/src/menu/menu.module.css +3 -10
- package/src/menu/menu.tsx +13 -26
- package/src/meter/circular-meter.tsx +114 -0
- package/src/meter/index.ts +9 -0
- package/src/meter/meter.module.css +162 -0
- package/src/meter/meter.tsx +86 -0
- package/src/meter/meterState.ts +29 -0
- package/src/meter/parts.tsx +72 -0
- package/src/number-field/number-field.tsx +16 -0
- package/src/popover/index.ts +14 -0
- package/src/popover/parts.tsx +120 -0
- package/src/popover/popover.module.css +189 -0
- package/src/popover/popover.tsx +80 -0
- package/src/progress/progress.tsx +11 -0
- package/src/radio/index.ts +6 -0
- package/src/radio/parts.tsx +43 -0
- package/src/radio/radio.module.css +96 -0
- package/src/radio/radio.tsx +37 -0
- package/src/radio-group/index.ts +5 -0
- package/src/radio-group/parts.tsx +32 -0
- package/src/radio-group/radio-group.module.css +17 -0
- package/src/radio-group/radio-group.tsx +63 -0
- package/src/select/select.tsx +14 -1
- package/src/separator/separator.tsx +4 -0
- package/src/shared/PopupArrow.tsx +41 -0
- package/src/slider/slider.tsx +18 -0
- package/src/styles/tokens.css +23 -11
- package/src/switch/switch.module.css +11 -2
- package/src/switch/switch.tsx +12 -0
- package/src/tabs/tabs.tsx +8 -1
- package/src/toast/toast.tsx +11 -0
- package/src/tooltip/tooltip.tsx +9 -0
package/dist/slider/parts.js
CHANGED
package/dist/slider/slider.d.ts
CHANGED
|
@@ -1,20 +1,32 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
1
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
3
|
import styles from "./slider.module.css";
|
|
4
4
|
|
|
5
5
|
//#region src/slider/slider.d.ts
|
|
6
6
|
interface SliderProps {
|
|
7
|
+
/** Current value (controlled). Pass an array for range sliders. */
|
|
7
8
|
value?: number | number[];
|
|
9
|
+
/** Initial value (uncontrolled). Pass an array for range sliders. */
|
|
8
10
|
defaultValue?: number | number[];
|
|
11
|
+
/** Called on every value change while dragging. */
|
|
9
12
|
onValueChange?: (value: number | number[], eventDetails: unknown) => void;
|
|
13
|
+
/** Called once when the user finishes dragging. */
|
|
10
14
|
onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;
|
|
15
|
+
/** Minimum allowed value. @default 0 */
|
|
11
16
|
min?: number;
|
|
17
|
+
/** Maximum allowed value. @default 100 */
|
|
12
18
|
max?: number;
|
|
19
|
+
/** Step increment. @default 1 */
|
|
13
20
|
step?: number;
|
|
21
|
+
/** Step used for Page Up / Page Down keyboard shortcuts. @default 10 */
|
|
14
22
|
largeStep?: number;
|
|
23
|
+
/** Prevent interaction. */
|
|
15
24
|
disabled?: boolean;
|
|
25
|
+
/** HTML name attribute for form submission. */
|
|
16
26
|
name?: string;
|
|
27
|
+
/** Axis direction. @default "horizontal" */
|
|
17
28
|
orientation?: "horizontal" | "vertical";
|
|
29
|
+
/** `Intl.NumberFormatOptions` for value display formatting. */
|
|
18
30
|
format?: Intl.NumberFormatOptions;
|
|
19
31
|
/** Visible label rendered above the track. */
|
|
20
32
|
label?: ReactNode;
|
|
@@ -24,6 +36,12 @@ interface SliderProps {
|
|
|
24
36
|
"aria-label"?: string;
|
|
25
37
|
className?: string;
|
|
26
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* An accessible range input with full keyboard and touch support. Pass a
|
|
41
|
+
* single number for a standard slider or an array for a range slider with
|
|
42
|
+
* two thumbs. Supports steps, large steps (Page Up/Down), and
|
|
43
|
+
* `Intl.NumberFormat` display formatting.
|
|
44
|
+
*/
|
|
27
45
|
declare function Slider({
|
|
28
46
|
label,
|
|
29
47
|
showValue,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/slider/slider.tsx"],"mappings":";;;;;UAIiB,WAAA
|
|
1
|
+
{"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/slider/slider.tsx"],"mappings":";;;;;UAIiB,WAAA;;EAEf,KAAA;EAFe;EAIf,YAAA;;EAEA,aAAA,IAAiB,KAAA,qBAA0B,YAAA;EAJ3C;EAMA,gBAAA,IAAoB,KAAA,qBAA0B,YAAA;EAF9C;EAIA,GAAA;EAJ2C;EAM3C,GAAA;EAJoB;EAMpB,IAAA;EAJA;EAMA,SAAA;EAFA;EAIA,QAAA;EAAA;EAEA,IAAA;EAEA;EAAA,WAAA;EAES;EAAT,MAAA,GAAS,IAAA,CAAK,mBAAA;EAEd;EAAA,KAAA,GAAQ,SAAA;EAER;EAAA,SAAA;EAGA;EADA,YAAA;EACA,SAAA;AAAA;;;;;;;iBASc,MAAA,CAAA;EACd,KAAA;EACA,SAAA;EACA,SAAA;EACA,aAAA;EACA,gBAAA;EAAA,cACc,SAAA;EAAA,GACX;AAAA,GACF,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/slider/slider.js
CHANGED
|
@@ -2,6 +2,12 @@ import slider_module_default from "./slider.module.js";
|
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Slider } from "@base-ui/react/slider";
|
|
4
4
|
//#region src/slider/slider.tsx
|
|
5
|
+
/**
|
|
6
|
+
* An accessible range input with full keyboard and touch support. Pass a
|
|
7
|
+
* single number for a standard slider or an array for a range slider with
|
|
8
|
+
* two thumbs. Supports steps, large steps (Page Up/Down), and
|
|
9
|
+
* `Intl.NumberFormat` display formatting.
|
|
10
|
+
*/
|
|
5
11
|
function Slider$1({ label, showValue = false, className, onValueChange, onValueCommitted, "aria-label": ariaLabel, ...props }) {
|
|
6
12
|
const isRange = Array.isArray(props.defaultValue ?? props.value);
|
|
7
13
|
return /* @__PURE__ */ jsxs(Slider.Root, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider.js","names":["Slider","BaseSlider","styles"],"sources":["../../src/slider/slider.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui/react/slider\";\nimport styles from \"./slider.module.css\";\n\nexport interface SliderProps {\n value?: number | number[];\n defaultValue?: number | number[];\n onValueChange?: (value: number | number[], eventDetails: unknown) => void;\n onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;\n min?: number;\n max?: number;\n step?: number;\n largeStep?: number;\n disabled?: boolean;\n name?: string;\n orientation?: \"horizontal\" | \"vertical\";\n format?: Intl.NumberFormatOptions;\n /** Visible label rendered above the track. */\n label?: ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n /** Aria-label for single-thumb sliders without a visible label. */\n \"aria-label\"?: string;\n className?: string;\n}\n\nexport function Slider({\n label,\n showValue = false,\n className,\n onValueChange,\n onValueCommitted,\n \"aria-label\": ariaLabel,\n ...props\n}: SliderProps) {\n const isRange = Array.isArray(props.defaultValue ?? props.value);\n\n return (\n <BaseSlider.Root\n className={`${styles.root} ${className ?? \"\"}`}\n onValueChange={onValueChange as never}\n onValueCommitted={onValueCommitted as never}\n {...props}\n >\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <BaseSlider.Label className={styles.label}>{label}</BaseSlider.Label>}\n {showValue && <BaseSlider.Value className={styles.value} />}\n </div>\n )}\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n {isRange ? (\n <>\n <BaseSlider.Thumb index={0} className={styles.thumb} aria-label=\"Minimum value\" />\n <BaseSlider.Thumb index={1} className={styles.thumb} aria-label=\"Maximum value\" />\n </>\n ) : (\n <BaseSlider.Thumb className={styles.thumb} aria-label={ariaLabel} />\n )}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n\nexport { styles as SliderStyles };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"slider.js","names":["Slider","BaseSlider","styles"],"sources":["../../src/slider/slider.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Slider as BaseSlider } from \"@base-ui/react/slider\";\nimport styles from \"./slider.module.css\";\n\nexport interface SliderProps {\n /** Current value (controlled). Pass an array for range sliders. */\n value?: number | number[];\n /** Initial value (uncontrolled). Pass an array for range sliders. */\n defaultValue?: number | number[];\n /** Called on every value change while dragging. */\n onValueChange?: (value: number | number[], eventDetails: unknown) => void;\n /** Called once when the user finishes dragging. */\n onValueCommitted?: (value: number | number[], eventDetails: unknown) => void;\n /** Minimum allowed value. @default 0 */\n min?: number;\n /** Maximum allowed value. @default 100 */\n max?: number;\n /** Step increment. @default 1 */\n step?: number;\n /** Step used for Page Up / Page Down keyboard shortcuts. @default 10 */\n largeStep?: number;\n /** Prevent interaction. */\n disabled?: boolean;\n /** HTML name attribute for form submission. */\n name?: string;\n /** Axis direction. @default \"horizontal\" */\n orientation?: \"horizontal\" | \"vertical\";\n /** `Intl.NumberFormatOptions` for value display formatting. */\n format?: Intl.NumberFormatOptions;\n /** Visible label rendered above the track. */\n label?: ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n /** Aria-label for single-thumb sliders without a visible label. */\n \"aria-label\"?: string;\n className?: string;\n}\n\n/**\n * An accessible range input with full keyboard and touch support. Pass a\n * single number for a standard slider or an array for a range slider with\n * two thumbs. Supports steps, large steps (Page Up/Down), and\n * `Intl.NumberFormat` display formatting.\n */\nexport function Slider({\n label,\n showValue = false,\n className,\n onValueChange,\n onValueCommitted,\n \"aria-label\": ariaLabel,\n ...props\n}: SliderProps) {\n const isRange = Array.isArray(props.defaultValue ?? props.value);\n\n return (\n <BaseSlider.Root\n className={`${styles.root} ${className ?? \"\"}`}\n onValueChange={onValueChange as never}\n onValueCommitted={onValueCommitted as never}\n {...props}\n >\n {(label || showValue) && (\n <div className={styles.header}>\n {label && <BaseSlider.Label className={styles.label}>{label}</BaseSlider.Label>}\n {showValue && <BaseSlider.Value className={styles.value} />}\n </div>\n )}\n <BaseSlider.Control className={styles.control}>\n <BaseSlider.Track className={styles.track}>\n <BaseSlider.Indicator className={styles.indicator} />\n {isRange ? (\n <>\n <BaseSlider.Thumb index={0} className={styles.thumb} aria-label=\"Minimum value\" />\n <BaseSlider.Thumb index={1} className={styles.thumb} aria-label=\"Maximum value\" />\n </>\n ) : (\n <BaseSlider.Thumb className={styles.thumb} aria-label={ariaLabel} />\n )}\n </BaseSlider.Track>\n </BaseSlider.Control>\n </BaseSlider.Root>\n );\n}\n\nexport { styles as SliderStyles };\n"],"mappings":";;;;;;;;;;AA4CA,SAAgBA,SAAO,EACrB,OACA,YAAY,OACZ,WACA,eACA,kBACA,cAAc,WACd,GAAG,SACW;CACd,MAAM,UAAU,MAAM,QAAQ,MAAM,gBAAgB,MAAM,MAAM;AAEhE,QACE,qBAACC,OAAW,MAAZ;EACE,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAC3B;EACG;EAClB,GAAI;YAJN,EAMI,SAAS,cACT,qBAAC,OAAD;GAAK,WAAWA,sBAAO;aAAvB,CACG,SAAS,oBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAAQ;IAAyB,CAAA,EAC9E,aAAa,oBAACD,OAAW,OAAZ,EAAkB,WAAWC,sBAAO,OAAS,CAAA,CACvD;MAER,oBAACD,OAAW,SAAZ;GAAoB,WAAWC,sBAAO;aACpC,qBAACD,OAAW,OAAZ;IAAkB,WAAWC,sBAAO;cAApC,CACE,oBAACD,OAAW,WAAZ,EAAsB,WAAWC,sBAAO,WAAa,CAAA,EACpD,UACC,qBAAA,UAAA,EAAA,UAAA,CACE,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,EAClF,oBAACD,OAAW,OAAZ;KAAkB,OAAO;KAAG,WAAWC,sBAAO;KAAO,cAAW;KAAkB,CAAA,CACjF,EAAA,CAAA,GAEH,oBAACD,OAAW,OAAZ;KAAkB,WAAWC,sBAAO;KAAO,cAAY;KAAa,CAAA,CAErD;;GACA,CAAA,CACL"}
|
package/dist/styles/tokens.css
CHANGED
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
--color-active: #00000012;
|
|
89
89
|
--color-selected: #0078d41a;
|
|
90
90
|
--color-primary: #000000e0;
|
|
91
|
-
--color-secondary: #
|
|
91
|
+
--color-secondary: #0009;
|
|
92
92
|
--color-tertiary: #0000005c;
|
|
93
93
|
--color-disabled: #0000003d;
|
|
94
94
|
--color-inverse: #fffffff2;
|
|
@@ -101,6 +101,8 @@
|
|
|
101
101
|
--color-accent: #0078d4;
|
|
102
102
|
--color-accent-hover: #006bbf;
|
|
103
103
|
--color-accent-pressed: #005ea8;
|
|
104
|
+
--color-accent-solid: #0078d4;
|
|
105
|
+
--color-accent-text: #005ea8;
|
|
104
106
|
--color-accent-tint: #0078d41a;
|
|
105
107
|
--color-accent-tint-hover: #0078d429;
|
|
106
108
|
--color-focus-ring: #0078d4cc;
|
|
@@ -115,16 +117,19 @@
|
|
|
115
117
|
--shadow-focus: 0 0 0 2px var(--color-canvas), 0 0 0 4px var(--color-focus-ring);
|
|
116
118
|
--color-success-bg: #f0fdf4;
|
|
117
119
|
--color-success-border: #bbf7d0;
|
|
118
|
-
--color-success-text: #
|
|
119
|
-
--color-success-solid: #
|
|
120
|
+
--color-success-text: #147a39;
|
|
121
|
+
--color-success-solid: #15803d;
|
|
122
|
+
--color-success-on-solid: #fff;
|
|
120
123
|
--color-warning-bg: #fffbeb;
|
|
121
124
|
--color-warning-border: #fde68a;
|
|
122
125
|
--color-warning-text: #92400e;
|
|
123
|
-
--color-warning-solid: #
|
|
126
|
+
--color-warning-solid: #b45309;
|
|
127
|
+
--color-warning-on-solid: #fff;
|
|
124
128
|
--color-error-bg: #fef2f2;
|
|
125
129
|
--color-error-border: #fecaca;
|
|
126
130
|
--color-error-text: #991b1b;
|
|
127
131
|
--color-error-solid: #dc2626;
|
|
132
|
+
--color-error-on-solid: #fff;
|
|
128
133
|
--color-info-bg: #eff6ff;
|
|
129
134
|
--color-info-border: #bfdbfe;
|
|
130
135
|
--color-info-text: #1d4ed8;
|
|
@@ -167,6 +172,8 @@
|
|
|
167
172
|
--color-accent: #0a84ff;
|
|
168
173
|
--color-accent-hover: #0071e3;
|
|
169
174
|
--color-accent-pressed: #005bb5;
|
|
175
|
+
--color-accent-solid: #0071e3;
|
|
176
|
+
--color-accent-text: #60a5fa;
|
|
170
177
|
--color-accent-tint: #0a84ff1f;
|
|
171
178
|
--color-accent-tint-hover: #0a84ff33;
|
|
172
179
|
--color-focus-ring: #0a84ffe6;
|
|
@@ -183,14 +190,17 @@
|
|
|
183
190
|
--color-success-border: #16a34a4d;
|
|
184
191
|
--color-success-text: #4ade80;
|
|
185
192
|
--color-success-solid: #22c55e;
|
|
193
|
+
--color-success-on-solid: #000;
|
|
186
194
|
--color-warning-bg: #d977061f;
|
|
187
195
|
--color-warning-border: #d977064d;
|
|
188
196
|
--color-warning-text: #fbbf24;
|
|
189
197
|
--color-warning-solid: #f59e0b;
|
|
198
|
+
--color-warning-on-solid: #000;
|
|
190
199
|
--color-error-bg: #dc26261f;
|
|
191
200
|
--color-error-border: #dc26264d;
|
|
192
201
|
--color-error-text: #f87171;
|
|
193
|
-
--color-error-solid: #
|
|
202
|
+
--color-error-solid: #dc2626;
|
|
203
|
+
--color-error-on-solid: #fff;
|
|
194
204
|
--color-info-bg: #2563eb1f;
|
|
195
205
|
--color-info-border: #2563eb4d;
|
|
196
206
|
--color-info-text: #60a5fa;
|
|
@@ -233,6 +243,8 @@
|
|
|
233
243
|
--color-accent: #0a84ff;
|
|
234
244
|
--color-accent-hover: #0071e3;
|
|
235
245
|
--color-accent-pressed: #005bb5;
|
|
246
|
+
--color-accent-solid: #0071e3;
|
|
247
|
+
--color-accent-text: #60a5fa;
|
|
236
248
|
--color-accent-tint: #0a84ff1f;
|
|
237
249
|
--color-accent-tint-hover: #0a84ff33;
|
|
238
250
|
--color-focus-ring: #0a84ffe6;
|
|
@@ -249,14 +261,17 @@
|
|
|
249
261
|
--color-success-border: #16a34a4d;
|
|
250
262
|
--color-success-text: #4ade80;
|
|
251
263
|
--color-success-solid: #22c55e;
|
|
264
|
+
--color-success-on-solid: #000;
|
|
252
265
|
--color-warning-bg: #d977061f;
|
|
253
266
|
--color-warning-border: #d977064d;
|
|
254
267
|
--color-warning-text: #fbbf24;
|
|
255
268
|
--color-warning-solid: #f59e0b;
|
|
269
|
+
--color-warning-on-solid: #000;
|
|
256
270
|
--color-error-bg: #dc26261f;
|
|
257
271
|
--color-error-border: #dc26264d;
|
|
258
272
|
--color-error-text: #f87171;
|
|
259
|
-
--color-error-solid: #
|
|
273
|
+
--color-error-solid: #dc2626;
|
|
274
|
+
--color-error-on-solid: #fff;
|
|
260
275
|
--color-info-bg: #2563eb1f;
|
|
261
276
|
--color-info-border: #2563eb4d;
|
|
262
277
|
--color-info-text: #60a5fa;
|
|
@@ -272,5 +287,3 @@
|
|
|
272
287
|
--color-track: transparent;
|
|
273
288
|
}
|
|
274
289
|
}
|
|
275
|
-
|
|
276
|
-
@layer base, components, utilities;
|
package/dist/switch/parts.js
CHANGED
package/dist/switch/switch.css
CHANGED
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
display: flex;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
.root_3hDtBa[data-disabled] {
|
|
11
|
-
opacity: .44;
|
|
10
|
+
.root_3hDtBa:has([data-disabled]) {
|
|
12
11
|
cursor: not-allowed;
|
|
13
12
|
}
|
|
14
13
|
|
|
14
|
+
.root_3hDtBa:has([data-disabled]) .label_3hDtBa {
|
|
15
|
+
opacity: .44;
|
|
16
|
+
}
|
|
17
|
+
|
|
15
18
|
.thumb-track_3hDtBa {
|
|
16
19
|
border-radius: var(--radius-full);
|
|
17
20
|
background-color: var(--color-surface-3);
|
|
@@ -26,6 +29,12 @@
|
|
|
26
29
|
position: relative;
|
|
27
30
|
}
|
|
28
31
|
|
|
32
|
+
.thumb-track_3hDtBa[data-disabled] {
|
|
33
|
+
opacity: .44;
|
|
34
|
+
cursor: not-allowed;
|
|
35
|
+
pointer-events: none;
|
|
36
|
+
}
|
|
37
|
+
|
|
29
38
|
.thumb-track_3hDtBa:focus-visible {
|
|
30
39
|
box-shadow: var(--shadow-focus);
|
|
31
40
|
}
|
package/dist/switch/switch.d.ts
CHANGED
|
@@ -1,21 +1,33 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
1
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
3
|
import styles from "./switch.module.css";
|
|
4
4
|
|
|
5
5
|
//#region src/switch/switch.d.ts
|
|
6
6
|
interface SwitchProps {
|
|
7
|
+
/** Controlled checked state. */
|
|
7
8
|
checked?: boolean;
|
|
9
|
+
/** Initial checked state (uncontrolled). */
|
|
8
10
|
defaultChecked?: boolean;
|
|
11
|
+
/** Prevent interaction. */
|
|
9
12
|
disabled?: boolean;
|
|
13
|
+
/** Mark the field as required for form validation. */
|
|
10
14
|
required?: boolean;
|
|
15
|
+
/** HTML name attribute for form submission. */
|
|
11
16
|
name?: string;
|
|
17
|
+
/** HTML value attribute for form submission. */
|
|
12
18
|
value?: string;
|
|
13
19
|
/** Called when checked state changes. `eventDetails` is the base-ui event details object. */
|
|
14
20
|
onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;
|
|
21
|
+
/** Label content rendered next to the switch. */
|
|
15
22
|
children?: ReactNode;
|
|
23
|
+
/** Override the auto-generated element id. */
|
|
16
24
|
id?: string;
|
|
17
25
|
className?: string;
|
|
18
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Toggle for boolean settings. Renders a track with a sliding thumb and
|
|
29
|
+
* an optional label. Wraps `@base-ui/react` Switch.
|
|
30
|
+
*/
|
|
19
31
|
declare function Switch({
|
|
20
32
|
children,
|
|
21
33
|
id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/switch/switch.tsx"],"mappings":";;;;;UAKiB,WAAA
|
|
1
|
+
{"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/switch/switch.tsx"],"mappings":";;;;;UAKiB,WAAA;;EAEf,OAAA;EAFe;EAIf,cAAA;;EAEA,QAAA;EAJA;EAMA,QAAA;EAFA;EAIA,IAAA;EAAA;EAEA,KAAA;EAEA;EAAA,eAAA,IAAmB,OAAA,WAAkB,YAAA;EAAA;EAErC,QAAA,GAAW,SAAA;EAAA;EAEX,EAAA;EACA,SAAA;AAAA;;AAOF;;;iBAAgB,MAAA,CAAA;EAAS,QAAA;EAAU,EAAA;EAAI,SAAA;EAAW,eAAA;EAAA,GAAoB;AAAA,GAAS,WAAA,GAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/switch/switch.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import switch_module_default from "./switch.module.js";
|
|
2
|
-
import { useId } from "react";
|
|
3
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useId } from "react";
|
|
4
4
|
import { Switch } from "@base-ui/react/switch";
|
|
5
5
|
//#region src/switch/switch.tsx
|
|
6
|
+
/**
|
|
7
|
+
* Toggle for boolean settings. Renders a track with a sliding thumb and
|
|
8
|
+
* an optional label. Wraps `@base-ui/react` Switch.
|
|
9
|
+
*/
|
|
6
10
|
function Switch$1({ children, id, className, onCheckedChange, ...props }) {
|
|
7
11
|
const switchId = id ?? useId();
|
|
8
12
|
return /* @__PURE__ */ jsxs("label", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.js","names":["Switch","styles","BaseSwitch"],"sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n required?: boolean;\n name?: string;\n value?: string;\n /** Called when checked state changes. `eventDetails` is the base-ui event details object. */\n onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;\n children?: ReactNode;\n id?: string;\n className?: string;\n}\n\nexport function Switch({ children, id, className, onCheckedChange, ...props }: SwitchProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const switchId = id ?? useId();\n\n return (\n <label className={`${styles.root} ${className ?? \"\"}`} htmlFor={switchId}>\n <BaseSwitch.Root id={switchId} className={styles[\"thumb-track\"]} onCheckedChange={onCheckedChange as never} {...props}>\n <BaseSwitch.Thumb className={styles.thumb} />\n </BaseSwitch.Root>\n {children && <span className={styles.label}>{children}</span>}\n </label>\n );\n}\nexport { styles as SwitchStyles };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"switch.js","names":["Switch","styles","BaseSwitch"],"sources":["../../src/switch/switch.tsx"],"sourcesContent":["import { useId } from \"react\";\nimport type { ReactNode } from \"react\";\nimport { Switch as BaseSwitch } from \"@base-ui/react/switch\";\nimport styles from \"./switch.module.css\";\n\nexport interface SwitchProps {\n /** Controlled checked state. */\n checked?: boolean;\n /** Initial checked state (uncontrolled). */\n defaultChecked?: boolean;\n /** Prevent interaction. */\n disabled?: boolean;\n /** Mark the field as required for form validation. */\n required?: boolean;\n /** HTML name attribute for form submission. */\n name?: string;\n /** HTML value attribute for form submission. */\n value?: string;\n /** Called when checked state changes. `eventDetails` is the base-ui event details object. */\n onCheckedChange?: (checked: boolean, eventDetails: unknown) => void;\n /** Label content rendered next to the switch. */\n children?: ReactNode;\n /** Override the auto-generated element id. */\n id?: string;\n className?: string;\n}\n\n/**\n * Toggle for boolean settings. Renders a track with a sliding thumb and\n * an optional label. Wraps `@base-ui/react` Switch.\n */\nexport function Switch({ children, id, className, onCheckedChange, ...props }: SwitchProps) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const switchId = id ?? useId();\n\n return (\n <label className={`${styles.root} ${className ?? \"\"}`} htmlFor={switchId}>\n <BaseSwitch.Root id={switchId} className={styles[\"thumb-track\"]} onCheckedChange={onCheckedChange as never} {...props}>\n <BaseSwitch.Thumb className={styles.thumb} />\n </BaseSwitch.Root>\n {children && <span className={styles.label}>{children}</span>}\n </label>\n );\n}\nexport { styles as SwitchStyles };\n"],"mappings":";;;;;;;;;AA+BA,SAAgBA,SAAO,EAAE,UAAU,IAAI,WAAW,iBAAiB,GAAG,SAAsB;CAE1F,MAAM,WAAW,MAAM,OAAO;AAE9B,QACE,qBAAC,SAAD;EAAO,WAAW,GAAGC,sBAAO,KAAK,GAAG,aAAa;EAAM,SAAS;YAAhE,CACE,oBAACC,OAAW,MAAZ;GAAiB,IAAI;GAAU,WAAWD,sBAAO;GAAiC;GAA0B,GAAI;aAC9G,oBAACC,OAAW,OAAZ,EAAkB,WAAWD,sBAAO,OAAS,CAAA;GAC7B,CAAA,EACjB,YAAY,oBAAC,QAAD;GAAM,WAAWA,sBAAO;GAAQ;GAAgB,CAAA,CACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"switch.module.js","names":[],"sources":["../../src/switch/switch.module.css"],"sourcesContent":["@layer components {\n .root {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n cursor: pointer;\n user-select: none;\n }\n .root[data-disabled] {\n
|
|
1
|
+
{"version":3,"file":"switch.module.js","names":[],"sources":["../../src/switch/switch.module.css"],"sourcesContent":["@layer components {\n .root {\n display: flex;\n align-items: center;\n gap: var(--space-2);\n cursor: pointer;\n user-select: none;\n }\n /* data-disabled lives on the inner button, not the label wrapper.\n Use :has() to dim the label text, and target the track directly. */\n .root:has([data-disabled]) {\n cursor: not-allowed;\n }\n .root:has([data-disabled]) .label {\n opacity: 0.44;\n }\n .thumb-track {\n position: relative;\n width: 36px;\n height: 20px;\n border-radius: var(--radius-full);\n background-color: var(--color-surface-3);\n border: var(--border-width-base) solid var(--color-line);\n transition:\n background-color var(--duration-normal) var(--easing-standard),\n border-color var(--duration-normal) var(--easing-standard),\n box-shadow var(--duration-fast) var(--easing-standard);\n outline: none;\n flex-shrink: 0;\n }\n .thumb-track[data-disabled] {\n opacity: 0.44;\n cursor: not-allowed;\n pointer-events: none;\n }\n .thumb-track:focus-visible {\n box-shadow: var(--shadow-focus);\n }\n .thumb-track[data-checked] {\n background-color: var(--color-accent);\n border-color: var(--color-accent);\n }\n .thumb-track[data-checked]:hover {\n background-color: var(--color-accent-hover);\n border-color: var(--color-accent-hover);\n }\n .thumb {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: var(--radius-full);\n background-color: #ffffff;\n box-shadow: var(--shadow-xs);\n transition: transform var(--duration-normal) var(--easing-spring);\n }\n .thumb-track[data-checked] .thumb {\n transform: translateX(16px);\n }\n .label {\n font-family: var(--font-mono);\n font-size: var(--font-size-sm);\n color: var(--color-primary);\n }\n}\n"],"mappings":";AAQA,IAAA,wBAAU;CAAA,SAAc;CAAc,QAAQ;CAAc,SAAO;CAAA,eAAA;CAAA"}
|
package/dist/tabs/parts.js
CHANGED
package/dist/tabs/tabs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
1
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
3
|
import styles from "./tabs.module.css";
|
|
4
4
|
|
|
5
5
|
//#region src/tabs/tabs.d.ts
|
|
@@ -11,13 +11,20 @@ interface TabItem {
|
|
|
11
11
|
icon?: ReactNode;
|
|
12
12
|
}
|
|
13
13
|
interface TabsProps {
|
|
14
|
+
/** Array of tab definitions to render. */
|
|
14
15
|
items: TabItem[];
|
|
16
|
+
/** Currently active tab value (controlled). */
|
|
15
17
|
value?: string;
|
|
18
|
+
/** Initially active tab value (uncontrolled). Defaults to the first item. */
|
|
16
19
|
defaultValue?: string;
|
|
17
|
-
/** `eventDetails` is the base-ui event details object. */
|
|
20
|
+
/** Called when the active tab changes. `eventDetails` is the base-ui event details object. */
|
|
18
21
|
onValueChange?: (value: unknown, eventDetails: unknown) => void;
|
|
19
22
|
className?: string;
|
|
20
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Tab navigation for switching between content panels. Each tab can have
|
|
26
|
+
* an optional icon and can be individually disabled.
|
|
27
|
+
*/
|
|
21
28
|
declare function Tabs({
|
|
22
29
|
items,
|
|
23
30
|
className,
|
package/dist/tabs/tabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/tabs/tabs.tsx"],"mappings":";;;;;UAIiB,OAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,OAAA,EAAS,SAAA;EACT,QAAA;EACA,IAAA,GAAO,SAAA;AAAA;AAAA,UAGQ,SAAA;
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","names":[],"sources":["../../src/tabs/tabs.tsx"],"mappings":";;;;;UAIiB,OAAA;EACf,KAAA;EACA,KAAA,EAAO,SAAA;EACP,OAAA,EAAS,SAAA;EACT,QAAA;EACA,IAAA,GAAO,SAAA;AAAA;AAAA,UAGQ,SAAA;EAHR;EAKP,KAAA,EAAO,OAAA;EALS;EAOhB,KAAA;EAVA;EAYA,YAAA;EAXA;EAaA,aAAA,IAAiB,KAAA,WAAgB,YAAA;EACjC,SAAA;AAAA;;;;AATF;iBAgBgB,IAAA,CAAA;EAAO,KAAA;EAAO,SAAA;EAAA,GAAc;AAAA,GAAS,SAAA,GAAS,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/tabs/tabs.js
CHANGED
|
@@ -2,6 +2,10 @@ import tabs_module_default from "./tabs.module.js";
|
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Tabs } from "@base-ui/react/tabs";
|
|
4
4
|
//#region src/tabs/tabs.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Tab navigation for switching between content panels. Each tab can have
|
|
7
|
+
* an optional icon and can be individually disabled.
|
|
8
|
+
*/
|
|
5
9
|
function Tabs$1({ items, className, ...props }) {
|
|
6
10
|
const defaultVal = props.defaultValue ?? items[0]?.value;
|
|
7
11
|
return /* @__PURE__ */ jsxs(Tabs.Root, {
|
package/dist/tabs/tabs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.js","names":["Tabs","BaseTabs","styles"],"sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\n\nexport interface TabItem {\n value: string;\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n}\n\nexport interface TabsProps {\n items: TabItem[];\n value?: string;\n defaultValue?: string;\n /** `eventDetails` is the base-ui event details object. */\n onValueChange?: (value: unknown, eventDetails: unknown) => void;\n className?: string;\n}\n\nexport function Tabs({ items, className, ...props }: TabsProps) {\n const defaultVal = props.defaultValue ?? items[0]?.value;\n\n return (\n <BaseTabs.Root\n className={`${styles.root} ${className ?? \"\"}`}\n defaultValue={defaultVal}\n onValueChange={props.onValueChange as never}\n value={props.value}\n >\n <BaseTabs.List className={styles.list}>\n {items.map((item) => (\n <BaseTabs.Tab key={item.value} value={item.value} disabled={item.disabled} className={styles.tab}>\n {item.icon}\n {item.label}\n </BaseTabs.Tab>\n ))}\n </BaseTabs.List>\n {items.map((item) => (\n <BaseTabs.Panel key={item.value} value={item.value} className={styles.panel}>\n {item.content}\n </BaseTabs.Panel>\n ))}\n </BaseTabs.Root>\n );\n}\nexport { styles as TabsStyles };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"tabs.js","names":["Tabs","BaseTabs","styles"],"sources":["../../src/tabs/tabs.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Tabs as BaseTabs } from \"@base-ui/react/tabs\";\nimport styles from \"./tabs.module.css\";\n\nexport interface TabItem {\n value: string;\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n icon?: ReactNode;\n}\n\nexport interface TabsProps {\n /** Array of tab definitions to render. */\n items: TabItem[];\n /** Currently active tab value (controlled). */\n value?: string;\n /** Initially active tab value (uncontrolled). Defaults to the first item. */\n defaultValue?: string;\n /** Called when the active tab changes. `eventDetails` is the base-ui event details object. */\n onValueChange?: (value: unknown, eventDetails: unknown) => void;\n className?: string;\n}\n\n/**\n * Tab navigation for switching between content panels. Each tab can have\n * an optional icon and can be individually disabled.\n */\nexport function Tabs({ items, className, ...props }: TabsProps) {\n const defaultVal = props.defaultValue ?? items[0]?.value;\n\n return (\n <BaseTabs.Root\n className={`${styles.root} ${className ?? \"\"}`}\n defaultValue={defaultVal}\n onValueChange={props.onValueChange as never}\n value={props.value}\n >\n <BaseTabs.List className={styles.list}>\n {items.map((item) => (\n <BaseTabs.Tab key={item.value} value={item.value} disabled={item.disabled} className={styles.tab}>\n {item.icon}\n {item.label}\n </BaseTabs.Tab>\n ))}\n </BaseTabs.List>\n {items.map((item) => (\n <BaseTabs.Panel key={item.value} value={item.value} className={styles.panel}>\n {item.content}\n </BaseTabs.Panel>\n ))}\n </BaseTabs.Root>\n );\n}\nexport { styles as TabsStyles };\n"],"mappings":";;;;;;;;AA4BA,SAAgBA,OAAK,EAAE,OAAO,WAAW,GAAG,SAAoB;CAC9D,MAAM,aAAa,MAAM,gBAAgB,MAAM,IAAI;AAEnD,QACE,qBAACC,KAAS,MAAV;EACE,WAAW,GAAGC,oBAAO,KAAK,GAAG,aAAa;EAC1C,cAAc;EACd,eAAe,MAAM;EACrB,OAAO,MAAM;YAJf,CAME,oBAACD,KAAS,MAAV;GAAe,WAAWC,oBAAO;aAC9B,MAAM,KAAK,SACV,qBAACD,KAAS,KAAV;IAA+B,OAAO,KAAK;IAAO,UAAU,KAAK;IAAU,WAAWC,oBAAO;cAA7F,CACG,KAAK,MACL,KAAK,MACO;MAHI,KAAK,MAGT,CACf;GACY,CAAA,EACf,MAAM,KAAK,SACV,oBAACD,KAAS,OAAV;GAAiC,OAAO,KAAK;GAAO,WAAWC,oBAAO;aACnE,KAAK;GACS,EAFI,KAAK,MAET,CACjB,CACY"}
|
package/dist/toast/parts.js
CHANGED
package/dist/toast/toast.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReactNode } from "react";
|
|
2
1
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
3
|
import { Toast } from "@base-ui/react/toast";
|
|
4
4
|
import styles from "./toast.module.css";
|
|
5
5
|
|
|
@@ -24,16 +24,27 @@ interface ToastViewportProps {
|
|
|
24
24
|
}
|
|
25
25
|
interface ToastProviderProps {
|
|
26
26
|
children: ReactNode;
|
|
27
|
+
/** Layout style for the viewport. @default "list" */
|
|
27
28
|
variant?: ToastViewportProps["variant"];
|
|
29
|
+
/** Maximum number of toasts shown at once. */
|
|
28
30
|
limit?: number;
|
|
31
|
+
/** Auto-dismiss delay in milliseconds. */
|
|
29
32
|
timeout?: number;
|
|
30
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Drop-in provider that wires limit defaults to the chosen viewport variant.
|
|
36
|
+
* Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.
|
|
37
|
+
*/
|
|
31
38
|
declare function ToastProvider({
|
|
32
39
|
children,
|
|
33
40
|
variant,
|
|
34
41
|
limit,
|
|
35
42
|
timeout
|
|
36
43
|
}: ToastProviderProps): react_jsx_runtime0.JSX.Element;
|
|
44
|
+
/**
|
|
45
|
+
* Renders and manages toast notifications. Supports `"stacked"` (Sonner-style
|
|
46
|
+
* fanned cards) and `"list"` (vertically stacked, each fully visible) layouts.
|
|
47
|
+
*/
|
|
37
48
|
declare function ToastViewport({
|
|
38
49
|
variant,
|
|
39
50
|
limit: _limit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.d.ts","names":[],"sources":["../../src/toast/toast.tsx"],"mappings":";;;;;;KAIY,SAAA;AAAA,cAGC,eAAA,SAAe,KAAA,CAAA,eAAA;AAAA,UAgDX,kBAAA;EAnDL;;;;;AAGZ;;EAwDE,OAAA;EAxD0B;;AAgD5B;;;EAcE,KAAA;AAAA;AAAA,UAQe,kBAAA;EACf,QAAA,EAAU,SAAA
|
|
1
|
+
{"version":3,"file":"toast.d.ts","names":[],"sources":["../../src/toast/toast.tsx"],"mappings":";;;;;;KAIY,SAAA;AAAA,cAGC,eAAA,SAAe,KAAA,CAAA,eAAA;AAAA,UAgDX,kBAAA;EAnDL;;;;;AAGZ;;EAwDE,OAAA;EAxD0B;;AAgD5B;;;EAcE,KAAA;AAAA;AAAA,UAQe,kBAAA;EACf,QAAA,EAAU,SAAA;;EAEV,OAAA,GAAU,kBAAA;EAFV;EAIA,KAAA;EAFA;EAIA,OAAA;AAAA;;;;AAgBF;iBAAgB,aAAA,CAAA;EAAgB,QAAA;EAAU,OAAA;EAAkB,KAAA;EAAO;AAAA,GAAW,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;;iBAahF,aAAA,CAAA;EAAgB,OAAA;EAAkB,KAAA,EAAO;AAAA,GAAU,kBAAA,GAAkB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
package/dist/toast/toast.js
CHANGED
|
@@ -118,6 +118,10 @@ const MAX_LIMIT = {
|
|
|
118
118
|
stacked: 10,
|
|
119
119
|
list: 5
|
|
120
120
|
};
|
|
121
|
+
/**
|
|
122
|
+
* Drop-in provider that wires limit defaults to the chosen viewport variant.
|
|
123
|
+
* Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.
|
|
124
|
+
*/
|
|
121
125
|
function ToastProvider({ children, variant = "list", limit, timeout }) {
|
|
122
126
|
const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);
|
|
123
127
|
return /* @__PURE__ */ jsx(Toast.Provider, {
|
|
@@ -126,6 +130,10 @@ function ToastProvider({ children, variant = "list", limit, timeout }) {
|
|
|
126
130
|
children
|
|
127
131
|
});
|
|
128
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Renders and manages toast notifications. Supports `"stacked"` (Sonner-style
|
|
135
|
+
* fanned cards) and `"list"` (vertically stacked, each fully visible) layouts.
|
|
136
|
+
*/
|
|
129
137
|
function ToastViewport({ variant = "list", limit: _limit }) {
|
|
130
138
|
const manager = useToastManager();
|
|
131
139
|
const isStacked = variant === "stacked";
|
package/dist/toast/toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","names":["BaseToast","styles"],"sources":["../../src/toast/toast.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\n\nexport type ToastType = \"default\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\n// Re-export for consumer convenience\nexport const useToastManager = BaseToast.useToastManager;\n\nfunction XIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 1L9 9M9 1L1 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction StatusIcon({ type }: { type: string }) {\n if (type === \"success\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-success\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M4.5 8L6.5 10.5L11 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n }\n if (type === \"error\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-error\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n if (type === \"warning\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-warning\"]}`}>\n <path d=\"M8 2L14.5 13H1.5L8 2Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5V9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n if (type === \"info\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-info\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7V11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n return null;\n}\n\nexport interface ToastViewportProps {\n /**\n * \"stacked\" — toasts fan out behind each other like Sonner.\n * Collapsed: only the front toast is fully visible; others peek as\n * scaled-down cards behind it. Hover/focus expands the full stack.\n *\n * \"list\" — toasts stack vertically, each fully visible (default behaviour).\n */\n variant?: \"stacked\" | \"list\";\n /**\n * Maximum number of toasts shown at once.\n * Defaults to 5 for \"stacked\", 3 for \"list\".\n * Oldest toasts are removed when the limit is exceeded.\n */\n limit?: number;\n}\n\nconst DEFAULT_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 5,\n list: 3,\n};\n\nexport interface ToastProviderProps {\n children: ReactNode;\n variant?: ToastViewportProps[\"variant\"];\n limit?: number;\n timeout?: number;\n}\n\n/**\n * Drop-in provider that wires limit defaults to the chosen variant.\n * Use this instead of base-ui's Toast.Provider when using ToastViewport.\n */\nconst MAX_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 10,\n list: 5,\n};\n\nexport function ToastProvider({ children, variant = \"list\", limit, timeout }: ToastProviderProps) {\n const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);\n return (\n <BaseToast.Provider limit={resolvedLimit} timeout={timeout}>\n {children}\n </BaseToast.Provider>\n );\n}\n\nexport function ToastViewport({ variant = \"list\", limit: _limit }: ToastViewportProps) {\n const manager = useToastManager();\n const isStacked = variant === \"stacked\";\n\n return (\n <BaseToast.Viewport className={`${styles.viewport} ${isStacked ? styles[\"viewport-stacked\"] : styles[\"viewport-list\"]}`}>\n {manager.toasts.map((toast) => (\n <BaseToast.Root\n key={toast.id}\n toast={toast}\n className={`${styles.toast} ${isStacked ? styles[\"toast-stacked\"] : \"\"} ${styles[`toast-${toast.type ?? \"default\"}`]}`}\n swipeDirection={isStacked ? [\"right\", \"down\"] : [\"right\", \"down\"]}\n >\n {toast.type && toast.type !== \"default\" && <StatusIcon type={toast.type} />}\n <div className={styles.content}>\n {toast.title && <BaseToast.Title className={styles.title} />}\n {toast.description && <BaseToast.Description className={styles.description} />}\n </div>\n <BaseToast.Close className={styles.close} aria-label=\"Dismiss\">\n <XIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n );\n}\nexport { styles as ToastStyles };\n"],"mappings":";;;;AAOA,MAAa,kBAAkBA,MAAU;AAEzC,SAAS,QAAQ;AACf,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;YACnD,oBAAC,QAAD;GAAM,GAAE;GAAmB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAU,CAAA;EACvF,CAAA;;AAIV,SAAS,WAAW,EAAE,QAA0B;AAC9C,KAAI,SAAS,UACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGC,qBAAO,KAAK,GAAGA,qBAAO;YAAzE,CACE,oBAAC,UAAD;GAAQ,IAAG;GAAI,IAAG;GAAI,GAAE;GAAI,QAAO;GAAe,aAAY;GAAQ,CAAA,EACtE,oBAAC,QAAD;GAAM,GAAE;GAAuB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA,CAClH;;AAGV,KAAI,SAAS,QACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE,CACE,oBAAC,UAAD;GAAQ,IAAG;GAAI,IAAG;GAAI,GAAE;GAAI,QAAO;GAAe,aAAY;GAAQ,CAAA,EACtE,oBAAC,QAAD;GAAM,GAAE;GAAuC,QAAO;GAAe,aAAY;GAAM,eAAc;GAAU,CAAA,CAC3G;;AAGV,KAAI,SAAS,UACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE;GACE,oBAAC,QAAD;IAAM,GAAE;IAAwB,QAAO;IAAe,aAAY;IAAM,gBAAe;IAAU,CAAA;GACjG,oBAAC,QAAD;IAAM,GAAE;IAAW,QAAO;IAAe,aAAY;IAAM,eAAc;IAAU,CAAA;GACnF,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAK,GAAE;IAAO,MAAK;IAAiB,CAAA;GAClD;;AAGV,KAAI,SAAS,OACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE;GACE,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAI,QAAO;IAAe,aAAY;IAAQ,CAAA;GACtE,oBAAC,QAAD;IAAM,GAAE;IAAU,QAAO;IAAe,aAAY;IAAM,eAAc;IAAU,CAAA;GAClF,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAO,MAAK;IAAiB,CAAA;GACjD;;AAGV,QAAO;;AAoBT,MAAM,gBAA4E;CAChF,SAAS;CACT,MAAM;CACP;;;;;
|
|
1
|
+
{"version":3,"file":"toast.js","names":["BaseToast","styles"],"sources":["../../src/toast/toast.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport { Toast as BaseToast } from \"@base-ui/react/toast\";\nimport styles from \"./toast.module.css\";\n\nexport type ToastType = \"default\" | \"success\" | \"warning\" | \"error\" | \"info\";\n\n// Re-export for consumer convenience\nexport const useToastManager = BaseToast.useToastManager;\n\nfunction XIcon() {\n return (\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\">\n <path d=\"M1 1L9 9M9 1L1 9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n}\n\nfunction StatusIcon({ type }: { type: string }) {\n if (type === \"success\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-success\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M4.5 8L6.5 10.5L11 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n );\n }\n if (type === \"error\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-error\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5.5 5.5L10.5 10.5M10.5 5.5L5.5 10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n </svg>\n );\n }\n if (type === \"warning\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-warning\"]}`}>\n <path d=\"M8 2L14.5 13H1.5L8 2Z\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinejoin=\"round\" />\n <path d=\"M8 6.5V9\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"11\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n if (type === \"info\") {\n return (\n <svg viewBox=\"0 0 16 16\" fill=\"none\" className={`${styles.icon} ${styles[\"icon-info\"]}`}>\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 7V11\" stroke=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" />\n <circle cx=\"8\" cy=\"5\" r=\"0.75\" fill=\"currentColor\" />\n </svg>\n );\n }\n return null;\n}\n\nexport interface ToastViewportProps {\n /**\n * \"stacked\" — toasts fan out behind each other like Sonner.\n * Collapsed: only the front toast is fully visible; others peek as\n * scaled-down cards behind it. Hover/focus expands the full stack.\n *\n * \"list\" — toasts stack vertically, each fully visible (default behaviour).\n */\n variant?: \"stacked\" | \"list\";\n /**\n * Maximum number of toasts shown at once.\n * Defaults to 5 for \"stacked\", 3 for \"list\".\n * Oldest toasts are removed when the limit is exceeded.\n */\n limit?: number;\n}\n\nconst DEFAULT_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 5,\n list: 3,\n};\n\nexport interface ToastProviderProps {\n children: ReactNode;\n /** Layout style for the viewport. @default \"list\" */\n variant?: ToastViewportProps[\"variant\"];\n /** Maximum number of toasts shown at once. */\n limit?: number;\n /** Auto-dismiss delay in milliseconds. */\n timeout?: number;\n}\n\n/**\n * Drop-in provider that wires limit defaults to the chosen variant.\n * Use this instead of base-ui's Toast.Provider when using ToastViewport.\n */\nconst MAX_LIMIT: Record<NonNullable<ToastViewportProps[\"variant\"]>, number> = {\n stacked: 10,\n list: 5,\n};\n\n/**\n * Drop-in provider that wires limit defaults to the chosen viewport variant.\n * Use this instead of base-ui's `Toast.Provider` when using `ToastViewport`.\n */\nexport function ToastProvider({ children, variant = \"list\", limit, timeout }: ToastProviderProps) {\n const resolvedLimit = Math.min(limit ?? DEFAULT_LIMIT[variant], MAX_LIMIT[variant]);\n return (\n <BaseToast.Provider limit={resolvedLimit} timeout={timeout}>\n {children}\n </BaseToast.Provider>\n );\n}\n\n/**\n * Renders and manages toast notifications. Supports `\"stacked\"` (Sonner-style\n * fanned cards) and `\"list\"` (vertically stacked, each fully visible) layouts.\n */\nexport function ToastViewport({ variant = \"list\", limit: _limit }: ToastViewportProps) {\n const manager = useToastManager();\n const isStacked = variant === \"stacked\";\n\n return (\n <BaseToast.Viewport className={`${styles.viewport} ${isStacked ? styles[\"viewport-stacked\"] : styles[\"viewport-list\"]}`}>\n {manager.toasts.map((toast) => (\n <BaseToast.Root\n key={toast.id}\n toast={toast}\n className={`${styles.toast} ${isStacked ? styles[\"toast-stacked\"] : \"\"} ${styles[`toast-${toast.type ?? \"default\"}`]}`}\n swipeDirection={isStacked ? [\"right\", \"down\"] : [\"right\", \"down\"]}\n >\n {toast.type && toast.type !== \"default\" && <StatusIcon type={toast.type} />}\n <div className={styles.content}>\n {toast.title && <BaseToast.Title className={styles.title} />}\n {toast.description && <BaseToast.Description className={styles.description} />}\n </div>\n <BaseToast.Close className={styles.close} aria-label=\"Dismiss\">\n <XIcon />\n </BaseToast.Close>\n </BaseToast.Root>\n ))}\n </BaseToast.Viewport>\n );\n}\nexport { styles as ToastStyles };\n"],"mappings":";;;;AAOA,MAAa,kBAAkBA,MAAU;AAEzC,SAAS,QAAQ;AACf,QACE,oBAAC,OAAD;EAAK,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;YACnD,oBAAC,QAAD;GAAM,GAAE;GAAmB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAU,CAAA;EACvF,CAAA;;AAIV,SAAS,WAAW,EAAE,QAA0B;AAC9C,KAAI,SAAS,UACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGC,qBAAO,KAAK,GAAGA,qBAAO;YAAzE,CACE,oBAAC,UAAD;GAAQ,IAAG;GAAI,IAAG;GAAI,GAAE;GAAI,QAAO;GAAe,aAAY;GAAQ,CAAA,EACtE,oBAAC,QAAD;GAAM,GAAE;GAAuB,QAAO;GAAe,aAAY;GAAM,eAAc;GAAQ,gBAAe;GAAU,CAAA,CAClH;;AAGV,KAAI,SAAS,QACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE,CACE,oBAAC,UAAD;GAAQ,IAAG;GAAI,IAAG;GAAI,GAAE;GAAI,QAAO;GAAe,aAAY;GAAQ,CAAA,EACtE,oBAAC,QAAD;GAAM,GAAE;GAAuC,QAAO;GAAe,aAAY;GAAM,eAAc;GAAU,CAAA,CAC3G;;AAGV,KAAI,SAAS,UACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE;GACE,oBAAC,QAAD;IAAM,GAAE;IAAwB,QAAO;IAAe,aAAY;IAAM,gBAAe;IAAU,CAAA;GACjG,oBAAC,QAAD;IAAM,GAAE;IAAW,QAAO;IAAe,aAAY;IAAM,eAAc;IAAU,CAAA;GACnF,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAK,GAAE;IAAO,MAAK;IAAiB,CAAA;GAClD;;AAGV,KAAI,SAAS,OACX,QACE,qBAAC,OAAD;EAAK,SAAQ;EAAY,MAAK;EAAO,WAAW,GAAGA,qBAAO,KAAK,GAAGA,qBAAO;YAAzE;GACE,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAI,QAAO;IAAe,aAAY;IAAQ,CAAA;GACtE,oBAAC,QAAD;IAAM,GAAE;IAAU,QAAO;IAAe,aAAY;IAAM,eAAc;IAAU,CAAA;GAClF,oBAAC,UAAD;IAAQ,IAAG;IAAI,IAAG;IAAI,GAAE;IAAO,MAAK;IAAiB,CAAA;GACjD;;AAGV,QAAO;;AAoBT,MAAM,gBAA4E;CAChF,SAAS;CACT,MAAM;CACP;;;;;AAgBD,MAAM,YAAwE;CAC5E,SAAS;CACT,MAAM;CACP;;;;;AAMD,SAAgB,cAAc,EAAE,UAAU,UAAU,QAAQ,OAAO,WAA+B;CAChG,MAAM,gBAAgB,KAAK,IAAI,SAAS,cAAc,UAAU,UAAU,SAAS;AACnF,QACE,oBAACD,MAAU,UAAX;EAAoB,OAAO;EAAwB;EAChD;EACkB,CAAA;;;;;;AAQzB,SAAgB,cAAc,EAAE,UAAU,QAAQ,OAAO,UAA8B;CACrF,MAAM,UAAU,iBAAiB;CACjC,MAAM,YAAY,YAAY;AAE9B,QACE,oBAACA,MAAU,UAAX;EAAoB,WAAW,GAAGC,qBAAO,SAAS,GAAG,YAAYA,qBAAO,sBAAsBA,qBAAO;YAClG,QAAQ,OAAO,KAAK,UACnB,qBAACD,MAAU,MAAX;GAES;GACP,WAAW,GAAGC,qBAAO,MAAM,GAAG,YAAYA,qBAAO,mBAAmB,GAAG,GAAGA,qBAAO,SAAS,MAAM,QAAQ;GACxG,gBAAgB,YAAY,CAAC,SAAS,OAAO,GAAG,CAAC,SAAS,OAAO;aAJnE;IAMG,MAAM,QAAQ,MAAM,SAAS,aAAa,oBAAC,YAAD,EAAY,MAAM,MAAM,MAAQ,CAAA;IAC3E,qBAAC,OAAD;KAAK,WAAWA,qBAAO;eAAvB,CACG,MAAM,SAAS,oBAACD,MAAU,OAAX,EAAiB,WAAWC,qBAAO,OAAS,CAAA,EAC3D,MAAM,eAAe,oBAACD,MAAU,aAAX,EAAuB,WAAWC,qBAAO,aAAe,CAAA,CAC1E;;IACN,oBAACD,MAAU,OAAX;KAAiB,WAAWC,qBAAO;KAAO,cAAW;eACnD,oBAAC,OAAD,EAAS,CAAA;KACO,CAAA;IACH;KAbV,MAAM,GAaI,CACjB;EACiB,CAAA"}
|
package/dist/tokens.css
CHANGED
|
@@ -5,9 +5,6 @@
|
|
|
5
5
|
* Monospace-first, semantic color tokens, supports light & dark modes.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
/* Establish layer order — must come before any @layer usage */
|
|
9
|
-
@layer theme, base, components, utilities;
|
|
10
|
-
|
|
11
8
|
@layer theme {
|
|
12
9
|
:root {
|
|
13
10
|
/* ─── Typography ──────────────────────────────────────────────── */
|
|
@@ -146,7 +143,7 @@
|
|
|
146
143
|
|
|
147
144
|
/* Text */
|
|
148
145
|
--color-primary: rgba(0, 0, 0, 0.88);
|
|
149
|
-
--color-secondary: rgba(0, 0, 0, 0.
|
|
146
|
+
--color-secondary: rgba(0, 0, 0, 0.6); /* raised from 0.55 — AA 5.01:1 on hover bg */
|
|
150
147
|
--color-tertiary: rgba(0, 0, 0, 0.36);
|
|
151
148
|
--color-disabled: rgba(0, 0, 0, 0.24);
|
|
152
149
|
--color-inverse: rgba(255, 255, 255, 0.95);
|
|
@@ -170,6 +167,8 @@
|
|
|
170
167
|
--color-accent: #0078d4;
|
|
171
168
|
--color-accent-hover: #006bbf;
|
|
172
169
|
--color-accent-pressed: #005ea8;
|
|
170
|
+
--color-accent-solid: #0078d4; /* solid button bg — same as accent in light (4.83:1 vs white) */
|
|
171
|
+
--color-accent-text: #005ea8; /* text/icon on tinted surfaces — AA 5.09:1 on accent-tint bg */
|
|
173
172
|
--color-accent-tint: rgba(0, 120, 212, 0.1);
|
|
174
173
|
--color-accent-tint-hover: rgba(0, 120, 212, 0.16);
|
|
175
174
|
|
|
@@ -190,20 +189,23 @@
|
|
|
190
189
|
/* Status — Success */
|
|
191
190
|
--color-success-bg: #f0fdf4;
|
|
192
191
|
--color-success-border: #bbf7d0;
|
|
193
|
-
--color-success-text: #15803d
|
|
194
|
-
--color-success-solid: #16a34a
|
|
192
|
+
--color-success-text: #147a39; /* darkened from #15803d — AA 4.73:1 on canvas */
|
|
193
|
+
--color-success-solid: #15803d; /* darkened from #16a34a — AA 5.02:1 vs white */
|
|
194
|
+
--color-success-on-solid: #ffffff;
|
|
195
195
|
|
|
196
196
|
/* Status — Warning */
|
|
197
197
|
--color-warning-bg: #fffbeb;
|
|
198
198
|
--color-warning-border: #fde68a;
|
|
199
199
|
--color-warning-text: #92400e;
|
|
200
|
-
--color-warning-solid: #d97706
|
|
200
|
+
--color-warning-solid: #b45309; /* darkened from #d97706 — AA 5.02:1 vs white */
|
|
201
|
+
--color-warning-on-solid: #ffffff;
|
|
201
202
|
|
|
202
203
|
/* Status — Error */
|
|
203
204
|
--color-error-bg: #fef2f2;
|
|
204
205
|
--color-error-border: #fecaca;
|
|
205
206
|
--color-error-text: #991b1b;
|
|
206
207
|
--color-error-solid: #dc2626;
|
|
208
|
+
--color-error-on-solid: #ffffff;
|
|
207
209
|
|
|
208
210
|
/* Status — Info */
|
|
209
211
|
--color-info-bg: #eff6ff;
|
|
@@ -268,6 +270,8 @@
|
|
|
268
270
|
--color-accent: #0a84ff;
|
|
269
271
|
--color-accent-hover: #0071e3;
|
|
270
272
|
--color-accent-pressed: #005bb5;
|
|
273
|
+
--color-accent-solid: #0071e3; /* solid button bg — darkened from #0a84ff — AA 4.70:1 vs white */
|
|
274
|
+
--color-accent-text: #60a5fa; /* text/icon on tinted surfaces — AA 5.87:1 on accent-tint bg */
|
|
271
275
|
--color-accent-tint: rgba(10, 132, 255, 0.12);
|
|
272
276
|
--color-accent-tint-hover: rgba(10, 132, 255, 0.2);
|
|
273
277
|
|
|
@@ -289,19 +293,22 @@
|
|
|
289
293
|
--color-success-bg: rgba(22, 163, 74, 0.12);
|
|
290
294
|
--color-success-border: rgba(22, 163, 74, 0.3);
|
|
291
295
|
--color-success-text: #4ade80;
|
|
292
|
-
--color-success-solid: #22c55e;
|
|
296
|
+
--color-success-solid: #22c55e; /* vivid — AA 9.22:1 vs black text */
|
|
297
|
+
--color-success-on-solid: #000000; /* dark text preserves vibrancy */
|
|
293
298
|
|
|
294
299
|
/* Status — Warning */
|
|
295
300
|
--color-warning-bg: rgba(217, 119, 6, 0.12);
|
|
296
301
|
--color-warning-border: rgba(217, 119, 6, 0.3);
|
|
297
302
|
--color-warning-text: #fbbf24;
|
|
298
|
-
--color-warning-solid: #f59e0b;
|
|
303
|
+
--color-warning-solid: #f59e0b; /* vivid — AA 9.78:1 vs black text */
|
|
304
|
+
--color-warning-on-solid: #000000; /* dark text preserves vibrancy */
|
|
299
305
|
|
|
300
306
|
/* Status — Error */
|
|
301
307
|
--color-error-bg: rgba(220, 38, 38, 0.12);
|
|
302
308
|
--color-error-border: rgba(220, 38, 38, 0.3);
|
|
303
309
|
--color-error-text: #f87171;
|
|
304
|
-
--color-error-solid: #ef4444
|
|
310
|
+
--color-error-solid: #dc2626; /* darkened from #ef4444 — AA 4.83:1 vs white */
|
|
311
|
+
--color-error-on-solid: #ffffff;
|
|
305
312
|
|
|
306
313
|
/* Status — Info */
|
|
307
314
|
--color-info-bg: rgba(37, 99, 235, 0.12);
|
|
@@ -355,6 +362,8 @@
|
|
|
355
362
|
--color-accent: #0a84ff;
|
|
356
363
|
--color-accent-hover: #0071e3;
|
|
357
364
|
--color-accent-pressed: #005bb5;
|
|
365
|
+
--color-accent-solid: #0071e3;
|
|
366
|
+
--color-accent-text: #60a5fa;
|
|
358
367
|
--color-accent-tint: rgba(10, 132, 255, 0.12);
|
|
359
368
|
--color-accent-tint-hover: rgba(10, 132, 255, 0.2);
|
|
360
369
|
|
|
@@ -374,16 +383,19 @@
|
|
|
374
383
|
--color-success-border: rgba(22, 163, 74, 0.3);
|
|
375
384
|
--color-success-text: #4ade80;
|
|
376
385
|
--color-success-solid: #22c55e;
|
|
386
|
+
--color-success-on-solid: #000000;
|
|
377
387
|
|
|
378
388
|
--color-warning-bg: rgba(217, 119, 6, 0.12);
|
|
379
389
|
--color-warning-border: rgba(217, 119, 6, 0.3);
|
|
380
390
|
--color-warning-text: #fbbf24;
|
|
381
391
|
--color-warning-solid: #f59e0b;
|
|
392
|
+
--color-warning-on-solid: #000000;
|
|
382
393
|
|
|
383
394
|
--color-error-bg: rgba(220, 38, 38, 0.12);
|
|
384
395
|
--color-error-border: rgba(220, 38, 38, 0.3);
|
|
385
396
|
--color-error-text: #f87171;
|
|
386
|
-
--color-error-solid: #
|
|
397
|
+
--color-error-solid: #dc2626;
|
|
398
|
+
--color-error-on-solid: #ffffff;
|
|
387
399
|
|
|
388
400
|
--color-info-bg: rgba(37, 99, 235, 0.12);
|
|
389
401
|
--color-info-border: rgba(37, 99, 235, 0.3);
|
package/dist/tooltip/parts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import tooltip_module_default from "./tooltip.module.js";
|
|
2
|
-
import { forwardRef } from "react";
|
|
3
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
4
|
import { Tooltip } from "@base-ui/react/tooltip";
|
|
5
5
|
//#region src/tooltip/parts.tsx
|
|
6
6
|
/**
|